@sankhyatronics/sankhya-cms 0.1.3 → 0.1.4

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 (38) hide show
  1. package/custom-elements.json +2160 -1301
  2. package/dist/{chunk-PKTRYUGP.js → chunk-5KHI36M5.js} +7 -2
  3. package/dist/chunk-5KHI36M5.js.map +1 -0
  4. package/dist/{chunk-FWIG6GEZ.js → chunk-5MTPMXAQ.js} +171 -5
  5. package/dist/chunk-5MTPMXAQ.js.map +1 -0
  6. package/dist/{chunk-TH5NZXA7.js → chunk-KHPJ5FAJ.js} +80 -4
  7. package/dist/chunk-KHPJ5FAJ.js.map +1 -0
  8. package/dist/chunk-MLF6L3KM.js +605 -0
  9. package/dist/chunk-MLF6L3KM.js.map +1 -0
  10. package/dist/{chunk-3TCP25JG.js → chunk-PB7ZPPLP.js} +9 -1
  11. package/dist/chunk-PB7ZPPLP.js.map +1 -0
  12. package/dist/{chunk-5DNVCMOO.js → chunk-S4ARRDAI.js} +2 -2
  13. package/dist/{chunk-5UFRGZWG.js → chunk-TLHG33MM.js} +2 -2
  14. package/dist/dropdown/index.d.ts +30 -2
  15. package/dist/dropdown/index.js +2 -1
  16. package/dist/header/index.js +2 -2
  17. package/dist/index.d.ts +1 -0
  18. package/dist/index.js +36 -28
  19. package/dist/mega-menu/index.d.ts +141 -0
  20. package/dist/mega-menu/index.js +14 -0
  21. package/dist/mega-menu/index.js.map +1 -0
  22. package/dist/menu-item/index.d.ts +3 -0
  23. package/dist/menu-item/index.js +2 -1
  24. package/dist/schema/index.d.ts +3 -0
  25. package/dist/schema/index.js +3 -0
  26. package/dist/schema/index.js.map +1 -1
  27. package/dist/select/index.js +2 -2
  28. package/dist/shared/icons.d.ts +3 -1
  29. package/dist/shared/icons.js +3 -1
  30. package/dist/testimonials/index.js +2 -2
  31. package/package.json +25 -21
  32. package/LICENSE +0 -21
  33. package/dist/chunk-3TCP25JG.js.map +0 -1
  34. package/dist/chunk-FWIG6GEZ.js.map +0 -1
  35. package/dist/chunk-PKTRYUGP.js.map +0 -1
  36. package/dist/chunk-TH5NZXA7.js.map +0 -1
  37. /package/dist/{chunk-5DNVCMOO.js.map → chunk-S4ARRDAI.js.map} +0 -0
  38. /package/dist/{chunk-5UFRGZWG.js.map → chunk-TLHG33MM.js.map} +0 -0
@@ -114,6 +114,135 @@
114
114
  }
115
115
  ]
116
116
  },
117
+ {
118
+ "kind": "javascript-module",
119
+ "path": "src/card/Card.ts",
120
+ "declarations": [
121
+ {
122
+ "kind": "class",
123
+ "description": "A surfaced container — content goes in the default slot. Ports `SankhyaUI`'s React `Card`\r\n(`variant`, `padding`, `elevation`, `hoverable`, `inverted`); `onClick` is just a native `click`\r\nlistener on the element. `padding` takes `none | small | medium | large` (the source's\r\n`sm|md|lg`, spelled like `paddingScaleStyles`); `elevation` takes `none | sm | md | lg`.",
124
+ "name": "Card",
125
+ "members": [
126
+ {
127
+ "kind": "field",
128
+ "name": "variant",
129
+ "type": {
130
+ "text": "'default' | 'bordered'"
131
+ },
132
+ "default": "'default'",
133
+ "attribute": "variant",
134
+ "reflects": true
135
+ },
136
+ {
137
+ "kind": "field",
138
+ "name": "padding",
139
+ "type": {
140
+ "text": "'none' | 'small' | 'medium' | 'large'"
141
+ },
142
+ "default": "'medium'",
143
+ "attribute": "padding",
144
+ "reflects": true
145
+ },
146
+ {
147
+ "kind": "field",
148
+ "name": "elevation",
149
+ "type": {
150
+ "text": "'none' | 'sm' | 'md' | 'lg'"
151
+ },
152
+ "default": "'sm'",
153
+ "attribute": "elevation",
154
+ "reflects": true
155
+ },
156
+ {
157
+ "kind": "field",
158
+ "name": "hoverable",
159
+ "type": {
160
+ "text": "boolean"
161
+ },
162
+ "default": "false",
163
+ "attribute": "hoverable",
164
+ "reflects": true
165
+ },
166
+ {
167
+ "kind": "field",
168
+ "name": "inverted",
169
+ "type": {
170
+ "text": "boolean"
171
+ },
172
+ "default": "false",
173
+ "attribute": "inverted",
174
+ "reflects": true
175
+ }
176
+ ],
177
+ "attributes": [
178
+ {
179
+ "name": "variant",
180
+ "type": {
181
+ "text": "'default' | 'bordered'"
182
+ },
183
+ "default": "'default'",
184
+ "fieldName": "variant"
185
+ },
186
+ {
187
+ "name": "padding",
188
+ "type": {
189
+ "text": "'none' | 'small' | 'medium' | 'large'"
190
+ },
191
+ "default": "'medium'",
192
+ "fieldName": "padding"
193
+ },
194
+ {
195
+ "name": "elevation",
196
+ "type": {
197
+ "text": "'none' | 'sm' | 'md' | 'lg'"
198
+ },
199
+ "default": "'sm'",
200
+ "fieldName": "elevation"
201
+ },
202
+ {
203
+ "name": "hoverable",
204
+ "type": {
205
+ "text": "boolean"
206
+ },
207
+ "default": "false",
208
+ "fieldName": "hoverable"
209
+ },
210
+ {
211
+ "name": "inverted",
212
+ "type": {
213
+ "text": "boolean"
214
+ },
215
+ "default": "false",
216
+ "fieldName": "inverted"
217
+ }
218
+ ],
219
+ "superclass": {
220
+ "name": "LitElement",
221
+ "package": "lit"
222
+ },
223
+ "tagName": "st-card",
224
+ "customElement": true
225
+ }
226
+ ],
227
+ "exports": [
228
+ {
229
+ "kind": "js",
230
+ "name": "Card",
231
+ "declaration": {
232
+ "name": "Card",
233
+ "module": "src/card/Card.ts"
234
+ }
235
+ },
236
+ {
237
+ "kind": "custom-element-definition",
238
+ "name": "st-card",
239
+ "declaration": {
240
+ "name": "Card",
241
+ "module": "src/card/Card.ts"
242
+ }
243
+ }
244
+ ]
245
+ },
117
246
  {
118
247
  "kind": "javascript-module",
119
248
  "path": "src/carousel/Carousel.ts",
@@ -513,52 +642,77 @@
513
642
  },
514
643
  {
515
644
  "kind": "javascript-module",
516
- "path": "src/card/Card.ts",
645
+ "path": "src/content-block/ContentBlock.ts",
517
646
  "declarations": [
518
647
  {
519
648
  "kind": "class",
520
- "description": "A surfaced container — content goes in the default slot. Ports `SankhyaUI`'s React `Card`\r\n(`variant`, `padding`, `elevation`, `hoverable`, `inverted`); `onClick` is just a native `click`\r\nlistener on the element. `padding` takes `none | small | medium | large` (the source's\r\n`sm|md|lg`, spelled like `paddingScaleStyles`); `elevation` takes `none | sm | md | lg`.",
521
- "name": "Card",
649
+ "description": "A long-form article section: centered title/subtitle, an optional featured image with caption,\r\nthen Markdown body text. Ports `SankhyaUI`'s React `ContentBlock`. The body comes from\r\n`content-src` (a Markdown URL, as in the source) or an inline `content` string (added so the\r\nblock works without a fetch); `content-src` wins when both are set.",
650
+ "name": "ContentBlock",
522
651
  "members": [
523
652
  {
524
653
  "kind": "field",
525
- "name": "variant",
654
+ "name": "title",
526
655
  "type": {
527
- "text": "'default' | 'bordered'"
656
+ "text": "string"
528
657
  },
529
- "default": "'default'",
530
- "attribute": "variant",
531
- "reflects": true
658
+ "default": "''",
659
+ "attribute": "title"
532
660
  },
533
661
  {
534
662
  "kind": "field",
535
- "name": "padding",
663
+ "name": "subtitle",
536
664
  "type": {
537
- "text": "'none' | 'small' | 'medium' | 'large'"
665
+ "text": "string"
538
666
  },
539
- "default": "'medium'",
540
- "attribute": "padding",
541
- "reflects": true
667
+ "default": "''",
668
+ "attribute": "subtitle"
542
669
  },
543
670
  {
544
671
  "kind": "field",
545
- "name": "elevation",
672
+ "name": "contentSrc",
546
673
  "type": {
547
- "text": "'none' | 'sm' | 'md' | 'lg'"
674
+ "text": "string"
548
675
  },
549
- "default": "'sm'",
550
- "attribute": "elevation",
551
- "reflects": true
676
+ "default": "''",
677
+ "description": "URL of a Markdown file.",
678
+ "attribute": "content-src"
552
679
  },
553
680
  {
554
681
  "kind": "field",
555
- "name": "hoverable",
682
+ "name": "content",
556
683
  "type": {
557
- "text": "boolean"
684
+ "text": "string"
558
685
  },
559
- "default": "false",
560
- "attribute": "hoverable",
561
- "reflects": true
686
+ "default": "''",
687
+ "description": "Inline Markdown, used when `content-src` is not set.",
688
+ "attribute": "content"
689
+ },
690
+ {
691
+ "kind": "field",
692
+ "name": "imageSrc",
693
+ "type": {
694
+ "text": "string"
695
+ },
696
+ "default": "''",
697
+ "attribute": "image-src"
698
+ },
699
+ {
700
+ "kind": "field",
701
+ "name": "imageAlt",
702
+ "type": {
703
+ "text": "string"
704
+ },
705
+ "default": "''",
706
+ "attribute": "image-alt"
707
+ },
708
+ {
709
+ "kind": "field",
710
+ "name": "imageCaption",
711
+ "type": {
712
+ "text": "string"
713
+ },
714
+ "default": "''",
715
+ "attribute": "image-caption"
562
716
  },
563
717
  {
564
718
  "kind": "field",
@@ -573,69 +727,95 @@
573
727
  ],
574
728
  "attributes": [
575
729
  {
576
- "name": "variant",
730
+ "name": "title",
577
731
  "type": {
578
- "text": "'default' | 'bordered'"
732
+ "text": "string"
579
733
  },
580
- "default": "'default'",
581
- "fieldName": "variant"
734
+ "default": "''",
735
+ "fieldName": "title"
582
736
  },
583
737
  {
584
- "name": "padding",
738
+ "name": "subtitle",
585
739
  "type": {
586
- "text": "'none' | 'small' | 'medium' | 'large'"
740
+ "text": "string"
587
741
  },
588
- "default": "'medium'",
589
- "fieldName": "padding"
742
+ "default": "''",
743
+ "fieldName": "subtitle"
590
744
  },
591
745
  {
592
- "name": "elevation",
746
+ "name": "content-src",
593
747
  "type": {
594
- "text": "'none' | 'sm' | 'md' | 'lg'"
748
+ "text": "string"
595
749
  },
596
- "default": "'sm'",
597
- "fieldName": "elevation"
750
+ "default": "''",
751
+ "description": "URL of a Markdown file.",
752
+ "fieldName": "contentSrc"
598
753
  },
599
754
  {
600
- "name": "hoverable",
755
+ "name": "content",
601
756
  "type": {
602
- "text": "boolean"
757
+ "text": "string"
603
758
  },
604
- "default": "false",
605
- "fieldName": "hoverable"
759
+ "default": "''",
760
+ "description": "Inline Markdown, used when `content-src` is not set.",
761
+ "fieldName": "content"
606
762
  },
607
763
  {
608
- "name": "inverted",
764
+ "name": "image-src",
609
765
  "type": {
610
- "text": "boolean"
766
+ "text": "string"
611
767
  },
612
- "default": "false",
613
- "fieldName": "inverted"
614
- }
615
- ],
616
- "superclass": {
617
- "name": "LitElement",
618
- "package": "lit"
619
- },
620
- "tagName": "st-card",
621
- "customElement": true
622
- }
623
- ],
624
- "exports": [
625
- {
626
- "kind": "js",
627
- "name": "Card",
628
- "declaration": {
629
- "name": "Card",
630
- "module": "src/card/Card.ts"
768
+ "default": "''",
769
+ "fieldName": "imageSrc"
770
+ },
771
+ {
772
+ "name": "image-alt",
773
+ "type": {
774
+ "text": "string"
775
+ },
776
+ "default": "''",
777
+ "fieldName": "imageAlt"
778
+ },
779
+ {
780
+ "name": "image-caption",
781
+ "type": {
782
+ "text": "string"
783
+ },
784
+ "default": "''",
785
+ "fieldName": "imageCaption"
786
+ },
787
+ {
788
+ "name": "inverted",
789
+ "type": {
790
+ "text": "boolean"
791
+ },
792
+ "default": "false",
793
+ "fieldName": "inverted"
794
+ }
795
+ ],
796
+ "superclass": {
797
+ "name": "LitElement",
798
+ "package": "lit"
799
+ },
800
+ "tagName": "st-content-block",
801
+ "customElement": true
802
+ }
803
+ ],
804
+ "exports": [
805
+ {
806
+ "kind": "js",
807
+ "name": "ContentBlock",
808
+ "declaration": {
809
+ "name": "ContentBlock",
810
+ "module": "src/content-block/ContentBlock.ts"
631
811
  }
632
812
  },
633
813
  {
634
814
  "kind": "custom-element-definition",
635
- "name": "st-card",
815
+ "name": "st-content-block",
636
816
  "declaration": {
637
- "name": "Card",
638
- "module": "src/card/Card.ts"
817
+ "name": "ContentBlock",
818
+ "module": "src/content-block/ContentBlock.ts"
639
819
  }
640
820
  }
641
821
  ]
@@ -825,266 +1005,807 @@
825
1005
  },
826
1006
  {
827
1007
  "kind": "javascript-module",
828
- "path": "src/content-block/ContentBlock.ts",
1008
+ "path": "src/dropdown/Dropdown.ts",
829
1009
  "declarations": [
830
1010
  {
831
1011
  "kind": "class",
832
- "description": "A long-form article section: centered title/subtitle, an optional featured image with caption,\r\nthen Markdown body text. Ports `SankhyaUI`'s React `ContentBlock`. The body comes from\r\n`content-src` (a Markdown URL, as in the source) or an inline `content` string (added so the\r\nblock works without a fetch); `content-src` wins when both are set.",
833
- "name": "ContentBlock",
1012
+ "description": "A labeled trigger + slotted dropdown panel — nav menus (typically holding an `st-menu-grid`),\r\naction menus, anything \"click a trigger, show content under it\". A 1:1 port of `SankhyaUI`'s\r\nReact `Dropdown` (`SankhyaCMS/SankhyaUI/src/components/Dropdown`): same markup\r\n(`.menu` > `.menu-title` + `.menu-dropdown`), sizes, 0.3s slide/fade, and behavior —\r\n\r\n- only one dropdown is open at a time (the source's `DropdownProvider`, built in here, so no\r\n provider element is needed);\r\n- a mousedown outside, Escape, or a click inside the panel closes it;\r\n- an `href` trigger toggles the panel when it has content, and is a plain link when it doesn't;\r\n- `inline` opens the panel in the flow, the source's `.touch-device` layout.\r\n\r\nColors and the panel's surface come from the suite theme (the source left those to the\r\nconsumer's `className`/`itemGroupClassName` utility classes). Two source rules are left out\r\nbecause they break existing suite uses (`st-source-bar`'s site/library menus): the 100vw panel\r\nat <=768px (overflows the screen from wherever the trigger sits; the header uses `inline`\r\ninstead) and `overflow: hidden` on slotted children (clips their focus rings). Suite additions\r\nkept on top: `align`, `active`, `disabled`, `inline`, and the `dropdown-toggle` event — plus\r\n`mega` and `open-on-hover` for an okta.com-style mega menu (see `st-mega-menu`).",
1013
+ "name": "Dropdown",
1014
+ "cssProperties": [
1015
+ {
1016
+ "description": "Maximum width of a `mega` panel (default `1400px`).",
1017
+ "name": "--st-mega-menu-max-width"
1018
+ },
1019
+ {
1020
+ "description": "Minimum space between a `mega` panel and the header's sides (default `1rem`).",
1021
+ "name": "--st-mega-menu-inset"
1022
+ },
1023
+ {
1024
+ "description": "Space between the header and a `mega` panel (default `12px`).",
1025
+ "name": "--st-mega-menu-gap"
1026
+ },
1027
+ {
1028
+ "description": "Corner radius of a `mega` panel (default `24px`).",
1029
+ "name": "--st-mega-menu-radius"
1030
+ }
1031
+ ],
834
1032
  "members": [
835
1033
  {
836
1034
  "kind": "field",
837
- "name": "title",
1035
+ "name": "openDropdown",
838
1036
  "type": {
839
- "text": "string"
1037
+ "text": "Dropdown | null"
840
1038
  },
841
- "default": "''",
842
- "attribute": "title"
1039
+ "privacy": "private",
1040
+ "static": true,
1041
+ "default": "null",
1042
+ "description": "The open dropdown, if any — the source's `DropdownContext.activeDropdown`."
843
1043
  },
844
1044
  {
845
1045
  "kind": "field",
846
- "name": "subtitle",
1046
+ "name": "label",
847
1047
  "type": {
848
1048
  "text": "string"
849
1049
  },
850
1050
  "default": "''",
851
- "attribute": "subtitle"
1051
+ "description": "Trigger label text (source: `title`, renamed because `title` is the native tooltip\r\nattribute). Leave empty to show only `slot=\"icon\"`.",
1052
+ "attribute": "label"
852
1053
  },
853
1054
  {
854
1055
  "kind": "field",
855
- "name": "contentSrc",
1056
+ "name": "href",
856
1057
  "type": {
857
1058
  "text": "string"
858
1059
  },
859
1060
  "default": "''",
860
- "description": "URL of a Markdown file.",
861
- "attribute": "content-src"
1061
+ "description": "Renders the trigger as an `<a href>`. With panel content the click toggles the panel (as in\r\nthe source); with none it navigates.",
1062
+ "attribute": "href"
862
1063
  },
863
1064
  {
864
1065
  "kind": "field",
865
- "name": "content",
1066
+ "name": "iconPosition",
866
1067
  "type": {
867
- "text": "string"
1068
+ "text": "'left' | 'right'"
868
1069
  },
869
- "default": "''",
870
- "description": "Inline Markdown, used when `content-src` is not set.",
871
- "attribute": "content"
1070
+ "default": "'left'",
1071
+ "attribute": "icon-position"
872
1072
  },
873
1073
  {
874
1074
  "kind": "field",
875
- "name": "imageSrc",
1075
+ "name": "iconSize",
876
1076
  "type": {
877
1077
  "text": "string"
878
1078
  },
879
- "default": "''",
880
- "attribute": "image-src"
1079
+ "default": "'1.2rem'",
1080
+ "description": "Inline `width`/`height` of the `slot=\"icon\"` wrapper (source: `iconSize`, default `1.2rem`).",
1081
+ "attribute": "icon-size"
881
1082
  },
882
1083
  {
883
1084
  "kind": "field",
884
- "name": "imageAlt",
1085
+ "name": "iconColor",
885
1086
  "type": {
886
1087
  "text": "string"
887
1088
  },
888
- "default": "''",
889
- "attribute": "image-alt"
1089
+ "default": "'currentColor'",
1090
+ "description": "Inline `color` of the `slot=\"icon\"` wrapper (source: `iconColor`).",
1091
+ "attribute": "icon-color"
890
1092
  },
891
1093
  {
892
1094
  "kind": "field",
893
- "name": "imageCaption",
1095
+ "name": "align",
894
1096
  "type": {
895
- "text": "string"
1097
+ "text": "'left' | 'right'"
896
1098
  },
897
- "default": "''",
898
- "attribute": "image-caption"
1099
+ "default": "'left'",
1100
+ "description": "Which edge of the trigger the panel lines up with.",
1101
+ "attribute": "align"
899
1102
  },
900
1103
  {
901
1104
  "kind": "field",
902
- "name": "inverted",
903
- "type": {
904
- "text": "boolean"
905
- },
906
- "default": "false",
907
- "attribute": "inverted",
908
- "reflects": true
909
- }
910
- ],
911
- "attributes": [
912
- {
913
- "name": "title",
1105
+ "name": "target",
914
1106
  "type": {
915
1107
  "text": "string"
916
1108
  },
917
- "default": "''",
918
- "fieldName": "title"
1109
+ "default": "'_self'",
1110
+ "description": "`target` of an `href` trigger (source default `_self`).",
1111
+ "attribute": "target"
919
1112
  },
920
1113
  {
921
- "name": "subtitle",
1114
+ "kind": "field",
1115
+ "name": "triggerClassName",
922
1116
  "type": {
923
1117
  "text": "string"
924
1118
  },
925
1119
  "default": "''",
926
- "fieldName": "subtitle"
1120
+ "description": "Extra class(es) on the trigger (source: `className`; a `class` on `st-dropdown` styles the host).",
1121
+ "attribute": "trigger-class-name"
927
1122
  },
928
1123
  {
929
- "name": "content-src",
1124
+ "kind": "field",
1125
+ "name": "itemGroupClassName",
930
1126
  "type": {
931
1127
  "text": "string"
932
1128
  },
933
1129
  "default": "''",
934
- "description": "URL of a Markdown file.",
935
- "fieldName": "contentSrc"
1130
+ "description": "Extra class(es) on the panel (source: `itemGroupClassName`).",
1131
+ "attribute": "item-group-class-name"
936
1132
  },
937
1133
  {
938
- "name": "content",
1134
+ "kind": "field",
1135
+ "name": "itemClassName",
939
1136
  "type": {
940
1137
  "text": "string"
941
1138
  },
942
1139
  "default": "''",
943
- "description": "Inline Markdown, used when `content-src` is not set.",
944
- "fieldName": "content"
1140
+ "description": "Unused, as in the source (`itemClassName` is never read there); kept for prop parity.",
1141
+ "attribute": "item-class-name"
945
1142
  },
946
1143
  {
947
- "name": "image-src",
1144
+ "kind": "field",
1145
+ "name": "disabled",
948
1146
  "type": {
949
- "text": "string"
1147
+ "text": "boolean"
950
1148
  },
951
- "default": "''",
952
- "fieldName": "imageSrc"
1149
+ "default": "false",
1150
+ "attribute": "disabled",
1151
+ "reflects": true
953
1152
  },
954
1153
  {
955
- "name": "image-alt",
1154
+ "kind": "field",
1155
+ "name": "active",
956
1156
  "type": {
957
- "text": "string"
1157
+ "text": "boolean"
958
1158
  },
959
- "default": "''",
960
- "fieldName": "imageAlt"
1159
+ "default": "false",
1160
+ "description": "Highlights the trigger as the current section (e.g. the current page is one of its items).",
1161
+ "attribute": "active",
1162
+ "reflects": true
961
1163
  },
962
1164
  {
963
- "name": "image-caption",
1165
+ "kind": "field",
1166
+ "name": "inline",
964
1167
  "type": {
965
- "text": "string"
1168
+ "text": "boolean"
966
1169
  },
967
- "default": "''",
968
- "fieldName": "imageCaption"
1170
+ "default": "false",
1171
+ "description": "Opens the panel in the flow under the trigger instead of floating over the page (see the\r\nstyles). `st-header` sets this on its own menu's dropdowns while its hamburger panel shows.",
1172
+ "attribute": "inline",
1173
+ "reflects": true
969
1174
  },
970
1175
  {
971
- "name": "inverted",
1176
+ "kind": "field",
1177
+ "name": "open",
972
1178
  "type": {
973
1179
  "text": "boolean"
974
1180
  },
975
1181
  "default": "false",
976
- "fieldName": "inverted"
977
- }
978
- ],
979
- "superclass": {
980
- "name": "LitElement",
981
- "package": "lit"
982
- },
983
- "tagName": "st-content-block",
984
- "customElement": true
985
- }
986
- ],
987
- "exports": [
988
- {
989
- "kind": "js",
990
- "name": "ContentBlock",
991
- "declaration": {
992
- "name": "ContentBlock",
993
- "module": "src/content-block/ContentBlock.ts"
994
- }
995
- },
996
- {
997
- "kind": "custom-element-definition",
998
- "name": "st-content-block",
999
- "declaration": {
1000
- "name": "ContentBlock",
1001
- "module": "src/content-block/ContentBlock.ts"
1002
- }
1003
- }
1004
- ]
1005
- },
1006
- {
1007
- "kind": "javascript-module",
1008
- "path": "src/feature-split/FeatureSplit.ts",
1009
- "declarations": [
1010
- {
1011
- "kind": "class",
1012
- "description": "A title/markdown-subtitle/feature-list block beside (or under) an image.",
1013
- "name": "FeatureSplit",
1014
- "members": [
1182
+ "description": "Whether the panel is showing. Follows user toggles; may also be set from outside.",
1183
+ "attribute": "open",
1184
+ "reflects": true
1185
+ },
1015
1186
  {
1016
1187
  "kind": "field",
1017
- "name": "inverted",
1188
+ "name": "mega",
1018
1189
  "type": {
1019
1190
  "text": "boolean"
1020
1191
  },
1021
1192
  "default": "false",
1022
- "attribute": "inverted",
1193
+ "description": "Mega-menu panel (okta.com style), typically holding an `st-mega-menu`: the panel spans the\r\nfull width of the nearest positioned ancestor — `st-header` — right under it, instead of\r\nhanging off the trigger. In `st-header`'s hamburger layout (`inline`) it slides in over the\r\nscreen with a Back button rather than opening as an accordion. A click inside the panel only\r\ncloses it when it lands on a link.",
1194
+ "attribute": "mega",
1023
1195
  "reflects": true
1024
1196
  },
1025
1197
  {
1026
1198
  "kind": "field",
1027
- "name": "title",
1199
+ "name": "openOnHover",
1028
1200
  "type": {
1029
- "text": "string"
1201
+ "text": "boolean"
1030
1202
  },
1031
- "default": "''",
1032
- "attribute": "title"
1203
+ "default": "false",
1204
+ "description": "Opens the panel while a mouse hovers the trigger or panel (touch and keyboard still click). Off while `inline`.",
1205
+ "attribute": "open-on-hover"
1033
1206
  },
1034
1207
  {
1035
1208
  "kind": "field",
1036
- "name": "subtitle",
1209
+ "name": "backLabel",
1037
1210
  "type": {
1038
1211
  "text": "string"
1039
1212
  },
1040
- "default": "''",
1041
- "description": "Markdown.",
1042
- "attribute": "subtitle"
1213
+ "default": "'Back'",
1214
+ "description": "Text of the Back button in the `mega` + `inline` drill-down panel.",
1215
+ "attribute": "back-label"
1043
1216
  },
1044
1217
  {
1045
1218
  "kind": "field",
1046
- "name": "items",
1219
+ "name": "hoverTimer",
1047
1220
  "type": {
1048
- "text": "FeatureSplitItem[]"
1221
+ "text": "number"
1049
1222
  },
1050
- "default": "[]"
1223
+ "privacy": "private",
1224
+ "default": "0"
1051
1225
  },
1052
1226
  {
1053
1227
  "kind": "field",
1054
- "name": "imageSrc",
1228
+ "name": "hoverOpenedAt",
1055
1229
  "type": {
1056
- "text": "string"
1230
+ "text": "number"
1057
1231
  },
1058
- "default": "''",
1232
+ "privacy": "private",
1233
+ "default": "0",
1234
+ "description": "When hover last opened the panel — a click right after that keeps it open instead of toggling it shut."
1235
+ },
1236
+ {
1237
+ "kind": "field",
1238
+ "name": "hasContent",
1239
+ "type": {
1240
+ "text": "boolean"
1241
+ },
1242
+ "privacy": "private",
1243
+ "default": "false",
1244
+ "description": "Whether the default slot has content — the source's `children` check."
1245
+ },
1246
+ {
1247
+ "kind": "field",
1248
+ "name": "hasIcon",
1249
+ "type": {
1250
+ "text": "boolean"
1251
+ },
1252
+ "privacy": "private",
1253
+ "default": "false",
1254
+ "description": "Whether `slot=\"icon\"` has content."
1255
+ },
1256
+ {
1257
+ "kind": "method",
1258
+ "name": "setOpen",
1259
+ "privacy": "private",
1260
+ "return": {
1261
+ "type": {
1262
+ "text": "void"
1263
+ }
1264
+ },
1265
+ "parameters": [
1266
+ {
1267
+ "name": "open",
1268
+ "type": {
1269
+ "text": "boolean"
1270
+ }
1271
+ }
1272
+ ]
1273
+ },
1274
+ {
1275
+ "kind": "method",
1276
+ "name": "hovers",
1277
+ "privacy": "private",
1278
+ "return": {
1279
+ "type": {
1280
+ "text": "boolean"
1281
+ }
1282
+ },
1283
+ "parameters": [
1284
+ {
1285
+ "name": "event",
1286
+ "type": {
1287
+ "text": "PointerEvent"
1288
+ }
1289
+ }
1290
+ ]
1291
+ },
1292
+ {
1293
+ "kind": "field",
1294
+ "name": "onPointerEnter",
1295
+ "privacy": "private",
1296
+ "description": "Short delays so a pointer crossing the gap between trigger and panel doesn't close it."
1297
+ },
1298
+ {
1299
+ "kind": "field",
1300
+ "name": "onPointerLeave",
1301
+ "privacy": "private"
1302
+ },
1303
+ {
1304
+ "kind": "field",
1305
+ "name": "onBackClick",
1306
+ "privacy": "private"
1307
+ },
1308
+ {
1309
+ "kind": "field",
1310
+ "name": "closeOnOutsideMouseDown",
1311
+ "privacy": "private"
1312
+ },
1313
+ {
1314
+ "kind": "field",
1315
+ "name": "closeOnEscape",
1316
+ "privacy": "private"
1317
+ },
1318
+ {
1319
+ "kind": "method",
1320
+ "name": "trigger",
1321
+ "privacy": "private",
1322
+ "return": {
1323
+ "type": {
1324
+ "text": "HTMLElement | null"
1325
+ }
1326
+ }
1327
+ },
1328
+ {
1329
+ "kind": "method",
1330
+ "name": "panelItems",
1331
+ "privacy": "private",
1332
+ "return": {
1333
+ "type": {
1334
+ "text": "HTMLElement[]"
1335
+ }
1336
+ },
1337
+ "description": "Keyboard-reachable entries in the panel, in order: menu items (they delegate focus to their\r\nown link) plus any plain links/buttons/tabbable elements a caller slots in."
1338
+ },
1339
+ {
1340
+ "kind": "method",
1341
+ "name": "focusItem",
1342
+ "privacy": "private",
1343
+ "return": {
1344
+ "type": {
1345
+ "text": "void"
1346
+ }
1347
+ },
1348
+ "parameters": [
1349
+ {
1350
+ "name": "pick",
1351
+ "type": {
1352
+ "text": "(items: HTMLElement[]) => HTMLElement | undefined"
1353
+ }
1354
+ }
1355
+ ],
1356
+ "description": "Moves focus into the panel once it has become visible (it is `visibility: hidden` until the\r\n`show` class lands, and hidden elements can't take focus)."
1357
+ },
1358
+ {
1359
+ "kind": "field",
1360
+ "name": "onTitleKeyDown",
1361
+ "privacy": "private",
1362
+ "description": "Enter/Space/ArrowDown open the panel and focus its first entry; ArrowUp its last."
1363
+ },
1364
+ {
1365
+ "kind": "field",
1366
+ "name": "onPanelKeyDown",
1367
+ "privacy": "private",
1368
+ "description": "Arrow keys/Home/End move between the panel's entries; Tab closes the panel and moves on."
1369
+ },
1370
+ {
1371
+ "kind": "field",
1372
+ "name": "onTitleClick",
1373
+ "privacy": "private"
1374
+ },
1375
+ {
1376
+ "kind": "field",
1377
+ "name": "onPanelClick",
1378
+ "privacy": "private",
1379
+ "description": "A click anywhere inside the panel closes it, as in the source — for `mega`, only a click on a\r\nlink: a big panel has headings and gaps, and a click there shouldn't also close st-header's\r\nhamburger layer."
1380
+ },
1381
+ {
1382
+ "kind": "field",
1383
+ "name": "onContentSlotChange",
1384
+ "privacy": "private"
1385
+ },
1386
+ {
1387
+ "kind": "field",
1388
+ "name": "onIconSlotChange",
1389
+ "privacy": "private"
1390
+ }
1391
+ ],
1392
+ "events": [
1393
+ {
1394
+ "name": "dropdown-toggle",
1395
+ "type": {
1396
+ "text": "CustomEvent"
1397
+ }
1398
+ }
1399
+ ],
1400
+ "attributes": [
1401
+ {
1402
+ "name": "label",
1403
+ "type": {
1404
+ "text": "string"
1405
+ },
1406
+ "default": "''",
1407
+ "description": "Trigger label text (source: `title`, renamed because `title` is the native tooltip\r\nattribute). Leave empty to show only `slot=\"icon\"`.",
1408
+ "fieldName": "label"
1409
+ },
1410
+ {
1411
+ "name": "href",
1412
+ "type": {
1413
+ "text": "string"
1414
+ },
1415
+ "default": "''",
1416
+ "description": "Renders the trigger as an `<a href>`. With panel content the click toggles the panel (as in\r\nthe source); with none it navigates.",
1417
+ "fieldName": "href"
1418
+ },
1419
+ {
1420
+ "name": "icon-position",
1421
+ "type": {
1422
+ "text": "'left' | 'right'"
1423
+ },
1424
+ "default": "'left'",
1425
+ "fieldName": "iconPosition"
1426
+ },
1427
+ {
1428
+ "name": "icon-size",
1429
+ "type": {
1430
+ "text": "string"
1431
+ },
1432
+ "default": "'1.2rem'",
1433
+ "description": "Inline `width`/`height` of the `slot=\"icon\"` wrapper (source: `iconSize`, default `1.2rem`).",
1434
+ "fieldName": "iconSize"
1435
+ },
1436
+ {
1437
+ "name": "icon-color",
1438
+ "type": {
1439
+ "text": "string"
1440
+ },
1441
+ "default": "'currentColor'",
1442
+ "description": "Inline `color` of the `slot=\"icon\"` wrapper (source: `iconColor`).",
1443
+ "fieldName": "iconColor"
1444
+ },
1445
+ {
1446
+ "name": "align",
1447
+ "type": {
1448
+ "text": "'left' | 'right'"
1449
+ },
1450
+ "default": "'left'",
1451
+ "description": "Which edge of the trigger the panel lines up with.",
1452
+ "fieldName": "align"
1453
+ },
1454
+ {
1455
+ "name": "target",
1456
+ "type": {
1457
+ "text": "string"
1458
+ },
1459
+ "default": "'_self'",
1460
+ "description": "`target` of an `href` trigger (source default `_self`).",
1461
+ "fieldName": "target"
1462
+ },
1463
+ {
1464
+ "name": "trigger-class-name",
1465
+ "type": {
1466
+ "text": "string"
1467
+ },
1468
+ "default": "''",
1469
+ "description": "Extra class(es) on the trigger (source: `className`; a `class` on `st-dropdown` styles the host).",
1470
+ "fieldName": "triggerClassName"
1471
+ },
1472
+ {
1473
+ "name": "item-group-class-name",
1474
+ "type": {
1475
+ "text": "string"
1476
+ },
1477
+ "default": "''",
1478
+ "description": "Extra class(es) on the panel (source: `itemGroupClassName`).",
1479
+ "fieldName": "itemGroupClassName"
1480
+ },
1481
+ {
1482
+ "name": "item-class-name",
1483
+ "type": {
1484
+ "text": "string"
1485
+ },
1486
+ "default": "''",
1487
+ "description": "Unused, as in the source (`itemClassName` is never read there); kept for prop parity.",
1488
+ "fieldName": "itemClassName"
1489
+ },
1490
+ {
1491
+ "name": "disabled",
1492
+ "type": {
1493
+ "text": "boolean"
1494
+ },
1495
+ "default": "false",
1496
+ "fieldName": "disabled"
1497
+ },
1498
+ {
1499
+ "name": "active",
1500
+ "type": {
1501
+ "text": "boolean"
1502
+ },
1503
+ "default": "false",
1504
+ "description": "Highlights the trigger as the current section (e.g. the current page is one of its items).",
1505
+ "fieldName": "active"
1506
+ },
1507
+ {
1508
+ "name": "inline",
1509
+ "type": {
1510
+ "text": "boolean"
1511
+ },
1512
+ "default": "false",
1513
+ "description": "Opens the panel in the flow under the trigger instead of floating over the page (see the\r\nstyles). `st-header` sets this on its own menu's dropdowns while its hamburger panel shows.",
1514
+ "fieldName": "inline"
1515
+ },
1516
+ {
1517
+ "name": "open",
1518
+ "type": {
1519
+ "text": "boolean"
1520
+ },
1521
+ "default": "false",
1522
+ "description": "Whether the panel is showing. Follows user toggles; may also be set from outside.",
1523
+ "fieldName": "open"
1524
+ },
1525
+ {
1526
+ "name": "mega",
1527
+ "type": {
1528
+ "text": "boolean"
1529
+ },
1530
+ "default": "false",
1531
+ "description": "Mega-menu panel (okta.com style), typically holding an `st-mega-menu`: the panel spans the\r\nfull width of the nearest positioned ancestor — `st-header` — right under it, instead of\r\nhanging off the trigger. In `st-header`'s hamburger layout (`inline`) it slides in over the\r\nscreen with a Back button rather than opening as an accordion. A click inside the panel only\r\ncloses it when it lands on a link.",
1532
+ "fieldName": "mega"
1533
+ },
1534
+ {
1535
+ "name": "open-on-hover",
1536
+ "type": {
1537
+ "text": "boolean"
1538
+ },
1539
+ "default": "false",
1540
+ "description": "Opens the panel while a mouse hovers the trigger or panel (touch and keyboard still click). Off while `inline`.",
1541
+ "fieldName": "openOnHover"
1542
+ },
1543
+ {
1544
+ "name": "back-label",
1545
+ "type": {
1546
+ "text": "string"
1547
+ },
1548
+ "default": "'Back'",
1549
+ "description": "Text of the Back button in the `mega` + `inline` drill-down panel.",
1550
+ "fieldName": "backLabel"
1551
+ }
1552
+ ],
1553
+ "superclass": {
1554
+ "name": "LitElement",
1555
+ "package": "lit"
1556
+ },
1557
+ "tagName": "st-dropdown",
1558
+ "customElement": true
1559
+ }
1560
+ ],
1561
+ "exports": [
1562
+ {
1563
+ "kind": "js",
1564
+ "name": "Dropdown",
1565
+ "declaration": {
1566
+ "name": "Dropdown",
1567
+ "module": "src/dropdown/Dropdown.ts"
1568
+ }
1569
+ },
1570
+ {
1571
+ "kind": "custom-element-definition",
1572
+ "name": "st-dropdown",
1573
+ "declaration": {
1574
+ "name": "Dropdown",
1575
+ "module": "src/dropdown/Dropdown.ts"
1576
+ }
1577
+ }
1578
+ ]
1579
+ },
1580
+ {
1581
+ "kind": "javascript-module",
1582
+ "path": "src/feature-split/FeatureSplit.ts",
1583
+ "declarations": [
1584
+ {
1585
+ "kind": "class",
1586
+ "description": "A title/markdown-subtitle/feature-list block beside (or under) an image.",
1587
+ "name": "FeatureSplit",
1588
+ "members": [
1589
+ {
1590
+ "kind": "field",
1591
+ "name": "inverted",
1592
+ "type": {
1593
+ "text": "boolean"
1594
+ },
1595
+ "default": "false",
1596
+ "attribute": "inverted",
1597
+ "reflects": true
1598
+ },
1599
+ {
1600
+ "kind": "field",
1601
+ "name": "title",
1602
+ "type": {
1603
+ "text": "string"
1604
+ },
1605
+ "default": "''",
1606
+ "attribute": "title"
1607
+ },
1608
+ {
1609
+ "kind": "field",
1610
+ "name": "subtitle",
1611
+ "type": {
1612
+ "text": "string"
1613
+ },
1614
+ "default": "''",
1615
+ "description": "Markdown.",
1616
+ "attribute": "subtitle"
1617
+ },
1618
+ {
1619
+ "kind": "field",
1620
+ "name": "items",
1621
+ "type": {
1622
+ "text": "FeatureSplitItem[]"
1623
+ },
1624
+ "default": "[]"
1625
+ },
1626
+ {
1627
+ "kind": "field",
1628
+ "name": "imageSrc",
1629
+ "type": {
1630
+ "text": "string"
1631
+ },
1632
+ "default": "''",
1059
1633
  "attribute": "image-src"
1060
1634
  },
1061
1635
  {
1062
- "kind": "field",
1063
- "name": "imageAlt",
1636
+ "kind": "field",
1637
+ "name": "imageAlt",
1638
+ "type": {
1639
+ "text": "string"
1640
+ },
1641
+ "default": "''",
1642
+ "attribute": "image-alt"
1643
+ },
1644
+ {
1645
+ "kind": "field",
1646
+ "name": "imagePosition",
1647
+ "type": {
1648
+ "text": "FeatureSplitImagePosition"
1649
+ },
1650
+ "default": "'right'",
1651
+ "attribute": "image-position",
1652
+ "reflects": true
1653
+ },
1654
+ {
1655
+ "kind": "field",
1656
+ "name": "actionLabel",
1657
+ "type": {
1658
+ "text": "string"
1659
+ },
1660
+ "default": "''",
1661
+ "attribute": "action-label"
1662
+ },
1663
+ {
1664
+ "kind": "field",
1665
+ "name": "href",
1666
+ "type": {
1667
+ "text": "string"
1668
+ },
1669
+ "default": "''",
1670
+ "attribute": "href"
1671
+ },
1672
+ {
1673
+ "kind": "method",
1674
+ "name": "onAction",
1675
+ "privacy": "private"
1676
+ }
1677
+ ],
1678
+ "attributes": [
1679
+ {
1680
+ "name": "inverted",
1681
+ "type": {
1682
+ "text": "boolean"
1683
+ },
1684
+ "default": "false",
1685
+ "fieldName": "inverted"
1686
+ },
1687
+ {
1688
+ "name": "title",
1689
+ "type": {
1690
+ "text": "string"
1691
+ },
1692
+ "default": "''",
1693
+ "fieldName": "title"
1694
+ },
1695
+ {
1696
+ "name": "subtitle",
1697
+ "type": {
1698
+ "text": "string"
1699
+ },
1700
+ "default": "''",
1701
+ "description": "Markdown.",
1702
+ "fieldName": "subtitle"
1703
+ },
1704
+ {
1705
+ "name": "image-src",
1064
1706
  "type": {
1065
1707
  "text": "string"
1066
1708
  },
1067
1709
  "default": "''",
1068
- "attribute": "image-alt"
1710
+ "fieldName": "imageSrc"
1069
1711
  },
1070
1712
  {
1071
- "kind": "field",
1072
- "name": "imagePosition",
1713
+ "name": "image-alt",
1714
+ "type": {
1715
+ "text": "string"
1716
+ },
1717
+ "default": "''",
1718
+ "fieldName": "imageAlt"
1719
+ },
1720
+ {
1721
+ "name": "image-position",
1073
1722
  "type": {
1074
1723
  "text": "FeatureSplitImagePosition"
1075
1724
  },
1076
1725
  "default": "'right'",
1077
- "attribute": "image-position",
1078
- "reflects": true
1726
+ "fieldName": "imagePosition"
1727
+ },
1728
+ {
1729
+ "name": "action-label",
1730
+ "type": {
1731
+ "text": "string"
1732
+ },
1733
+ "default": "''",
1734
+ "fieldName": "actionLabel"
1735
+ },
1736
+ {
1737
+ "name": "href",
1738
+ "type": {
1739
+ "text": "string"
1740
+ },
1741
+ "default": "''",
1742
+ "fieldName": "href"
1743
+ }
1744
+ ],
1745
+ "superclass": {
1746
+ "name": "LitElement",
1747
+ "package": "lit"
1748
+ },
1749
+ "tagName": "st-feature-split",
1750
+ "customElement": true
1751
+ }
1752
+ ],
1753
+ "exports": [
1754
+ {
1755
+ "kind": "js",
1756
+ "name": "FeatureSplit",
1757
+ "declaration": {
1758
+ "name": "FeatureSplit",
1759
+ "module": "src/feature-split/FeatureSplit.ts"
1760
+ }
1761
+ },
1762
+ {
1763
+ "kind": "custom-element-definition",
1764
+ "name": "st-feature-split",
1765
+ "declaration": {
1766
+ "name": "FeatureSplit",
1767
+ "module": "src/feature-split/FeatureSplit.ts"
1768
+ }
1769
+ }
1770
+ ]
1771
+ },
1772
+ {
1773
+ "kind": "javascript-module",
1774
+ "path": "src/features-section/FeatureItem.ts",
1775
+ "declarations": [
1776
+ {
1777
+ "kind": "class",
1778
+ "description": "One feature tile for `st-features-section`: optional icon, title, Markdown description and an\r\noptional \"Learn more\" link, rendered on an `st-card`. `icon` is an Iconify name (e.g.\r\n`mdi:rocket`). The link is a plain `<a>` (the source used react-router's `Link` for non-http\r\nhrefs; there is no Lit equivalent). The click is composed, so an SPA router can intercept it\r\n(e.g. via `event.composedPath()`) and navigate client-side; `http(s)` links open in a new tab.",
1779
+ "name": "FeatureItem",
1780
+ "members": [
1781
+ {
1782
+ "kind": "field",
1783
+ "name": "icon",
1784
+ "type": {
1785
+ "text": "string"
1786
+ },
1787
+ "default": "''",
1788
+ "description": "Iconify icon name, e.g. `mdi:rocket`.",
1789
+ "attribute": "icon"
1079
1790
  },
1080
1791
  {
1081
1792
  "kind": "field",
1082
- "name": "actionLabel",
1793
+ "name": "title",
1083
1794
  "type": {
1084
1795
  "text": "string"
1085
1796
  },
1086
1797
  "default": "''",
1087
- "attribute": "action-label"
1798
+ "attribute": "title"
1799
+ },
1800
+ {
1801
+ "kind": "field",
1802
+ "name": "description",
1803
+ "type": {
1804
+ "text": "string"
1805
+ },
1806
+ "default": "''",
1807
+ "description": "Markdown.",
1808
+ "attribute": "description"
1088
1809
  },
1089
1810
  {
1090
1811
  "kind": "field",
@@ -1096,12 +1817,68 @@
1096
1817
  "attribute": "href"
1097
1818
  },
1098
1819
  {
1099
- "kind": "method",
1100
- "name": "onAction",
1101
- "privacy": "private"
1820
+ "kind": "field",
1821
+ "name": "actionLabel",
1822
+ "type": {
1823
+ "text": "string"
1824
+ },
1825
+ "default": "'Learn more'",
1826
+ "attribute": "action-label"
1827
+ },
1828
+ {
1829
+ "kind": "field",
1830
+ "name": "inverted",
1831
+ "type": {
1832
+ "text": "boolean"
1833
+ },
1834
+ "default": "false",
1835
+ "attribute": "inverted",
1836
+ "reflects": true
1102
1837
  }
1103
1838
  ],
1104
1839
  "attributes": [
1840
+ {
1841
+ "name": "icon",
1842
+ "type": {
1843
+ "text": "string"
1844
+ },
1845
+ "default": "''",
1846
+ "description": "Iconify icon name, e.g. `mdi:rocket`.",
1847
+ "fieldName": "icon"
1848
+ },
1849
+ {
1850
+ "name": "title",
1851
+ "type": {
1852
+ "text": "string"
1853
+ },
1854
+ "default": "''",
1855
+ "fieldName": "title"
1856
+ },
1857
+ {
1858
+ "name": "description",
1859
+ "type": {
1860
+ "text": "string"
1861
+ },
1862
+ "default": "''",
1863
+ "description": "Markdown.",
1864
+ "fieldName": "description"
1865
+ },
1866
+ {
1867
+ "name": "href",
1868
+ "type": {
1869
+ "text": "string"
1870
+ },
1871
+ "default": "''",
1872
+ "fieldName": "href"
1873
+ },
1874
+ {
1875
+ "name": "action-label",
1876
+ "type": {
1877
+ "text": "string"
1878
+ },
1879
+ "default": "'Learn more'",
1880
+ "fieldName": "actionLabel"
1881
+ },
1105
1882
  {
1106
1883
  "name": "inverted",
1107
1884
  "type": {
@@ -1109,326 +1886,298 @@
1109
1886
  },
1110
1887
  "default": "false",
1111
1888
  "fieldName": "inverted"
1112
- },
1889
+ }
1890
+ ],
1891
+ "superclass": {
1892
+ "name": "LitElement",
1893
+ "package": "lit"
1894
+ },
1895
+ "tagName": "st-feature-item",
1896
+ "customElement": true
1897
+ }
1898
+ ],
1899
+ "exports": [
1900
+ {
1901
+ "kind": "js",
1902
+ "name": "FeatureItem",
1903
+ "declaration": {
1904
+ "name": "FeatureItem",
1905
+ "module": "src/features-section/FeatureItem.ts"
1906
+ }
1907
+ },
1908
+ {
1909
+ "kind": "custom-element-definition",
1910
+ "name": "st-feature-item",
1911
+ "declaration": {
1912
+ "name": "FeatureItem",
1913
+ "module": "src/features-section/FeatureItem.ts"
1914
+ }
1915
+ }
1916
+ ]
1917
+ },
1918
+ {
1919
+ "kind": "javascript-module",
1920
+ "path": "src/features-section/FeaturesSection.ts",
1921
+ "declarations": [
1922
+ {
1923
+ "kind": "class",
1924
+ "description": "A titled grid of feature tiles. Ports `SankhyaUI`'s React `FeaturesSection`: tiles come from the\r\n`items` property, from slotted `st-feature-item` elements (the source's `children`), or both\r\n(slotted first). `columns` sets the grid width (default 2; one column below 768px). `inverted`\r\nis passed on to the `items` tiles; slotted tiles need their own `inverted` attribute.",
1925
+ "name": "FeaturesSection",
1926
+ "members": [
1113
1927
  {
1928
+ "kind": "field",
1114
1929
  "name": "title",
1115
1930
  "type": {
1116
1931
  "text": "string"
1117
1932
  },
1118
1933
  "default": "''",
1119
- "fieldName": "title"
1934
+ "attribute": "title"
1120
1935
  },
1121
1936
  {
1937
+ "kind": "field",
1122
1938
  "name": "subtitle",
1123
1939
  "type": {
1124
1940
  "text": "string"
1125
1941
  },
1126
1942
  "default": "''",
1127
- "description": "Markdown.",
1128
- "fieldName": "subtitle"
1943
+ "attribute": "subtitle"
1129
1944
  },
1130
1945
  {
1131
- "name": "image-src",
1946
+ "kind": "field",
1947
+ "name": "actionLabel",
1132
1948
  "type": {
1133
1949
  "text": "string"
1134
1950
  },
1135
- "default": "''",
1136
- "fieldName": "imageSrc"
1951
+ "default": "'Learn more'",
1952
+ "description": "Applied to every tile built from `items`.",
1953
+ "attribute": "action-label"
1137
1954
  },
1138
1955
  {
1139
- "name": "image-alt",
1956
+ "kind": "field",
1957
+ "name": "columns",
1958
+ "type": {
1959
+ "text": "number"
1960
+ },
1961
+ "default": "0",
1962
+ "attribute": "columns"
1963
+ },
1964
+ {
1965
+ "kind": "field",
1966
+ "name": "inverted",
1967
+ "type": {
1968
+ "text": "boolean"
1969
+ },
1970
+ "default": "false",
1971
+ "attribute": "inverted",
1972
+ "reflects": true
1973
+ },
1974
+ {
1975
+ "kind": "field",
1976
+ "name": "items",
1977
+ "type": {
1978
+ "text": "FeatureItemData[]"
1979
+ },
1980
+ "default": "[]",
1981
+ "description": "Tiles to render (property only)."
1982
+ }
1983
+ ],
1984
+ "attributes": [
1985
+ {
1986
+ "name": "title",
1140
1987
  "type": {
1141
1988
  "text": "string"
1142
1989
  },
1143
1990
  "default": "''",
1144
- "fieldName": "imageAlt"
1991
+ "fieldName": "title"
1145
1992
  },
1146
1993
  {
1147
- "name": "image-position",
1994
+ "name": "subtitle",
1148
1995
  "type": {
1149
- "text": "FeatureSplitImagePosition"
1996
+ "text": "string"
1150
1997
  },
1151
- "default": "'right'",
1152
- "fieldName": "imagePosition"
1998
+ "default": "''",
1999
+ "fieldName": "subtitle"
1153
2000
  },
1154
2001
  {
1155
2002
  "name": "action-label",
1156
2003
  "type": {
1157
2004
  "text": "string"
1158
2005
  },
1159
- "default": "''",
2006
+ "default": "'Learn more'",
2007
+ "description": "Applied to every tile built from `items`.",
1160
2008
  "fieldName": "actionLabel"
1161
2009
  },
1162
2010
  {
1163
- "name": "href",
2011
+ "name": "columns",
1164
2012
  "type": {
1165
- "text": "string"
2013
+ "text": "number"
1166
2014
  },
1167
- "default": "''",
1168
- "fieldName": "href"
2015
+ "default": "0",
2016
+ "fieldName": "columns"
2017
+ },
2018
+ {
2019
+ "name": "inverted",
2020
+ "type": {
2021
+ "text": "boolean"
2022
+ },
2023
+ "default": "false",
2024
+ "fieldName": "inverted"
1169
2025
  }
1170
2026
  ],
1171
2027
  "superclass": {
1172
2028
  "name": "LitElement",
1173
2029
  "package": "lit"
1174
2030
  },
1175
- "tagName": "st-feature-split",
2031
+ "tagName": "st-features-section",
1176
2032
  "customElement": true
1177
2033
  }
1178
2034
  ],
1179
2035
  "exports": [
1180
2036
  {
1181
2037
  "kind": "js",
1182
- "name": "FeatureSplit",
2038
+ "name": "FeaturesSection",
1183
2039
  "declaration": {
1184
- "name": "FeatureSplit",
1185
- "module": "src/feature-split/FeatureSplit.ts"
2040
+ "name": "FeaturesSection",
2041
+ "module": "src/features-section/FeaturesSection.ts"
1186
2042
  }
1187
2043
  },
1188
2044
  {
1189
2045
  "kind": "custom-element-definition",
1190
- "name": "st-feature-split",
2046
+ "name": "st-features-section",
1191
2047
  "declaration": {
1192
- "name": "FeatureSplit",
1193
- "module": "src/feature-split/FeatureSplit.ts"
2048
+ "name": "FeaturesSection",
2049
+ "module": "src/features-section/FeaturesSection.ts"
1194
2050
  }
1195
2051
  }
1196
2052
  ]
1197
2053
  },
1198
2054
  {
1199
2055
  "kind": "javascript-module",
1200
- "path": "src/dropdown/Dropdown.ts",
2056
+ "path": "src/footer/Footer.ts",
1201
2057
  "declarations": [
1202
2058
  {
1203
2059
  "kind": "class",
1204
- "description": "A labeled trigger + slotted dropdown panel — nav menus (typically holding an `st-menu-grid`),\r\naction menus, anything \"click a trigger, show content under it\". A 1:1 port of `SankhyaUI`'s\r\nReact `Dropdown` (`SankhyaCMS/SankhyaUI/src/components/Dropdown`): same markup\r\n(`.menu` > `.menu-title` + `.menu-dropdown`), sizes, 0.3s slide/fade, and behavior —\r\n\r\n- only one dropdown is open at a time (the source's `DropdownProvider`, built in here, so no\r\n provider element is needed);\r\n- a mousedown outside, Escape, or a click inside the panel closes it;\r\n- an `href` trigger toggles the panel when it has content, and is a plain link when it doesn't;\r\n- `inline` opens the panel in the flow, the source's `.touch-device` layout.\r\n\r\nColors and the panel's surface come from the suite theme (the source left those to the\r\nconsumer's `className`/`itemGroupClassName` utility classes). Two source rules are left out\r\nbecause they break existing suite uses (`st-source-bar`'s site/library menus): the 100vw panel\r\nat <=768px (overflows the screen from wherever the trigger sits; the header uses `inline`\r\ninstead) and `overflow: hidden` on slotted children (clips their focus rings). Suite additions\r\nkept on top: `align`, `active`, `disabled`, `inline`, and the `dropdown-toggle` event.",
1205
- "name": "Dropdown",
2060
+ "description": "The footer, in two layouts:\r\n\r\n- **Bar** (default): a copyright line plus an optional \"powered by\" link — what the suite's\r\n authenticated apps use.\r\n- **Site**: when `columns`, `socialLinks`, `description` or `imageSrc` is set, the footer becomes a\r\n marketing-site footer — brand (logo/company name, description, social icons), link columns and a\r\n bottom bar with the copyright and \"powered by\".\r\n\r\nFires a cancelable `footer-link` event (detail `{ href }`) when an internal link is clicked.",
2061
+ "name": "Footer",
1206
2062
  "members": [
1207
2063
  {
1208
2064
  "kind": "field",
1209
- "name": "openDropdown",
2065
+ "name": "inverted",
1210
2066
  "type": {
1211
- "text": "Dropdown | null"
2067
+ "text": "boolean"
1212
2068
  },
1213
- "privacy": "private",
1214
- "static": true,
1215
- "default": "null",
1216
- "description": "The open dropdown, if any — the source's `DropdownContext.activeDropdown`."
2069
+ "default": "false",
2070
+ "description": "Inverts the footer's color roles (light-on-dark instead of dark-on-light) — matches the\r\nsource component's `inverted` (from its shared `BaseProps`), same as `st-header`'s.",
2071
+ "attribute": "inverted",
2072
+ "reflects": true
1217
2073
  },
1218
2074
  {
1219
2075
  "kind": "field",
1220
- "name": "label",
2076
+ "name": "companyName",
1221
2077
  "type": {
1222
2078
  "text": "string"
1223
2079
  },
1224
2080
  "default": "''",
1225
- "description": "Trigger label text (source: `title`, renamed because `title` is the native tooltip\r\nattribute). Leave empty to show only `slot=\"icon\"`.",
1226
- "attribute": "label"
2081
+ "description": "Used to build the default `copyright` line (`© {year} {companyName}`) when `copyright` isn't set explicitly.",
2082
+ "attribute": "company-name"
1227
2083
  },
1228
2084
  {
1229
2085
  "kind": "field",
1230
- "name": "href",
2086
+ "name": "copyright",
1231
2087
  "type": {
1232
2088
  "text": "string"
1233
2089
  },
1234
2090
  "default": "''",
1235
- "description": "Renders the trigger as an `<a href>`. With panel content the click toggles the panel (as in\r\nthe source); with none it navigates.",
1236
- "attribute": "href"
1237
- },
1238
- {
1239
- "kind": "field",
1240
- "name": "iconPosition",
1241
- "type": {
1242
- "text": "'left' | 'right'"
1243
- },
1244
- "default": "'left'",
1245
- "attribute": "icon-position"
1246
- },
1247
- {
1248
- "kind": "field",
1249
- "name": "iconSize",
1250
- "type": {
1251
- "text": "string"
1252
- },
1253
- "default": "'1.2rem'",
1254
- "description": "Inline `width`/`height` of the `slot=\"icon\"` wrapper (source: `iconSize`, default `1.2rem`).",
1255
- "attribute": "icon-size"
2091
+ "description": "Overrides the default computed copyright line entirely.",
2092
+ "attribute": "copyright"
1256
2093
  },
1257
2094
  {
1258
2095
  "kind": "field",
1259
- "name": "iconColor",
2096
+ "name": "poweredBy",
1260
2097
  "type": {
1261
2098
  "text": "string"
1262
2099
  },
1263
- "default": "'currentColor'",
1264
- "description": "Inline `color` of the `slot=\"icon\"` wrapper (source: `iconColor`).",
1265
- "attribute": "icon-color"
1266
- },
1267
- {
1268
- "kind": "field",
1269
- "name": "align",
1270
- "type": {
1271
- "text": "'left' | 'right'"
1272
- },
1273
- "default": "'left'",
1274
- "description": "Which edge of the trigger the panel lines up with.",
1275
- "attribute": "align"
2100
+ "default": "''",
2101
+ "attribute": "powered-by"
1276
2102
  },
1277
2103
  {
1278
2104
  "kind": "field",
1279
- "name": "target",
2105
+ "name": "poweredByLink",
1280
2106
  "type": {
1281
2107
  "text": "string"
1282
2108
  },
1283
- "default": "'_self'",
1284
- "description": "`target` of an `href` trigger (source default `_self`).",
1285
- "attribute": "target"
2109
+ "default": "''",
2110
+ "attribute": "powered-by-link"
1286
2111
  },
1287
2112
  {
1288
2113
  "kind": "field",
1289
- "name": "triggerClassName",
2114
+ "name": "version",
1290
2115
  "type": {
1291
2116
  "text": "string"
1292
2117
  },
1293
2118
  "default": "''",
1294
- "description": "Extra class(es) on the trigger (source: `className`; a `class` on `st-dropdown` styles the host).",
1295
- "attribute": "trigger-class-name"
2119
+ "description": "App version, rendered as `v{version}` after the copyright line — for apps that show their own\r\nversion in the footer rather than the header title.",
2120
+ "attribute": "version"
1296
2121
  },
1297
2122
  {
1298
2123
  "kind": "field",
1299
- "name": "itemGroupClassName",
2124
+ "name": "imageSrc",
1300
2125
  "type": {
1301
2126
  "text": "string"
1302
2127
  },
1303
2128
  "default": "''",
1304
- "description": "Extra class(es) on the panel (source: `itemGroupClassName`).",
1305
- "attribute": "item-group-class-name"
2129
+ "description": "Logo shown in the brand block (site layout).",
2130
+ "attribute": "image-src"
1306
2131
  },
1307
2132
  {
1308
2133
  "kind": "field",
1309
- "name": "itemClassName",
2134
+ "name": "description",
1310
2135
  "type": {
1311
2136
  "text": "string"
1312
2137
  },
1313
2138
  "default": "''",
1314
- "description": "Unused, as in the source (`itemClassName` is never read there); kept for prop parity.",
1315
- "attribute": "item-class-name"
1316
- },
1317
- {
1318
- "kind": "field",
1319
- "name": "disabled",
1320
- "type": {
1321
- "text": "boolean"
1322
- },
1323
- "default": "false",
1324
- "attribute": "disabled",
1325
- "reflects": true
1326
- },
1327
- {
1328
- "kind": "field",
1329
- "name": "active",
1330
- "type": {
1331
- "text": "boolean"
1332
- },
1333
- "default": "false",
1334
- "description": "Highlights the trigger as the current section (e.g. the current page is one of its items).",
1335
- "attribute": "active",
1336
- "reflects": true
2139
+ "description": "Short blurb under the logo (site layout).",
2140
+ "attribute": "description"
1337
2141
  },
1338
2142
  {
1339
2143
  "kind": "field",
1340
- "name": "inline",
2144
+ "name": "columns",
1341
2145
  "type": {
1342
- "text": "boolean"
2146
+ "text": "FooterColumn[]"
1343
2147
  },
1344
- "default": "false",
1345
- "description": "Opens the panel in the flow under the trigger instead of floating over the page (see the\r\nstyles). `st-header` sets this on its own menu's dropdowns while its hamburger panel shows.",
1346
- "attribute": "inline",
1347
- "reflects": true
2148
+ "default": "[]",
2149
+ "description": "Link columns (site layout)."
1348
2150
  },
1349
2151
  {
1350
2152
  "kind": "field",
1351
- "name": "open",
2153
+ "name": "socialLinks",
1352
2154
  "type": {
1353
- "text": "boolean"
2155
+ "text": "FooterSocialLink[]"
1354
2156
  },
1355
- "default": "false",
1356
- "description": "Whether the panel is showing. Follows user toggles; may also be set from outside.",
1357
- "attribute": "open",
1358
- "reflects": true
2157
+ "default": "[]",
2158
+ "description": "Social icon links under the description (site layout)."
1359
2159
  },
1360
2160
  {
1361
2161
  "kind": "field",
1362
- "name": "hasContent",
2162
+ "name": "isSite",
1363
2163
  "type": {
1364
2164
  "text": "boolean"
1365
2165
  },
1366
2166
  "privacy": "private",
1367
- "default": "false",
1368
- "description": "Whether the default slot has content — the source's `children` check."
2167
+ "readonly": true
1369
2168
  },
1370
2169
  {
1371
2170
  "kind": "field",
1372
- "name": "hasIcon",
2171
+ "name": "resolvedCopyright",
1373
2172
  "type": {
1374
- "text": "boolean"
1375
- },
1376
- "privacy": "private",
1377
- "default": "false",
1378
- "description": "Whether `slot=\"icon\"` has content."
1379
- },
1380
- {
1381
- "kind": "method",
1382
- "name": "setOpen",
1383
- "privacy": "private",
1384
- "return": {
1385
- "type": {
1386
- "text": "void"
1387
- }
2173
+ "text": "string"
1388
2174
  },
1389
- "parameters": [
1390
- {
1391
- "name": "open",
1392
- "type": {
1393
- "text": "boolean"
1394
- }
1395
- }
1396
- ]
1397
- },
1398
- {
1399
- "kind": "field",
1400
- "name": "closeOnOutsideMouseDown",
1401
- "privacy": "private"
1402
- },
1403
- {
1404
- "kind": "field",
1405
- "name": "closeOnEscape",
1406
- "privacy": "private"
1407
- },
1408
- {
1409
- "kind": "method",
1410
- "name": "trigger",
1411
- "privacy": "private",
1412
- "return": {
1413
- "type": {
1414
- "text": "HTMLElement | null"
1415
- }
1416
- }
1417
- },
1418
- {
1419
- "kind": "method",
1420
- "name": "panelItems",
1421
2175
  "privacy": "private",
1422
- "return": {
1423
- "type": {
1424
- "text": "HTMLElement[]"
1425
- }
1426
- },
1427
- "description": "Keyboard-reachable entries in the panel, in order: menu items (they delegate focus to their\r\nown link) plus any plain links/buttons/tabbable elements a caller slots in."
2176
+ "readonly": true
1428
2177
  },
1429
2178
  {
1430
2179
  "kind": "method",
1431
- "name": "focusItem",
2180
+ "name": "onLinkClick",
1432
2181
  "privacy": "private",
1433
2182
  "return": {
1434
2183
  "type": {
@@ -1437,487 +2186,524 @@
1437
2186
  },
1438
2187
  "parameters": [
1439
2188
  {
1440
- "name": "pick",
2189
+ "name": "event",
1441
2190
  "type": {
1442
- "text": "(items: HTMLElement[]) => HTMLElement | undefined"
1443
- }
1444
- }
1445
- ],
1446
- "description": "Moves focus into the panel once it has become visible (it is `visibility: hidden` until the\r\n`show` class lands, and hidden elements can't take focus)."
1447
- },
1448
- {
1449
- "kind": "field",
1450
- "name": "onTitleKeyDown",
1451
- "privacy": "private",
1452
- "description": "Enter/Space/ArrowDown open the panel and focus its first entry; ArrowUp its last."
1453
- },
1454
- {
1455
- "kind": "field",
1456
- "name": "onPanelKeyDown",
1457
- "privacy": "private",
1458
- "description": "Arrow keys/Home/End move between the panel's entries; Tab closes the panel and moves on."
1459
- },
1460
- {
1461
- "kind": "field",
1462
- "name": "onTitleClick",
1463
- "privacy": "private"
2191
+ "text": "MouseEvent"
2192
+ }
2193
+ },
2194
+ {
2195
+ "name": "href",
2196
+ "type": {
2197
+ "text": "string"
2198
+ }
2199
+ }
2200
+ ]
1464
2201
  },
1465
2202
  {
1466
- "kind": "field",
1467
- "name": "onPanelClick",
2203
+ "kind": "method",
2204
+ "name": "renderLink",
1468
2205
  "privacy": "private",
1469
- "description": "A click anywhere inside the panel closes it, as in the source."
2206
+ "parameters": [
2207
+ {
2208
+ "name": "link",
2209
+ "type": {
2210
+ "text": "FooterLink"
2211
+ }
2212
+ }
2213
+ ]
1470
2214
  },
1471
2215
  {
1472
- "kind": "field",
1473
- "name": "onContentSlotChange",
2216
+ "kind": "method",
2217
+ "name": "renderPoweredBy",
1474
2218
  "privacy": "private"
1475
2219
  },
1476
2220
  {
1477
- "kind": "field",
1478
- "name": "onIconSlotChange",
2221
+ "kind": "method",
2222
+ "name": "renderSite",
1479
2223
  "privacy": "private"
1480
2224
  }
1481
2225
  ],
1482
- "events": [
2226
+ "attributes": [
1483
2227
  {
1484
- "name": "dropdown-toggle",
2228
+ "name": "inverted",
1485
2229
  "type": {
1486
- "text": "CustomEvent"
1487
- }
1488
- }
1489
- ],
1490
- "attributes": [
2230
+ "text": "boolean"
2231
+ },
2232
+ "default": "false",
2233
+ "description": "Inverts the footer's color roles (light-on-dark instead of dark-on-light) — matches the\r\nsource component's `inverted` (from its shared `BaseProps`), same as `st-header`'s.",
2234
+ "fieldName": "inverted"
2235
+ },
1491
2236
  {
1492
- "name": "label",
2237
+ "name": "company-name",
1493
2238
  "type": {
1494
2239
  "text": "string"
1495
2240
  },
1496
2241
  "default": "''",
1497
- "description": "Trigger label text (source: `title`, renamed because `title` is the native tooltip\r\nattribute). Leave empty to show only `slot=\"icon\"`.",
1498
- "fieldName": "label"
2242
+ "description": "Used to build the default `copyright` line (`© {year} {companyName}`) when `copyright` isn't set explicitly.",
2243
+ "fieldName": "companyName"
1499
2244
  },
1500
2245
  {
1501
- "name": "href",
2246
+ "name": "copyright",
1502
2247
  "type": {
1503
2248
  "text": "string"
1504
2249
  },
1505
2250
  "default": "''",
1506
- "description": "Renders the trigger as an `<a href>`. With panel content the click toggles the panel (as in\r\nthe source); with none it navigates.",
1507
- "fieldName": "href"
2251
+ "description": "Overrides the default computed copyright line entirely.",
2252
+ "fieldName": "copyright"
1508
2253
  },
1509
2254
  {
1510
- "name": "icon-position",
2255
+ "name": "powered-by",
1511
2256
  "type": {
1512
- "text": "'left' | 'right'"
2257
+ "text": "string"
1513
2258
  },
1514
- "default": "'left'",
1515
- "fieldName": "iconPosition"
2259
+ "default": "''",
2260
+ "fieldName": "poweredBy"
1516
2261
  },
1517
2262
  {
1518
- "name": "icon-size",
2263
+ "name": "powered-by-link",
1519
2264
  "type": {
1520
2265
  "text": "string"
1521
2266
  },
1522
- "default": "'1.2rem'",
1523
- "description": "Inline `width`/`height` of the `slot=\"icon\"` wrapper (source: `iconSize`, default `1.2rem`).",
1524
- "fieldName": "iconSize"
2267
+ "default": "''",
2268
+ "fieldName": "poweredByLink"
1525
2269
  },
1526
2270
  {
1527
- "name": "icon-color",
2271
+ "name": "version",
1528
2272
  "type": {
1529
2273
  "text": "string"
1530
2274
  },
1531
- "default": "'currentColor'",
1532
- "description": "Inline `color` of the `slot=\"icon\"` wrapper (source: `iconColor`).",
1533
- "fieldName": "iconColor"
2275
+ "default": "''",
2276
+ "description": "App version, rendered as `v{version}` after the copyright line — for apps that show their own\r\nversion in the footer rather than the header title.",
2277
+ "fieldName": "version"
1534
2278
  },
1535
2279
  {
1536
- "name": "align",
2280
+ "name": "image-src",
1537
2281
  "type": {
1538
- "text": "'left' | 'right'"
2282
+ "text": "string"
1539
2283
  },
1540
- "default": "'left'",
1541
- "description": "Which edge of the trigger the panel lines up with.",
1542
- "fieldName": "align"
2284
+ "default": "''",
2285
+ "description": "Logo shown in the brand block (site layout).",
2286
+ "fieldName": "imageSrc"
1543
2287
  },
1544
2288
  {
1545
- "name": "target",
2289
+ "name": "description",
1546
2290
  "type": {
1547
2291
  "text": "string"
1548
2292
  },
1549
- "default": "'_self'",
1550
- "description": "`target` of an `href` trigger (source default `_self`).",
1551
- "fieldName": "target"
2293
+ "default": "''",
2294
+ "description": "Short blurb under the logo (site layout).",
2295
+ "fieldName": "description"
2296
+ }
2297
+ ],
2298
+ "superclass": {
2299
+ "name": "LitElement",
2300
+ "package": "lit"
2301
+ },
2302
+ "tagName": "st-footer",
2303
+ "customElement": true
2304
+ }
2305
+ ],
2306
+ "exports": [
2307
+ {
2308
+ "kind": "js",
2309
+ "name": "Footer",
2310
+ "declaration": {
2311
+ "name": "Footer",
2312
+ "module": "src/footer/Footer.ts"
2313
+ }
2314
+ },
2315
+ {
2316
+ "kind": "custom-element-definition",
2317
+ "name": "st-footer",
2318
+ "declaration": {
2319
+ "name": "Footer",
2320
+ "module": "src/footer/Footer.ts"
2321
+ }
2322
+ }
2323
+ ]
2324
+ },
2325
+ {
2326
+ "kind": "javascript-module",
2327
+ "path": "src/hero/Hero.ts",
2328
+ "declarations": [
2329
+ {
2330
+ "kind": "class",
2331
+ "description": "Full-width hero banner: background image with a darkening overlay, optional eyebrow, title,\r\noptional subtitle and up to two call-to-action links. Port of `SankhyaUI`'s React `Hero`; the\r\nframer-motion entrance is redone as CSS keyframes (skipped under `prefers-reduced-motion`).\r\n\r\n`size`, `content-position` and `overlay=\"gradient\"` give the large editorial layout (copy on the\r\nlower left over a gradient that darkens towards it) used by enterprise marketing heroes; the\r\ndefaults keep the original centered banner. Put several heroes in an `st-carousel` with\r\n`indicator-style=\"tabs\"` for a tabbed hero carousel.",
2332
+ "name": "Hero",
2333
+ "cssProperties": [
2334
+ {
2335
+ "description": "Text colour over the image.",
2336
+ "name": "--st-hero-text-color"
1552
2337
  },
1553
2338
  {
1554
- "name": "trigger-class-name",
2339
+ "description": "Minimum height when `size` is `large` (default `640px`).",
2340
+ "name": "--st-hero-min-height"
2341
+ }
2342
+ ],
2343
+ "cssParts": [
2344
+ {
2345
+ "description": "The small label above the title.",
2346
+ "name": "eyebrow"
2347
+ },
2348
+ {
2349
+ "description": "The outlined second button.",
2350
+ "name": "secondary-action"
2351
+ }
2352
+ ],
2353
+ "members": [
2354
+ {
2355
+ "kind": "field",
2356
+ "name": "title",
1555
2357
  "type": {
1556
2358
  "text": "string"
1557
2359
  },
1558
2360
  "default": "''",
1559
- "description": "Extra class(es) on the trigger (source: `className`; a `class` on `st-dropdown` styles the host).",
1560
- "fieldName": "triggerClassName"
2361
+ "attribute": "title"
1561
2362
  },
1562
2363
  {
1563
- "name": "item-group-class-name",
2364
+ "kind": "field",
2365
+ "name": "subtitle",
1564
2366
  "type": {
1565
2367
  "text": "string"
1566
2368
  },
1567
2369
  "default": "''",
1568
- "description": "Extra class(es) on the panel (source: `itemGroupClassName`).",
1569
- "fieldName": "itemGroupClassName"
2370
+ "attribute": "subtitle"
1570
2371
  },
1571
2372
  {
1572
- "name": "item-class-name",
2373
+ "kind": "field",
2374
+ "name": "imageSrc",
1573
2375
  "type": {
1574
2376
  "text": "string"
1575
2377
  },
1576
2378
  "default": "''",
1577
- "description": "Unused, as in the source (`itemClassName` is never read there); kept for prop parity.",
1578
- "fieldName": "itemClassName"
2379
+ "attribute": "image-src"
1579
2380
  },
1580
2381
  {
1581
- "name": "disabled",
2382
+ "kind": "field",
2383
+ "name": "actionLabel",
1582
2384
  "type": {
1583
- "text": "boolean"
2385
+ "text": "string"
1584
2386
  },
1585
- "default": "false",
1586
- "fieldName": "disabled"
2387
+ "default": "''",
2388
+ "attribute": "action-label"
1587
2389
  },
1588
2390
  {
1589
- "name": "active",
2391
+ "kind": "field",
2392
+ "name": "href",
1590
2393
  "type": {
1591
- "text": "boolean"
2394
+ "text": "string"
1592
2395
  },
1593
- "default": "false",
1594
- "description": "Highlights the trigger as the current section (e.g. the current page is one of its items).",
1595
- "fieldName": "active"
2396
+ "default": "''",
2397
+ "attribute": "href"
1596
2398
  },
1597
2399
  {
1598
- "name": "inline",
2400
+ "kind": "field",
2401
+ "name": "textAlignment",
1599
2402
  "type": {
1600
- "text": "boolean"
2403
+ "text": "'left' | 'center' | 'right' | 'justify'"
1601
2404
  },
1602
- "default": "false",
1603
- "description": "Opens the panel in the flow under the trigger instead of floating over the page (see the\r\nstyles). `st-header` sets this on its own menu's dropdowns while its hamburger panel shows.",
1604
- "fieldName": "inline"
2405
+ "default": "'left'",
2406
+ "attribute": "text-alignment",
2407
+ "reflects": true
1605
2408
  },
1606
2409
  {
1607
- "name": "open",
2410
+ "kind": "field",
2411
+ "name": "padding",
2412
+ "type": {
2413
+ "text": "'none' | 'small' | 'medium' | 'large'"
2414
+ },
2415
+ "default": "'none'",
2416
+ "attribute": "padding",
2417
+ "reflects": true
2418
+ },
2419
+ {
2420
+ "kind": "field",
2421
+ "name": "inverted",
1608
2422
  "type": {
1609
2423
  "text": "boolean"
1610
2424
  },
1611
2425
  "default": "false",
1612
- "description": "Whether the panel is showing. Follows user toggles; may also be set from outside.",
1613
- "fieldName": "open"
1614
- }
1615
- ],
1616
- "superclass": {
1617
- "name": "LitElement",
1618
- "package": "lit"
1619
- },
1620
- "tagName": "st-dropdown",
1621
- "customElement": true
1622
- }
1623
- ],
1624
- "exports": [
1625
- {
1626
- "kind": "js",
1627
- "name": "Dropdown",
1628
- "declaration": {
1629
- "name": "Dropdown",
1630
- "module": "src/dropdown/Dropdown.ts"
1631
- }
1632
- },
1633
- {
1634
- "kind": "custom-element-definition",
1635
- "name": "st-dropdown",
1636
- "declaration": {
1637
- "name": "Dropdown",
1638
- "module": "src/dropdown/Dropdown.ts"
1639
- }
1640
- }
1641
- ]
1642
- },
1643
- {
1644
- "kind": "javascript-module",
1645
- "path": "src/features-section/FeatureItem.ts",
1646
- "declarations": [
1647
- {
1648
- "kind": "class",
1649
- "description": "One feature tile for `st-features-section`: optional icon, title, Markdown description and an\r\noptional \"Learn more\" link, rendered on an `st-card`. `icon` is an Iconify name (e.g.\r\n`mdi:rocket`). The link is a plain `<a>` (the source used react-router's `Link` for non-http\r\nhrefs; there is no Lit equivalent). The click is composed, so an SPA router can intercept it\r\n(e.g. via `event.composedPath()`) and navigate client-side; `http(s)` links open in a new tab.",
1650
- "name": "FeatureItem",
1651
- "members": [
2426
+ "attribute": "inverted",
2427
+ "reflects": true
2428
+ },
1652
2429
  {
1653
2430
  "kind": "field",
1654
- "name": "icon",
2431
+ "name": "focalPoint",
1655
2432
  "type": {
1656
- "text": "string"
2433
+ "text": "'top' | 'left' | 'right' | 'bottom' | 'center'"
1657
2434
  },
1658
- "default": "''",
1659
- "description": "Iconify icon name, e.g. `mdi:rocket`.",
1660
- "attribute": "icon"
2435
+ "default": "'center'",
2436
+ "attribute": "focal-point"
1661
2437
  },
1662
2438
  {
1663
2439
  "kind": "field",
1664
- "name": "title",
2440
+ "name": "eyebrow",
1665
2441
  "type": {
1666
2442
  "text": "string"
1667
2443
  },
1668
2444
  "default": "''",
1669
- "attribute": "title"
2445
+ "description": "Small uppercase label above the title (e.g. an event or product name).",
2446
+ "attribute": "eyebrow"
1670
2447
  },
1671
2448
  {
1672
2449
  "kind": "field",
1673
- "name": "description",
2450
+ "name": "secondaryActionLabel",
1674
2451
  "type": {
1675
2452
  "text": "string"
1676
2453
  },
1677
2454
  "default": "''",
1678
- "description": "Markdown.",
1679
- "attribute": "description"
2455
+ "description": "Label of an outlined second button next to the primary one.",
2456
+ "attribute": "secondary-action-label"
1680
2457
  },
1681
2458
  {
1682
2459
  "kind": "field",
1683
- "name": "href",
2460
+ "name": "secondaryHref",
1684
2461
  "type": {
1685
2462
  "text": "string"
1686
2463
  },
1687
2464
  "default": "''",
1688
- "attribute": "href"
2465
+ "attribute": "secondary-href"
1689
2466
  },
1690
2467
  {
1691
2468
  "kind": "field",
1692
- "name": "actionLabel",
2469
+ "name": "size",
1693
2470
  "type": {
1694
- "text": "string"
2471
+ "text": "'auto' | 'large' | 'full'"
1695
2472
  },
1696
- "default": "'Learn more'",
1697
- "attribute": "action-label"
2473
+ "default": "'auto'",
2474
+ "description": "`auto` sizes to the content; `large` is a tall editorial hero (`--st-hero-min-height`); `full` fills the viewport.",
2475
+ "attribute": "size",
2476
+ "reflects": true
1698
2477
  },
1699
2478
  {
1700
2479
  "kind": "field",
1701
- "name": "inverted",
2480
+ "name": "contentPosition",
1702
2481
  "type": {
1703
- "text": "boolean"
2482
+ "text": "'center' | 'bottom'"
1704
2483
  },
1705
- "default": "false",
1706
- "attribute": "inverted",
2484
+ "default": "'center'",
2485
+ "description": "`center` keeps the copy in the middle; `bottom` puts it in the lower part of the hero, on the page container.",
2486
+ "attribute": "content-position",
1707
2487
  "reflects": true
1708
- }
1709
- ],
1710
- "attributes": [
2488
+ },
1711
2489
  {
1712
- "name": "icon",
2490
+ "kind": "field",
2491
+ "name": "overlay",
1713
2492
  "type": {
1714
- "text": "string"
2493
+ "text": "'even' | 'gradient' | 'none'"
1715
2494
  },
1716
- "default": "''",
1717
- "description": "Iconify icon name, e.g. `mdi:rocket`.",
1718
- "fieldName": "icon"
2495
+ "default": "'even'",
2496
+ "description": "`even` darkens the whole image; `gradient` darkens behind the copy only; `none` shows the image as is.",
2497
+ "attribute": "overlay",
2498
+ "reflects": true
1719
2499
  },
1720
2500
  {
1721
- "name": "title",
2501
+ "kind": "field",
2502
+ "name": "positions",
2503
+ "privacy": "private",
2504
+ "static": true,
2505
+ "default": "{ top: 'center top', left: 'left center', right: 'right center', bottom: 'center bottom', center: 'center center' }",
1722
2506
  "type": {
1723
- "text": "string"
2507
+ "text": "{\r\n top: 'center top',\r\n left: 'left center',\r\n right: 'right center',\r\n bottom: 'center bottom',\r\n center: 'center center'\r\n }"
2508
+ }
2509
+ },
2510
+ {
2511
+ "kind": "method",
2512
+ "name": "emitAction",
2513
+ "privacy": "private",
2514
+ "return": {
2515
+ "type": {
2516
+ "text": "void"
2517
+ }
1724
2518
  },
1725
- "default": "''",
1726
- "fieldName": "title"
2519
+ "parameters": [
2520
+ {
2521
+ "name": "event",
2522
+ "type": {
2523
+ "text": "MouseEvent"
2524
+ }
2525
+ },
2526
+ {
2527
+ "name": "href",
2528
+ "type": {
2529
+ "text": "string"
2530
+ }
2531
+ },
2532
+ {
2533
+ "name": "kind",
2534
+ "type": {
2535
+ "text": "'primary' | 'secondary'"
2536
+ }
2537
+ }
2538
+ ]
1727
2539
  },
1728
2540
  {
1729
- "name": "description",
2541
+ "kind": "field",
2542
+ "name": "onClick",
2543
+ "privacy": "private"
2544
+ },
2545
+ {
2546
+ "kind": "field",
2547
+ "name": "onSecondaryClick",
2548
+ "privacy": "private"
2549
+ }
2550
+ ],
2551
+ "events": [
2552
+ {
2553
+ "description": "Cancelable, before navigating. Detail `{ href, kind }`, `kind` being `primary` or `secondary`.",
2554
+ "name": "action"
2555
+ }
2556
+ ],
2557
+ "attributes": [
2558
+ {
2559
+ "name": "title",
1730
2560
  "type": {
1731
2561
  "text": "string"
1732
2562
  },
1733
2563
  "default": "''",
1734
- "description": "Markdown.",
1735
- "fieldName": "description"
2564
+ "fieldName": "title"
1736
2565
  },
1737
2566
  {
1738
- "name": "href",
2567
+ "name": "subtitle",
1739
2568
  "type": {
1740
2569
  "text": "string"
1741
2570
  },
1742
2571
  "default": "''",
1743
- "fieldName": "href"
2572
+ "fieldName": "subtitle"
1744
2573
  },
1745
2574
  {
1746
- "name": "action-label",
2575
+ "name": "image-src",
1747
2576
  "type": {
1748
2577
  "text": "string"
1749
2578
  },
1750
- "default": "'Learn more'",
1751
- "fieldName": "actionLabel"
2579
+ "default": "''",
2580
+ "fieldName": "imageSrc"
1752
2581
  },
1753
2582
  {
1754
- "name": "inverted",
1755
- "type": {
1756
- "text": "boolean"
1757
- },
1758
- "default": "false",
1759
- "fieldName": "inverted"
1760
- }
1761
- ],
1762
- "superclass": {
1763
- "name": "LitElement",
1764
- "package": "lit"
1765
- },
1766
- "tagName": "st-feature-item",
1767
- "customElement": true
1768
- }
1769
- ],
1770
- "exports": [
1771
- {
1772
- "kind": "js",
1773
- "name": "FeatureItem",
1774
- "declaration": {
1775
- "name": "FeatureItem",
1776
- "module": "src/features-section/FeatureItem.ts"
1777
- }
1778
- },
1779
- {
1780
- "kind": "custom-element-definition",
1781
- "name": "st-feature-item",
1782
- "declaration": {
1783
- "name": "FeatureItem",
1784
- "module": "src/features-section/FeatureItem.ts"
1785
- }
1786
- }
1787
- ]
1788
- },
1789
- {
1790
- "kind": "javascript-module",
1791
- "path": "src/features-section/FeaturesSection.ts",
1792
- "declarations": [
1793
- {
1794
- "kind": "class",
1795
- "description": "A titled grid of feature tiles. Ports `SankhyaUI`'s React `FeaturesSection`: tiles come from the\r\n`items` property, from slotted `st-feature-item` elements (the source's `children`), or both\r\n(slotted first). `columns` sets the grid width (default 2; one column below 768px). `inverted`\r\nis passed on to the `items` tiles; slotted tiles need their own `inverted` attribute.",
1796
- "name": "FeaturesSection",
1797
- "members": [
1798
- {
1799
- "kind": "field",
1800
- "name": "title",
2583
+ "name": "action-label",
1801
2584
  "type": {
1802
2585
  "text": "string"
1803
2586
  },
1804
2587
  "default": "''",
1805
- "attribute": "title"
2588
+ "fieldName": "actionLabel"
1806
2589
  },
1807
2590
  {
1808
- "kind": "field",
1809
- "name": "subtitle",
2591
+ "name": "href",
1810
2592
  "type": {
1811
2593
  "text": "string"
1812
2594
  },
1813
2595
  "default": "''",
1814
- "attribute": "subtitle"
2596
+ "fieldName": "href"
1815
2597
  },
1816
2598
  {
1817
- "kind": "field",
1818
- "name": "actionLabel",
2599
+ "name": "text-alignment",
1819
2600
  "type": {
1820
- "text": "string"
2601
+ "text": "'left' | 'center' | 'right' | 'justify'"
1821
2602
  },
1822
- "default": "'Learn more'",
1823
- "description": "Applied to every tile built from `items`.",
1824
- "attribute": "action-label"
2603
+ "default": "'left'",
2604
+ "fieldName": "textAlignment"
1825
2605
  },
1826
2606
  {
1827
- "kind": "field",
1828
- "name": "columns",
2607
+ "name": "padding",
1829
2608
  "type": {
1830
- "text": "number"
2609
+ "text": "'none' | 'small' | 'medium' | 'large'"
1831
2610
  },
1832
- "default": "0",
1833
- "attribute": "columns"
2611
+ "default": "'none'",
2612
+ "fieldName": "padding"
1834
2613
  },
1835
2614
  {
1836
- "kind": "field",
1837
2615
  "name": "inverted",
1838
2616
  "type": {
1839
2617
  "text": "boolean"
1840
2618
  },
1841
2619
  "default": "false",
1842
- "attribute": "inverted",
1843
- "reflects": true
2620
+ "fieldName": "inverted"
1844
2621
  },
1845
2622
  {
1846
- "kind": "field",
1847
- "name": "items",
2623
+ "name": "focal-point",
1848
2624
  "type": {
1849
- "text": "FeatureItemData[]"
2625
+ "text": "'top' | 'left' | 'right' | 'bottom' | 'center'"
1850
2626
  },
1851
- "default": "[]",
1852
- "description": "Tiles to render (property only)."
1853
- }
1854
- ],
1855
- "attributes": [
2627
+ "default": "'center'",
2628
+ "fieldName": "focalPoint"
2629
+ },
1856
2630
  {
1857
- "name": "title",
2631
+ "name": "eyebrow",
1858
2632
  "type": {
1859
2633
  "text": "string"
1860
2634
  },
1861
2635
  "default": "''",
1862
- "fieldName": "title"
2636
+ "description": "Small uppercase label above the title (e.g. an event or product name).",
2637
+ "fieldName": "eyebrow"
1863
2638
  },
1864
2639
  {
1865
- "name": "subtitle",
2640
+ "name": "secondary-action-label",
1866
2641
  "type": {
1867
2642
  "text": "string"
1868
2643
  },
1869
2644
  "default": "''",
1870
- "fieldName": "subtitle"
2645
+ "description": "Label of an outlined second button next to the primary one.",
2646
+ "fieldName": "secondaryActionLabel"
1871
2647
  },
1872
2648
  {
1873
- "name": "action-label",
2649
+ "name": "secondary-href",
1874
2650
  "type": {
1875
2651
  "text": "string"
1876
2652
  },
1877
- "default": "'Learn more'",
1878
- "description": "Applied to every tile built from `items`.",
1879
- "fieldName": "actionLabel"
2653
+ "default": "''",
2654
+ "fieldName": "secondaryHref"
1880
2655
  },
1881
2656
  {
1882
- "name": "columns",
2657
+ "name": "size",
1883
2658
  "type": {
1884
- "text": "number"
2659
+ "text": "'auto' | 'large' | 'full'"
1885
2660
  },
1886
- "default": "0",
1887
- "fieldName": "columns"
2661
+ "default": "'auto'",
2662
+ "description": "`auto` sizes to the content; `large` is a tall editorial hero (`--st-hero-min-height`); `full` fills the viewport.",
2663
+ "fieldName": "size"
2664
+ },
2665
+ {
2666
+ "name": "content-position",
2667
+ "type": {
2668
+ "text": "'center' | 'bottom'"
2669
+ },
2670
+ "default": "'center'",
2671
+ "description": "`center` keeps the copy in the middle; `bottom` puts it in the lower part of the hero, on the page container.",
2672
+ "fieldName": "contentPosition"
1888
2673
  },
1889
2674
  {
1890
- "name": "inverted",
2675
+ "name": "overlay",
1891
2676
  "type": {
1892
- "text": "boolean"
2677
+ "text": "'even' | 'gradient' | 'none'"
1893
2678
  },
1894
- "default": "false",
1895
- "fieldName": "inverted"
2679
+ "default": "'even'",
2680
+ "description": "`even` darkens the whole image; `gradient` darkens behind the copy only; `none` shows the image as is.",
2681
+ "fieldName": "overlay"
1896
2682
  }
1897
2683
  ],
1898
2684
  "superclass": {
1899
2685
  "name": "LitElement",
1900
2686
  "package": "lit"
1901
2687
  },
1902
- "tagName": "st-features-section",
2688
+ "tagName": "st-hero",
1903
2689
  "customElement": true
1904
2690
  }
1905
2691
  ],
1906
2692
  "exports": [
1907
2693
  {
1908
2694
  "kind": "js",
1909
- "name": "FeaturesSection",
2695
+ "name": "Hero",
1910
2696
  "declaration": {
1911
- "name": "FeaturesSection",
1912
- "module": "src/features-section/FeaturesSection.ts"
2697
+ "name": "Hero",
2698
+ "module": "src/hero/Hero.ts"
1913
2699
  }
1914
2700
  },
1915
2701
  {
1916
2702
  "kind": "custom-element-definition",
1917
- "name": "st-features-section",
2703
+ "name": "st-hero",
1918
2704
  "declaration": {
1919
- "name": "FeaturesSection",
1920
- "module": "src/features-section/FeaturesSection.ts"
2705
+ "name": "Hero",
2706
+ "module": "src/hero/Hero.ts"
1921
2707
  }
1922
2708
  }
1923
2709
  ]
@@ -2177,7 +2963,7 @@
2177
2963
  "kind": "field",
2178
2964
  "name": "inlinedDropdowns",
2179
2965
  "privacy": "private",
2180
- "default": "new Set<HTMLElement & { inline: boolean }>()",
2966
+ "default": "new Set<HTMLElement & { inline: boolean; open: boolean }>()",
2181
2967
  "description": "The dropdowns this header switched to `inline` — only these are switched back, so a caller's\r\nown `inline` setting is left alone."
2182
2968
  },
2183
2969
  {
@@ -2458,303 +3244,88 @@
2458
3244
  },
2459
3245
  {
2460
3246
  "kind": "javascript-module",
2461
- "path": "src/footer/Footer.ts",
3247
+ "path": "src/icon-button/IconButton.ts",
2462
3248
  "declarations": [
2463
3249
  {
2464
3250
  "kind": "class",
2465
- "description": "The footer, in two layouts:\r\n\r\n- **Bar** (default): a copyright line plus an optional \"powered by\" link — what the suite's\r\n authenticated apps use.\r\n- **Site**: when `columns`, `socialLinks`, `description` or `imageSrc` is set, the footer becomes a\r\n marketing-site footer — brand (logo/company name, description, social icons), link columns and a\r\n bottom bar with the copyright and \"powered by\".\r\n\r\nFires a cancelable `footer-link` event (detail `{ href }`) when an internal link is clicked.",
2466
- "name": "Footer",
3251
+ "description": "A small, icon-only action button — ported from `SankhyaUI`'s React `IconButton` (a separate,\r\nunrelated marketing-site project; that source takes an iconify string `icon` prop, this package\r\nhas no iconify dependency, so the icon is default-slotted content instead, same convention as\r\n`st-dropdown`/`st-menu-grid-item`'s `slot=\"icon\"`).\r\n\r\nFires a plain native `click` — no custom event, since a caller just wants an ordinary button.",
3252
+ "name": "IconButton",
2467
3253
  "members": [
2468
3254
  {
2469
3255
  "kind": "field",
2470
- "name": "inverted",
2471
- "type": {
2472
- "text": "boolean"
2473
- },
2474
- "default": "false",
2475
- "description": "Inverts the footer's color roles (light-on-dark instead of dark-on-light) — matches the\r\nsource component's `inverted` (from its shared `BaseProps`), same as `st-header`'s.",
2476
- "attribute": "inverted",
2477
- "reflects": true
2478
- },
2479
- {
2480
- "kind": "field",
2481
- "name": "companyName",
2482
- "type": {
2483
- "text": "string"
2484
- },
2485
- "default": "''",
2486
- "description": "Used to build the default `copyright` line (`© {year} {companyName}`) when `copyright` isn't set explicitly.",
2487
- "attribute": "company-name"
2488
- },
2489
- {
2490
- "kind": "field",
2491
- "name": "copyright",
2492
- "type": {
2493
- "text": "string"
2494
- },
2495
- "default": "''",
2496
- "description": "Overrides the default computed copyright line entirely.",
2497
- "attribute": "copyright"
2498
- },
2499
- {
2500
- "kind": "field",
2501
- "name": "poweredBy",
2502
- "type": {
2503
- "text": "string"
2504
- },
2505
- "default": "''",
2506
- "attribute": "powered-by"
2507
- },
2508
- {
2509
- "kind": "field",
2510
- "name": "poweredByLink",
2511
- "type": {
2512
- "text": "string"
2513
- },
2514
- "default": "''",
2515
- "attribute": "powered-by-link"
2516
- },
2517
- {
2518
- "kind": "field",
2519
- "name": "version",
2520
- "type": {
2521
- "text": "string"
2522
- },
2523
- "default": "''",
2524
- "description": "App version, rendered as `v{version}` after the copyright line — for apps that show their own\r\nversion in the footer rather than the header title.",
2525
- "attribute": "version"
2526
- },
2527
- {
2528
- "kind": "field",
2529
- "name": "imageSrc",
2530
- "type": {
2531
- "text": "string"
2532
- },
2533
- "default": "''",
2534
- "description": "Logo shown in the brand block (site layout).",
2535
- "attribute": "image-src"
2536
- },
2537
- {
2538
- "kind": "field",
2539
- "name": "description",
3256
+ "name": "label",
2540
3257
  "type": {
2541
3258
  "text": "string"
2542
3259
  },
2543
3260
  "default": "''",
2544
- "description": "Short blurb under the logo (site layout).",
2545
- "attribute": "description"
2546
- },
2547
- {
2548
- "kind": "field",
2549
- "name": "columns",
2550
- "type": {
2551
- "text": "FooterColumn[]"
2552
- },
2553
- "default": "[]",
2554
- "description": "Link columns (site layout)."
2555
- },
2556
- {
2557
- "kind": "field",
2558
- "name": "socialLinks",
2559
- "type": {
2560
- "text": "FooterSocialLink[]"
2561
- },
2562
- "default": "[]",
2563
- "description": "Social icon links under the description (site layout)."
3261
+ "description": "Accessible name and tooltip — matches the source component's `ariaLabel` (renamed: modern\r\nbrowsers already expose a native `ariaLabel` reflected property on every `Element`, so reusing\r\nthat exact name as a Lit reactive property would shadow it). Required for a control with no\r\nvisible text.",
3262
+ "attribute": "label"
2564
3263
  },
2565
3264
  {
2566
3265
  "kind": "field",
2567
- "name": "isSite",
3266
+ "name": "disabled",
2568
3267
  "type": {
2569
3268
  "text": "boolean"
2570
3269
  },
2571
- "privacy": "private",
2572
- "readonly": true
2573
- },
2574
- {
2575
- "kind": "field",
2576
- "name": "resolvedCopyright",
2577
- "type": {
2578
- "text": "string"
2579
- },
2580
- "privacy": "private",
2581
- "readonly": true
2582
- },
2583
- {
2584
- "kind": "method",
2585
- "name": "onLinkClick",
2586
- "privacy": "private",
2587
- "return": {
2588
- "type": {
2589
- "text": "void"
2590
- }
2591
- },
2592
- "parameters": [
2593
- {
2594
- "name": "event",
2595
- "type": {
2596
- "text": "MouseEvent"
2597
- }
2598
- },
2599
- {
2600
- "name": "href",
2601
- "type": {
2602
- "text": "string"
2603
- }
2604
- }
2605
- ]
2606
- },
2607
- {
2608
- "kind": "method",
2609
- "name": "renderLink",
2610
- "privacy": "private",
2611
- "parameters": [
2612
- {
2613
- "name": "link",
2614
- "type": {
2615
- "text": "FooterLink"
2616
- }
2617
- }
2618
- ]
2619
- },
2620
- {
2621
- "kind": "method",
2622
- "name": "renderPoweredBy",
2623
- "privacy": "private"
2624
- },
2625
- {
2626
- "kind": "method",
2627
- "name": "renderSite",
2628
- "privacy": "private"
3270
+ "default": "false",
3271
+ "attribute": "disabled",
3272
+ "reflects": true
2629
3273
  }
2630
3274
  ],
2631
3275
  "attributes": [
2632
3276
  {
2633
- "name": "inverted",
2634
- "type": {
2635
- "text": "boolean"
2636
- },
2637
- "default": "false",
2638
- "description": "Inverts the footer's color roles (light-on-dark instead of dark-on-light) — matches the\r\nsource component's `inverted` (from its shared `BaseProps`), same as `st-header`'s.",
2639
- "fieldName": "inverted"
2640
- },
2641
- {
2642
- "name": "company-name",
2643
- "type": {
2644
- "text": "string"
2645
- },
2646
- "default": "''",
2647
- "description": "Used to build the default `copyright` line (`© {year} {companyName}`) when `copyright` isn't set explicitly.",
2648
- "fieldName": "companyName"
2649
- },
2650
- {
2651
- "name": "copyright",
2652
- "type": {
2653
- "text": "string"
2654
- },
2655
- "default": "''",
2656
- "description": "Overrides the default computed copyright line entirely.",
2657
- "fieldName": "copyright"
2658
- },
2659
- {
2660
- "name": "powered-by",
2661
- "type": {
2662
- "text": "string"
2663
- },
2664
- "default": "''",
2665
- "fieldName": "poweredBy"
2666
- },
2667
- {
2668
- "name": "powered-by-link",
2669
- "type": {
2670
- "text": "string"
2671
- },
2672
- "default": "''",
2673
- "fieldName": "poweredByLink"
2674
- },
2675
- {
2676
- "name": "version",
2677
- "type": {
2678
- "text": "string"
2679
- },
2680
- "default": "''",
2681
- "description": "App version, rendered as `v{version}` after the copyright line — for apps that show their own\r\nversion in the footer rather than the header title.",
2682
- "fieldName": "version"
2683
- },
2684
- {
2685
- "name": "image-src",
3277
+ "name": "label",
2686
3278
  "type": {
2687
3279
  "text": "string"
2688
3280
  },
2689
3281
  "default": "''",
2690
- "description": "Logo shown in the brand block (site layout).",
2691
- "fieldName": "imageSrc"
3282
+ "description": "Accessible name and tooltip — matches the source component's `ariaLabel` (renamed: modern\r\nbrowsers already expose a native `ariaLabel` reflected property on every `Element`, so reusing\r\nthat exact name as a Lit reactive property would shadow it). Required for a control with no\r\nvisible text.",
3283
+ "fieldName": "label"
2692
3284
  },
2693
3285
  {
2694
- "name": "description",
3286
+ "name": "disabled",
2695
3287
  "type": {
2696
- "text": "string"
3288
+ "text": "boolean"
2697
3289
  },
2698
- "default": "''",
2699
- "description": "Short blurb under the logo (site layout).",
2700
- "fieldName": "description"
3290
+ "default": "false",
3291
+ "fieldName": "disabled"
2701
3292
  }
2702
3293
  ],
2703
3294
  "superclass": {
2704
3295
  "name": "LitElement",
2705
3296
  "package": "lit"
2706
3297
  },
2707
- "tagName": "st-footer",
3298
+ "tagName": "st-icon-button",
2708
3299
  "customElement": true
2709
3300
  }
2710
3301
  ],
2711
3302
  "exports": [
2712
3303
  {
2713
3304
  "kind": "js",
2714
- "name": "Footer",
3305
+ "name": "IconButton",
2715
3306
  "declaration": {
2716
- "name": "Footer",
2717
- "module": "src/footer/Footer.ts"
3307
+ "name": "IconButton",
3308
+ "module": "src/icon-button/IconButton.ts"
2718
3309
  }
2719
3310
  },
2720
3311
  {
2721
3312
  "kind": "custom-element-definition",
2722
- "name": "st-footer",
3313
+ "name": "st-icon-button",
2723
3314
  "declaration": {
2724
- "name": "Footer",
2725
- "module": "src/footer/Footer.ts"
3315
+ "name": "IconButton",
3316
+ "module": "src/icon-button/IconButton.ts"
2726
3317
  }
2727
3318
  }
2728
3319
  ]
2729
3320
  },
2730
3321
  {
2731
3322
  "kind": "javascript-module",
2732
- "path": "src/hero/Hero.ts",
3323
+ "path": "src/items-accordion/ItemsAccordion.ts",
2733
3324
  "declarations": [
2734
3325
  {
2735
3326
  "kind": "class",
2736
- "description": "Full-width hero banner: background image with a darkening overlay, optional eyebrow, title,\r\noptional subtitle and up to two call-to-action links. Port of `SankhyaUI`'s React `Hero`; the\r\nframer-motion entrance is redone as CSS keyframes (skipped under `prefers-reduced-motion`).\r\n\r\n`size`, `content-position` and `overlay=\"gradient\"` give the large editorial layout (copy on the\r\nlower left over a gradient that darkens towards it) used by enterprise marketing heroes; the\r\ndefaults keep the original centered banner. Put several heroes in an `st-carousel` with\r\n`indicator-style=\"tabs\"` for a tabbed hero carousel.",
2737
- "name": "Hero",
2738
- "cssProperties": [
2739
- {
2740
- "description": "Text colour over the image.",
2741
- "name": "--st-hero-text-color"
2742
- },
2743
- {
2744
- "description": "Minimum height when `size` is `large` (default `640px`).",
2745
- "name": "--st-hero-min-height"
2746
- }
2747
- ],
2748
- "cssParts": [
2749
- {
2750
- "description": "The small label above the title.",
2751
- "name": "eyebrow"
2752
- },
2753
- {
2754
- "description": "The outlined second button.",
2755
- "name": "secondary-action"
2756
- }
2757
- ],
3327
+ "description": "A vertical list of collapsible title/content rows; one open at a time unless `allow-multiple`.",
3328
+ "name": "ItemsAccordion",
2758
3329
  "members": [
2759
3330
  {
2760
3331
  "kind": "field",
@@ -2776,670 +3347,938 @@
2776
3347
  },
2777
3348
  {
2778
3349
  "kind": "field",
2779
- "name": "imageSrc",
2780
- "type": {
2781
- "text": "string"
2782
- },
2783
- "default": "''",
2784
- "attribute": "image-src"
2785
- },
2786
- {
2787
- "kind": "field",
2788
- "name": "actionLabel",
2789
- "type": {
2790
- "text": "string"
2791
- },
2792
- "default": "''",
2793
- "attribute": "action-label"
2794
- },
2795
- {
2796
- "kind": "field",
2797
- "name": "href",
2798
- "type": {
2799
- "text": "string"
2800
- },
2801
- "default": "''",
2802
- "attribute": "href"
2803
- },
2804
- {
2805
- "kind": "field",
2806
- "name": "textAlignment",
2807
- "type": {
2808
- "text": "'left' | 'center' | 'right' | 'justify'"
2809
- },
2810
- "default": "'left'",
2811
- "attribute": "text-alignment",
2812
- "reflects": true
2813
- },
2814
- {
2815
- "kind": "field",
2816
- "name": "padding",
3350
+ "name": "items",
2817
3351
  "type": {
2818
- "text": "'none' | 'small' | 'medium' | 'large'"
3352
+ "text": "AccordionItem[]"
2819
3353
  },
2820
- "default": "'none'",
2821
- "attribute": "padding",
2822
- "reflects": true
3354
+ "default": "[]"
2823
3355
  },
2824
3356
  {
2825
3357
  "kind": "field",
2826
- "name": "inverted",
3358
+ "name": "allowMultiple",
2827
3359
  "type": {
2828
3360
  "text": "boolean"
2829
3361
  },
2830
3362
  "default": "false",
2831
- "attribute": "inverted",
2832
- "reflects": true
3363
+ "attribute": "allow-multiple"
2833
3364
  },
2834
3365
  {
2835
3366
  "kind": "field",
2836
- "name": "focalPoint",
2837
- "type": {
2838
- "text": "'top' | 'left' | 'right' | 'bottom' | 'center'"
2839
- },
2840
- "default": "'center'",
2841
- "attribute": "focal-point"
3367
+ "name": "openIds",
3368
+ "privacy": "private",
3369
+ "default": "new Set<string>()"
2842
3370
  },
2843
3371
  {
2844
- "kind": "field",
2845
- "name": "eyebrow",
3372
+ "kind": "method",
3373
+ "name": "toggle",
3374
+ "privacy": "private",
3375
+ "parameters": [
3376
+ {
3377
+ "name": "id",
3378
+ "type": {
3379
+ "text": "string"
3380
+ }
3381
+ }
3382
+ ]
3383
+ }
3384
+ ],
3385
+ "events": [
3386
+ {
3387
+ "name": "accordion-toggle",
2846
3388
  "type": {
2847
- "text": "string"
2848
- },
2849
- "default": "''",
2850
- "description": "Small uppercase label above the title (e.g. an event or product name).",
2851
- "attribute": "eyebrow"
2852
- },
3389
+ "text": "CustomEvent"
3390
+ }
3391
+ }
3392
+ ],
3393
+ "attributes": [
2853
3394
  {
2854
- "kind": "field",
2855
- "name": "secondaryActionLabel",
3395
+ "name": "title",
2856
3396
  "type": {
2857
3397
  "text": "string"
2858
3398
  },
2859
3399
  "default": "''",
2860
- "description": "Label of an outlined second button next to the primary one.",
2861
- "attribute": "secondary-action-label"
3400
+ "fieldName": "title"
2862
3401
  },
2863
3402
  {
2864
- "kind": "field",
2865
- "name": "secondaryHref",
3403
+ "name": "subtitle",
2866
3404
  "type": {
2867
3405
  "text": "string"
2868
3406
  },
2869
3407
  "default": "''",
2870
- "attribute": "secondary-href"
2871
- },
2872
- {
2873
- "kind": "field",
2874
- "name": "size",
2875
- "type": {
2876
- "text": "'auto' | 'large' | 'full'"
2877
- },
2878
- "default": "'auto'",
2879
- "description": "`auto` sizes to the content; `large` is a tall editorial hero (`--st-hero-min-height`); `full` fills the viewport.",
2880
- "attribute": "size",
2881
- "reflects": true
2882
- },
2883
- {
2884
- "kind": "field",
2885
- "name": "contentPosition",
2886
- "type": {
2887
- "text": "'center' | 'bottom'"
2888
- },
2889
- "default": "'center'",
2890
- "description": "`center` keeps the copy in the middle; `bottom` puts it in the lower part of the hero, on the page container.",
2891
- "attribute": "content-position",
2892
- "reflects": true
2893
- },
2894
- {
2895
- "kind": "field",
2896
- "name": "overlay",
2897
- "type": {
2898
- "text": "'even' | 'gradient' | 'none'"
2899
- },
2900
- "default": "'even'",
2901
- "description": "`even` darkens the whole image; `gradient` darkens behind the copy only; `none` shows the image as is.",
2902
- "attribute": "overlay",
2903
- "reflects": true
3408
+ "fieldName": "subtitle"
2904
3409
  },
2905
3410
  {
2906
- "kind": "field",
2907
- "name": "positions",
2908
- "privacy": "private",
2909
- "static": true,
2910
- "default": "{ top: 'center top', left: 'left center', right: 'right center', bottom: 'center bottom', center: 'center center' }",
3411
+ "name": "allow-multiple",
2911
3412
  "type": {
2912
- "text": "{\r\n top: 'center top',\r\n left: 'left center',\r\n right: 'right center',\r\n bottom: 'center bottom',\r\n center: 'center center'\r\n }"
2913
- }
2914
- },
2915
- {
2916
- "kind": "method",
2917
- "name": "emitAction",
2918
- "privacy": "private",
2919
- "return": {
2920
- "type": {
2921
- "text": "void"
2922
- }
3413
+ "text": "boolean"
2923
3414
  },
2924
- "parameters": [
2925
- {
2926
- "name": "event",
2927
- "type": {
2928
- "text": "MouseEvent"
2929
- }
2930
- },
2931
- {
2932
- "name": "href",
2933
- "type": {
2934
- "text": "string"
2935
- }
2936
- },
2937
- {
2938
- "name": "kind",
2939
- "type": {
2940
- "text": "'primary' | 'secondary'"
2941
- }
2942
- }
2943
- ]
2944
- },
2945
- {
2946
- "kind": "field",
2947
- "name": "onClick",
2948
- "privacy": "private"
2949
- },
3415
+ "default": "false",
3416
+ "fieldName": "allowMultiple"
3417
+ }
3418
+ ],
3419
+ "superclass": {
3420
+ "name": "LitElement",
3421
+ "package": "lit"
3422
+ },
3423
+ "tagName": "st-items-accordion",
3424
+ "customElement": true
3425
+ }
3426
+ ],
3427
+ "exports": [
3428
+ {
3429
+ "kind": "js",
3430
+ "name": "ItemsAccordion",
3431
+ "declaration": {
3432
+ "name": "ItemsAccordion",
3433
+ "module": "src/items-accordion/ItemsAccordion.ts"
3434
+ }
3435
+ },
3436
+ {
3437
+ "kind": "custom-element-definition",
3438
+ "name": "st-items-accordion",
3439
+ "declaration": {
3440
+ "name": "ItemsAccordion",
3441
+ "module": "src/items-accordion/ItemsAccordion.ts"
3442
+ }
3443
+ }
3444
+ ]
3445
+ },
3446
+ {
3447
+ "kind": "javascript-module",
3448
+ "path": "src/markdown/Markdown.ts",
3449
+ "declarations": [
3450
+ {
3451
+ "kind": "class",
3452
+ "description": "Renders Markdown (GFM, single newlines become `<br>`) from either an inline `content` string or\r\na `src` URL it fetches. Ports `SankhyaUI`'s `useMarkdown` hook + `react-markdown` (remark-gfm,\r\nremark-breaks); output is sanitized with DOMPurify. `src` wins over `content` when both are set.\r\nWhile a fetch is pending it shows \"Loading content...\"; on failure \"Error loading content.\" and\r\na `markdown-error` event (detail: `{ error }`).\r\n\r\nText color is inherited from the parent so inverted containers just work.",
3453
+ "name": "Markdown",
3454
+ "members": [
2950
3455
  {
2951
3456
  "kind": "field",
2952
- "name": "onSecondaryClick",
2953
- "privacy": "private"
2954
- }
2955
- ],
2956
- "events": [
2957
- {
2958
- "description": "Cancelable, before navigating. Detail `{ href, kind }`, `kind` being `primary` or `secondary`.",
2959
- "name": "action"
2960
- }
2961
- ],
2962
- "attributes": [
2963
- {
2964
- "name": "title",
2965
- "type": {
2966
- "text": "string"
2967
- },
2968
- "default": "''",
2969
- "fieldName": "title"
2970
- },
2971
- {
2972
- "name": "subtitle",
2973
- "type": {
2974
- "text": "string"
2975
- },
2976
- "default": "''",
2977
- "fieldName": "subtitle"
2978
- },
2979
- {
2980
- "name": "image-src",
3457
+ "name": "content",
2981
3458
  "type": {
2982
3459
  "text": "string"
2983
3460
  },
2984
3461
  "default": "''",
2985
- "fieldName": "imageSrc"
3462
+ "description": "Inline Markdown source. Ignored when `src` is set.",
3463
+ "attribute": "content"
2986
3464
  },
2987
3465
  {
2988
- "name": "action-label",
3466
+ "kind": "field",
3467
+ "name": "src",
2989
3468
  "type": {
2990
3469
  "text": "string"
2991
3470
  },
2992
3471
  "default": "''",
2993
- "fieldName": "actionLabel"
3472
+ "description": "URL of a Markdown file to fetch.",
3473
+ "attribute": "src"
2994
3474
  },
2995
3475
  {
2996
- "name": "href",
3476
+ "kind": "field",
3477
+ "name": "fetched",
2997
3478
  "type": {
2998
3479
  "text": "string"
2999
3480
  },
3000
- "default": "''",
3001
- "fieldName": "href"
3481
+ "privacy": "private",
3482
+ "default": "''"
3002
3483
  },
3003
3484
  {
3004
- "name": "text-alignment",
3485
+ "kind": "field",
3486
+ "name": "loading",
3005
3487
  "type": {
3006
- "text": "'left' | 'center' | 'right' | 'justify'"
3488
+ "text": "boolean"
3007
3489
  },
3008
- "default": "'left'",
3009
- "fieldName": "textAlignment"
3490
+ "privacy": "private",
3491
+ "default": "false"
3010
3492
  },
3011
3493
  {
3012
- "name": "padding",
3494
+ "kind": "field",
3495
+ "name": "error",
3013
3496
  "type": {
3014
- "text": "'none' | 'small' | 'medium' | 'large'"
3497
+ "text": "Error | null"
3015
3498
  },
3016
- "default": "'none'",
3017
- "fieldName": "padding"
3499
+ "privacy": "private",
3500
+ "default": "null"
3018
3501
  },
3019
3502
  {
3020
- "name": "inverted",
3503
+ "kind": "field",
3504
+ "name": "abort",
3021
3505
  "type": {
3022
- "text": "boolean"
3506
+ "text": "AbortController | undefined"
3023
3507
  },
3024
- "default": "false",
3025
- "fieldName": "inverted"
3508
+ "privacy": "private"
3026
3509
  },
3027
3510
  {
3028
- "name": "focal-point",
3029
- "type": {
3030
- "text": "'top' | 'left' | 'right' | 'bottom' | 'center'"
3031
- },
3032
- "default": "'center'",
3033
- "fieldName": "focalPoint"
3034
- },
3511
+ "kind": "method",
3512
+ "name": "load",
3513
+ "privacy": "private",
3514
+ "return": {
3515
+ "type": {
3516
+ "text": "Promise<void>"
3517
+ }
3518
+ }
3519
+ }
3520
+ ],
3521
+ "events": [
3035
3522
  {
3036
- "name": "eyebrow",
3523
+ "name": "markdown-error",
3037
3524
  "type": {
3038
- "text": "string"
3039
- },
3040
- "default": "''",
3041
- "description": "Small uppercase label above the title (e.g. an event or product name).",
3042
- "fieldName": "eyebrow"
3043
- },
3525
+ "text": "CustomEvent"
3526
+ }
3527
+ }
3528
+ ],
3529
+ "attributes": [
3044
3530
  {
3045
- "name": "secondary-action-label",
3531
+ "name": "content",
3046
3532
  "type": {
3047
3533
  "text": "string"
3048
3534
  },
3049
3535
  "default": "''",
3050
- "description": "Label of an outlined second button next to the primary one.",
3051
- "fieldName": "secondaryActionLabel"
3536
+ "description": "Inline Markdown source. Ignored when `src` is set.",
3537
+ "fieldName": "content"
3052
3538
  },
3053
3539
  {
3054
- "name": "secondary-href",
3540
+ "name": "src",
3055
3541
  "type": {
3056
3542
  "text": "string"
3057
3543
  },
3058
3544
  "default": "''",
3059
- "fieldName": "secondaryHref"
3060
- },
3061
- {
3062
- "name": "size",
3063
- "type": {
3064
- "text": "'auto' | 'large' | 'full'"
3065
- },
3066
- "default": "'auto'",
3067
- "description": "`auto` sizes to the content; `large` is a tall editorial hero (`--st-hero-min-height`); `full` fills the viewport.",
3068
- "fieldName": "size"
3069
- },
3070
- {
3071
- "name": "content-position",
3072
- "type": {
3073
- "text": "'center' | 'bottom'"
3074
- },
3075
- "default": "'center'",
3076
- "description": "`center` keeps the copy in the middle; `bottom` puts it in the lower part of the hero, on the page container.",
3077
- "fieldName": "contentPosition"
3078
- },
3079
- {
3080
- "name": "overlay",
3081
- "type": {
3082
- "text": "'even' | 'gradient' | 'none'"
3083
- },
3084
- "default": "'even'",
3085
- "description": "`even` darkens the whole image; `gradient` darkens behind the copy only; `none` shows the image as is.",
3086
- "fieldName": "overlay"
3545
+ "description": "URL of a Markdown file to fetch.",
3546
+ "fieldName": "src"
3087
3547
  }
3088
3548
  ],
3089
3549
  "superclass": {
3090
3550
  "name": "LitElement",
3091
3551
  "package": "lit"
3092
3552
  },
3093
- "tagName": "st-hero",
3553
+ "tagName": "st-markdown",
3094
3554
  "customElement": true
3095
3555
  }
3096
3556
  ],
3097
3557
  "exports": [
3098
3558
  {
3099
3559
  "kind": "js",
3100
- "name": "Hero",
3560
+ "name": "Markdown",
3101
3561
  "declaration": {
3102
- "name": "Hero",
3103
- "module": "src/hero/Hero.ts"
3562
+ "name": "Markdown",
3563
+ "module": "src/markdown/Markdown.ts"
3104
3564
  }
3105
3565
  },
3106
3566
  {
3107
3567
  "kind": "custom-element-definition",
3108
- "name": "st-hero",
3568
+ "name": "st-markdown",
3109
3569
  "declaration": {
3110
- "name": "Hero",
3111
- "module": "src/hero/Hero.ts"
3570
+ "name": "Markdown",
3571
+ "module": "src/markdown/Markdown.ts"
3112
3572
  }
3113
3573
  }
3114
3574
  ]
3115
3575
  },
3116
3576
  {
3117
3577
  "kind": "javascript-module",
3118
- "path": "src/icon-button/IconButton.ts",
3578
+ "path": "src/mega-menu/MegaMenu.ts",
3119
3579
  "declarations": [
3120
3580
  {
3121
3581
  "kind": "class",
3122
- "description": "A small, icon-only action button — ported from `SankhyaUI`'s React `IconButton` (a separate,\r\nunrelated marketing-site project; that source takes an iconify string `icon` prop, this package\r\nhas no iconify dependency, so the icon is default-slotted content instead, same convention as\r\n`st-dropdown`/`st-menu-grid-item`'s `slot=\"icon\"`).\r\n\r\nFires a plain native `click` — no custom event, since a caller just wants an ordinary button.",
3123
- "name": "IconButton",
3582
+ "description": "The rich layout of a mega-menu panel, after okta.com: an optional intro column on the left (a\nlarge `heading`, a `description` and, under a divider, quick links in `slot=\"intro\"`), then the\nlink columns side by side (`st-mega-menu-column`s in the default slot), then an optional\nfeatured column on the right (`featured-heading` over the `st-mega-menu-feature` cards in\n`slot=\"featured\"`). Slot it into an `st-dropdown` with `mega` set.\n\nThe layout follows the width it is given, not the viewport (a container query): side by side\nwhen there is room; intro and featured column above/below two link columns on a medium panel;\neverything stacked in the narrow drill-down panel `st-header` shows on a phone (where the intro\nheading is left out — the drill-down already shows the section's name).",
3583
+ "name": "MegaMenu",
3584
+ "cssParts": [
3585
+ {
3586
+ "description": "The grid holding every area.",
3587
+ "name": "inner"
3588
+ },
3589
+ {
3590
+ "description": "The intro column.",
3591
+ "name": "intro"
3592
+ },
3593
+ {
3594
+ "description": "The grid holding the link columns.",
3595
+ "name": "columns"
3596
+ },
3597
+ {
3598
+ "description": "The featured column.",
3599
+ "name": "featured"
3600
+ }
3601
+ ],
3602
+ "slots": [
3603
+ {
3604
+ "description": "The link columns (`st-mega-menu-column`s, or any blocks).",
3605
+ "name": ""
3606
+ },
3607
+ {
3608
+ "description": "Quick links under the intro text, e.g. `st-menu-item`s with an icon.",
3609
+ "name": "intro"
3610
+ },
3611
+ {
3612
+ "description": "Promo cards (`st-mega-menu-feature`s), stacked.",
3613
+ "name": "featured"
3614
+ }
3615
+ ],
3124
3616
  "members": [
3125
3617
  {
3126
3618
  "kind": "field",
3127
- "name": "label",
3619
+ "name": "heading",
3128
3620
  "type": {
3129
3621
  "text": "string"
3130
3622
  },
3131
3623
  "default": "''",
3132
- "description": "Accessible name and tooltip — matches the source component's `ariaLabel` (renamed: modern\r\nbrowsers already expose a native `ariaLabel` reflected property on every `Element`, so reusing\r\nthat exact name as a Lit reactive property would shadow it). Required for a control with no\r\nvisible text.",
3133
- "attribute": "label"
3624
+ "description": "Large title of the intro column.",
3625
+ "attribute": "heading"
3134
3626
  },
3135
3627
  {
3136
3628
  "kind": "field",
3137
- "name": "disabled",
3629
+ "name": "description",
3630
+ "type": {
3631
+ "text": "string"
3632
+ },
3633
+ "default": "''",
3634
+ "description": "Text under the intro title.",
3635
+ "attribute": "description"
3636
+ },
3637
+ {
3638
+ "kind": "field",
3639
+ "name": "featuredHeading",
3640
+ "type": {
3641
+ "text": "string"
3642
+ },
3643
+ "default": "''",
3644
+ "description": "Heading over the featured cards.",
3645
+ "attribute": "featured-heading"
3646
+ },
3647
+ {
3648
+ "kind": "field",
3649
+ "name": "columns",
3650
+ "type": {
3651
+ "text": "number"
3652
+ },
3653
+ "default": "0",
3654
+ "description": "Number of link columns side by side at full width. `0` (the default) uses one per slotted column.",
3655
+ "attribute": "columns"
3656
+ },
3657
+ {
3658
+ "kind": "field",
3659
+ "name": "columnCount",
3660
+ "type": {
3661
+ "text": "number"
3662
+ },
3663
+ "privacy": "private",
3664
+ "default": "1"
3665
+ },
3666
+ {
3667
+ "kind": "field",
3668
+ "name": "hasIntroLinks",
3138
3669
  "type": {
3139
3670
  "text": "boolean"
3140
3671
  },
3141
- "default": "false",
3142
- "attribute": "disabled",
3143
- "reflects": true
3672
+ "privacy": "private",
3673
+ "default": "false"
3674
+ },
3675
+ {
3676
+ "kind": "field",
3677
+ "name": "hasFeatured",
3678
+ "type": {
3679
+ "text": "boolean"
3680
+ },
3681
+ "privacy": "private",
3682
+ "default": "false"
3683
+ },
3684
+ {
3685
+ "kind": "field",
3686
+ "name": "onColumnsSlotChange",
3687
+ "privacy": "private"
3688
+ },
3689
+ {
3690
+ "kind": "field",
3691
+ "name": "onIntroSlotChange",
3692
+ "privacy": "private"
3693
+ },
3694
+ {
3695
+ "kind": "field",
3696
+ "name": "onFeaturedSlotChange",
3697
+ "privacy": "private"
3144
3698
  }
3145
3699
  ],
3146
3700
  "attributes": [
3147
3701
  {
3148
- "name": "label",
3702
+ "name": "heading",
3149
3703
  "type": {
3150
3704
  "text": "string"
3151
3705
  },
3152
3706
  "default": "''",
3153
- "description": "Accessible name and tooltip — matches the source component's `ariaLabel` (renamed: modern\r\nbrowsers already expose a native `ariaLabel` reflected property on every `Element`, so reusing\r\nthat exact name as a Lit reactive property would shadow it). Required for a control with no\r\nvisible text.",
3154
- "fieldName": "label"
3707
+ "description": "Large title of the intro column.",
3708
+ "fieldName": "heading"
3709
+ },
3710
+ {
3711
+ "name": "description",
3712
+ "type": {
3713
+ "text": "string"
3714
+ },
3715
+ "default": "''",
3716
+ "description": "Text under the intro title.",
3717
+ "fieldName": "description"
3718
+ },
3719
+ {
3720
+ "name": "featured-heading",
3721
+ "type": {
3722
+ "text": "string"
3723
+ },
3724
+ "default": "''",
3725
+ "description": "Heading over the featured cards.",
3726
+ "fieldName": "featuredHeading"
3155
3727
  },
3156
3728
  {
3157
- "name": "disabled",
3729
+ "name": "columns",
3158
3730
  "type": {
3159
- "text": "boolean"
3731
+ "text": "number"
3160
3732
  },
3161
- "default": "false",
3162
- "fieldName": "disabled"
3733
+ "default": "0",
3734
+ "description": "Number of link columns side by side at full width. `0` (the default) uses one per slotted column.",
3735
+ "fieldName": "columns"
3163
3736
  }
3164
3737
  ],
3165
3738
  "superclass": {
3166
3739
  "name": "LitElement",
3167
3740
  "package": "lit"
3168
3741
  },
3169
- "tagName": "st-icon-button",
3742
+ "tagName": "st-mega-menu",
3170
3743
  "customElement": true
3171
3744
  }
3172
3745
  ],
3173
3746
  "exports": [
3174
3747
  {
3175
3748
  "kind": "js",
3176
- "name": "IconButton",
3749
+ "name": "MegaMenu",
3177
3750
  "declaration": {
3178
- "name": "IconButton",
3179
- "module": "src/icon-button/IconButton.ts"
3751
+ "name": "MegaMenu",
3752
+ "module": "src/mega-menu/MegaMenu.ts"
3180
3753
  }
3181
3754
  },
3182
3755
  {
3183
3756
  "kind": "custom-element-definition",
3184
- "name": "st-icon-button",
3757
+ "name": "st-mega-menu",
3185
3758
  "declaration": {
3186
- "name": "IconButton",
3187
- "module": "src/icon-button/IconButton.ts"
3759
+ "name": "MegaMenu",
3760
+ "module": "src/mega-menu/MegaMenu.ts"
3188
3761
  }
3189
3762
  }
3190
3763
  ]
3191
3764
  },
3192
3765
  {
3193
3766
  "kind": "javascript-module",
3194
- "path": "src/items-accordion/ItemsAccordion.ts",
3767
+ "path": "src/mega-menu/MegaMenuColumn.ts",
3195
3768
  "declarations": [
3196
3769
  {
3197
3770
  "kind": "class",
3198
- "description": "A vertical list of collapsible title/content rows; one open at a time unless `allow-multiple`.",
3199
- "name": "ItemsAccordion",
3771
+ "description": "One column (or one group within a column) of an `st-mega-menu`: a heading, an optional line of\ndescription, then its links stacked — usually `st-menu-item`s with `variant=\"link\"`. Nest\ncolumns to stack several headed groups in one column, as okta.com does.\n\n`variant=\"card\"` puts the column on a tinted rounded tile and `variant=\"accent\"` on a solid\naccent tile with light text; both suit a row of equal columns without intro or featured area.\n`cta-label` + `cta-href` add a pill button at the bottom of the column.\n\nThe heading (when `href` is set) and the button fire a *cancelable* `mega-menu-select` event\n(detail: `{ href }`) before navigating; a host doing client-side routing calls\n`event.preventDefault()` on it.",
3772
+ "name": "MegaMenuColumn",
3773
+ "cssParts": [
3774
+ {
3775
+ "description": "The heading text or link.",
3776
+ "name": "heading"
3777
+ },
3778
+ {
3779
+ "description": "The line under the heading.",
3780
+ "name": "description"
3781
+ },
3782
+ {
3783
+ "description": "The box holding the links.",
3784
+ "name": "items"
3785
+ },
3786
+ {
3787
+ "description": "The pill button.",
3788
+ "name": "cta"
3789
+ }
3790
+ ],
3791
+ "slots": [
3792
+ {
3793
+ "description": "The column's links, or nested `st-mega-menu-column` groups.",
3794
+ "name": ""
3795
+ }
3796
+ ],
3200
3797
  "members": [
3201
3798
  {
3202
3799
  "kind": "field",
3203
- "name": "title",
3800
+ "name": "heading",
3204
3801
  "type": {
3205
3802
  "text": "string"
3206
3803
  },
3207
3804
  "default": "''",
3208
- "attribute": "title"
3805
+ "attribute": "heading"
3209
3806
  },
3210
3807
  {
3211
3808
  "kind": "field",
3212
- "name": "subtitle",
3809
+ "name": "href",
3213
3810
  "type": {
3214
3811
  "text": "string"
3215
3812
  },
3216
3813
  "default": "''",
3217
- "attribute": "subtitle"
3814
+ "description": "Makes the heading a link (e.g. to the section's overview page).",
3815
+ "attribute": "href"
3218
3816
  },
3219
3817
  {
3220
3818
  "kind": "field",
3221
- "name": "items",
3819
+ "name": "description",
3222
3820
  "type": {
3223
- "text": "AccordionItem[]"
3821
+ "text": "string"
3224
3822
  },
3225
- "default": "[]"
3823
+ "default": "''",
3824
+ "attribute": "description"
3226
3825
  },
3227
3826
  {
3228
3827
  "kind": "field",
3229
- "name": "allowMultiple",
3828
+ "name": "variant",
3230
3829
  "type": {
3231
- "text": "boolean"
3830
+ "text": "'plain' | 'card' | 'accent'"
3232
3831
  },
3233
- "default": "false",
3234
- "attribute": "allow-multiple"
3832
+ "default": "'plain'",
3833
+ "description": "`plain` (default), `card` (tinted tile) or `accent` (solid accent tile, light text).",
3834
+ "attribute": "variant",
3835
+ "reflects": true
3235
3836
  },
3236
3837
  {
3237
3838
  "kind": "field",
3238
- "name": "openIds",
3239
- "privacy": "private",
3240
- "default": "new Set<string>()"
3839
+ "name": "ctaLabel",
3840
+ "type": {
3841
+ "text": "string"
3842
+ },
3843
+ "default": "''",
3844
+ "description": "Text of a pill button at the bottom of the column; needs `cta-href`.",
3845
+ "attribute": "cta-label"
3846
+ },
3847
+ {
3848
+ "kind": "field",
3849
+ "name": "ctaHref",
3850
+ "type": {
3851
+ "text": "string"
3852
+ },
3853
+ "default": "''",
3854
+ "attribute": "cta-href"
3241
3855
  },
3242
3856
  {
3243
3857
  "kind": "method",
3244
- "name": "toggle",
3858
+ "name": "select",
3245
3859
  "privacy": "private",
3860
+ "return": {
3861
+ "type": {
3862
+ "text": "void"
3863
+ }
3864
+ },
3246
3865
  "parameters": [
3247
3866
  {
3248
- "name": "id",
3867
+ "name": "event",
3868
+ "type": {
3869
+ "text": "MouseEvent"
3870
+ }
3871
+ },
3872
+ {
3873
+ "name": "href",
3249
3874
  "type": {
3250
3875
  "text": "string"
3251
3876
  }
3252
3877
  }
3253
3878
  ]
3879
+ },
3880
+ {
3881
+ "kind": "method",
3882
+ "name": "renderHeading",
3883
+ "privacy": "private"
3884
+ },
3885
+ {
3886
+ "kind": "method",
3887
+ "name": "renderCta",
3888
+ "privacy": "private"
3254
3889
  }
3255
3890
  ],
3256
3891
  "events": [
3257
3892
  {
3258
- "name": "accordion-toggle",
3259
- "type": {
3260
- "text": "CustomEvent"
3261
- }
3893
+ "description": "The heading link or the button was clicked (cancelable; detail `{ href }`).",
3894
+ "name": "mega-menu-select"
3262
3895
  }
3263
3896
  ],
3264
3897
  "attributes": [
3265
3898
  {
3266
- "name": "title",
3899
+ "name": "heading",
3267
3900
  "type": {
3268
3901
  "text": "string"
3269
3902
  },
3270
3903
  "default": "''",
3271
- "fieldName": "title"
3904
+ "fieldName": "heading"
3272
3905
  },
3273
3906
  {
3274
- "name": "subtitle",
3907
+ "name": "href",
3275
3908
  "type": {
3276
3909
  "text": "string"
3277
3910
  },
3278
3911
  "default": "''",
3279
- "fieldName": "subtitle"
3912
+ "description": "Makes the heading a link (e.g. to the section's overview page).",
3913
+ "fieldName": "href"
3280
3914
  },
3281
3915
  {
3282
- "name": "allow-multiple",
3916
+ "name": "description",
3283
3917
  "type": {
3284
- "text": "boolean"
3918
+ "text": "string"
3285
3919
  },
3286
- "default": "false",
3287
- "fieldName": "allowMultiple"
3920
+ "default": "''",
3921
+ "fieldName": "description"
3922
+ },
3923
+ {
3924
+ "name": "variant",
3925
+ "type": {
3926
+ "text": "'plain' | 'card' | 'accent'"
3927
+ },
3928
+ "default": "'plain'",
3929
+ "description": "`plain` (default), `card` (tinted tile) or `accent` (solid accent tile, light text).",
3930
+ "fieldName": "variant"
3931
+ },
3932
+ {
3933
+ "name": "cta-label",
3934
+ "type": {
3935
+ "text": "string"
3936
+ },
3937
+ "default": "''",
3938
+ "description": "Text of a pill button at the bottom of the column; needs `cta-href`.",
3939
+ "fieldName": "ctaLabel"
3940
+ },
3941
+ {
3942
+ "name": "cta-href",
3943
+ "type": {
3944
+ "text": "string"
3945
+ },
3946
+ "default": "''",
3947
+ "fieldName": "ctaHref"
3288
3948
  }
3289
3949
  ],
3290
3950
  "superclass": {
3291
3951
  "name": "LitElement",
3292
3952
  "package": "lit"
3293
3953
  },
3294
- "tagName": "st-items-accordion",
3954
+ "tagName": "st-mega-menu-column",
3295
3955
  "customElement": true
3296
3956
  }
3297
3957
  ],
3298
3958
  "exports": [
3299
3959
  {
3300
3960
  "kind": "js",
3301
- "name": "ItemsAccordion",
3961
+ "name": "MegaMenuColumn",
3302
3962
  "declaration": {
3303
- "name": "ItemsAccordion",
3304
- "module": "src/items-accordion/ItemsAccordion.ts"
3963
+ "name": "MegaMenuColumn",
3964
+ "module": "src/mega-menu/MegaMenuColumn.ts"
3305
3965
  }
3306
3966
  },
3307
3967
  {
3308
3968
  "kind": "custom-element-definition",
3309
- "name": "st-items-accordion",
3969
+ "name": "st-mega-menu-column",
3310
3970
  "declaration": {
3311
- "name": "ItemsAccordion",
3312
- "module": "src/items-accordion/ItemsAccordion.ts"
3971
+ "name": "MegaMenuColumn",
3972
+ "module": "src/mega-menu/MegaMenuColumn.ts"
3313
3973
  }
3314
3974
  }
3315
3975
  ]
3316
3976
  },
3317
3977
  {
3318
3978
  "kind": "javascript-module",
3319
- "path": "src/markdown/Markdown.ts",
3979
+ "path": "src/mega-menu/MegaMenuFeature.ts",
3320
3980
  "declarations": [
3321
3981
  {
3322
3982
  "kind": "class",
3323
- "description": "Renders Markdown (GFM, single newlines become `<br>`) from either an inline `content` string or\r\na `src` URL it fetches. Ports `SankhyaUI`'s `useMarkdown` hook + `react-markdown` (remark-gfm,\r\nremark-breaks); output is sanitized with DOMPurify. `src` wins over `content` when both are set.\r\nWhile a fetch is pending it shows \"Loading content...\"; on failure \"Error loading content.\" and\r\na `markdown-error` event (detail: `{ error }`).\r\n\r\nText color is inherited from the parent so inverted containers just work.",
3324
- "name": "Markdown",
3983
+ "description": "A promo card for the featured column of an `st-mega-menu` (`slot=\"featured\"`). The whole card\nis one link. Two looks, after okta.com:\n\n- `story` (default): a rounded image on top, then the description and an underlined\n call-to-action line — a customer story or announcement.\n- `overlay`: a tile with light text over `image-url` (darkened), or over an accent gradient when\n there is no image — an optional `logo-url` top left, the title and description at the bottom.\n\nAn `http(s)` `href` opens in a new tab unless `target` says otherwise. Any other `href` fires a\n*cancelable* `mega-menu-select` event (detail: `{ href }`) first; a host doing client-side\nrouting calls `event.preventDefault()` on it.",
3984
+ "name": "MegaMenuFeature",
3985
+ "cssProperties": [
3986
+ {
3987
+ "description": "Start colour of the `overlay` gradient (default: the accent colour).",
3988
+ "name": "--st-mega-menu-feature-from"
3989
+ },
3990
+ {
3991
+ "description": "End colour of the `overlay` gradient.",
3992
+ "name": "--st-mega-menu-feature-to"
3993
+ }
3994
+ ],
3995
+ "cssParts": [
3996
+ {
3997
+ "description": "The card link.",
3998
+ "name": "card"
3999
+ },
4000
+ {
4001
+ "description": "The image (`story`).",
4002
+ "name": "image"
4003
+ },
4004
+ {
4005
+ "description": "The logo (`overlay`).",
4006
+ "name": "logo"
4007
+ },
4008
+ {
4009
+ "description": "The small label above the title.",
4010
+ "name": "eyebrow"
4011
+ },
4012
+ {
4013
+ "description": "The title.",
4014
+ "name": "title"
4015
+ },
4016
+ {
4017
+ "description": "The description.",
4018
+ "name": "description"
4019
+ },
4020
+ {
4021
+ "description": "The call-to-action line.",
4022
+ "name": "cta"
4023
+ }
4024
+ ],
3325
4025
  "members": [
3326
4026
  {
3327
4027
  "kind": "field",
3328
- "name": "content",
4028
+ "name": "shadowRootOptions",
4029
+ "type": {
4030
+ "text": "object"
4031
+ },
4032
+ "static": true,
4033
+ "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true }",
4034
+ "description": "`focus()` on the element focuses its link, so `st-dropdown` can arrow-key to it."
4035
+ },
4036
+ {
4037
+ "kind": "field",
4038
+ "name": "variant",
4039
+ "type": {
4040
+ "text": "'story' | 'overlay'"
4041
+ },
4042
+ "default": "'story'",
4043
+ "description": "`story` (default) or `overlay` — see the element description.",
4044
+ "attribute": "variant",
4045
+ "reflects": true
4046
+ },
4047
+ {
4048
+ "kind": "field",
4049
+ "name": "title",
4050
+ "type": {
4051
+ "text": "string"
4052
+ },
4053
+ "default": "''",
4054
+ "attribute": "title"
4055
+ },
4056
+ {
4057
+ "kind": "field",
4058
+ "name": "description",
4059
+ "type": {
4060
+ "text": "string"
4061
+ },
4062
+ "default": "''",
4063
+ "attribute": "description"
4064
+ },
4065
+ {
4066
+ "kind": "field",
4067
+ "name": "eyebrow",
4068
+ "type": {
4069
+ "text": "string"
4070
+ },
4071
+ "default": "''",
4072
+ "description": "Small label above the title, e.g. \"New\" or \"Report\".",
4073
+ "attribute": "eyebrow"
4074
+ },
4075
+ {
4076
+ "kind": "field",
4077
+ "name": "href",
4078
+ "type": {
4079
+ "text": "string"
4080
+ },
4081
+ "default": "''",
4082
+ "attribute": "href"
4083
+ },
4084
+ {
4085
+ "kind": "field",
4086
+ "name": "target",
4087
+ "type": {
4088
+ "text": "string"
4089
+ },
4090
+ "default": "''",
4091
+ "description": "`target` for the link. Defaults to `_blank` for an `http(s)` `href`, `_self` otherwise.",
4092
+ "attribute": "target"
4093
+ },
4094
+ {
4095
+ "kind": "field",
4096
+ "name": "imageUrl",
4097
+ "type": {
4098
+ "text": "string"
4099
+ },
4100
+ "default": "''",
4101
+ "description": "Image on top (`story`) or behind the text (`overlay`).",
4102
+ "attribute": "image-url"
4103
+ },
4104
+ {
4105
+ "kind": "field",
4106
+ "name": "imageAlt",
4107
+ "type": {
4108
+ "text": "string"
4109
+ },
4110
+ "default": "''",
4111
+ "attribute": "image-alt"
4112
+ },
4113
+ {
4114
+ "kind": "field",
4115
+ "name": "logoUrl",
4116
+ "type": {
4117
+ "text": "string"
4118
+ },
4119
+ "default": "''",
4120
+ "description": "Logo at the top of an `overlay` card.",
4121
+ "attribute": "logo-url"
4122
+ },
4123
+ {
4124
+ "kind": "field",
4125
+ "name": "logoAlt",
4126
+ "type": {
4127
+ "text": "string"
4128
+ },
4129
+ "default": "''",
4130
+ "attribute": "logo-alt"
4131
+ },
4132
+ {
4133
+ "kind": "field",
4134
+ "name": "ctaLabel",
4135
+ "type": {
4136
+ "text": "string"
4137
+ },
4138
+ "default": "''",
4139
+ "description": "Call-to-action text at the bottom of the card; empty hides it.",
4140
+ "attribute": "cta-label"
4141
+ },
4142
+ {
4143
+ "kind": "field",
4144
+ "name": "isExternal",
4145
+ "type": {
4146
+ "text": "boolean"
4147
+ },
4148
+ "privacy": "private",
4149
+ "readonly": true
4150
+ },
4151
+ {
4152
+ "kind": "field",
4153
+ "name": "onClick",
4154
+ "privacy": "private"
4155
+ }
4156
+ ],
4157
+ "events": [
4158
+ {
4159
+ "description": "The card was clicked (cancelable; detail `{ href }`).",
4160
+ "name": "mega-menu-select"
4161
+ }
4162
+ ],
4163
+ "attributes": [
4164
+ {
4165
+ "name": "variant",
4166
+ "type": {
4167
+ "text": "'story' | 'overlay'"
4168
+ },
4169
+ "default": "'story'",
4170
+ "description": "`story` (default) or `overlay` — see the element description.",
4171
+ "fieldName": "variant"
4172
+ },
4173
+ {
4174
+ "name": "title",
3329
4175
  "type": {
3330
4176
  "text": "string"
3331
4177
  },
3332
4178
  "default": "''",
3333
- "description": "Inline Markdown source. Ignored when `src` is set.",
3334
- "attribute": "content"
4179
+ "fieldName": "title"
3335
4180
  },
3336
4181
  {
3337
- "kind": "field",
3338
- "name": "src",
4182
+ "name": "description",
3339
4183
  "type": {
3340
4184
  "text": "string"
3341
4185
  },
3342
4186
  "default": "''",
3343
- "description": "URL of a Markdown file to fetch.",
3344
- "attribute": "src"
4187
+ "fieldName": "description"
3345
4188
  },
3346
4189
  {
3347
- "kind": "field",
3348
- "name": "fetched",
4190
+ "name": "eyebrow",
3349
4191
  "type": {
3350
4192
  "text": "string"
3351
4193
  },
3352
- "privacy": "private",
3353
- "default": "''"
4194
+ "default": "''",
4195
+ "description": "Small label above the title, e.g. \"New\" or \"Report\".",
4196
+ "fieldName": "eyebrow"
3354
4197
  },
3355
4198
  {
3356
- "kind": "field",
3357
- "name": "loading",
4199
+ "name": "href",
3358
4200
  "type": {
3359
- "text": "boolean"
4201
+ "text": "string"
3360
4202
  },
3361
- "privacy": "private",
3362
- "default": "false"
4203
+ "default": "''",
4204
+ "fieldName": "href"
3363
4205
  },
3364
4206
  {
3365
- "kind": "field",
3366
- "name": "error",
4207
+ "name": "target",
3367
4208
  "type": {
3368
- "text": "Error | null"
4209
+ "text": "string"
3369
4210
  },
3370
- "privacy": "private",
3371
- "default": "null"
4211
+ "default": "''",
4212
+ "description": "`target` for the link. Defaults to `_blank` for an `http(s)` `href`, `_self` otherwise.",
4213
+ "fieldName": "target"
3372
4214
  },
3373
4215
  {
3374
- "kind": "field",
3375
- "name": "abort",
4216
+ "name": "image-url",
3376
4217
  "type": {
3377
- "text": "AbortController | undefined"
4218
+ "text": "string"
3378
4219
  },
3379
- "privacy": "private"
4220
+ "default": "''",
4221
+ "description": "Image on top (`story`) or behind the text (`overlay`).",
4222
+ "fieldName": "imageUrl"
3380
4223
  },
3381
4224
  {
3382
- "kind": "method",
3383
- "name": "load",
3384
- "privacy": "private",
3385
- "return": {
3386
- "type": {
3387
- "text": "Promise<void>"
3388
- }
3389
- }
3390
- }
3391
- ],
3392
- "events": [
4225
+ "name": "image-alt",
4226
+ "type": {
4227
+ "text": "string"
4228
+ },
4229
+ "default": "''",
4230
+ "fieldName": "imageAlt"
4231
+ },
3393
4232
  {
3394
- "name": "markdown-error",
4233
+ "name": "logo-url",
3395
4234
  "type": {
3396
- "text": "CustomEvent"
3397
- }
3398
- }
3399
- ],
3400
- "attributes": [
4235
+ "text": "string"
4236
+ },
4237
+ "default": "''",
4238
+ "description": "Logo at the top of an `overlay` card.",
4239
+ "fieldName": "logoUrl"
4240
+ },
3401
4241
  {
3402
- "name": "content",
4242
+ "name": "logo-alt",
3403
4243
  "type": {
3404
4244
  "text": "string"
3405
4245
  },
3406
4246
  "default": "''",
3407
- "description": "Inline Markdown source. Ignored when `src` is set.",
3408
- "fieldName": "content"
4247
+ "fieldName": "logoAlt"
3409
4248
  },
3410
4249
  {
3411
- "name": "src",
4250
+ "name": "cta-label",
3412
4251
  "type": {
3413
4252
  "text": "string"
3414
4253
  },
3415
4254
  "default": "''",
3416
- "description": "URL of a Markdown file to fetch.",
3417
- "fieldName": "src"
4255
+ "description": "Call-to-action text at the bottom of the card; empty hides it.",
4256
+ "fieldName": "ctaLabel"
3418
4257
  }
3419
4258
  ],
3420
4259
  "superclass": {
3421
4260
  "name": "LitElement",
3422
4261
  "package": "lit"
3423
4262
  },
3424
- "tagName": "st-markdown",
4263
+ "tagName": "st-mega-menu-feature",
3425
4264
  "customElement": true
3426
4265
  }
3427
4266
  ],
3428
4267
  "exports": [
3429
4268
  {
3430
4269
  "kind": "js",
3431
- "name": "Markdown",
4270
+ "name": "MegaMenuFeature",
3432
4271
  "declaration": {
3433
- "name": "Markdown",
3434
- "module": "src/markdown/Markdown.ts"
4272
+ "name": "MegaMenuFeature",
4273
+ "module": "src/mega-menu/MegaMenuFeature.ts"
3435
4274
  }
3436
4275
  },
3437
4276
  {
3438
4277
  "kind": "custom-element-definition",
3439
- "name": "st-markdown",
4278
+ "name": "st-mega-menu-feature",
3440
4279
  "declaration": {
3441
- "name": "Markdown",
3442
- "module": "src/markdown/Markdown.ts"
4280
+ "name": "MegaMenuFeature",
4281
+ "module": "src/mega-menu/MegaMenuFeature.ts"
3443
4282
  }
3444
4283
  }
3445
4284
  ]
@@ -3821,6 +4660,17 @@
3821
4660
  "description": "`target` for the `<a>` (source default `_self`).",
3822
4661
  "attribute": "target"
3823
4662
  },
4663
+ {
4664
+ "kind": "field",
4665
+ "name": "variant",
4666
+ "type": {
4667
+ "text": "'default' | 'link'"
4668
+ },
4669
+ "default": "'default'",
4670
+ "description": "`default` (a row with a hover box) or `link` (a plain text link, as in `st-mega-menu-column`;\r\nmarked with an arrow when it opens a new tab).",
4671
+ "attribute": "variant",
4672
+ "reflects": true
4673
+ },
3824
4674
  {
3825
4675
  "kind": "field",
3826
4676
  "name": "hasIcon",
@@ -3910,6 +4760,15 @@
3910
4760
  "default": "'_self'",
3911
4761
  "description": "`target` for the `<a>` (source default `_self`).",
3912
4762
  "fieldName": "target"
4763
+ },
4764
+ {
4765
+ "name": "variant",
4766
+ "type": {
4767
+ "text": "'default' | 'link'"
4768
+ },
4769
+ "default": "'default'",
4770
+ "description": "`default` (a row with a hover box) or `link` (a plain text link, as in `st-mega-menu-column`;\r\nmarked with an arrow when it opens a new tab).",
4771
+ "fieldName": "variant"
3913
4772
  }
3914
4773
  ],
3915
4774
  "superclass": {
@@ -4524,6 +5383,71 @@
4524
5383
  }
4525
5384
  ]
4526
5385
  },
5386
+ {
5387
+ "kind": "javascript-module",
5388
+ "path": "src/stats/Stats.ts",
5389
+ "declarations": [
5390
+ {
5391
+ "kind": "class",
5392
+ "description": "Responsive grid of headline numbers with a label and optional description. Port of React `Stats`.",
5393
+ "name": "Stats",
5394
+ "members": [
5395
+ {
5396
+ "kind": "field",
5397
+ "name": "items",
5398
+ "type": {
5399
+ "text": "StatItem[]"
5400
+ },
5401
+ "default": "[]"
5402
+ },
5403
+ {
5404
+ "kind": "field",
5405
+ "name": "inverted",
5406
+ "type": {
5407
+ "text": "boolean"
5408
+ },
5409
+ "default": "false",
5410
+ "attribute": "inverted",
5411
+ "reflects": true
5412
+ }
5413
+ ],
5414
+ "attributes": [
5415
+ {
5416
+ "name": "inverted",
5417
+ "type": {
5418
+ "text": "boolean"
5419
+ },
5420
+ "default": "false",
5421
+ "fieldName": "inverted"
5422
+ }
5423
+ ],
5424
+ "superclass": {
5425
+ "name": "LitElement",
5426
+ "package": "lit"
5427
+ },
5428
+ "tagName": "st-stats",
5429
+ "customElement": true
5430
+ }
5431
+ ],
5432
+ "exports": [
5433
+ {
5434
+ "kind": "js",
5435
+ "name": "Stats",
5436
+ "declaration": {
5437
+ "name": "Stats",
5438
+ "module": "src/stats/Stats.ts"
5439
+ }
5440
+ },
5441
+ {
5442
+ "kind": "custom-element-definition",
5443
+ "name": "st-stats",
5444
+ "declaration": {
5445
+ "name": "Stats",
5446
+ "module": "src/stats/Stats.ts"
5447
+ }
5448
+ }
5449
+ ]
5450
+ },
4527
5451
  {
4528
5452
  "kind": "javascript-module",
4529
5453
  "path": "src/testimonials/Testimonials.ts",
@@ -4829,71 +5753,6 @@
4829
5753
  }
4830
5754
  }
4831
5755
  ]
4832
- },
4833
- {
4834
- "kind": "javascript-module",
4835
- "path": "src/stats/Stats.ts",
4836
- "declarations": [
4837
- {
4838
- "kind": "class",
4839
- "description": "Responsive grid of headline numbers with a label and optional description. Port of React `Stats`.",
4840
- "name": "Stats",
4841
- "members": [
4842
- {
4843
- "kind": "field",
4844
- "name": "items",
4845
- "type": {
4846
- "text": "StatItem[]"
4847
- },
4848
- "default": "[]"
4849
- },
4850
- {
4851
- "kind": "field",
4852
- "name": "inverted",
4853
- "type": {
4854
- "text": "boolean"
4855
- },
4856
- "default": "false",
4857
- "attribute": "inverted",
4858
- "reflects": true
4859
- }
4860
- ],
4861
- "attributes": [
4862
- {
4863
- "name": "inverted",
4864
- "type": {
4865
- "text": "boolean"
4866
- },
4867
- "default": "false",
4868
- "fieldName": "inverted"
4869
- }
4870
- ],
4871
- "superclass": {
4872
- "name": "LitElement",
4873
- "package": "lit"
4874
- },
4875
- "tagName": "st-stats",
4876
- "customElement": true
4877
- }
4878
- ],
4879
- "exports": [
4880
- {
4881
- "kind": "js",
4882
- "name": "Stats",
4883
- "declaration": {
4884
- "name": "Stats",
4885
- "module": "src/stats/Stats.ts"
4886
- }
4887
- },
4888
- {
4889
- "kind": "custom-element-definition",
4890
- "name": "st-stats",
4891
- "declaration": {
4892
- "name": "Stats",
4893
- "module": "src/stats/Stats.ts"
4894
- }
4895
- }
4896
- ]
4897
5756
  }
4898
5757
  ]
4899
5758
  }