@c2n/framework-types 0.0.9 → 0.0.11

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@c2n/framework-types",
4
- "version": "0.0.9",
4
+ "version": "0.0.11",
5
5
  "description": "GENERATED by @c2n/framework-types. Do not edit by hand.",
6
6
  "description-markup": "markdown",
7
7
  "contributions": {
@@ -650,6 +650,77 @@
650
650
  ]
651
651
  }
652
652
  },
653
+ {
654
+ "name": "c2-avatar-group",
655
+ "description": "Responsive stack of `c2-avatar` elements. It observes its rendered width and each avatar's actual size, then hides\nthe avatars that no longer fit and replaces them with a count. The host fills the available inline space up to\n`--c2-avatar-group--max-width`, so it also reacts when its parent becomes narrower.\n\n`@c2n/avatar`",
656
+ "attributes": [
657
+ {
658
+ "name": "max-visible",
659
+ "description": "Optional hard cap in addition to the automatically calculated responsive limit. Zero means no hard cap.",
660
+ "default": "0",
661
+ "value": {
662
+ "type": "number",
663
+ "kind": "expression"
664
+ }
665
+ },
666
+ {
667
+ "name": "count-mode",
668
+ "description": "Whether the overflow indicator shows `+hidden` or the total number of avatars.",
669
+ "default": "'hidden'",
670
+ "value": {
671
+ "type": "AvatarGroupCountMode",
672
+ "kind": "expression"
673
+ }
674
+ },
675
+ {
676
+ "name": "aria-label",
677
+ "description": "Accessible name for the group.",
678
+ "default": "'Avatar group'",
679
+ "value": {
680
+ "type": "string",
681
+ "kind": "expression"
682
+ }
683
+ }
684
+ ],
685
+ "js": {
686
+ "properties": [
687
+ {
688
+ "name": "maxVisible",
689
+ "description": "Optional hard cap in addition to the automatically calculated responsive limit. Zero means no hard cap.",
690
+ "value": {
691
+ "type": "number",
692
+ "kind": "expression"
693
+ }
694
+ },
695
+ {
696
+ "name": "countMode",
697
+ "description": "Whether the overflow indicator shows `+hidden` or the total number of avatars.",
698
+ "value": {
699
+ "type": "AvatarGroupCountMode",
700
+ "kind": "expression"
701
+ }
702
+ },
703
+ {
704
+ "name": "ariaLabel",
705
+ "description": "Accessible name for the group.",
706
+ "value": {
707
+ "type": "string",
708
+ "kind": "expression"
709
+ }
710
+ }
711
+ ],
712
+ "events": [
713
+ {
714
+ "name": "overflow-change",
715
+ "description": "Fired when resizing changes the visible or hidden counts.",
716
+ "value": {
717
+ "type": "CustomEvent<AvatarGroupOverflowDetail>",
718
+ "kind": "expression"
719
+ }
720
+ }
721
+ ]
722
+ }
723
+ },
653
724
  {
654
725
  "name": "c2-badge",
655
726
  "description": "Small status label: a tinted pill with text, a number or an icon, or a plain dot. Six `tone`s carry meaning\n(neutral, primary, success, warning, danger, info); each is a pair of CSS variables so a design system can recolour\nthem without touching the markup. Give it a `count` to show a number clamped at `max` (`99+`), or `dot` for a\npresence indicator that can `pulse`. Put an element in the `anchor` slot and the badge pins itself to one of its\ncorners (`placement`), for example a notification count on an icon button; `overlap=\"circular\"` moves it onto the\nedge of a round anchor such as an avatar.\n\n`@c2n/badge`",
@@ -741,6 +812,52 @@
741
812
  "events": []
742
813
  }
743
814
  },
815
+ {
816
+ "name": "c2-border-beam",
817
+ "description": "Decorative overlay that sends one or more soft highlights around the border of its containing block. Place it as\na direct child of a positioned container. The component inherits the container radius and uses a border mask, so\nthe highlight sits on the real border instead of drawing a second, offset outline.\n\n`@c2n/border-beam`",
818
+ "attributes": [
819
+ {
820
+ "name": "count",
821
+ "description": "Number of beams distributed evenly around the perimeter.",
822
+ "default": "1",
823
+ "value": {
824
+ "type": "number",
825
+ "kind": "expression"
826
+ }
827
+ },
828
+ {
829
+ "name": "side",
830
+ "description": "Border followed by the beam. `all` loops around the perimeter; one edge moves forward then backward.",
831
+ "default": "'all'",
832
+ "value": {
833
+ "type": "BorderBeamSide",
834
+ "kind": "expression"
835
+ }
836
+ },
837
+ {
838
+ "name": "reverse",
839
+ "description": "Sends the beams around the perimeter in the opposite direction.",
840
+ "default": "false",
841
+ "value": {
842
+ "type": "boolean",
843
+ "kind": "expression"
844
+ }
845
+ },
846
+ {
847
+ "name": "paused",
848
+ "description": "Freezes the beams at their current positions.",
849
+ "default": "false",
850
+ "value": {
851
+ "type": "boolean",
852
+ "kind": "expression"
853
+ }
854
+ }
855
+ ],
856
+ "js": {
857
+ "properties": [],
858
+ "events": []
859
+ }
860
+ },
744
861
  {
745
862
  "name": "c2-breadcrumb",
746
863
  "description": "Navigation trail. Every light-DOM child is one item, typically a `c2-link-button` with an `href`, and the last one\nis the current page: it is marked `aria-current=\"page\"` (through `selected` on a link button) and styled as text.\nA separator is drawn between items, a chevron by default or whatever is placed in the `separator` slot. The trail\nstays on one row: when the items do not fit the available width, some collapse behind an ellipsis, in priority\norder: the current page is always shown, then the first item, then the items closest to the current page while room\nremains. `max-items` caps how many are shown even when there is room. Clicking the ellipsis reveals every item\n(wrapping if needed).\n\n`@c2n/breadcrumb`",
@@ -4794,6 +4911,226 @@
4794
4911
  ]
4795
4912
  }
4796
4913
  },
4914
+ {
4915
+ "name": "c2-code-editor",
4916
+ "description": "Source-code field built on CodeMirror 6, which is an **optional peer dependency**: nothing is imported until an\neditor mounts, and when the peer is absent the element degrades to a plain `<textarea>` carrying the same value,\nthe same events and the same form behaviour — only without highlighting. Install what you need alongside it:\n\n`@c2n/code-editor`",
4917
+ "attributes": [
4918
+ {
4919
+ "name": "value",
4920
+ "description": "The source code. Assigning it replaces the document without losing scroll position or undo history.",
4921
+ "default": "''",
4922
+ "value": {
4923
+ "type": "string",
4924
+ "kind": "expression"
4925
+ }
4926
+ },
4927
+ {
4928
+ "name": "language",
4929
+ "description": "Language id: one of `BUILT_IN_LANGUAGES`, anything `languageLoader` resolves, or empty for no highlighting.",
4930
+ "default": "''",
4931
+ "value": {
4932
+ "type": "string",
4933
+ "kind": "expression"
4934
+ }
4935
+ },
4936
+ {
4937
+ "name": "name",
4938
+ "description": "Form field name.",
4939
+ "default": "''",
4940
+ "value": {
4941
+ "type": "string",
4942
+ "kind": "expression"
4943
+ }
4944
+ },
4945
+ {
4946
+ "name": "label",
4947
+ "description": "Label above the editor, when the `label` slot is empty.",
4948
+ "default": "''",
4949
+ "value": {
4950
+ "type": "string",
4951
+ "kind": "expression"
4952
+ }
4953
+ },
4954
+ {
4955
+ "name": "aria-label",
4956
+ "description": "Accessible name when nothing visible labels the editor.",
4957
+ "default": "null",
4958
+ "value": {
4959
+ "type": "string | null",
4960
+ "kind": "expression"
4961
+ }
4962
+ },
4963
+ {
4964
+ "name": "placeholder",
4965
+ "description": "Text shown while the document is empty.",
4966
+ "default": "''",
4967
+ "value": {
4968
+ "type": "string",
4969
+ "kind": "expression"
4970
+ }
4971
+ },
4972
+ {
4973
+ "name": "readonly",
4974
+ "description": "The document cannot be edited, but is still selectable and focusable.",
4975
+ "default": "false",
4976
+ "value": {
4977
+ "type": "boolean",
4978
+ "kind": "expression"
4979
+ }
4980
+ },
4981
+ {
4982
+ "name": "disabled",
4983
+ "description": "Blocks interaction entirely and dims the editor.",
4984
+ "default": "false",
4985
+ "value": {
4986
+ "type": "boolean",
4987
+ "kind": "expression"
4988
+ }
4989
+ },
4990
+ {
4991
+ "name": "required",
4992
+ "description": "The form is invalid while the value is empty.",
4993
+ "default": "false",
4994
+ "value": {
4995
+ "type": "boolean",
4996
+ "kind": "expression"
4997
+ }
4998
+ },
4999
+ {
5000
+ "name": "line-numbers",
5001
+ "description": "Show the line-number gutter.",
5002
+ "default": "false",
5003
+ "value": {
5004
+ "type": "boolean",
5005
+ "kind": "expression"
5006
+ }
5007
+ },
5008
+ {
5009
+ "name": "wrap",
5010
+ "description": "Wrap long lines instead of scrolling horizontally.",
5011
+ "default": "false",
5012
+ "value": {
5013
+ "type": "boolean",
5014
+ "kind": "expression"
5015
+ }
5016
+ },
5017
+ {
5018
+ "name": "autocomplete",
5019
+ "description": "Offer completions while typing (identifiers, and whatever the grammar contributes).",
5020
+ "default": "false",
5021
+ "value": {
5022
+ "type": "boolean",
5023
+ "kind": "expression"
5024
+ }
5025
+ },
5026
+ {
5027
+ "name": "tab-size",
5028
+ "description": "Width of a tab stop, in characters.",
5029
+ "default": "2",
5030
+ "value": {
5031
+ "type": "number",
5032
+ "kind": "expression"
5033
+ }
5034
+ },
5035
+ {
5036
+ "name": "error",
5037
+ "description": "Renders the error styling; `error-text` replaces the supporting text.",
5038
+ "default": "false",
5039
+ "value": {
5040
+ "type": "boolean",
5041
+ "kind": "expression"
5042
+ }
5043
+ },
5044
+ {
5045
+ "name": "error-text",
5046
+ "description": "Message shown in place of the supporting text while `error` is set.",
5047
+ "default": "''",
5048
+ "value": {
5049
+ "type": "string",
5050
+ "kind": "expression"
5051
+ }
5052
+ },
5053
+ {
5054
+ "name": "help",
5055
+ "description": "Help text under the editor, when the `supporting-text` slot is empty.",
5056
+ "default": "''",
5057
+ "value": {
5058
+ "type": "string",
5059
+ "kind": "expression"
5060
+ }
5061
+ }
5062
+ ],
5063
+ "js": {
5064
+ "properties": [
5065
+ {
5066
+ "name": "ariaLabel",
5067
+ "description": "Accessible name when nothing visible labels the editor.",
5068
+ "value": {
5069
+ "type": "string | null",
5070
+ "kind": "expression"
5071
+ }
5072
+ },
5073
+ {
5074
+ "name": "readOnly",
5075
+ "description": "The document cannot be edited, but is still selectable and focusable.",
5076
+ "value": {
5077
+ "type": "boolean",
5078
+ "kind": "expression"
5079
+ }
5080
+ },
5081
+ {
5082
+ "name": "lineNumbers",
5083
+ "description": "Show the line-number gutter.",
5084
+ "value": {
5085
+ "type": "boolean",
5086
+ "kind": "expression"
5087
+ }
5088
+ },
5089
+ {
5090
+ "name": "tabSize",
5091
+ "description": "Width of a tab stop, in characters.",
5092
+ "value": {
5093
+ "type": "number",
5094
+ "kind": "expression"
5095
+ }
5096
+ },
5097
+ {
5098
+ "name": "errorText",
5099
+ "description": "Message shown in place of the supporting text while `error` is set.",
5100
+ "value": {
5101
+ "type": "string",
5102
+ "kind": "expression"
5103
+ }
5104
+ }
5105
+ ],
5106
+ "events": [
5107
+ {
5108
+ "name": "ready",
5109
+ "description": "The engine settled, so tests and hosts can wait for it. Does not bubble.",
5110
+ "value": {
5111
+ "type": "CustomEvent<{ engine: 'codemirror' | 'basic' }>",
5112
+ "kind": "expression"
5113
+ }
5114
+ },
5115
+ {
5116
+ "name": "input",
5117
+ "description": "The document changed. Fires on every edit.",
5118
+ "value": {
5119
+ "type": "Event",
5120
+ "kind": "expression"
5121
+ }
5122
+ },
5123
+ {
5124
+ "name": "change",
5125
+ "description": "The value was committed: the editor lost focus after an edit, as a native control does.",
5126
+ "value": {
5127
+ "type": "Event",
5128
+ "kind": "expression"
5129
+ }
5130
+ }
5131
+ ]
5132
+ }
5133
+ },
4797
5134
  {
4798
5135
  "name": "c2-code-viewer",
4799
5136
  "description": "Syntax-highlighted source code powered by shiki. Grammars and themes are loaded on demand into one shared\nhighlighter, so many viewers on a page cost one engine. The raw code renders immediately as plain text (also on the\nserver) and is upgraded in place once highlighted.\n\n`@c2n/code-viewer`",
@@ -5233,6 +5570,287 @@
5233
5570
  ]
5234
5571
  }
5235
5572
  },
5573
+ {
5574
+ "name": "c2-dash-card",
5575
+ "description": "One pane of a `c2-dashboard`. It owns its place in the grid (`col`, `row`, `col-span`, `row-span`), the drag\nhandles on the edges it shares with a neighbour, and the optional expand controls; it draws no surface of its\nown, so put a `c2-card` — or any markup — in the default slot.\n\n`@c2n/dashboard`",
5576
+ "attributes": [
5577
+ {
5578
+ "name": "card-id",
5579
+ "description": "Identifier the grid's `layout` record is keyed by.",
5580
+ "default": "undefined",
5581
+ "value": {
5582
+ "type": "string | undefined",
5583
+ "kind": "expression"
5584
+ }
5585
+ },
5586
+ {
5587
+ "name": "col",
5588
+ "description": "1-based column the card starts in.",
5589
+ "default": "1",
5590
+ "value": {
5591
+ "type": "number",
5592
+ "kind": "expression"
5593
+ }
5594
+ },
5595
+ {
5596
+ "name": "row",
5597
+ "description": "1-based row the card starts in.",
5598
+ "default": "1",
5599
+ "value": {
5600
+ "type": "number",
5601
+ "kind": "expression"
5602
+ }
5603
+ },
5604
+ {
5605
+ "name": "col-span",
5606
+ "description": "Number of columns the card occupies.",
5607
+ "default": "1",
5608
+ "value": {
5609
+ "type": "number",
5610
+ "kind": "expression"
5611
+ }
5612
+ },
5613
+ {
5614
+ "name": "row-span",
5615
+ "description": "Number of rows the card occupies.",
5616
+ "default": "1",
5617
+ "value": {
5618
+ "type": "number",
5619
+ "kind": "expression"
5620
+ }
5621
+ },
5622
+ {
5623
+ "name": "min-width",
5624
+ "description": "Smallest width in pixels the card accepts; it raises the minimum of every column it covers.",
5625
+ "default": "0",
5626
+ "value": {
5627
+ "type": "number",
5628
+ "kind": "expression"
5629
+ }
5630
+ },
5631
+ {
5632
+ "name": "min-height",
5633
+ "description": "Smallest height in pixels the card accepts; it raises the minimum of every row it covers.",
5634
+ "default": "0",
5635
+ "value": {
5636
+ "type": "number",
5637
+ "kind": "expression"
5638
+ }
5639
+ },
5640
+ {
5641
+ "name": "resize",
5642
+ "description": "Which edges carry a drag handle.",
5643
+ "default": "'both'",
5644
+ "value": {
5645
+ "type": "DashCardResize",
5646
+ "kind": "expression"
5647
+ }
5648
+ },
5649
+ {
5650
+ "name": "expand-width",
5651
+ "description": "Offers a control that expands the card across every column.",
5652
+ "default": "false",
5653
+ "value": {
5654
+ "type": "boolean",
5655
+ "kind": "expression"
5656
+ }
5657
+ },
5658
+ {
5659
+ "name": "expand-height",
5660
+ "description": "Offers a control that expands the card across every row.",
5661
+ "default": "false",
5662
+ "value": {
5663
+ "type": "boolean",
5664
+ "kind": "expression"
5665
+ }
5666
+ },
5667
+ {
5668
+ "name": "expand-full",
5669
+ "description": "Offers a control that expands the card over the whole grid.",
5670
+ "default": "false",
5671
+ "value": {
5672
+ "type": "boolean",
5673
+ "kind": "expression"
5674
+ }
5675
+ },
5676
+ {
5677
+ "name": "expanded",
5678
+ "description": "How far the card is currently expanded. Settable, so an app can expand a card from its own control.",
5679
+ "default": "'none'",
5680
+ "value": {
5681
+ "type": "DashCardExpanded",
5682
+ "kind": "expression"
5683
+ }
5684
+ }
5685
+ ],
5686
+ "js": {
5687
+ "properties": [
5688
+ {
5689
+ "name": "cardId",
5690
+ "description": "Identifier the grid's `layout` record is keyed by.",
5691
+ "value": {
5692
+ "type": "string | undefined",
5693
+ "kind": "expression"
5694
+ }
5695
+ },
5696
+ {
5697
+ "name": "colSpan",
5698
+ "description": "Number of columns the card occupies.",
5699
+ "value": {
5700
+ "type": "number",
5701
+ "kind": "expression"
5702
+ }
5703
+ },
5704
+ {
5705
+ "name": "rowSpan",
5706
+ "description": "Number of rows the card occupies.",
5707
+ "value": {
5708
+ "type": "number",
5709
+ "kind": "expression"
5710
+ }
5711
+ },
5712
+ {
5713
+ "name": "minWidth",
5714
+ "description": "Smallest width in pixels the card accepts; it raises the minimum of every column it covers.",
5715
+ "value": {
5716
+ "type": "number",
5717
+ "kind": "expression"
5718
+ }
5719
+ },
5720
+ {
5721
+ "name": "minHeight",
5722
+ "description": "Smallest height in pixels the card accepts; it raises the minimum of every row it covers.",
5723
+ "value": {
5724
+ "type": "number",
5725
+ "kind": "expression"
5726
+ }
5727
+ },
5728
+ {
5729
+ "name": "expandWidth",
5730
+ "description": "Offers a control that expands the card across every column.",
5731
+ "value": {
5732
+ "type": "boolean",
5733
+ "kind": "expression"
5734
+ }
5735
+ },
5736
+ {
5737
+ "name": "expandHeight",
5738
+ "description": "Offers a control that expands the card across every row.",
5739
+ "value": {
5740
+ "type": "boolean",
5741
+ "kind": "expression"
5742
+ }
5743
+ },
5744
+ {
5745
+ "name": "expandFull",
5746
+ "description": "Offers a control that expands the card over the whole grid.",
5747
+ "value": {
5748
+ "type": "boolean",
5749
+ "kind": "expression"
5750
+ }
5751
+ }
5752
+ ],
5753
+ "events": [
5754
+ {
5755
+ "name": "expand-change",
5756
+ "description": "The card was expanded or collapsed through one of its own controls. Does not bubble: listen on the element.",
5757
+ "value": {
5758
+ "type": "CustomEvent<DashCardExpandChangeDetail>",
5759
+ "kind": "expression"
5760
+ }
5761
+ }
5762
+ ]
5763
+ }
5764
+ },
5765
+ {
5766
+ "name": "c2-dashboard",
5767
+ "description": "Grid of resizable panes. The children are `c2-dash-card` elements, placed by their `col`/`row` attributes; each\none draws drag handles on the edges it shares with a neighbour, and dragging one resizes the whole track, so the\ncards on either side stay aligned. `columns` and `rows` take a track count (`columns=\"3\"` is three equal columns)\nor an explicit track list (`columns=\"320px 1fr\"`); a track is switched to pixels the first time it is dragged, and\nthe `fr` tracks around it give up the space in proportion to their weight, down to the minimums. With a\n`storage-key` the sizes survive a reload.\n\n`@c2n/dashboard`",
5768
+ "attributes": [
5769
+ {
5770
+ "name": "columns",
5771
+ "description": "Column count (`3`) or an explicit track list (`'320px 1fr'`). Each entry must be one simple size.",
5772
+ "default": "2",
5773
+ "value": {
5774
+ "type": "number | string | string[]",
5775
+ "kind": "expression"
5776
+ }
5777
+ },
5778
+ {
5779
+ "name": "rows",
5780
+ "description": "Row count (`2`) or an explicit track list (`'auto 1fr'`).",
5781
+ "default": "1",
5782
+ "value": {
5783
+ "type": "number | string | string[]",
5784
+ "kind": "expression"
5785
+ }
5786
+ },
5787
+ {
5788
+ "name": "min-column-width",
5789
+ "description": "Floor for every column, in pixels. A card's own `min-width` raises it for the tracks that card covers.",
5790
+ "default": "50",
5791
+ "value": {
5792
+ "type": "number",
5793
+ "kind": "expression"
5794
+ }
5795
+ },
5796
+ {
5797
+ "name": "min-row-height",
5798
+ "description": "Floor for every row, in pixels. A card's own `min-height` raises it for the tracks that card covers.",
5799
+ "default": "50",
5800
+ "value": {
5801
+ "type": "number",
5802
+ "kind": "expression"
5803
+ }
5804
+ },
5805
+ {
5806
+ "name": "storage-key",
5807
+ "description": "`localStorage` key the track sizes are stored under. Without it the grid starts from the authored tracks.",
5808
+ "default": "undefined",
5809
+ "value": {
5810
+ "type": "string | undefined",
5811
+ "kind": "expression"
5812
+ }
5813
+ }
5814
+ ],
5815
+ "js": {
5816
+ "properties": [
5817
+ {
5818
+ "name": "minColumnWidth",
5819
+ "description": "Floor for every column, in pixels. A card's own `min-width` raises it for the tracks that card covers.",
5820
+ "value": {
5821
+ "type": "number",
5822
+ "kind": "expression"
5823
+ }
5824
+ },
5825
+ {
5826
+ "name": "minRowHeight",
5827
+ "description": "Floor for every row, in pixels. A card's own `min-height` raises it for the tracks that card covers.",
5828
+ "value": {
5829
+ "type": "number",
5830
+ "kind": "expression"
5831
+ }
5832
+ },
5833
+ {
5834
+ "name": "storageKey",
5835
+ "description": "`localStorage` key the track sizes are stored under. Without it the grid starts from the authored tracks.",
5836
+ "value": {
5837
+ "type": "string | undefined",
5838
+ "kind": "expression"
5839
+ }
5840
+ }
5841
+ ],
5842
+ "events": [
5843
+ {
5844
+ "name": "layout-change",
5845
+ "description": "The track sizes changed and the gesture ended. Does not bubble: listen on the element.",
5846
+ "value": {
5847
+ "type": "CustomEvent<DashboardLayoutChangeDetail>",
5848
+ "kind": "expression"
5849
+ }
5850
+ }
5851
+ ]
5852
+ }
5853
+ },
5236
5854
  {
5237
5855
  "name": "c2-date-input",
5238
5856
  "description": "A form-associated single-date field backed by a native `<input type=\"date\">`. Values, `min` and `max` use local\ncalendar ISO strings (`YYYY-MM-DD`). The native picker and keyboard editing remain available while the component\nadds a consistent field, calendar affordance, helper text, error state and theming surface.\n\n`@c2n/date-input`",
@@ -40290,6 +40908,134 @@
40290
40908
  "events": []
40291
40909
  }
40292
40910
  },
40911
+ {
40912
+ "name": "c2-step",
40913
+ "description": "One row of a Steps list: a marker, a label with optional dimmed `detail`, and `trailing` text at the end\nof the row — a duration, a count, a timestamp.\n\n`@c2n/steps`",
40914
+ "attributes": [
40915
+ {
40916
+ "name": "status",
40917
+ "description": "State of the step. Drives the marker glyph and the accent colour, and reopens a folded group.",
40918
+ "default": "'pending'",
40919
+ "value": {
40920
+ "type": "StepStatus",
40921
+ "kind": "expression"
40922
+ }
40923
+ },
40924
+ {
40925
+ "name": "label",
40926
+ "description": "Primary text, when the `label` slot is empty.",
40927
+ "default": "''",
40928
+ "value": {
40929
+ "type": "string",
40930
+ "kind": "expression"
40931
+ }
40932
+ },
40933
+ {
40934
+ "name": "detail",
40935
+ "description": "Dimmed secondary text beside the label, when the `detail` slot is empty.",
40936
+ "default": "''",
40937
+ "value": {
40938
+ "type": "string",
40939
+ "kind": "expression"
40940
+ }
40941
+ },
40942
+ {
40943
+ "name": "trailing",
40944
+ "description": "Text at the end of the row, when the `trailing` slot is empty.",
40945
+ "default": "''",
40946
+ "value": {
40947
+ "type": "string",
40948
+ "kind": "expression"
40949
+ }
40950
+ },
40951
+ {
40952
+ "name": "collapsed",
40953
+ "description": "Whether this group is folded away. A group is expanded by default — every step in the list is a row you can\nsee — and only the reader, the markup or a reopening status ever changes that.",
40954
+ "default": "false",
40955
+ "value": {
40956
+ "type": "boolean",
40957
+ "kind": "expression"
40958
+ }
40959
+ }
40960
+ ],
40961
+ "js": {
40962
+ "properties": [],
40963
+ "events": [
40964
+ {
40965
+ "name": "step-toggle",
40966
+ "description": "A group was folded away or brought back. Bubbles.",
40967
+ "value": {
40968
+ "type": "CustomEvent<StepToggleEventDetail>",
40969
+ "kind": "expression"
40970
+ }
40971
+ }
40972
+ ]
40973
+ }
40974
+ },
40975
+ {
40976
+ "name": "c2-steps",
40977
+ "description": "A vertical list of steps: the trace of a task as it runs, or a wizard's progress. Each row is a marker, a label,\nan optional dimmed `detail` beside it and `trailing` text at the end — a duration, a count, a timestamp.\n\n`@c2n/steps`",
40978
+ "attributes": [
40979
+ {
40980
+ "name": "marker",
40981
+ "description": "How each marker is drawn: a status glyph, the step's number, or nothing.",
40982
+ "default": "'icon'",
40983
+ "value": {
40984
+ "type": "StepsMarker",
40985
+ "kind": "expression"
40986
+ }
40987
+ },
40988
+ {
40989
+ "name": "current",
40990
+ "description": "Index of the active step, for a wizard. `-1` (the default) leaves every status alone; otherwise a top-level\nstep with neither an explicit `status` nor sub-steps becomes `success` before this index, `current` at it and\n`pending` after it.",
40991
+ "default": "-1",
40992
+ "value": {
40993
+ "type": "number",
40994
+ "kind": "expression"
40995
+ }
40996
+ },
40997
+ {
40998
+ "name": "steps",
40999
+ "description": "The steps as data, instead of `c2-step` children. Takes precedence over the slot.",
41000
+ "default": "undefined",
41001
+ "value": {
41002
+ "type": "StepNode[] | undefined",
41003
+ "kind": "expression"
41004
+ }
41005
+ },
41006
+ {
41007
+ "name": "aria-label",
41008
+ "description": "Accessible name for the list.",
41009
+ "default": "null",
41010
+ "value": {
41011
+ "type": "string | null",
41012
+ "kind": "expression"
41013
+ }
41014
+ }
41015
+ ],
41016
+ "js": {
41017
+ "properties": [
41018
+ {
41019
+ "name": "ariaLabel",
41020
+ "description": "Accessible name for the list.",
41021
+ "value": {
41022
+ "type": "string | null",
41023
+ "kind": "expression"
41024
+ }
41025
+ }
41026
+ ],
41027
+ "events": [
41028
+ {
41029
+ "name": "step-toggle",
41030
+ "description": "Fired by a `c2-step` when a group opens or closes, and bubbling to here. `event.target` is the step; `detail.path` says where it sits.",
41031
+ "value": {
41032
+ "type": "CustomEvent<StepToggleEventDetail>",
41033
+ "kind": "expression"
41034
+ }
41035
+ }
41036
+ ]
41037
+ }
41038
+ },
40293
41039
  {
40294
41040
  "name": "c2-switch",
40295
41041
  "description": "On/off toggle built on a native `<input type=\"checkbox\" role=\"switch\">`, so keyboard activation (Space), form value\nand the `switch` role come from the browser. The thumb can also be dragged: it follows the pointer and the side it is\nreleased on decides the state. The whole row is the label: text in the default slot and an optional `description`\nsit beside the track, and clicking them toggles it. Icons for either state can ride inside the thumb.\n\n`@c2n/switch`",
@@ -41676,6 +42422,190 @@
41676
42422
  ]
41677
42423
  }
41678
42424
  },
42425
+ {
42426
+ "name": "c2-theme-select",
42427
+ "description": "Colour-theme switcher. The trigger shows the icon of the mode currently in effect and clicking it steps to the next\none, wrapping around — a two-state control is therefore a plain light/dark toggle. With three or more modes the\ntrigger also opens a menu on hover (or focus, or ArrowDown) so any mode can be picked directly, while the click-to-\nadvance behaviour keeps working.\n\n`@c2n/theme-select`",
42428
+ "attributes": [
42429
+ {
42430
+ "name": "modes",
42431
+ "description": "The states to cycle through: `\"system,light,dark\"`, a JSON array, or objects from script.",
42432
+ "default": "['system', 'light', 'dark']",
42433
+ "value": {
42434
+ "type": "Array<string | ThemeSelectMode>",
42435
+ "kind": "expression"
42436
+ }
42437
+ },
42438
+ {
42439
+ "name": "value",
42440
+ "description": "The mode in effect. Assigning it selects that mode silently; `select()` and `next()` report the change.",
42441
+ "default": "''",
42442
+ "value": {
42443
+ "type": "string",
42444
+ "kind": "expression"
42445
+ }
42446
+ },
42447
+ {
42448
+ "name": "menu",
42449
+ "description": "When to offer the dropdown: `auto` (three or more modes), `always`, or `never`.",
42450
+ "default": "'auto'",
42451
+ "value": {
42452
+ "type": "'auto' | 'always' | 'never'",
42453
+ "kind": "expression"
42454
+ }
42455
+ },
42456
+ {
42457
+ "name": "placement",
42458
+ "description": "Preferred placement of the menu (floating-ui names).",
42459
+ "default": "'bottom'",
42460
+ "value": {
42461
+ "type": "Placement",
42462
+ "kind": "expression"
42463
+ }
42464
+ },
42465
+ {
42466
+ "name": "show-label",
42467
+ "description": "Show the current mode's label beside its icon.",
42468
+ "default": "false",
42469
+ "value": {
42470
+ "type": "boolean",
42471
+ "kind": "expression"
42472
+ }
42473
+ },
42474
+ {
42475
+ "name": "disabled",
42476
+ "description": "Blocks interaction and dims the control.",
42477
+ "default": "false",
42478
+ "value": {
42479
+ "type": "boolean",
42480
+ "kind": "expression"
42481
+ }
42482
+ },
42483
+ {
42484
+ "name": "manual",
42485
+ "description": "Do not touch the document or storage; the host applies the theme itself from `theme-change`.",
42486
+ "default": "false",
42487
+ "value": {
42488
+ "type": "boolean",
42489
+ "kind": "expression"
42490
+ }
42491
+ },
42492
+ {
42493
+ "name": "target",
42494
+ "description": "Element the scheme is written to, or the id of one. Defaults to `<html>`.",
42495
+ "default": "undefined",
42496
+ "value": {
42497
+ "type": "string | HTMLElement | undefined",
42498
+ "kind": "expression"
42499
+ }
42500
+ },
42501
+ {
42502
+ "name": "theme-attribute",
42503
+ "description": "Attribute written on the target, `data-theme` by default.",
42504
+ "default": "'data-theme'",
42505
+ "value": {
42506
+ "type": "string",
42507
+ "kind": "expression"
42508
+ }
42509
+ },
42510
+ {
42511
+ "name": "storage-key",
42512
+ "description": "`localStorage` key the chosen mode is remembered under. Empty disables persistence.",
42513
+ "default": "'c2n-theme'",
42514
+ "value": {
42515
+ "type": "string",
42516
+ "kind": "expression"
42517
+ }
42518
+ },
42519
+ {
42520
+ "name": "open-delay",
42521
+ "description": "Milliseconds the pointer must rest on the trigger before the menu opens.",
42522
+ "default": "150",
42523
+ "value": {
42524
+ "type": "number",
42525
+ "kind": "expression"
42526
+ }
42527
+ },
42528
+ {
42529
+ "name": "close-delay",
42530
+ "description": "Milliseconds the menu stays open after the pointer leaves, so it can be crossed into.",
42531
+ "default": "200",
42532
+ "value": {
42533
+ "type": "number",
42534
+ "kind": "expression"
42535
+ }
42536
+ },
42537
+ {
42538
+ "name": "aria-label",
42539
+ "description": "Accessible name of the trigger. Defaults to `Theme: <current label>`.",
42540
+ "value": {
42541
+ "type": "string",
42542
+ "kind": "expression"
42543
+ }
42544
+ }
42545
+ ],
42546
+ "js": {
42547
+ "properties": [
42548
+ {
42549
+ "name": "showLabel",
42550
+ "description": "Show the current mode's label beside its icon.",
42551
+ "value": {
42552
+ "type": "boolean",
42553
+ "kind": "expression"
42554
+ }
42555
+ },
42556
+ {
42557
+ "name": "themeAttribute",
42558
+ "description": "Attribute written on the target, `data-theme` by default.",
42559
+ "value": {
42560
+ "type": "string",
42561
+ "kind": "expression"
42562
+ }
42563
+ },
42564
+ {
42565
+ "name": "storageKey",
42566
+ "description": "`localStorage` key the chosen mode is remembered under. Empty disables persistence.",
42567
+ "value": {
42568
+ "type": "string",
42569
+ "kind": "expression"
42570
+ }
42571
+ },
42572
+ {
42573
+ "name": "openDelay",
42574
+ "description": "Milliseconds the pointer must rest on the trigger before the menu opens.",
42575
+ "value": {
42576
+ "type": "number",
42577
+ "kind": "expression"
42578
+ }
42579
+ },
42580
+ {
42581
+ "name": "closeDelay",
42582
+ "description": "Milliseconds the menu stays open after the pointer leaves, so it can be crossed into.",
42583
+ "value": {
42584
+ "type": "number",
42585
+ "kind": "expression"
42586
+ }
42587
+ },
42588
+ {
42589
+ "name": "ariaLabel",
42590
+ "description": "Accessible name of the trigger. Defaults to `Theme: <current label>`.",
42591
+ "value": {
42592
+ "type": "string",
42593
+ "kind": "expression"
42594
+ }
42595
+ }
42596
+ ],
42597
+ "events": [
42598
+ {
42599
+ "name": "theme-change",
42600
+ "description": "The scheme in effect changed: a mode was picked, or the OS preference moved while `system` was selected. `detail.value` is the mode, `detail.theme` the scheme it resolves to. Does not bubble; assigning `value` from script is silent.",
42601
+ "value": {
42602
+ "type": "CustomEvent<ThemeSelectChangeDetail>",
42603
+ "kind": "expression"
42604
+ }
42605
+ }
42606
+ ]
42607
+ }
42608
+ },
41679
42609
  {
41680
42610
  "name": "c2-toast",
41681
42611
  "description": "A notification card. Use c2-toast-region to manage stacking, queueing and timed dismissal.\n\n`@c2n/toast`",