@sankhyatronics/sankhya-cms 0.1.18 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/custom-elements.json +608 -15
  2. package/dist/bento-grid/index.d.ts +8 -1
  3. package/dist/bento-grid/index.js +2 -1
  4. package/dist/card/index.d.ts +3 -4
  5. package/dist/card/index.js +1 -1
  6. package/dist/{chunk-LEXZKGQX.js → chunk-2DXHPEB5.js} +1 -1
  7. package/dist/chunk-2DXHPEB5.js.map +1 -0
  8. package/dist/{chunk-R5G6KFTJ.js → chunk-2FJDNJ7R.js} +1 -1
  9. package/dist/chunk-2FJDNJ7R.js.map +1 -0
  10. package/dist/{chunk-ZN4LIKVG.js → chunk-3OEEOBHB.js} +1 -1
  11. package/dist/chunk-3OEEOBHB.js.map +1 -0
  12. package/dist/{chunk-BMHMNXIA.js → chunk-4AFOKKSU.js} +1 -1
  13. package/dist/chunk-4AFOKKSU.js.map +1 -0
  14. package/dist/{chunk-76AVBQUA.js → chunk-5C6C6K5U.js} +98 -4
  15. package/dist/chunk-5C6C6K5U.js.map +1 -0
  16. package/dist/{chunk-7NLZND6Q.js → chunk-5F5PTVWR.js} +27 -2
  17. package/dist/chunk-5F5PTVWR.js.map +1 -0
  18. package/dist/chunk-5MY6OWMK.js +125 -0
  19. package/dist/chunk-5MY6OWMK.js.map +1 -0
  20. package/dist/{chunk-FLY7TNRT.js → chunk-7NIWQWTA.js} +1 -1
  21. package/dist/chunk-7NIWQWTA.js.map +1 -0
  22. package/dist/{chunk-ALI26WOB.js → chunk-EE6PAN3B.js} +33 -2
  23. package/dist/chunk-EE6PAN3B.js.map +1 -0
  24. package/dist/{chunk-VWS53WY4.js → chunk-HMUZON6I.js} +49 -4
  25. package/dist/chunk-HMUZON6I.js.map +1 -0
  26. package/dist/chunk-O4FCRKDX.js +178 -0
  27. package/dist/chunk-O4FCRKDX.js.map +1 -0
  28. package/dist/{chunk-SMLR736E.js → chunk-OELI3IWC.js} +1 -1
  29. package/dist/chunk-OELI3IWC.js.map +1 -0
  30. package/dist/{chunk-JQY2G4QK.js → chunk-OLA35A2O.js} +1 -1
  31. package/dist/chunk-OLA35A2O.js.map +1 -0
  32. package/dist/{chunk-YQ42EBK5.js → chunk-PHEGSCOM.js} +1 -1
  33. package/dist/chunk-PHEGSCOM.js.map +1 -0
  34. package/dist/{chunk-5EBWMPJS.js → chunk-QLA4BH2B.js} +5 -5
  35. package/dist/chunk-QLA4BH2B.js.map +1 -0
  36. package/dist/{chunk-JKBWZLG4.js → chunk-SQ3OZO32.js} +141 -3
  37. package/dist/chunk-SQ3OZO32.js.map +1 -0
  38. package/dist/chunk-UAIUBPDN.js +11 -0
  39. package/dist/chunk-UAIUBPDN.js.map +1 -0
  40. package/dist/{chunk-XWB4CKDU.js → chunk-XUGEXERO.js} +6 -6
  41. package/dist/chunk-XUGEXERO.js.map +1 -0
  42. package/dist/chunk-ZRC5BVDX.js +219 -0
  43. package/dist/chunk-ZRC5BVDX.js.map +1 -0
  44. package/dist/cms-theme.css +7 -0
  45. package/dist/content-block/index.d.ts +2 -3
  46. package/dist/content-block/index.js +3 -2
  47. package/dist/dropdown/index.d.ts +8 -11
  48. package/dist/dropdown/index.js +1 -1
  49. package/dist/feature-split/index.js +2 -1
  50. package/dist/features-section/index.d.ts +4 -4
  51. package/dist/features-section/index.js +4 -3
  52. package/dist/flow/index.d.ts +35 -0
  53. package/dist/flow/index.js +9 -0
  54. package/dist/flow/index.js.map +1 -0
  55. package/dist/header/index.d.ts +8 -15
  56. package/dist/header/index.js +1 -1
  57. package/dist/hero/index.d.ts +18 -3
  58. package/dist/hero/index.js +1 -1
  59. package/dist/icon-button/index.d.ts +2 -4
  60. package/dist/icon-button/index.js +1 -1
  61. package/dist/index.d.ts +3 -0
  62. package/dist/index.js +36 -23
  63. package/dist/items-accordion/index.d.ts +5 -0
  64. package/dist/items-accordion/index.js +2 -1
  65. package/dist/markdown/index.d.ts +1 -2
  66. package/dist/markdown/index.js +2 -1
  67. package/dist/menu-grid/index.d.ts +2 -3
  68. package/dist/menu-grid/index.js +1 -1
  69. package/dist/menu-grid-item/index.d.ts +6 -8
  70. package/dist/menu-grid-item/index.js +1 -1
  71. package/dist/menu-item/index.d.ts +5 -7
  72. package/dist/menu-item/index.js +1 -1
  73. package/dist/promo-banner/index.d.ts +14 -3
  74. package/dist/promo-banner/index.js +1 -1
  75. package/dist/schema/index.d.ts +3 -0
  76. package/dist/schema/index.js +3 -0
  77. package/dist/schema/index.js.map +1 -1
  78. package/dist/section/index.d.ts +3 -0
  79. package/dist/section/index.js +1 -1
  80. package/dist/steps/index.d.ts +33 -0
  81. package/dist/steps/index.js +10 -0
  82. package/dist/steps/index.js.map +1 -0
  83. package/dist/tag-strip/index.d.ts +26 -0
  84. package/dist/tag-strip/index.js +9 -0
  85. package/dist/tag-strip/index.js.map +1 -0
  86. package/package.json +14 -2
  87. package/dist/chunk-5EBWMPJS.js.map +0 -1
  88. package/dist/chunk-76AVBQUA.js.map +0 -1
  89. package/dist/chunk-7NLZND6Q.js.map +0 -1
  90. package/dist/chunk-ALI26WOB.js.map +0 -1
  91. package/dist/chunk-BMHMNXIA.js.map +0 -1
  92. package/dist/chunk-FLY7TNRT.js.map +0 -1
  93. package/dist/chunk-JKBWZLG4.js.map +0 -1
  94. package/dist/chunk-JQY2G4QK.js.map +0 -1
  95. package/dist/chunk-LEXZKGQX.js.map +0 -1
  96. package/dist/chunk-R5G6KFTJ.js.map +0 -1
  97. package/dist/chunk-SMLR736E.js.map +0 -1
  98. package/dist/chunk-VWS53WY4.js.map +0 -1
  99. package/dist/chunk-XWB4CKDU.js.map +0 -1
  100. package/dist/chunk-YQ42EBK5.js.map +0 -1
  101. package/dist/chunk-ZN4LIKVG.js.map +0 -1
@@ -248,7 +248,7 @@
248
248
  "declarations": [
249
249
  {
250
250
  "kind": "class",
251
- "description": "A responsive 4-column bento grid of icon/image cards. Items are set via the `items` property.",
251
+ "description": "A responsive 4-column bento grid of icon/image cards. Items are set via the `items` property.\nDescriptions are Markdown. A card links as a whole when it has `href` alone; with `actionLabel`\nthe link becomes a button inside the card.",
252
252
  "name": "BentoGrid",
253
253
  "cssProperties": [
254
254
  {
@@ -366,7 +366,7 @@
366
366
  "declarations": [
367
367
  {
368
368
  "kind": "class",
369
- "description": "A surfaced container — content goes in the default slot. Ports `SankhyaUI`'s React `Card`\n(`variant`, `padding`, `elevation`, `hoverable`, `inverted`); `onClick` is just a native `click`\nlistener on the element. `padding` takes `none | small | medium | large` (the source's\n`sm|md|lg`, spelled like `paddingScaleStyles`); `elevation` takes `none | sm | md | lg`.",
369
+ "description": "A surfaced container — content goes in the default slot. Attributes: `variant`, `padding`,\n`elevation`, `hoverable`, `inverted`; a click handler is just a native `click` listener on the\nelement. `padding` takes `none | small | medium | large`; `elevation` takes `none | sm | md | lg`.",
370
370
  "name": "Card",
371
371
  "members": [
372
372
  {
@@ -1224,7 +1224,7 @@
1224
1224
  "declarations": [
1225
1225
  {
1226
1226
  "kind": "class",
1227
- "description": "A long-form article section: centered title/subtitle, an optional featured image with caption,\nthen Markdown body text. Ports `SankhyaUI`'s React `ContentBlock`. The body comes from\n`content-src` (a Markdown URL, as in the source) or an inline `content` string (added so the\nblock works without a fetch); `content-src` wins when both are set.",
1227
+ "description": "A long-form article section: centered title/subtitle, an optional featured image with caption,\nthen Markdown body text. The body comes from `content-src` (a Markdown URL) or an inline\n`content` string (so the block works without a fetch); `content-src` wins when both are set.",
1228
1228
  "name": "ContentBlock",
1229
1229
  "cssProperties": [
1230
1230
  {
@@ -1507,7 +1507,7 @@
1507
1507
  "declarations": [
1508
1508
  {
1509
1509
  "kind": "class",
1510
- "description": "A labeled trigger + slotted dropdown panel — nav menus (typically holding an `st-menu-grid`),\naction menus, anything \"click a trigger, show content under it\". A 1:1 port of `SankhyaUI`'s\nReact `Dropdown` (`SankhyaCMS/SankhyaUI/src/components/Dropdown`): same markup\n(`.menu` > `.menu-title` + `.menu-dropdown`), sizes, 0.3s slide/fade, and behavior —\n\n- only one dropdown is open at a time (the source's `DropdownProvider`, built in here, so no\n provider element is needed);\n- a mousedown outside, Escape, or a click inside the panel closes it;\n- an `href` trigger toggles the panel when it has content, and is a plain link when it doesn't;\n- `inline` opens the panel in the flow, the source's `.touch-device` layout.\n\nColors and the panel's surface come from the suite theme (the source left those to the\nconsumer's `className`/`itemGroupClassName` utility classes). Two source rules are left out\nbecause they break existing suite uses (`st-source-bar`'s site/library menus): the 100vw panel\nat <=768px (overflows the screen from wherever the trigger sits; the header uses `inline`\ninstead) and `overflow: hidden` on slotted children (clips their focus rings). Suite additions\nkept on top: `align`, `active`, `disabled`, `inline`, and the `dropdown-toggle` event — plus\n`mega` and `open-on-hover` for an okta.com-style mega menu (see `st-mega-menu`).",
1510
+ "description": "A labeled trigger + slotted dropdown panel — nav menus (typically holding an `st-menu-grid`),\naction menus, anything \"click a trigger, show content under it\". Markup\n(`.menu` > `.menu-title` + `.menu-dropdown`), sizes, 0.3s slide/fade, and behavior —\n\n- only one dropdown is open at a time (a shared provider is built in, so no provider element\n is needed);\n- a mousedown outside, Escape, or a click inside the panel closes it;\n- an `href` trigger toggles the panel when it has content, and is a plain link when it doesn't;\n- `inline` opens the panel in the flow, the source's `.touch-device` layout.\n\nColors and the panel's surface come from the suite theme. The panel is never 100vw wide at\n<=768px (it would overflow the screen from wherever the trigger sits; use `inline` in headers\ninstead), and slotted children are not clipped with `overflow: hidden` (that would cut off their\nfocus rings). Other attributes: `align`, `active`, `disabled`, `inline`, the `dropdown-toggle`\nevent, and `mega` plus `open-on-hover` for a mega menu (see `st-mega-menu`).",
1511
1511
  "name": "Dropdown",
1512
1512
  "cssProperties": [
1513
1513
  {
@@ -2445,7 +2445,7 @@
2445
2445
  "declarations": [
2446
2446
  {
2447
2447
  "kind": "class",
2448
- "description": "A titled grid of feature tiles. Ports `SankhyaUI`'s React `FeaturesSection`: tiles come from the\n`items` property, from slotted `st-feature-item` elements (the source's `children`), or both\n(slotted first). `columns` sets the grid width (default 2; one column below 768px). `inverted`\nis passed on to the `items` tiles; slotted tiles need their own `inverted` attribute.",
2448
+ "description": "A titled grid of feature tiles. Tiles come from the `items` property, from slotted\n`st-feature-item` elements, or both (slotted first). `columns` sets the grid width (default 2;\none column below 768px). `inverted` is passed on to the `items` tiles; slotted tiles need their\nown `inverted` attribute.",
2449
2449
  "name": "FeaturesSection",
2450
2450
  "cssProperties": [
2451
2451
  {
@@ -2581,6 +2581,126 @@
2581
2581
  }
2582
2582
  ]
2583
2583
  },
2584
+ {
2585
+ "kind": "javascript-module",
2586
+ "path": "src/flow/Flow.ts",
2587
+ "declarations": [
2588
+ {
2589
+ "kind": "class",
2590
+ "description": "A left-to-right process or architecture flow: boxes joined by arrows. Boxes come in three looks\n(`solid`, `outline`, `accent`); the arrows are decorative (`aria-hidden`), and the list is exposed\nas an ordered list. Below 600px the row stacks vertically and the arrows point down.\n`inverted` puts the flow on the dark band (`--st-cms-band-dark-bg`).",
2591
+ "name": "Flow",
2592
+ "cssProperties": [
2593
+ {
2594
+ "description": "Overrides the block's padding.",
2595
+ "name": "--st-flow-padding"
2596
+ }
2597
+ ],
2598
+ "cssParts": [
2599
+ {
2600
+ "description": "The ordered list of nodes.",
2601
+ "name": "flow"
2602
+ },
2603
+ {
2604
+ "description": "Each step's box (a `li`'s child).",
2605
+ "name": "node"
2606
+ },
2607
+ {
2608
+ "description": "The box's label.",
2609
+ "name": "label"
2610
+ },
2611
+ {
2612
+ "description": "The box's caption.",
2613
+ "name": "caption"
2614
+ },
2615
+ {
2616
+ "description": "The arrow between two boxes.",
2617
+ "name": "arrow"
2618
+ }
2619
+ ],
2620
+ "members": [
2621
+ {
2622
+ "kind": "field",
2623
+ "name": "nodes",
2624
+ "type": {
2625
+ "text": "FlowNode[]"
2626
+ },
2627
+ "default": "[]",
2628
+ "description": "The boxes, in order."
2629
+ },
2630
+ {
2631
+ "kind": "field",
2632
+ "name": "label",
2633
+ "type": {
2634
+ "text": "string"
2635
+ },
2636
+ "default": "''",
2637
+ "description": "Accessible name for the list of steps.",
2638
+ "attribute": "label"
2639
+ },
2640
+ {
2641
+ "kind": "field",
2642
+ "name": "inverted",
2643
+ "type": {
2644
+ "text": "boolean"
2645
+ },
2646
+ "default": "false",
2647
+ "description": "Puts the flow on the dark band (`--st-cms-band-dark-bg`), which stays dark in the dark theme.",
2648
+ "attribute": "inverted",
2649
+ "reflects": true
2650
+ },
2651
+ {
2652
+ "kind": "method",
2653
+ "name": "arrow",
2654
+ "privacy": "private"
2655
+ }
2656
+ ],
2657
+ "attributes": [
2658
+ {
2659
+ "name": "label",
2660
+ "type": {
2661
+ "text": "string"
2662
+ },
2663
+ "default": "''",
2664
+ "description": "Accessible name for the list of steps.",
2665
+ "fieldName": "label"
2666
+ },
2667
+ {
2668
+ "name": "inverted",
2669
+ "type": {
2670
+ "text": "boolean"
2671
+ },
2672
+ "default": "false",
2673
+ "description": "Puts the flow on the dark band (`--st-cms-band-dark-bg`), which stays dark in the dark theme.",
2674
+ "fieldName": "inverted"
2675
+ }
2676
+ ],
2677
+ "superclass": {
2678
+ "name": "LitElement",
2679
+ "package": "lit"
2680
+ },
2681
+ "tagName": "st-flow",
2682
+ "customElement": true
2683
+ }
2684
+ ],
2685
+ "exports": [
2686
+ {
2687
+ "kind": "js",
2688
+ "name": "Flow",
2689
+ "declaration": {
2690
+ "name": "Flow",
2691
+ "module": "src/flow/Flow.ts"
2692
+ }
2693
+ },
2694
+ {
2695
+ "kind": "custom-element-definition",
2696
+ "name": "st-flow",
2697
+ "declaration": {
2698
+ "name": "Flow",
2699
+ "module": "src/flow/Flow.ts"
2700
+ }
2701
+ }
2702
+ ]
2703
+ },
2584
2704
  {
2585
2705
  "kind": "javascript-module",
2586
2706
  "path": "src/footer/Footer.ts",
@@ -2858,7 +2978,7 @@
2858
2978
  "declarations": [
2859
2979
  {
2860
2980
  "kind": "class",
2861
- "description": "The app-shell header bar — brand (image + title, or title alone) on the left, a `slot=\"menu\"`\nfor primary nav (e.g. `st-dropdown`/`st-menu-grid` mega-menus, or plain links) taking the\nmiddle, and a `slot=\"utility\"` for account/app-switcher/theme controls on the right. Ported\nfrom `SankhyaUI`'s React `Header` (a separate, unrelated marketing-site project) to this\npackage's Lit conventions and this workspace's actual needs — that source component takes an\n`imageSrc` logo with no text fallback, but none of this suite's apps has a logo image today, so\n`title` is the primary brand prop here and `brand-image-url` is optional, mirroring\n`st-app-header`'s own brand/title split (this component's slotted-menu/utility shape is a\ndeliberately different, more generic surface than `st-app-header`'s fixed nav-links/user-menu\nprops — pick whichever fits a given app's header).\n\nLayout follows the source's `Header.css`: the menu starts 4rem after the brand, the utility\ncontrols sit after a vertical divider, and below `BREAKPOINT_TABLET` (900px here; 768px in the\nsource) `menu`/`utility` collapse behind a hamburger toggle into a full-screen layer under the\ntoggle (closes on Escape or a click inside it), where the menu's `st-dropdown`s are switched to\n`inline` so they open in the flow — the same two slotted elements just get repositioned by CSS\n(`.mobile-panel`'s `display: contents` at desktop width vs. a real fixed-position box below\n`BREAKPOINT_TABLET`), rather than the slots being duplicated in the template, since a shadow\nroot can only ever assign a given light-DOM child to the *first* slot of a given name.\n\nAn optional `slot=\"brand-extra\"` sits right after the brand (e.g. an edition badge such as\n\"🇮🇳 India Edition\"); unlike `menu`/`utility` it stays in the bar at every width.\n\nAlso carries an optional built-in language switcher (`languages`/`currentLanguageCode`, fires\n`language-change`) — ported from `st-app-header`'s own implementation verbatim rather than\nrebuilt, since the source `Header`'s reference story shows an equivalent flag/language `Select`\nas a first-class header utility. Hidden entirely when `languages` has fewer than two entries.\nThis component has no translation logic itself; the consuming app owns what a language `code`\nmeans and which content it re-renders in response.",
2981
+ "description": "The app-shell header bar — brand (image + title, or title alone) on the left, a `slot=\"menu\"`\nfor primary nav (e.g. `st-dropdown`/`st-menu-grid` mega-menus, or plain links) taking the\nmiddle, and a `slot=\"utility\"` for account/app-switcher/theme controls on the right. `title` is\nthe primary brand prop; `brand-image-url` is optional. For a fixed nav-links/user-menu header,\nuse `st-app-header` instead.\n\nLayout: the menu starts 4rem after the brand, the utility\ncontrols sit after a vertical divider, and below `BREAKPOINT_TABLET` (900px) `menu`/`utility`\ncollapse behind a hamburger toggle into a full-screen layer under the\ntoggle (closes on Escape or a click inside it), where the menu's `st-dropdown`s are switched to\n`inline` so they open in the flow — the same two slotted elements just get repositioned by CSS\n(`.mobile-panel`'s `display: contents` at desktop width vs. a real fixed-position box below\n`BREAKPOINT_TABLET`), rather than the slots being duplicated in the template, since a shadow\nroot can only ever assign a given light-DOM child to the *first* slot of a given name.\n\nAn optional `slot=\"brand-extra\"` sits right after the brand (e.g. an edition badge such as\n\"🇮🇳 India Edition\"); unlike `menu`/`utility` it stays in the bar at every width.\n\nAlso carries an optional built-in language switcher (`languages`/`currentLanguageCode`, fires\n`language-change`). Hidden entirely when `languages` has fewer than two entries.\nThis component has no translation logic itself; the consuming app owns what a language `code`\nmeans and which content it re-renders in response.",
2862
2982
  "name": "Header",
2863
2983
  "cssProperties": [
2864
2984
  {
@@ -3152,7 +3272,7 @@
3152
3272
  "kind": "field",
3153
3273
  "name": "syncInlineDropdowns",
3154
3274
  "privacy": "private",
3155
- "description": "While the hamburger layout is on, the dropdowns in the header open in the flow of the\nfull-screen panel instead of floating over it (SankhyaUI's touch-device layout)."
3275
+ "description": "While the hamburger layout is on, the dropdowns in the header open in the flow of the\nfull-screen panel instead of floating over it (the touch-device layout)."
3156
3276
  },
3157
3277
  {
3158
3278
  "kind": "field",
@@ -3435,7 +3555,7 @@
3435
3555
  "declarations": [
3436
3556
  {
3437
3557
  "kind": "class",
3438
- "description": "Full-width hero banner: background image with a darkening overlay, optional eyebrow, title,\noptional subtitle and up to two call-to-action links. Port of `SankhyaUI`'s React `Hero`; the\nframer-motion entrance is redone as CSS keyframes (skipped under `prefers-reduced-motion`).\n\n`size`, `content-position` and `overlay=\"gradient\"` give the large editorial layout (copy on the\nlower left over a gradient that darkens towards it) used by enterprise marketing heroes; the\ndefaults keep the original centered banner. Put several heroes in an `st-carousel` with\n`indicator-style=\"tabs\"` for a tabbed hero carousel.",
3558
+ "description": "Full-width hero banner: background image with a darkening overlay, optional eyebrow, title,\noptional subtitle and up to two call-to-action links. The entrance animation is CSS keyframes\n(skipped under `prefers-reduced-motion`).\n\n`size`, `content-position` and `overlay=\"gradient\"` give the large editorial layout (copy on the\nlower left over a gradient that darkens towards it) used by enterprise marketing heroes; the\ndefaults keep the original centered banner. Put several heroes in an `st-carousel` with\n`indicator-style=\"tabs\"` for a tabbed hero carousel.\n\n`badge` is a pill above the title; `highlights` is a row of check-marked points under the buttons.\n`layout=\"split\"` swaps the background for a two-column layout: copy on one side, `image-src` as an\n`<img>` (alt from `image-alt`) on the other, on normal page colours with no overlay.",
3439
3559
  "name": "Hero",
3440
3560
  "cssProperties": [
3441
3561
  {
@@ -3452,6 +3572,18 @@
3452
3572
  "description": "The small label above the title.",
3453
3573
  "name": "eyebrow"
3454
3574
  },
3575
+ {
3576
+ "description": "The pill above the title.",
3577
+ "name": "badge"
3578
+ },
3579
+ {
3580
+ "description": "The row of check-marked points.",
3581
+ "name": "highlights"
3582
+ },
3583
+ {
3584
+ "description": "The image in `layout=\"split\"`.",
3585
+ "name": "image"
3586
+ },
3455
3587
  {
3456
3588
  "description": "The outlined second button.",
3457
3589
  "name": "secondary-action"
@@ -3571,6 +3703,46 @@
3571
3703
  "default": "''",
3572
3704
  "attribute": "secondary-href"
3573
3705
  },
3706
+ {
3707
+ "kind": "field",
3708
+ "name": "badge",
3709
+ "type": {
3710
+ "text": "string"
3711
+ },
3712
+ "default": "''",
3713
+ "description": "Small pill above the title (e.g. \"New\", \"Now available\").",
3714
+ "attribute": "badge"
3715
+ },
3716
+ {
3717
+ "kind": "field",
3718
+ "name": "highlights",
3719
+ "type": {
3720
+ "text": "string[]"
3721
+ },
3722
+ "default": "[]",
3723
+ "description": "Check-marked points shown in a row under the buttons."
3724
+ },
3725
+ {
3726
+ "kind": "field",
3727
+ "name": "layout",
3728
+ "type": {
3729
+ "text": "'background' | 'split'"
3730
+ },
3731
+ "default": "'background'",
3732
+ "description": "`background` (default) puts `image-src` behind the copy; `split` puts copy and image side by side.",
3733
+ "attribute": "layout",
3734
+ "reflects": true
3735
+ },
3736
+ {
3737
+ "kind": "field",
3738
+ "name": "imageAlt",
3739
+ "type": {
3740
+ "text": "string"
3741
+ },
3742
+ "default": "''",
3743
+ "description": "Alt text of the image in `layout=\"split\"`. Empty marks it as decorative.",
3744
+ "attribute": "image-alt"
3745
+ },
3574
3746
  {
3575
3747
  "kind": "field",
3576
3748
  "name": "size",
@@ -3760,6 +3932,33 @@
3760
3932
  "default": "''",
3761
3933
  "fieldName": "secondaryHref"
3762
3934
  },
3935
+ {
3936
+ "name": "badge",
3937
+ "type": {
3938
+ "text": "string"
3939
+ },
3940
+ "default": "''",
3941
+ "description": "Small pill above the title (e.g. \"New\", \"Now available\").",
3942
+ "fieldName": "badge"
3943
+ },
3944
+ {
3945
+ "name": "layout",
3946
+ "type": {
3947
+ "text": "'background' | 'split'"
3948
+ },
3949
+ "default": "'background'",
3950
+ "description": "`background` (default) puts `image-src` behind the copy; `split` puts copy and image side by side.",
3951
+ "fieldName": "layout"
3952
+ },
3953
+ {
3954
+ "name": "image-alt",
3955
+ "type": {
3956
+ "text": "string"
3957
+ },
3958
+ "default": "''",
3959
+ "description": "Alt text of the image in `layout=\"split\"`. Empty marks it as decorative.",
3960
+ "fieldName": "imageAlt"
3961
+ },
3763
3962
  {
3764
3963
  "name": "size",
3765
3964
  "type": {
@@ -3821,7 +4020,7 @@
3821
4020
  "declarations": [
3822
4021
  {
3823
4022
  "kind": "class",
3824
- "description": "A small, icon-only action button — ported from `SankhyaUI`'s React `IconButton` (a separate,\nunrelated marketing-site project; that source takes an iconify string `icon` prop, this package\nhas no iconify dependency, so the icon is default-slotted content instead, same convention as\n`st-dropdown`/`st-menu-grid-item`'s `slot=\"icon\"`).\n\nFires a plain native `click` — no custom event, since a caller just wants an ordinary button.",
4023
+ "description": "A small, icon-only action button. The icon is default-slotted content (the package has no icon\nlibrary dependency), the same convention as `st-dropdown`/`st-menu-grid-item`'s `slot=\"icon\"`.\n\nFires a plain native `click` — no custom event, since a caller just wants an ordinary button.",
3825
4024
  "name": "IconButton",
3826
4025
  "members": [
3827
4026
  {
@@ -3897,7 +4096,7 @@
3897
4096
  "declarations": [
3898
4097
  {
3899
4098
  "kind": "class",
3900
- "description": "A vertical list of collapsible title/content rows; one open at a time unless `allow-multiple`.",
4099
+ "description": "A vertical list of collapsible title/content rows; one open at a time unless `allow-multiple`.\nEach row's `content` is Markdown, sanitized. `open-first` starts with the first row open.",
3901
4100
  "name": "ItemsAccordion",
3902
4101
  "cssProperties": [
3903
4102
  {
@@ -3941,6 +4140,16 @@
3941
4140
  "default": "false",
3942
4141
  "attribute": "allow-multiple"
3943
4142
  },
4143
+ {
4144
+ "kind": "field",
4145
+ "name": "openFirst",
4146
+ "type": {
4147
+ "text": "boolean"
4148
+ },
4149
+ "default": "false",
4150
+ "description": "Starts with the first row open. Applies when `items` or this flag changes while nothing is open.",
4151
+ "attribute": "open-first"
4152
+ },
3944
4153
  {
3945
4154
  "kind": "field",
3946
4155
  "name": "openIds",
@@ -3993,6 +4202,15 @@
3993
4202
  },
3994
4203
  "default": "false",
3995
4204
  "fieldName": "allowMultiple"
4205
+ },
4206
+ {
4207
+ "name": "open-first",
4208
+ "type": {
4209
+ "text": "boolean"
4210
+ },
4211
+ "default": "false",
4212
+ "description": "Starts with the first row open. Applies when `items` or this flag changes while nothing is open.",
4213
+ "fieldName": "openFirst"
3996
4214
  }
3997
4215
  ],
3998
4216
  "superclass": {
@@ -4183,7 +4401,7 @@
4183
4401
  "declarations": [
4184
4402
  {
4185
4403
  "kind": "class",
4186
- "description": "Renders Markdown (GFM, single newlines become `<br>`) from either an inline `content` string or\na `src` URL it fetches. Ports `SankhyaUI`'s `useMarkdown` hook + `react-markdown` (remark-gfm,\nremark-breaks); output is sanitized with DOMPurify. `src` wins over `content` when both are set.\nWhile a fetch is pending it shows \"Loading content...\"; on failure \"Error loading content.\" and\na `markdown-error` event (detail: `{ error }`).\n\nText color is inherited from the parent so inverted containers just work.",
4404
+ "description": "Renders Markdown (GFM, single newlines become `<br>`) from either an inline `content` string or\na `src` URL it fetches. Output is sanitized with DOMPurify. `src` wins over `content` when both are set.\nWhile a fetch is pending it shows \"Loading content...\"; on failure \"Error loading content.\" and\na `markdown-error` event (detail: `{ error }`).\n\nText color is inherited from the parent so inverted containers just work.",
4187
4405
  "name": "Markdown",
4188
4406
  "members": [
4189
4407
  {
@@ -5029,7 +5247,7 @@
5029
5247
  "declarations": [
5030
5248
  {
5031
5249
  "kind": "class",
5032
- "description": "A responsive grid of `st-menu-grid-item`s — the \"rich\" nav-menu layout (icon + title +\ndescription per entry, arranged in columns), typically slotted into `st-dropdown`'s default\nslot. A 1:1 port of `SankhyaUI`'s React `MenuGrid` (`SankhyaCMS/SankhyaUI/src/components/Menu`):\nsame markup (`.menu-grid-container` > `.menu-grid.columns-N`), gap and breakpoints (768px: 2–4\ncolumns → 2; 480px: everything → 1; a 1-column grid stays 1).",
5250
+ "description": "A responsive grid of `st-menu-grid-item`s — the \"rich\" nav-menu layout (icon + title +\ndescription per entry, arranged in columns), typically slotted into `st-dropdown`'s default\nslot. Markup is `.menu-grid-container` > `.menu-grid.columns-N`; breakpoints: at 768px, 2–4\ncolumns become 2; at 480px, everything becomes 1 (a 1-column grid stays 1).",
5033
5251
  "name": "MenuGrid",
5034
5252
  "members": [
5035
5253
  {
@@ -5106,7 +5324,7 @@
5106
5324
  "declarations": [
5107
5325
  {
5108
5326
  "kind": "class",
5109
- "description": "One entry in an `st-menu-grid` — icon (via `slot=\"icon\"`) + title on one line, an optional\ndescription below, and an optional corner badge (\"New\", \"Popular\", ...). A 1:1 port of\n`SankhyaUI`'s React `MenuGridItem` (`SankhyaCMS/SankhyaUI/src/components/Menu`): same markup and\nCSS, with its `motion` effects redone in CSS — fades up the first time it scrolls into view,\nscales to 1.02 on hover / 0.98 while pressed, the icon tilts on hover, the badge pops in.\nColors come from the suite theme rather than per-item utility classes.\n\nAn `http(s)` `href` opens in a new tab, like the source. Any other `href` fires a *cancelable*\n`menu-grid-item-select` event (detail: `{ href }`) first: a host doing client-side routing calls\n`event.preventDefault()` on it, which also cancels the anchor's own navigation (the source used\nreact-router's `Link` here; the suite apps have no router).",
5327
+ "description": "One entry in an `st-menu-grid` — icon (via `slot=\"icon\"`) + title on one line, an optional\ndescription below, and an optional corner badge (\"New\", \"Popular\", ...). Effects are CSS:\nfades up the first time it scrolls into view, scales to 1.02 on hover / 0.98 while pressed, the\nicon tilts on hover, the badge pops in. Colors come from the suite theme rather than per-item\nutility classes.\n\nAn `http(s)` `href` opens in a new tab. Any other `href` fires a *cancelable*\n`menu-grid-item-select` event (detail: `{ href }`) first: a host doing client-side routing calls\n`event.preventDefault()` on it, which also cancels the anchor's own navigation.",
5110
5328
  "name": "MenuGridItem",
5111
5329
  "members": [
5112
5330
  {
@@ -5309,7 +5527,7 @@
5309
5527
  "declarations": [
5310
5528
  {
5311
5529
  "kind": "class",
5312
- "description": "A single flat nav row — icon (`slot=\"icon\"`) + title + badge on one line, an optional\ndescription below — as opposed to `st-menu-grid-item`'s card for a multi-column grid. A 1:1\nport of `SankhyaUI`'s React `MenuItem` (`SankhyaCMS/SankhyaUI/src/components/Menu`): same\nmarkup and CSS, with its `motion` effects redone in CSS — nudges right and scales to 1.01 on\nhover / 0.99 while pressed, the icon tilts on hover, the badge pops in, the description fades\nin. Colors come from the suite theme rather than per-item utility classes.\n\nRenders a real `<a href>` but fires a *cancelable* `menu-item-select` event (detail: `{ href }`)\nbefore navigating — a host doing client-side routing calls `event.preventDefault()` on it (the\nsource used react-router's `Link` here; the suite apps have no router).",
5530
+ "description": "A single flat nav row — icon (`slot=\"icon\"`) + title + badge on one line, an optional\ndescription below — as opposed to `st-menu-grid-item`'s card for a multi-column grid. Effects\nare CSS: nudges right and scales to 1.01 on hover / 0.99 while pressed, the icon tilts on hover,\nthe badge pops in, the description fades in. Colors come from the suite theme rather than\nper-item utility classes.\n\nRenders a real `<a href>` but fires a *cancelable* `menu-item-select` event (detail: `{ href }`)\nbefore navigating — a host doing client-side routing calls `event.preventDefault()` on it.",
5313
5531
  "name": "MenuItem",
5314
5532
  "cssProperties": [
5315
5533
  {
@@ -5575,7 +5793,7 @@
5575
5793
  "declarations": [
5576
5794
  {
5577
5795
  "kind": "class",
5578
- "description": "Rounded call-to-action banner (title, subtitle, one outlined button) on a dark panel or a\nbackground image. Port of `SankhyaUI`'s React `PromoBanner`; the button fires an `action` event\n(detail `{ href }`, empty unless set) in place of `onAction`.",
5796
+ "description": "Rounded call-to-action banner (title, subtitle, one or two outlined buttons) on a dark panel or a\nbackground image. The buttons fire an `action` event\n(detail `{ href }`, empty unless set; the secondary button adds `kind: 'secondary'`).\n`onAction`. `variant=\"accent\"` fills the banner with the brand colour.",
5579
5797
  "name": "PromoBanner",
5580
5798
  "cssProperties": [
5581
5799
  {
@@ -5587,6 +5805,16 @@
5587
5805
  "name": "--st-promo-banner-padding"
5588
5806
  }
5589
5807
  ],
5808
+ "cssParts": [
5809
+ {
5810
+ "description": "The primary button.",
5811
+ "name": "action"
5812
+ },
5813
+ {
5814
+ "description": "The second button.",
5815
+ "name": "secondary-action"
5816
+ }
5817
+ ],
5590
5818
  "members": [
5591
5819
  {
5592
5820
  "kind": "field",
@@ -5633,6 +5861,37 @@
5633
5861
  "default": "''",
5634
5862
  "attribute": "image-src"
5635
5863
  },
5864
+ {
5865
+ "kind": "field",
5866
+ "name": "secondaryActionLabel",
5867
+ "type": {
5868
+ "text": "string"
5869
+ },
5870
+ "default": "''",
5871
+ "description": "Label of a second, outlined button next to the first.",
5872
+ "attribute": "secondary-action-label"
5873
+ },
5874
+ {
5875
+ "kind": "field",
5876
+ "name": "secondaryHref",
5877
+ "type": {
5878
+ "text": "string"
5879
+ },
5880
+ "default": "''",
5881
+ "description": "Target of the second button, sent in the `action` event detail.",
5882
+ "attribute": "secondary-href"
5883
+ },
5884
+ {
5885
+ "kind": "field",
5886
+ "name": "variant",
5887
+ "type": {
5888
+ "text": "'default' | 'accent'"
5889
+ },
5890
+ "default": "'default'",
5891
+ "description": "`default` is the dark panel; `accent` fills the banner with the brand colour and makes the first button white.",
5892
+ "attribute": "variant",
5893
+ "reflects": true
5894
+ },
5636
5895
  {
5637
5896
  "kind": "field",
5638
5897
  "name": "inverted",
@@ -5647,6 +5906,17 @@
5647
5906
  "kind": "field",
5648
5907
  "name": "onAction",
5649
5908
  "privacy": "private"
5909
+ },
5910
+ {
5911
+ "kind": "field",
5912
+ "name": "onSecondaryAction",
5913
+ "privacy": "private"
5914
+ }
5915
+ ],
5916
+ "events": [
5917
+ {
5918
+ "description": "Detail `{ href, kind? }`. `kind` is `secondary` for the second button only.",
5919
+ "name": "action"
5650
5920
  }
5651
5921
  ],
5652
5922
  "attributes": [
@@ -5690,6 +5960,33 @@
5690
5960
  "default": "''",
5691
5961
  "fieldName": "imageSrc"
5692
5962
  },
5963
+ {
5964
+ "name": "secondary-action-label",
5965
+ "type": {
5966
+ "text": "string"
5967
+ },
5968
+ "default": "''",
5969
+ "description": "Label of a second, outlined button next to the first.",
5970
+ "fieldName": "secondaryActionLabel"
5971
+ },
5972
+ {
5973
+ "name": "secondary-href",
5974
+ "type": {
5975
+ "text": "string"
5976
+ },
5977
+ "default": "''",
5978
+ "description": "Target of the second button, sent in the `action` event detail.",
5979
+ "fieldName": "secondaryHref"
5980
+ },
5981
+ {
5982
+ "name": "variant",
5983
+ "type": {
5984
+ "text": "'default' | 'accent'"
5985
+ },
5986
+ "default": "'default'",
5987
+ "description": "`default` is the dark panel; `accent` fills the banner with the brand colour and makes the first button white.",
5988
+ "fieldName": "variant"
5989
+ },
5693
5990
  {
5694
5991
  "name": "inverted",
5695
5992
  "type": {
@@ -5752,6 +6049,10 @@
5752
6049
  {
5753
6050
  "description": "The heading block.",
5754
6051
  "name": "header"
6052
+ },
6053
+ {
6054
+ "description": "The wrapper around the slot (the grid when `columns` is 2).",
6055
+ "name": "content"
5755
6056
  }
5756
6057
  ],
5757
6058
  "slots": [
@@ -5832,6 +6133,17 @@
5832
6133
  "attribute": "width",
5833
6134
  "reflects": true
5834
6135
  },
6136
+ {
6137
+ "kind": "field",
6138
+ "name": "columns",
6139
+ "type": {
6140
+ "text": "1 | 2"
6141
+ },
6142
+ "default": "1",
6143
+ "description": "Columns for the slotted children: `1` (default, stacked) or `2` (two equal columns, stacked again below 720px).",
6144
+ "attribute": "columns",
6145
+ "reflects": true
6146
+ },
5835
6147
  {
5836
6148
  "kind": "field",
5837
6149
  "name": "textAlignment",
@@ -5905,6 +6217,15 @@
5905
6217
  "description": "`contained` (default, the page container width), `narrow` (reading width) or `full` (edge to edge).",
5906
6218
  "fieldName": "width"
5907
6219
  },
6220
+ {
6221
+ "name": "columns",
6222
+ "type": {
6223
+ "text": "1 | 2"
6224
+ },
6225
+ "default": "1",
6226
+ "description": "Columns for the slotted children: `1` (default, stacked) or `2` (two equal columns, stacked again below 720px).",
6227
+ "fieldName": "columns"
6228
+ },
5908
6229
  {
5909
6230
  "name": "text-alignment",
5910
6231
  "type": {
@@ -6360,6 +6681,278 @@
6360
6681
  }
6361
6682
  ]
6362
6683
  },
6684
+ {
6685
+ "kind": "javascript-module",
6686
+ "path": "src/steps/Steps.ts",
6687
+ "declarations": [
6688
+ {
6689
+ "kind": "class",
6690
+ "description": "A numbered process: a responsive grid of cards, each with an automatic \"01\", \"02\", ... number, a\ntitle and a description. `highlightLast` makes the final card a dark navy call-out, the way\nenterprise pages close a how-it-works sequence. `inverted` puts the whole block on the dark band.",
6691
+ "name": "Steps",
6692
+ "cssProperties": [
6693
+ {
6694
+ "description": "Overrides the block's padding.",
6695
+ "name": "--st-steps-padding"
6696
+ }
6697
+ ],
6698
+ "cssParts": [
6699
+ {
6700
+ "description": "The eyebrow/title/subtitle block.",
6701
+ "name": "header"
6702
+ },
6703
+ {
6704
+ "description": "Each step card (an `li`).",
6705
+ "name": "card"
6706
+ },
6707
+ {
6708
+ "description": "The step number.",
6709
+ "name": "number"
6710
+ }
6711
+ ],
6712
+ "members": [
6713
+ {
6714
+ "kind": "field",
6715
+ "name": "eyebrow",
6716
+ "type": {
6717
+ "text": "string"
6718
+ },
6719
+ "default": "''",
6720
+ "description": "Small uppercase label above the title.",
6721
+ "attribute": "eyebrow"
6722
+ },
6723
+ {
6724
+ "kind": "field",
6725
+ "name": "title",
6726
+ "type": {
6727
+ "text": "string"
6728
+ },
6729
+ "default": "''",
6730
+ "attribute": "title"
6731
+ },
6732
+ {
6733
+ "kind": "field",
6734
+ "name": "subtitle",
6735
+ "type": {
6736
+ "text": "string"
6737
+ },
6738
+ "default": "''",
6739
+ "attribute": "subtitle"
6740
+ },
6741
+ {
6742
+ "kind": "field",
6743
+ "name": "items",
6744
+ "type": {
6745
+ "text": "StepItem[]"
6746
+ },
6747
+ "default": "[]",
6748
+ "description": "The steps, in order."
6749
+ },
6750
+ {
6751
+ "kind": "field",
6752
+ "name": "highlightLast",
6753
+ "type": {
6754
+ "text": "boolean"
6755
+ },
6756
+ "default": "false",
6757
+ "description": "Renders the last step as a dark navy call-out card.",
6758
+ "attribute": "highlight-last",
6759
+ "reflects": true
6760
+ },
6761
+ {
6762
+ "kind": "field",
6763
+ "name": "inverted",
6764
+ "type": {
6765
+ "text": "boolean"
6766
+ },
6767
+ "default": "false",
6768
+ "description": "Puts the block on the dark band (`--st-cms-band-dark-bg`), which stays dark in the dark theme.",
6769
+ "attribute": "inverted",
6770
+ "reflects": true
6771
+ }
6772
+ ],
6773
+ "attributes": [
6774
+ {
6775
+ "name": "eyebrow",
6776
+ "type": {
6777
+ "text": "string"
6778
+ },
6779
+ "default": "''",
6780
+ "description": "Small uppercase label above the title.",
6781
+ "fieldName": "eyebrow"
6782
+ },
6783
+ {
6784
+ "name": "title",
6785
+ "type": {
6786
+ "text": "string"
6787
+ },
6788
+ "default": "''",
6789
+ "fieldName": "title"
6790
+ },
6791
+ {
6792
+ "name": "subtitle",
6793
+ "type": {
6794
+ "text": "string"
6795
+ },
6796
+ "default": "''",
6797
+ "fieldName": "subtitle"
6798
+ },
6799
+ {
6800
+ "name": "highlight-last",
6801
+ "type": {
6802
+ "text": "boolean"
6803
+ },
6804
+ "default": "false",
6805
+ "description": "Renders the last step as a dark navy call-out card.",
6806
+ "fieldName": "highlightLast"
6807
+ },
6808
+ {
6809
+ "name": "inverted",
6810
+ "type": {
6811
+ "text": "boolean"
6812
+ },
6813
+ "default": "false",
6814
+ "description": "Puts the block on the dark band (`--st-cms-band-dark-bg`), which stays dark in the dark theme.",
6815
+ "fieldName": "inverted"
6816
+ }
6817
+ ],
6818
+ "superclass": {
6819
+ "name": "LitElement",
6820
+ "package": "lit"
6821
+ },
6822
+ "tagName": "st-steps",
6823
+ "customElement": true
6824
+ }
6825
+ ],
6826
+ "exports": [
6827
+ {
6828
+ "kind": "js",
6829
+ "name": "Steps",
6830
+ "declaration": {
6831
+ "name": "Steps",
6832
+ "module": "src/steps/Steps.ts"
6833
+ }
6834
+ },
6835
+ {
6836
+ "kind": "custom-element-definition",
6837
+ "name": "st-steps",
6838
+ "declaration": {
6839
+ "name": "Steps",
6840
+ "module": "src/steps/Steps.ts"
6841
+ }
6842
+ }
6843
+ ]
6844
+ },
6845
+ {
6846
+ "kind": "javascript-module",
6847
+ "path": "src/tag-strip/TagStrip.ts",
6848
+ "declarations": [
6849
+ {
6850
+ "kind": "class",
6851
+ "description": "A single bordered band: a small uppercase label on the left and a run of bold items beside it\n(e.g. \"Supported platforms: AWS · Azure · GCP\"). Items wrap onto new lines on narrow screens.\n`inverted` puts the band on the dark band (`--st-cms-band-dark-bg`).",
6852
+ "name": "TagStrip",
6853
+ "cssProperties": [
6854
+ {
6855
+ "description": "Overrides the block's padding.",
6856
+ "name": "--st-tag-strip-padding"
6857
+ }
6858
+ ],
6859
+ "cssParts": [
6860
+ {
6861
+ "description": "The bordered band.",
6862
+ "name": "strip"
6863
+ },
6864
+ {
6865
+ "description": "The uppercase label.",
6866
+ "name": "label"
6867
+ },
6868
+ {
6869
+ "description": "The list of items.",
6870
+ "name": "items"
6871
+ },
6872
+ {
6873
+ "description": "Each item (an `li`).",
6874
+ "name": "item"
6875
+ }
6876
+ ],
6877
+ "members": [
6878
+ {
6879
+ "kind": "field",
6880
+ "name": "label",
6881
+ "type": {
6882
+ "text": "string"
6883
+ },
6884
+ "default": "''",
6885
+ "description": "Small uppercase label at the start of the band. Omit it for items alone.",
6886
+ "attribute": "label"
6887
+ },
6888
+ {
6889
+ "kind": "field",
6890
+ "name": "items",
6891
+ "type": {
6892
+ "text": "string[]"
6893
+ },
6894
+ "default": "[]",
6895
+ "description": "The items, shown in order."
6896
+ },
6897
+ {
6898
+ "kind": "field",
6899
+ "name": "inverted",
6900
+ "type": {
6901
+ "text": "boolean"
6902
+ },
6903
+ "default": "false",
6904
+ "description": "Puts the band on the dark band (`--st-cms-band-dark-bg`), which stays dark in the dark theme.",
6905
+ "attribute": "inverted",
6906
+ "reflects": true
6907
+ }
6908
+ ],
6909
+ "attributes": [
6910
+ {
6911
+ "name": "label",
6912
+ "type": {
6913
+ "text": "string"
6914
+ },
6915
+ "default": "''",
6916
+ "description": "Small uppercase label at the start of the band. Omit it for items alone.",
6917
+ "fieldName": "label"
6918
+ },
6919
+ {
6920
+ "name": "inverted",
6921
+ "type": {
6922
+ "text": "boolean"
6923
+ },
6924
+ "default": "false",
6925
+ "description": "Puts the band on the dark band (`--st-cms-band-dark-bg`), which stays dark in the dark theme.",
6926
+ "fieldName": "inverted"
6927
+ }
6928
+ ],
6929
+ "superclass": {
6930
+ "name": "LitElement",
6931
+ "package": "lit"
6932
+ },
6933
+ "tagName": "st-tag-strip",
6934
+ "customElement": true
6935
+ }
6936
+ ],
6937
+ "exports": [
6938
+ {
6939
+ "kind": "js",
6940
+ "name": "TagStrip",
6941
+ "declaration": {
6942
+ "name": "TagStrip",
6943
+ "module": "src/tag-strip/TagStrip.ts"
6944
+ }
6945
+ },
6946
+ {
6947
+ "kind": "custom-element-definition",
6948
+ "name": "st-tag-strip",
6949
+ "declaration": {
6950
+ "name": "TagStrip",
6951
+ "module": "src/tag-strip/TagStrip.ts"
6952
+ }
6953
+ }
6954
+ ]
6955
+ },
6363
6956
  {
6364
6957
  "kind": "javascript-module",
6365
6958
  "path": "src/testimonials/Testimonials.ts",