@c2n/framework-types 0.0.8 → 0.0.9

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.8",
4
+ "version": "0.0.9",
5
5
  "description": "GENERATED by @c2n/framework-types. Do not edit by hand.",
6
6
  "description-markup": "markdown",
7
7
  "contributions": {
@@ -549,6 +549,42 @@
549
549
  "type": "AvatarStatus | undefined",
550
550
  "kind": "expression"
551
551
  }
552
+ },
553
+ {
554
+ "name": "editable",
555
+ "description": "Allows the avatar to open an image picker and exposes a remove action for the current image.",
556
+ "default": "false",
557
+ "value": {
558
+ "type": "boolean",
559
+ "kind": "expression"
560
+ }
561
+ },
562
+ {
563
+ "name": "disabled",
564
+ "description": "Disables editable avatar actions.",
565
+ "default": "false",
566
+ "value": {
567
+ "type": "boolean",
568
+ "kind": "expression"
569
+ }
570
+ },
571
+ {
572
+ "name": "accept",
573
+ "description": "Accepted image MIME types or file extensions, using native file-input syntax.",
574
+ "default": "'image/*'",
575
+ "value": {
576
+ "type": "string",
577
+ "kind": "expression"
578
+ }
579
+ },
580
+ {
581
+ "name": "max-size",
582
+ "description": "Maximum accepted image size in bytes. Zero means unlimited.",
583
+ "default": "0",
584
+ "value": {
585
+ "type": "number",
586
+ "kind": "expression"
587
+ }
552
588
  }
553
589
  ],
554
590
  "js": {
@@ -568,9 +604,25 @@
568
604
  "type": "boolean",
569
605
  "kind": "expression"
570
606
  }
607
+ },
608
+ {
609
+ "name": "maxSize",
610
+ "description": "Maximum accepted image size in bytes. Zero means unlimited.",
611
+ "value": {
612
+ "type": "number",
613
+ "kind": "expression"
614
+ }
571
615
  }
572
616
  ],
573
617
  "events": [
618
+ {
619
+ "name": "avatar-remove",
620
+ "description": "Fired after the current local preview or `src` image is removed.",
621
+ "value": {
622
+ "type": "CustomEvent<AvatarRemoveDetail>",
623
+ "kind": "expression"
624
+ }
625
+ },
574
626
  {
575
627
  "name": "error",
576
628
  "description": "Fired when the `src` image fails to load; the initials are shown instead.",
@@ -578,6 +630,22 @@
578
630
  "type": "Event",
579
631
  "kind": "expression"
580
632
  }
633
+ },
634
+ {
635
+ "name": "file-reject",
636
+ "description": "Fired when an editable avatar rejects a file by type or size.",
637
+ "value": {
638
+ "type": "CustomEvent<AvatarFileRejection>",
639
+ "kind": "expression"
640
+ }
641
+ },
642
+ {
643
+ "name": "avatar-change",
644
+ "description": "Fired after an editable avatar accepts a local image. Upload `detail.file` and use `detail.previewUrl` for the immediate preview.",
645
+ "value": {
646
+ "type": "CustomEvent<AvatarChangeDetail>",
647
+ "kind": "expression"
648
+ }
581
649
  }
582
650
  ]
583
651
  }
@@ -765,7 +833,7 @@
765
833
  },
766
834
  {
767
835
  "name": "c2-button-group",
768
- "description": "Attaches related buttons into one control: shared borders, outside corners only, a divider between items. Children\nare `c2-button` or `c2-icon-button` elements (any element works for layout). With `selection=\"single\"` the group is\na segmented control that keeps one item pressed; with `selection=\"multiple\"` each item toggles independently. The\npressed items carry `selected` (and `aria-pressed`), the group reports them in `value` and fires `change`.\n\n`@c2n/button-group`",
836
+ "description": "Attaches related buttons into one control: shared borders, outside corners only, a divider between items. Children\nare `c2-button` or `c2-icon-button` elements (any element works for layout). With `selection=\"single\"` the group is\na segmented control that keeps one item pressed; with `selection=\"multiple\"` each item toggles independently. Set\n`orientation=\"vertical\"` to stack either appearance and use Up/Down keyboard navigation. The\npressed items carry `selected` (and `aria-pressed`), the group reports them in `value` and fires `change`.\n\n`@c2n/button-group`",
769
837
  "attributes": [
770
838
  {
771
839
  "name": "selection",
@@ -803,6 +871,33 @@
803
871
  "kind": "expression"
804
872
  }
805
873
  },
874
+ {
875
+ "name": "appearance",
876
+ "description": "`segmented` adds an inset track and sliding selected surface and always uses single selection.",
877
+ "default": "'joined'",
878
+ "value": {
879
+ "type": "ButtonGroupAppearance",
880
+ "kind": "expression"
881
+ }
882
+ },
883
+ {
884
+ "name": "size",
885
+ "description": "Segmented control size.",
886
+ "default": "'m'",
887
+ "value": {
888
+ "type": "ButtonGroupSize",
889
+ "kind": "expression"
890
+ }
891
+ },
892
+ {
893
+ "name": "stretched",
894
+ "description": "Makes the group and every item share the available width.",
895
+ "default": "false",
896
+ "value": {
897
+ "type": "boolean",
898
+ "kind": "expression"
899
+ }
900
+ },
806
901
  {
807
902
  "name": "aria-label",
808
903
  "description": "Accessible name of the group.",
@@ -890,6 +985,182 @@
890
985
  "events": []
891
986
  }
892
987
  },
988
+ {
989
+ "name": "c2-cascader",
990
+ "description": "Hierarchical single-value picker that opens every active level in one floating panel. Supply nested `options`, then\nread the selected value path from `value`. Branches open another column; choosing a leaf commits the path.\n\n`@c2n/cascader`",
991
+ "attributes": [
992
+ {
993
+ "name": "options",
994
+ "description": "Nested hierarchy shown in the floating panel. In markup this is a JSON array.",
995
+ "default": "[]",
996
+ "value": {
997
+ "type": "CascaderOption[]",
998
+ "kind": "expression"
999
+ }
1000
+ },
1001
+ {
1002
+ "name": "value",
1003
+ "description": "Selected value path. In markup, separate levels with semicolons.",
1004
+ "default": "[]",
1005
+ "value": {
1006
+ "type": "string[]",
1007
+ "kind": "expression"
1008
+ }
1009
+ },
1010
+ {
1011
+ "name": "name",
1012
+ "description": "Name used when the cascader participates in a form.",
1013
+ "default": "''",
1014
+ "value": {
1015
+ "type": "string",
1016
+ "kind": "expression"
1017
+ }
1018
+ },
1019
+ {
1020
+ "name": "placeholder",
1021
+ "description": "Text shown before a path is selected.",
1022
+ "default": "'Please select'",
1023
+ "value": {
1024
+ "type": "string",
1025
+ "kind": "expression"
1026
+ }
1027
+ },
1028
+ {
1029
+ "name": "separator",
1030
+ "description": "String placed between selected labels in the trigger.",
1031
+ "default": "' / '",
1032
+ "value": {
1033
+ "type": "string",
1034
+ "kind": "expression"
1035
+ }
1036
+ },
1037
+ {
1038
+ "name": "aria-label",
1039
+ "description": "Accessible name forwarded to the trigger and option tree.",
1040
+ "default": "null",
1041
+ "value": {
1042
+ "type": "string | null",
1043
+ "kind": "expression"
1044
+ }
1045
+ },
1046
+ {
1047
+ "name": "open",
1048
+ "description": "Whether the floating panel is open.",
1049
+ "default": "false",
1050
+ "value": {
1051
+ "type": "boolean",
1052
+ "kind": "expression"
1053
+ }
1054
+ },
1055
+ {
1056
+ "name": "disabled",
1057
+ "description": "Disables opening, selection and form submission.",
1058
+ "default": "false",
1059
+ "value": {
1060
+ "type": "boolean",
1061
+ "kind": "expression"
1062
+ }
1063
+ },
1064
+ {
1065
+ "name": "readonly",
1066
+ "description": "Displays the selected path without allowing changes.",
1067
+ "default": "false",
1068
+ "value": {
1069
+ "type": "boolean",
1070
+ "kind": "expression"
1071
+ }
1072
+ },
1073
+ {
1074
+ "name": "required",
1075
+ "description": "Requires a committed path for native form validation.",
1076
+ "default": "false",
1077
+ "value": {
1078
+ "type": "boolean",
1079
+ "kind": "expression"
1080
+ }
1081
+ },
1082
+ {
1083
+ "name": "change-on-select",
1084
+ "description": "Commit branch values as they are chosen instead of waiting for a leaf.",
1085
+ "default": "false",
1086
+ "value": {
1087
+ "type": "boolean",
1088
+ "kind": "expression"
1089
+ }
1090
+ },
1091
+ {
1092
+ "name": "expand-trigger",
1093
+ "description": "Open child columns on pointer hover instead of click.",
1094
+ "default": "'click'",
1095
+ "value": {
1096
+ "type": "'click' | 'hover'",
1097
+ "kind": "expression"
1098
+ }
1099
+ }
1100
+ ],
1101
+ "js": {
1102
+ "properties": [
1103
+ {
1104
+ "name": "ariaLabel",
1105
+ "description": "Accessible name forwarded to the trigger and option tree.",
1106
+ "value": {
1107
+ "type": "string | null",
1108
+ "kind": "expression"
1109
+ }
1110
+ },
1111
+ {
1112
+ "name": "changeOnSelect",
1113
+ "description": "Commit branch values as they are chosen instead of waiting for a leaf.",
1114
+ "value": {
1115
+ "type": "boolean",
1116
+ "kind": "expression"
1117
+ }
1118
+ },
1119
+ {
1120
+ "name": "expandTrigger",
1121
+ "description": "Open child columns on pointer hover instead of click.",
1122
+ "value": {
1123
+ "type": "'click' | 'hover'",
1124
+ "kind": "expression"
1125
+ }
1126
+ }
1127
+ ],
1128
+ "events": [
1129
+ {
1130
+ "name": "open-change",
1131
+ "description": "Fired when the floating panel opens or closes.",
1132
+ "value": {
1133
+ "type": "CustomEvent<{ open: boolean }>",
1134
+ "kind": "expression"
1135
+ }
1136
+ },
1137
+ {
1138
+ "name": "cascader-change",
1139
+ "description": "Fired when a leaf, or a branch with `change-on-select`, is committed. Detail contains value, label and option paths plus whether the last option is a leaf.",
1140
+ "value": {
1141
+ "type": "CustomEvent<CascaderChangeEventDetail>",
1142
+ "kind": "expression"
1143
+ }
1144
+ },
1145
+ {
1146
+ "name": "input",
1147
+ "description": "Fired after `value` changes through user interaction.",
1148
+ "value": {
1149
+ "type": "Event",
1150
+ "kind": "expression"
1151
+ }
1152
+ },
1153
+ {
1154
+ "name": "change",
1155
+ "description": "Fired after `value` changes through user interaction.",
1156
+ "value": {
1157
+ "type": "Event",
1158
+ "kind": "expression"
1159
+ }
1160
+ }
1161
+ ]
1162
+ }
1163
+ },
893
1164
  {
894
1165
  "name": "c2-area-chart",
895
1166
  "description": "A line chart with the region under each line filled — an area chart *is* a line chart plus a fill, so it\nextends `c2-line-chart` and every one of its attributes (`curve`, `points`, `zoom`, the axis bounds)\nmeans the same thing here.\n\n`@c2n/chart`",
@@ -1044,8 +1315,8 @@
1044
1315
  },
1045
1316
  {
1046
1317
  "name": "animation",
1047
- "description": "Whether the engine animates entry and updates. `none` by default: a chart fed by a live source should\nnot animate every tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a\nmethod every element already has, and shadowing it breaks the Web Animations API on the host.",
1048
- "default": "'none'",
1318
+ "description": "Whether the chart animates its initial draw. ECharts uses its native shape animation and uPlot uses a\nlightweight plot reveal; subsequent data updates stay immediate so a live source does not animate\nevery tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a method every\nelement already has, and shadowing it breaks the Web Animations API on the host.",
1319
+ "default": "'auto'",
1049
1320
  "value": {
1050
1321
  "type": "'none' | 'auto'",
1051
1322
  "kind": "expression"
@@ -1394,8 +1665,8 @@
1394
1665
  },
1395
1666
  {
1396
1667
  "name": "animation",
1397
- "description": "Whether the engine animates entry and updates. `none` by default: a chart fed by a live source should\nnot animate every tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a\nmethod every element already has, and shadowing it breaks the Web Animations API on the host.",
1398
- "default": "'none'",
1668
+ "description": "Whether the chart animates its initial draw. ECharts uses its native shape animation and uPlot uses a\nlightweight plot reveal; subsequent data updates stay immediate so a live source does not animate\nevery tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a method every\nelement already has, and shadowing it breaks the Web Animations API on the host.",
1669
+ "default": "'auto'",
1399
1670
  "value": {
1400
1671
  "type": "'none' | 'auto'",
1401
1672
  "kind": "expression"
@@ -1736,8 +2007,8 @@
1736
2007
  },
1737
2008
  {
1738
2009
  "name": "animation",
1739
- "description": "Whether the engine animates entry and updates. `none` by default: a chart fed by a live source should\nnot animate every tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a\nmethod every element already has, and shadowing it breaks the Web Animations API on the host.",
1740
- "default": "'none'",
2010
+ "description": "Whether the chart animates its initial draw. ECharts uses its native shape animation and uPlot uses a\nlightweight plot reveal; subsequent data updates stay immediate so a live source does not animate\nevery tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a method every\nelement already has, and shadowing it breaks the Web Animations API on the host.",
2011
+ "default": "'auto'",
1741
2012
  "value": {
1742
2013
  "type": "'none' | 'auto'",
1743
2014
  "kind": "expression"
@@ -2184,6 +2455,15 @@
2184
2455
  "kind": "expression"
2185
2456
  }
2186
2457
  },
2458
+ {
2459
+ "name": "marks",
2460
+ "description": "Whether to draw the small axis ticks and division lines around the arc.",
2461
+ "default": "'show'",
2462
+ "value": {
2463
+ "type": "'show' | 'none'",
2464
+ "kind": "expression"
2465
+ }
2466
+ },
2187
2467
  {
2188
2468
  "name": "renderer",
2189
2469
  "description": "Which ECharts renderer to use. SVG prints and scales crisply; canvas is faster with many marks.",
@@ -2265,8 +2545,8 @@
2265
2545
  },
2266
2546
  {
2267
2547
  "name": "animation",
2268
- "description": "Whether the engine animates entry and updates. `none` by default: a chart fed by a live source should\nnot animate every tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a\nmethod every element already has, and shadowing it breaks the Web Animations API on the host.",
2269
- "default": "'none'",
2548
+ "description": "Whether the chart animates its initial draw. ECharts uses its native shape animation and uPlot uses a\nlightweight plot reveal; subsequent data updates stay immediate so a live source does not animate\nevery tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a method every\nelement already has, and shadowing it breaks the Web Animations API on the host.",
2549
+ "default": "'auto'",
2270
2550
  "value": {
2271
2551
  "type": "'none' | 'auto'",
2272
2552
  "kind": "expression"
@@ -2623,8 +2903,8 @@
2623
2903
  },
2624
2904
  {
2625
2905
  "name": "animation",
2626
- "description": "Whether the engine animates entry and updates. `none` by default: a chart fed by a live source should\nnot animate every tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a\nmethod every element already has, and shadowing it breaks the Web Animations API on the host.",
2627
- "default": "'none'",
2906
+ "description": "Whether the chart animates its initial draw. ECharts uses its native shape animation and uPlot uses a\nlightweight plot reveal; subsequent data updates stay immediate so a live source does not animate\nevery tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a method every\nelement already has, and shadowing it breaks the Web Animations API on the host.",
2907
+ "default": "'auto'",
2628
2908
  "value": {
2629
2909
  "type": "'none' | 'auto'",
2630
2910
  "kind": "expression"
@@ -2859,6 +3139,15 @@
2859
3139
  "kind": "expression"
2860
3140
  }
2861
3141
  },
3142
+ {
3143
+ "name": "label-content",
3144
+ "description": "Content shown by visible slice labels.",
3145
+ "default": "'name'",
3146
+ "value": {
3147
+ "type": "'name' | 'value' | 'percent' | 'name-percent'",
3148
+ "kind": "expression"
3149
+ }
3150
+ },
2862
3151
  {
2863
3152
  "name": "sort",
2864
3153
  "description": "Orders the slices by value rather than keeping the data order.",
@@ -2949,8 +3238,8 @@
2949
3238
  },
2950
3239
  {
2951
3240
  "name": "animation",
2952
- "description": "Whether the engine animates entry and updates. `none` by default: a chart fed by a live source should\nnot animate every tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a\nmethod every element already has, and shadowing it breaks the Web Animations API on the host.",
2953
- "default": "'none'",
3241
+ "description": "Whether the chart animates its initial draw. ECharts uses its native shape animation and uPlot uses a\nlightweight plot reveal; subsequent data updates stay immediate so a live source does not animate\nevery tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a method every\nelement already has, and shadowing it breaks the Web Animations API on the host.",
3242
+ "default": "'auto'",
2954
3243
  "value": {
2955
3244
  "type": "'none' | 'auto'",
2956
3245
  "kind": "expression"
@@ -3036,6 +3325,14 @@
3036
3325
  "kind": "expression"
3037
3326
  }
3038
3327
  },
3328
+ {
3329
+ "name": "labelContent",
3330
+ "description": "Content shown by visible slice labels.",
3331
+ "value": {
3332
+ "type": "'name' | 'value' | 'percent' | 'name-percent'",
3333
+ "kind": "expression"
3334
+ }
3335
+ },
3039
3336
  {
3040
3337
  "name": "xField",
3041
3338
  "description": "Row field holding the x value; may be a dotted path. Defaults to the row index.",
@@ -3154,45 +3451,70 @@
3154
3451
  }
3155
3452
  },
3156
3453
  {
3157
- "name": "c2-scatter-chart",
3158
- "description": "A scatter plot drawn by ECharts. `x-field` supplies the shared horizontal value and every series supplies\none vertical measure, so several populations can be compared on the same axes.\n\n`@c2n/chart`",
3454
+ "name": "c2-radar-chart",
3455
+ "description": "A radar chart drawn by ECharts. Each data row is an indicator named by `label-field`; each\n`c2-chart-series` is one comparable profile drawn across those indicators.\n\n`@c2n/chart`",
3159
3456
  "attributes": [
3160
3457
  {
3161
- "name": "symbol-size",
3162
- "description": "Diameter of each point in CSS pixels.",
3163
- "default": "10",
3458
+ "name": "min",
3459
+ "description": "Lowest value shared by every indicator.",
3460
+ "default": "0",
3164
3461
  "value": {
3165
3462
  "type": "number",
3166
3463
  "kind": "expression"
3167
3464
  }
3168
3465
  },
3169
3466
  {
3170
- "name": "symbol",
3171
- "description": "Shape used for points.",
3172
- "default": "'circle'",
3467
+ "name": "max",
3468
+ "description": "Highest value shared by every indicator. Auto-ranged per indicator when unset.",
3173
3469
  "value": {
3174
- "type": "'circle' | 'rect' | 'roundRect' | 'triangle' | 'diamond' | 'pin' | 'arrow'",
3470
+ "type": "number | undefined",
3175
3471
  "kind": "expression"
3176
3472
  }
3177
3473
  },
3178
3474
  {
3179
- "name": "large",
3180
- "description": "Enables ECharts' large-point rendering path.",
3181
- "default": "false",
3475
+ "name": "shape",
3476
+ "description": "Shape of the indicator grid.",
3477
+ "default": "'polygon'",
3182
3478
  "value": {
3183
- "type": "boolean",
3479
+ "type": "'polygon' | 'circle'",
3184
3480
  "kind": "expression"
3185
3481
  }
3186
3482
  },
3187
3483
  {
3188
- "name": "large-threshold",
3189
- "description": "Point count at which the large rendering path takes effect.",
3190
- "default": "2000",
3484
+ "name": "start-angle",
3485
+ "description": "Angle of the first indicator, in degrees counter-clockwise from three o'clock.",
3486
+ "default": "90",
3191
3487
  "value": {
3192
3488
  "type": "number",
3193
3489
  "kind": "expression"
3194
3490
  }
3195
3491
  },
3492
+ {
3493
+ "name": "split-number",
3494
+ "description": "Number of concentric divisions in the indicator grid.",
3495
+ "default": "5",
3496
+ "value": {
3497
+ "type": "number",
3498
+ "kind": "expression"
3499
+ }
3500
+ },
3501
+ {
3502
+ "name": "points",
3503
+ "description": "Whether to draw point markers at the indicator values.",
3504
+ "default": "'show'",
3505
+ "value": {
3506
+ "type": "'show' | 'none'",
3507
+ "kind": "expression"
3508
+ }
3509
+ },
3510
+ {
3511
+ "name": "fill-opacity",
3512
+ "description": "Opacity of each profile's fill. Falls back to `--c2-chart__area--opacity`.",
3513
+ "value": {
3514
+ "type": "number | undefined",
3515
+ "kind": "expression"
3516
+ }
3517
+ },
3196
3518
  {
3197
3519
  "name": "renderer",
3198
3520
  "description": "Which ECharts renderer to use. SVG prints and scales crisply; canvas is faster with many marks.",
@@ -3274,8 +3596,333 @@
3274
3596
  },
3275
3597
  {
3276
3598
  "name": "animation",
3277
- "description": "Whether the engine animates entry and updates. `none` by default: a chart fed by a live source should\nnot animate every tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a\nmethod every element already has, and shadowing it breaks the Web Animations API on the host.",
3278
- "default": "'none'",
3599
+ "description": "Whether the chart animates its initial draw. ECharts uses its native shape animation and uPlot uses a\nlightweight plot reveal; subsequent data updates stay immediate so a live source does not animate\nevery tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a method every\nelement already has, and shadowing it breaks the Web Animations API on the host.",
3600
+ "default": "'auto'",
3601
+ "value": {
3602
+ "type": "'none' | 'auto'",
3603
+ "kind": "expression"
3604
+ }
3605
+ },
3606
+ {
3607
+ "name": "locale",
3608
+ "description": "BCP 47 locale for the axis and tooltip formatting. Defaults to the browser locale.",
3609
+ "value": {
3610
+ "type": "string | undefined",
3611
+ "kind": "expression"
3612
+ }
3613
+ },
3614
+ {
3615
+ "name": "loading",
3616
+ "description": "Shows the loading state instead of the plot.",
3617
+ "default": "false",
3618
+ "value": {
3619
+ "type": "boolean",
3620
+ "kind": "expression"
3621
+ }
3622
+ },
3623
+ {
3624
+ "name": "error",
3625
+ "description": "Shows an error message instead of the plot.",
3626
+ "default": "''",
3627
+ "value": {
3628
+ "type": "string",
3629
+ "kind": "expression"
3630
+ }
3631
+ },
3632
+ {
3633
+ "name": "empty-message",
3634
+ "description": "Replaces the built-in \"no data\" text.",
3635
+ "default": "'No data'",
3636
+ "value": {
3637
+ "type": "string",
3638
+ "kind": "expression"
3639
+ }
3640
+ },
3641
+ {
3642
+ "name": "max-points",
3643
+ "description": "Caps how many points a streaming chart keeps; older points fall off the front. `0` keeps everything.",
3644
+ "default": "0",
3645
+ "value": {
3646
+ "type": "number",
3647
+ "kind": "expression"
3648
+ }
3649
+ },
3650
+ {
3651
+ "name": "lazy-render",
3652
+ "description": "Defers loading the engine until the host first scrolls into view.",
3653
+ "default": "false",
3654
+ "value": {
3655
+ "type": "boolean",
3656
+ "kind": "expression"
3657
+ }
3658
+ }
3659
+ ],
3660
+ "js": {
3661
+ "properties": [
3662
+ {
3663
+ "name": "startAngle",
3664
+ "description": "Angle of the first indicator, in degrees counter-clockwise from three o'clock.",
3665
+ "value": {
3666
+ "type": "number",
3667
+ "kind": "expression"
3668
+ }
3669
+ },
3670
+ {
3671
+ "name": "splitNumber",
3672
+ "description": "Number of concentric divisions in the indicator grid.",
3673
+ "value": {
3674
+ "type": "number",
3675
+ "kind": "expression"
3676
+ }
3677
+ },
3678
+ {
3679
+ "name": "fillOpacity",
3680
+ "description": "Opacity of each profile's fill. Falls back to `--c2-chart__area--opacity`.",
3681
+ "value": {
3682
+ "type": "number | undefined",
3683
+ "kind": "expression"
3684
+ }
3685
+ },
3686
+ {
3687
+ "name": "xField",
3688
+ "description": "Row field holding the x value; may be a dotted path. Defaults to the row index.",
3689
+ "value": {
3690
+ "type": "string",
3691
+ "kind": "expression"
3692
+ }
3693
+ },
3694
+ {
3695
+ "name": "labelField",
3696
+ "description": "Row field holding the category label, for charts that name their slices.",
3697
+ "value": {
3698
+ "type": "string",
3699
+ "kind": "expression"
3700
+ }
3701
+ },
3702
+ {
3703
+ "name": "xType",
3704
+ "description": "How x values are interpreted, which decides the axis and the tooltip format.",
3705
+ "value": {
3706
+ "type": "'time' | 'linear' | 'category'",
3707
+ "kind": "expression"
3708
+ }
3709
+ },
3710
+ {
3711
+ "name": "emptyMessage",
3712
+ "description": "Replaces the built-in \"no data\" text.",
3713
+ "value": {
3714
+ "type": "string",
3715
+ "kind": "expression"
3716
+ }
3717
+ },
3718
+ {
3719
+ "name": "maxPoints",
3720
+ "description": "Caps how many points a streaming chart keeps; older points fall off the front. `0` keeps everything.",
3721
+ "value": {
3722
+ "type": "number",
3723
+ "kind": "expression"
3724
+ }
3725
+ },
3726
+ {
3727
+ "name": "lazyRender",
3728
+ "description": "Defers loading the engine until the host first scrolls into view.",
3729
+ "value": {
3730
+ "type": "boolean",
3731
+ "kind": "expression"
3732
+ }
3733
+ }
3734
+ ],
3735
+ "events": [
3736
+ {
3737
+ "name": "tooltip-change",
3738
+ "description": "Fired with the complete tooltip model as the pointer moves, and with `null` when it leaves. Used by `c2-chart-tooltip`.",
3739
+ "value": {
3740
+ "type": "CustomEvent<ChartTooltipContext | null>",
3741
+ "kind": "expression"
3742
+ }
3743
+ },
3744
+ {
3745
+ "name": "series-toggle",
3746
+ "description": "Fired when a legend entry is toggled. Does not bubble.",
3747
+ "value": {
3748
+ "type": "CustomEvent<ChartSeriesToggleEventDetail>",
3749
+ "kind": "expression"
3750
+ }
3751
+ },
3752
+ {
3753
+ "name": "legend-change",
3754
+ "description": "Fired when legend entries or visibility change. Used by `c2-chart-legend`.",
3755
+ "value": {
3756
+ "type": "CustomEvent<ChartLegendChangeEventDetail>",
3757
+ "kind": "expression"
3758
+ }
3759
+ },
3760
+ {
3761
+ "name": "range-change",
3762
+ "description": "Fired after the user zooms or brushes. `detail.min` and `detail.max` are the new x bounds. Does not bubble.",
3763
+ "value": {
3764
+ "type": "CustomEvent<ChartRangeEventDetail>",
3765
+ "kind": "expression"
3766
+ }
3767
+ },
3768
+ {
3769
+ "name": "chart-ready",
3770
+ "description": "Fired after the engine has loaded and drawn for the first time. The host also gains `data-chart-ready`, which is what a test should wait on.",
3771
+ "value": {
3772
+ "type": "CustomEvent<{ engine: string }>",
3773
+ "kind": "expression"
3774
+ }
3775
+ },
3776
+ {
3777
+ "name": "chart-error",
3778
+ "description": "Fired when the engine fails to load or to draw. `detail.error` is the underlying failure.",
3779
+ "value": {
3780
+ "type": "CustomEvent<{ error: unknown }>",
3781
+ "kind": "expression"
3782
+ }
3783
+ },
3784
+ {
3785
+ "name": "point-hover",
3786
+ "description": "Fired as the pointer moves between data points, and with a `null` detail when it leaves the plot. Does not bubble.",
3787
+ "value": {
3788
+ "type": "CustomEvent<ChartPointEventDetail | null>",
3789
+ "kind": "expression"
3790
+ }
3791
+ },
3792
+ {
3793
+ "name": "point-click",
3794
+ "description": "Fired when a datum is clicked. Does not bubble: several components fire point events, so a listener belongs on the element itself.",
3795
+ "value": {
3796
+ "type": "CustomEvent<ChartPointEventDetail>",
3797
+ "kind": "expression"
3798
+ }
3799
+ }
3800
+ ]
3801
+ }
3802
+ },
3803
+ {
3804
+ "name": "c2-scatter-chart",
3805
+ "description": "A scatter plot drawn by ECharts. `x-field` supplies the shared horizontal value and every series supplies\none vertical measure, so several populations can be compared on the same axes.\n\n`@c2n/chart`",
3806
+ "attributes": [
3807
+ {
3808
+ "name": "symbol-size",
3809
+ "description": "Diameter of each point in CSS pixels.",
3810
+ "default": "10",
3811
+ "value": {
3812
+ "type": "number",
3813
+ "kind": "expression"
3814
+ }
3815
+ },
3816
+ {
3817
+ "name": "symbol",
3818
+ "description": "Shape used for points.",
3819
+ "default": "'circle'",
3820
+ "value": {
3821
+ "type": "'circle' | 'rect' | 'roundRect' | 'triangle' | 'diamond' | 'pin' | 'arrow'",
3822
+ "kind": "expression"
3823
+ }
3824
+ },
3825
+ {
3826
+ "name": "large",
3827
+ "description": "Enables ECharts' large-point rendering path.",
3828
+ "default": "false",
3829
+ "value": {
3830
+ "type": "boolean",
3831
+ "kind": "expression"
3832
+ }
3833
+ },
3834
+ {
3835
+ "name": "large-threshold",
3836
+ "description": "Point count at which the large rendering path takes effect.",
3837
+ "default": "2000",
3838
+ "value": {
3839
+ "type": "number",
3840
+ "kind": "expression"
3841
+ }
3842
+ },
3843
+ {
3844
+ "name": "renderer",
3845
+ "description": "Which ECharts renderer to use. SVG prints and scales crisply; canvas is faster with many marks.",
3846
+ "default": "'canvas'",
3847
+ "value": {
3848
+ "type": "'canvas' | 'svg'",
3849
+ "kind": "expression"
3850
+ }
3851
+ },
3852
+ {
3853
+ "name": "data",
3854
+ "description": "The data to plot. Row objects, a bare `number[]`, columnar `[xs, ys…]`, or an already-normalised\nframe. Compared by identity: replace the array, or bump `revision` after mutating it in place.",
3855
+ "value": {
3856
+ "type": "ChartInput | undefined",
3857
+ "kind": "expression"
3858
+ }
3859
+ },
3860
+ {
3861
+ "name": "revision",
3862
+ "description": "Bump after mutating `data` in place. The cheap escape hatch for a large buffer you own.",
3863
+ "default": "0",
3864
+ "value": {
3865
+ "type": "number",
3866
+ "kind": "expression"
3867
+ }
3868
+ },
3869
+ {
3870
+ "name": "series",
3871
+ "description": "Series definitions, as an alternative to `c2-chart-series` children. Children win when both are set.",
3872
+ "value": {
3873
+ "type": "ChartSeriesConfig[] | undefined",
3874
+ "kind": "expression"
3875
+ }
3876
+ },
3877
+ {
3878
+ "name": "x-field",
3879
+ "description": "Row field holding the x value; may be a dotted path. Defaults to the row index.",
3880
+ "default": "''",
3881
+ "value": {
3882
+ "type": "string",
3883
+ "kind": "expression"
3884
+ }
3885
+ },
3886
+ {
3887
+ "name": "label-field",
3888
+ "description": "Row field holding the category label, for charts that name their slices.",
3889
+ "default": "''",
3890
+ "value": {
3891
+ "type": "string",
3892
+ "kind": "expression"
3893
+ }
3894
+ },
3895
+ {
3896
+ "name": "x-type",
3897
+ "description": "How x values are interpreted, which decides the axis and the tooltip format.",
3898
+ "default": "'linear'",
3899
+ "value": {
3900
+ "type": "'time' | 'linear' | 'category'",
3901
+ "kind": "expression"
3902
+ }
3903
+ },
3904
+ {
3905
+ "name": "legend",
3906
+ "description": "Where the legend sits, or `none` to hide it. Shown by default: a chart with more than one series is\nunreadable without one, and a single-series chart simply renders a one-entry legend.",
3907
+ "default": "'bottom'",
3908
+ "value": {
3909
+ "type": "'none' | 'top' | 'bottom' | 'start' | 'end'",
3910
+ "kind": "expression"
3911
+ }
3912
+ },
3913
+ {
3914
+ "name": "tooltip",
3915
+ "description": "Whether the tooltip follows the whole x position or only the hovered datum.",
3916
+ "default": "'axis'",
3917
+ "value": {
3918
+ "type": "'none' | 'item' | 'axis'",
3919
+ "kind": "expression"
3920
+ }
3921
+ },
3922
+ {
3923
+ "name": "animation",
3924
+ "description": "Whether the chart animates its initial draw. ECharts uses its native shape animation and uPlot uses a\nlightweight plot reveal; subsequent data updates stay immediate so a live source does not animate\nevery tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a method every\nelement already has, and shadowing it breaks the Web Animations API on the host.",
3925
+ "default": "'auto'",
3279
3926
  "value": {
3280
3927
  "type": "'none' | 'auto'",
3281
3928
  "kind": "expression"
@@ -3616,8 +4263,8 @@
3616
4263
  },
3617
4264
  {
3618
4265
  "name": "animation",
3619
- "description": "Whether the engine animates entry and updates. `none` by default: a chart fed by a live source should\nnot animate every tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a\nmethod every element already has, and shadowing it breaks the Web Animations API on the host.",
3620
- "default": "'none'",
4266
+ "description": "Whether the chart animates its initial draw. ECharts uses its native shape animation and uPlot uses a\nlightweight plot reveal; subsequent data updates stay immediate so a live source does not animate\nevery tick. Named `animation` rather than `animate` because `HTMLElement.animate()` is a method every\nelement already has, and shadowing it breaks the Web Animations API on the host.",
4267
+ "default": "'auto'",
3621
4268
  "value": {
3622
4269
  "type": "'none' | 'auto'",
3623
4270
  "kind": "expression"
@@ -38277,6 +38924,261 @@
38277
38924
  "events": []
38278
38925
  }
38279
38926
  },
38927
+ {
38928
+ "name": "c2-qr-code",
38929
+ "description": "Generates an accessible, themeable SVG QR code without sending its value to a remote service.\n\n`@c2n/qr-code`",
38930
+ "attributes": [
38931
+ {
38932
+ "name": "value",
38933
+ "description": "Text or URL encoded by the QR code.",
38934
+ "default": "''",
38935
+ "value": {
38936
+ "type": "string",
38937
+ "kind": "expression"
38938
+ }
38939
+ },
38940
+ {
38941
+ "name": "size",
38942
+ "description": "Rendered width and height in CSS pixels. Set to `0` to use `--c2-qr-code--size`.",
38943
+ "default": "200",
38944
+ "value": {
38945
+ "type": "number",
38946
+ "kind": "expression"
38947
+ }
38948
+ },
38949
+ {
38950
+ "name": "error-correction",
38951
+ "description": "Error correction level: L (7%), M (15%), Q (25%), or H (30%).",
38952
+ "default": "'M'",
38953
+ "value": {
38954
+ "type": "QrCodeErrorCorrection",
38955
+ "kind": "expression"
38956
+ }
38957
+ },
38958
+ {
38959
+ "name": "margin",
38960
+ "description": "Quiet-zone width measured in QR modules. Four is recommended for reliable scanning.",
38961
+ "default": "4",
38962
+ "value": {
38963
+ "type": "number",
38964
+ "kind": "expression"
38965
+ }
38966
+ },
38967
+ {
38968
+ "name": "boost-error-correction",
38969
+ "description": "Raises error correction when the encoded version has spare capacity.",
38970
+ "default": "false",
38971
+ "value": {
38972
+ "type": "boolean",
38973
+ "kind": "expression"
38974
+ }
38975
+ },
38976
+ {
38977
+ "name": "aria-label",
38978
+ "description": "Accessible name announced for the generated image. Defaults to `QR code`.",
38979
+ "default": "null",
38980
+ "value": {
38981
+ "type": "string | null",
38982
+ "kind": "expression"
38983
+ }
38984
+ }
38985
+ ],
38986
+ "js": {
38987
+ "properties": [
38988
+ {
38989
+ "name": "errorCorrection",
38990
+ "description": "Error correction level: L (7%), M (15%), Q (25%), or H (30%).",
38991
+ "value": {
38992
+ "type": "QrCodeErrorCorrection",
38993
+ "kind": "expression"
38994
+ }
38995
+ },
38996
+ {
38997
+ "name": "boostErrorCorrection",
38998
+ "description": "Raises error correction when the encoded version has spare capacity.",
38999
+ "value": {
39000
+ "type": "boolean",
39001
+ "kind": "expression"
39002
+ }
39003
+ },
39004
+ {
39005
+ "name": "ariaLabel",
39006
+ "description": "Accessible name announced for the generated image. Defaults to `QR code`.",
39007
+ "value": {
39008
+ "type": "string | null",
39009
+ "kind": "expression"
39010
+ }
39011
+ }
39012
+ ],
39013
+ "events": [
39014
+ {
39015
+ "name": "qr-code-error",
39016
+ "description": "Fired when the value cannot be encoded. `detail` contains the error and rejected value.",
39017
+ "value": {
39018
+ "type": "CustomEvent<QrCodeErrorEventDetail>",
39019
+ "kind": "expression"
39020
+ }
39021
+ }
39022
+ ]
39023
+ }
39024
+ },
39025
+ {
39026
+ "name": "c2-questionnaire",
39027
+ "description": "A complete multi-step questionnaire with single- and multiple-choice questions, optional free-text answers,\nvalidation, keyboard shortcuts and previous / skip / next navigation. Questions are supplied as an array through\nthe `questions` property or as JSON in the `questions` attribute. The component preserves answers between steps,\nemits progress events and submits the complete answer object as JSON when given a form `name`.\n\n`@c2n/questionnaire`",
39028
+ "attributes": [
39029
+ {
39030
+ "name": "questions",
39031
+ "description": "Questionnaire definition. Use `select` for one answer and `choice` for multiple answers (`single` / `multiple` remain aliases). May also be supplied as JSON.",
39032
+ "default": "[]",
39033
+ "value": {
39034
+ "type": "QuestionnaireQuestion[]",
39035
+ "kind": "expression"
39036
+ }
39037
+ },
39038
+ {
39039
+ "name": "current",
39040
+ "description": "Zero-based visible question index.",
39041
+ "default": "0",
39042
+ "value": {
39043
+ "type": "number",
39044
+ "kind": "expression"
39045
+ }
39046
+ },
39047
+ {
39048
+ "name": "completed",
39049
+ "description": "Shows the answer summary after successful completion.",
39050
+ "default": "false",
39051
+ "value": {
39052
+ "type": "boolean",
39053
+ "kind": "expression"
39054
+ }
39055
+ },
39056
+ {
39057
+ "name": "name",
39058
+ "description": "Form field name. Its submitted value is the answer object serialized as JSON.",
39059
+ "default": "''",
39060
+ "value": {
39061
+ "type": "string",
39062
+ "kind": "expression"
39063
+ }
39064
+ },
39065
+ {
39066
+ "name": "disabled",
39067
+ "description": "Disables options and navigation.",
39068
+ "default": "false",
39069
+ "value": {
39070
+ "type": "boolean",
39071
+ "kind": "expression"
39072
+ }
39073
+ },
39074
+ {
39075
+ "name": "next-label",
39076
+ "description": "Label of the forward action before the final question.",
39077
+ "default": "'Next'",
39078
+ "value": {
39079
+ "type": "string",
39080
+ "kind": "expression"
39081
+ }
39082
+ },
39083
+ {
39084
+ "name": "complete-label",
39085
+ "description": "Label of the forward action on the final question.",
39086
+ "default": "'Save'",
39087
+ "value": {
39088
+ "type": "string",
39089
+ "kind": "expression"
39090
+ }
39091
+ },
39092
+ {
39093
+ "name": "previous-label",
39094
+ "description": "Label of the backward action.",
39095
+ "default": "'Previous'",
39096
+ "value": {
39097
+ "type": "string",
39098
+ "kind": "expression"
39099
+ }
39100
+ },
39101
+ {
39102
+ "name": "skip-label",
39103
+ "description": "Label of the skip action.",
39104
+ "default": "'Skip'",
39105
+ "value": {
39106
+ "type": "string",
39107
+ "kind": "expression"
39108
+ }
39109
+ }
39110
+ ],
39111
+ "js": {
39112
+ "properties": [
39113
+ {
39114
+ "name": "nextLabel",
39115
+ "description": "Label of the forward action before the final question.",
39116
+ "value": {
39117
+ "type": "string",
39118
+ "kind": "expression"
39119
+ }
39120
+ },
39121
+ {
39122
+ "name": "completeLabel",
39123
+ "description": "Label of the forward action on the final question.",
39124
+ "value": {
39125
+ "type": "string",
39126
+ "kind": "expression"
39127
+ }
39128
+ },
39129
+ {
39130
+ "name": "previousLabel",
39131
+ "description": "Label of the backward action.",
39132
+ "value": {
39133
+ "type": "string",
39134
+ "kind": "expression"
39135
+ }
39136
+ },
39137
+ {
39138
+ "name": "skipLabel",
39139
+ "description": "Label of the skip action.",
39140
+ "value": {
39141
+ "type": "string",
39142
+ "kind": "expression"
39143
+ }
39144
+ }
39145
+ ],
39146
+ "events": [
39147
+ {
39148
+ "name": "complete",
39149
+ "description": "Fired from Next / Save on the last valid question.",
39150
+ "value": {
39151
+ "type": "CustomEvent<{ answers: QuestionnaireAnswers }>",
39152
+ "kind": "expression"
39153
+ }
39154
+ },
39155
+ {
39156
+ "name": "skip",
39157
+ "description": "Fired when a skippable question is skipped.",
39158
+ "value": {
39159
+ "type": "CustomEvent<{ index: number, questionId: string }>",
39160
+ "kind": "expression"
39161
+ }
39162
+ },
39163
+ {
39164
+ "name": "step-change",
39165
+ "description": "Fired after navigation changes the visible question.",
39166
+ "value": {
39167
+ "type": "CustomEvent<{ index: number, question: QuestionnaireQuestion }>",
39168
+ "kind": "expression"
39169
+ }
39170
+ },
39171
+ {
39172
+ "name": "answer-change",
39173
+ "description": "Fired whenever an answer changes.",
39174
+ "value": {
39175
+ "type": "CustomEvent<{ questionId: string, value: QuestionnaireAnswer, answers: QuestionnaireAnswers }>",
39176
+ "kind": "expression"
39177
+ }
39178
+ }
39179
+ ]
39180
+ }
39181
+ },
38280
39182
  {
38281
39183
  "name": "c2-radio",
38282
39184
  "description": "A single radio option built on a native `<input type=\"radio\">`, with its label and an optional description beside\nthe control. Put several in a `c2-radio-group` to get a single `value`, arrow-key navigation and a roving tab stop;\nstandalone radios that share a `name` in the same document or shadow root still uncheck each other. Theme the\ncontrol, the label and the whole row (`container`), which turns a radio into a selectable card. The indicator is\nnot tied to the ring: the `dot` slot swaps the inner mark, and `icon` / `checked-icon` replace the control with\nany icon per state.\n\n`@c2n/radio`",
@@ -38464,6 +39366,139 @@
38464
39366
  ]
38465
39367
  }
38466
39368
  },
39369
+ {
39370
+ "name": "c2-rate",
39371
+ "description": "Accessible star rating control with pointer preview, keyboard adjustment and optional half-star values.\n\n`@c2n/rate`",
39372
+ "attributes": [
39373
+ {
39374
+ "name": "value",
39375
+ "description": "Current rating and submitted form value.",
39376
+ "default": "0",
39377
+ "value": {
39378
+ "type": "number",
39379
+ "kind": "expression"
39380
+ }
39381
+ },
39382
+ {
39383
+ "name": "max",
39384
+ "description": "Number of rating icons.",
39385
+ "default": "5",
39386
+ "value": {
39387
+ "type": "number",
39388
+ "kind": "expression"
39389
+ }
39390
+ },
39391
+ {
39392
+ "name": "allow-half",
39393
+ "description": "Allow values in half-star steps.",
39394
+ "default": "false",
39395
+ "value": {
39396
+ "type": "boolean",
39397
+ "kind": "expression"
39398
+ }
39399
+ },
39400
+ {
39401
+ "name": "clearable",
39402
+ "description": "Clicking the committed rating again clears it to zero.",
39403
+ "default": "false",
39404
+ "value": {
39405
+ "type": "boolean",
39406
+ "kind": "expression"
39407
+ }
39408
+ },
39409
+ {
39410
+ "name": "readonly",
39411
+ "description": "Prevents changes while keeping the rating visually available.",
39412
+ "default": "false",
39413
+ "value": {
39414
+ "type": "boolean",
39415
+ "kind": "expression"
39416
+ }
39417
+ },
39418
+ {
39419
+ "name": "disabled",
39420
+ "description": "Disables interaction and form submission.",
39421
+ "default": "false",
39422
+ "value": {
39423
+ "type": "boolean",
39424
+ "kind": "expression"
39425
+ }
39426
+ },
39427
+ {
39428
+ "name": "required",
39429
+ "description": "Requires a rating greater than zero for native form validation.",
39430
+ "default": "false",
39431
+ "value": {
39432
+ "type": "boolean",
39433
+ "kind": "expression"
39434
+ }
39435
+ },
39436
+ {
39437
+ "name": "name",
39438
+ "description": "Name used when the rating participates in a form.",
39439
+ "default": "''",
39440
+ "value": {
39441
+ "type": "string",
39442
+ "kind": "expression"
39443
+ }
39444
+ },
39445
+ {
39446
+ "name": "aria-label",
39447
+ "description": "Accessible name of the rating control.",
39448
+ "default": "null",
39449
+ "value": {
39450
+ "type": "string | null",
39451
+ "kind": "expression"
39452
+ }
39453
+ }
39454
+ ],
39455
+ "js": {
39456
+ "properties": [
39457
+ {
39458
+ "name": "allowHalf",
39459
+ "description": "Allow values in half-star steps.",
39460
+ "value": {
39461
+ "type": "boolean",
39462
+ "kind": "expression"
39463
+ }
39464
+ },
39465
+ {
39466
+ "name": "ariaLabel",
39467
+ "description": "Accessible name of the rating control.",
39468
+ "value": {
39469
+ "type": "string | null",
39470
+ "kind": "expression"
39471
+ }
39472
+ }
39473
+ ],
39474
+ "events": [
39475
+ {
39476
+ "name": "rate-change",
39477
+ "description": "Fired after the user commits a rating. `detail.value` is the new value.",
39478
+ "value": {
39479
+ "type": "CustomEvent<RateChangeEventDetail>",
39480
+ "kind": "expression"
39481
+ }
39482
+ },
39483
+ {
39484
+ "name": "input",
39485
+ "description": "Fired with `rate-change` for form and framework bindings.",
39486
+ "value": {
39487
+ "type": "Event",
39488
+ "kind": "expression"
39489
+ }
39490
+ },
39491
+ {
39492
+ "name": "change",
39493
+ "description": "Fired with `rate-change` after the value is committed.",
39494
+ "value": {
39495
+ "type": "Event",
39496
+ "kind": "expression"
39497
+ }
39498
+ }
39499
+ ]
39500
+ }
39501
+ },
38467
39502
  {
38468
39503
  "name": "c2-reorder-list",
38469
39504
  "description": "`@c2n/reorder-list`",
@@ -39191,6 +40226,70 @@
39191
40226
  "events": []
39192
40227
  }
39193
40228
  },
40229
+ {
40230
+ "name": "c2-status-panel",
40231
+ "description": "Presents a meaningful application state with optional media, supporting copy, actions and additional content. Use it\nfor empty collections, completed operations, errors, unavailable pages and other places where the user needs a clear\nexplanation and next step.\n\n`@c2n/status-panel`",
40232
+ "attributes": [
40233
+ {
40234
+ "name": "status",
40235
+ "description": "Visual tone and default media icon.",
40236
+ "default": "'neutral'",
40237
+ "value": {
40238
+ "type": "StatusPanelStatus",
40239
+ "kind": "expression"
40240
+ }
40241
+ },
40242
+ {
40243
+ "name": "align",
40244
+ "description": "Centers the composition or aligns it to the inline start.",
40245
+ "default": "'center'",
40246
+ "value": {
40247
+ "type": "StatusPanelAlign",
40248
+ "kind": "expression"
40249
+ }
40250
+ },
40251
+ {
40252
+ "name": "heading",
40253
+ "description": "Plain-text title fallback. Use the `title` slot for rich content.",
40254
+ "default": "''",
40255
+ "value": {
40256
+ "type": "string",
40257
+ "kind": "expression"
40258
+ }
40259
+ },
40260
+ {
40261
+ "name": "description",
40262
+ "description": "Plain-text description fallback. Use the `description` slot for rich content.",
40263
+ "default": "''",
40264
+ "value": {
40265
+ "type": "string",
40266
+ "kind": "expression"
40267
+ }
40268
+ },
40269
+ {
40270
+ "name": "heading-level",
40271
+ "description": "Accessible heading level used by the title region.",
40272
+ "default": "2",
40273
+ "value": {
40274
+ "type": "number",
40275
+ "kind": "expression"
40276
+ }
40277
+ }
40278
+ ],
40279
+ "js": {
40280
+ "properties": [
40281
+ {
40282
+ "name": "headingLevel",
40283
+ "description": "Accessible heading level used by the title region.",
40284
+ "value": {
40285
+ "type": "number",
40286
+ "kind": "expression"
40287
+ }
40288
+ }
40289
+ ],
40290
+ "events": []
40291
+ }
40292
+ },
39194
40293
  {
39195
40294
  "name": "c2-switch",
39196
40295
  "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`",
@@ -40991,6 +42090,532 @@
40991
42090
  ]
40992
42091
  }
40993
42092
  },
42093
+ {
42094
+ "name": "c2-tree",
42095
+ "description": "Hierarchical tree view with expansion, selection and lazy loading.\n\n`@c2n/tree`",
42096
+ "attributes": [
42097
+ {
42098
+ "name": "items",
42099
+ "description": "Nodes to render. Leave empty and nest `c2-tree-item` elements instead to author the tree in markup.",
42100
+ "default": "[]",
42101
+ "value": {
42102
+ "type": "TreeNode[]",
42103
+ "kind": "expression"
42104
+ }
42105
+ },
42106
+ {
42107
+ "name": "value",
42108
+ "description": "Values of the selected rows. Reflected as a `;`-separated attribute.",
42109
+ "default": "[]",
42110
+ "value": {
42111
+ "type": "string[]",
42112
+ "kind": "expression"
42113
+ }
42114
+ },
42115
+ {
42116
+ "name": "expanded-items",
42117
+ "description": "Values of the expanded rows. Reflected as a `;`-separated attribute.",
42118
+ "default": "[]",
42119
+ "value": {
42120
+ "type": "string[]",
42121
+ "kind": "expression"
42122
+ }
42123
+ },
42124
+ {
42125
+ "name": "selection",
42126
+ "description": "How many rows may be selected at once.",
42127
+ "default": "'single'",
42128
+ "value": {
42129
+ "type": "TreeSelectionMode",
42130
+ "kind": "expression"
42131
+ }
42132
+ },
42133
+ {
42134
+ "name": "checkbox-selection",
42135
+ "description": "Shows a checkbox on every row. Implies `selection=\"multiple\"`.",
42136
+ "default": "false",
42137
+ "value": {
42138
+ "type": "boolean",
42139
+ "kind": "expression"
42140
+ }
42141
+ },
42142
+ {
42143
+ "name": "selection-propagation",
42144
+ "description": "How a checkbox tick travels between a row and its relatives.",
42145
+ "default": "'both'",
42146
+ "value": {
42147
+ "type": "TreeSelectionPropagation",
42148
+ "kind": "expression"
42149
+ }
42150
+ },
42151
+ {
42152
+ "name": "children-outline",
42153
+ "description": "Draws a vertical rule per level of depth, marking which branch each row belongs to.",
42154
+ "default": "false",
42155
+ "value": {
42156
+ "type": "boolean",
42157
+ "kind": "expression"
42158
+ }
42159
+ },
42160
+ {
42161
+ "name": "disabled",
42162
+ "description": "Freezes the whole tree.",
42163
+ "default": "false",
42164
+ "value": {
42165
+ "type": "boolean",
42166
+ "kind": "expression"
42167
+ }
42168
+ },
42169
+ {
42170
+ "name": "expand-on-click",
42171
+ "description": "Expands a branch when its row is clicked — or activated with Enter or Space — not only when its toggle is.",
42172
+ "default": "false",
42173
+ "value": {
42174
+ "type": "boolean",
42175
+ "kind": "expression"
42176
+ }
42177
+ }
42178
+ ],
42179
+ "js": {
42180
+ "properties": [
42181
+ {
42182
+ "name": "expandedItems",
42183
+ "description": "Values of the expanded rows. Reflected as a `;`-separated attribute.",
42184
+ "value": {
42185
+ "type": "string[]",
42186
+ "kind": "expression"
42187
+ }
42188
+ },
42189
+ {
42190
+ "name": "checkboxSelection",
42191
+ "description": "Shows a checkbox on every row. Implies `selection=\"multiple\"`.",
42192
+ "value": {
42193
+ "type": "boolean",
42194
+ "kind": "expression"
42195
+ }
42196
+ },
42197
+ {
42198
+ "name": "selectionPropagation",
42199
+ "description": "How a checkbox tick travels between a row and its relatives.",
42200
+ "value": {
42201
+ "type": "TreeSelectionPropagation",
42202
+ "kind": "expression"
42203
+ }
42204
+ },
42205
+ {
42206
+ "name": "childrenOutline",
42207
+ "description": "Draws a vertical rule per level of depth, marking which branch each row belongs to.",
42208
+ "value": {
42209
+ "type": "boolean",
42210
+ "kind": "expression"
42211
+ }
42212
+ },
42213
+ {
42214
+ "name": "expandOnClick",
42215
+ "description": "Expands a branch when its row is clicked — or activated with Enter or Space — not only when its toggle is.",
42216
+ "value": {
42217
+ "type": "boolean",
42218
+ "kind": "expression"
42219
+ }
42220
+ }
42221
+ ],
42222
+ "events": [
42223
+ {
42224
+ "name": "expansion-change",
42225
+ "description": "Fired after a row is expanded or collapsed. Does not bubble.",
42226
+ "value": {
42227
+ "type": "CustomEvent<TreeExpansionChangeEventDetail>",
42228
+ "kind": "expression"
42229
+ }
42230
+ },
42231
+ {
42232
+ "name": "item-load-error",
42233
+ "description": "Fired when `loadChildren` rejects.",
42234
+ "value": {
42235
+ "type": "CustomEvent<TreeItemLoadErrorEventDetail>",
42236
+ "kind": "expression"
42237
+ }
42238
+ },
42239
+ {
42240
+ "name": "selection-change",
42241
+ "description": "Fired after the user changes the selection. Does not bubble: several components fire `selection-change`, so a listener belongs on the element itself.",
42242
+ "value": {
42243
+ "type": "CustomEvent<TreeSelectionChangeEventDetail>",
42244
+ "kind": "expression"
42245
+ }
42246
+ },
42247
+ {
42248
+ "name": "item-click",
42249
+ "description": "Fired when a row is clicked, selected or not.",
42250
+ "value": {
42251
+ "type": "CustomEvent<TreeItemClickEventDetail>",
42252
+ "kind": "expression"
42253
+ }
42254
+ },
42255
+ {
42256
+ "name": "item-expand",
42257
+ "description": "Fired when a row expands. Call `preventDefault()` to keep it closed. This is where a consumer authoring in markup appends children for a lazily loaded branch.",
42258
+ "value": {
42259
+ "type": "CustomEvent<TreeItemExpandEventDetail>",
42260
+ "kind": "expression"
42261
+ }
42262
+ }
42263
+ ]
42264
+ }
42265
+ },
42266
+ {
42267
+ "name": "c2-tree-item",
42268
+ "description": "One row of a https://github.com/code2nguyen/web-components | `c2-tree`.\n\n`@c2n/tree`",
42269
+ "attributes": [
42270
+ {
42271
+ "name": "value",
42272
+ "description": "Identity of the row. Selection and expansion are tracked by this value, so it must be unique in the tree.",
42273
+ "default": "''",
42274
+ "value": {
42275
+ "type": "string",
42276
+ "kind": "expression"
42277
+ }
42278
+ },
42279
+ {
42280
+ "name": "label",
42281
+ "description": "Text of the row. Ignored when the `label` slot is filled; falls back to `value` when empty.",
42282
+ "default": "''",
42283
+ "value": {
42284
+ "type": "string",
42285
+ "kind": "expression"
42286
+ }
42287
+ },
42288
+ {
42289
+ "name": "disabled",
42290
+ "description": "Blocks selection and expansion, and takes the row out of checkbox propagation.",
42291
+ "default": "false",
42292
+ "value": {
42293
+ "type": "boolean",
42294
+ "kind": "expression"
42295
+ }
42296
+ },
42297
+ {
42298
+ "name": "has-children",
42299
+ "description": "Marks a branch whose children load on demand: the toggle shows before any child exists.",
42300
+ "default": "false",
42301
+ "value": {
42302
+ "type": "boolean",
42303
+ "kind": "expression"
42304
+ }
42305
+ },
42306
+ {
42307
+ "name": "href",
42308
+ "description": "Turns the row into a link. The whole row becomes the click target; the toggle still only expands.",
42309
+ "default": "''",
42310
+ "value": {
42311
+ "type": "string",
42312
+ "kind": "expression"
42313
+ }
42314
+ },
42315
+ {
42316
+ "name": "target",
42317
+ "description": "Browsing context for `href`, e.g. `_blank`. A `_blank` row gets `rel=\"noopener noreferrer\"`.",
42318
+ "value": {
42319
+ "type": "string | undefined",
42320
+ "kind": "expression"
42321
+ }
42322
+ },
42323
+ {
42324
+ "name": "expanded",
42325
+ "description": "Whether the children are shown. Written by the parent `c2-tree`.",
42326
+ "default": "false",
42327
+ "value": {
42328
+ "type": "boolean",
42329
+ "kind": "expression"
42330
+ }
42331
+ },
42332
+ {
42333
+ "name": "selected",
42334
+ "description": "Whether the row is selected. Written by the parent `c2-tree`.",
42335
+ "default": "false",
42336
+ "value": {
42337
+ "type": "boolean",
42338
+ "kind": "expression"
42339
+ }
42340
+ },
42341
+ {
42342
+ "name": "indeterminate",
42343
+ "description": "Whether only part of the subtree is selected. Derived and written by the parent `c2-tree`.",
42344
+ "default": "false",
42345
+ "value": {
42346
+ "type": "boolean",
42347
+ "kind": "expression"
42348
+ }
42349
+ },
42350
+ {
42351
+ "name": "loading",
42352
+ "description": "Whether the children are being fetched. Written by the parent `c2-tree`.",
42353
+ "default": "false",
42354
+ "value": {
42355
+ "type": "boolean",
42356
+ "kind": "expression"
42357
+ }
42358
+ },
42359
+ {
42360
+ "name": "children-outline",
42361
+ "description": "Whether to draw the indent guides. Written by the parent `c2-tree`, and reflected because the rules are\ndrawn in CSS and the stylesheet has to see it.",
42362
+ "default": "false",
42363
+ "value": {
42364
+ "type": "boolean",
42365
+ "kind": "expression"
42366
+ }
42367
+ }
42368
+ ],
42369
+ "js": {
42370
+ "properties": [
42371
+ {
42372
+ "name": "hasChildren",
42373
+ "description": "Marks a branch whose children load on demand: the toggle shows before any child exists.",
42374
+ "value": {
42375
+ "type": "boolean",
42376
+ "kind": "expression"
42377
+ }
42378
+ },
42379
+ {
42380
+ "name": "childrenOutline",
42381
+ "description": "Whether to draw the indent guides. Written by the parent `c2-tree`, and reflected because the rules are\ndrawn in CSS and the stylesheet has to see it.",
42382
+ "value": {
42383
+ "type": "boolean",
42384
+ "kind": "expression"
42385
+ }
42386
+ }
42387
+ ],
42388
+ "events": [
42389
+ {
42390
+ "name": "TREE_ITEM_CHANGE_EVENT",
42391
+ "value": {
42392
+ "type": "CustomEvent",
42393
+ "kind": "expression"
42394
+ }
42395
+ },
42396
+ {
42397
+ "name": "TREE_ITEM_TOGGLE_EVENT",
42398
+ "value": {
42399
+ "type": "CustomEvent",
42400
+ "kind": "expression"
42401
+ }
42402
+ },
42403
+ {
42404
+ "name": "TREE_ITEM_CHECK_EVENT",
42405
+ "value": {
42406
+ "type": "CustomEvent",
42407
+ "kind": "expression"
42408
+ }
42409
+ }
42410
+ ]
42411
+ }
42412
+ },
42413
+ {
42414
+ "name": "c2-upload",
42415
+ "description": "Drag-and-drop file uploader with multiple selection, validation and an attachment-based upload queue. Set an async\n`uploadHandler(file, { signal, onProgress })` property to connect transport; the component owns progress, success,\nerror, retry, cancel and removal UI while leaving network policy to the application.\n\n`@c2n/upload`",
42416
+ "attributes": [
42417
+ {
42418
+ "name": "multiple",
42419
+ "description": "Accept several files in one browse or drop operation.",
42420
+ "default": "false",
42421
+ "value": {
42422
+ "type": "boolean",
42423
+ "kind": "expression"
42424
+ }
42425
+ },
42426
+ {
42427
+ "name": "variant",
42428
+ "description": "Dropzone provides drag-and-drop; compact renders only an upload button.",
42429
+ "default": "'dropzone'",
42430
+ "value": {
42431
+ "type": "UploadVariant",
42432
+ "kind": "expression"
42433
+ }
42434
+ },
42435
+ {
42436
+ "name": "accept",
42437
+ "description": "Comma-separated MIME types or file extensions, using the native file-input syntax.",
42438
+ "default": "''",
42439
+ "value": {
42440
+ "type": "string",
42441
+ "kind": "expression"
42442
+ }
42443
+ },
42444
+ {
42445
+ "name": "max-files",
42446
+ "description": "Maximum number of queued files. Zero means unlimited.",
42447
+ "default": "0",
42448
+ "value": {
42449
+ "type": "number",
42450
+ "kind": "expression"
42451
+ }
42452
+ },
42453
+ {
42454
+ "name": "max-size",
42455
+ "description": "Maximum size of each file in bytes. Zero means unlimited.",
42456
+ "default": "0",
42457
+ "value": {
42458
+ "type": "number",
42459
+ "kind": "expression"
42460
+ }
42461
+ },
42462
+ {
42463
+ "name": "auto-upload",
42464
+ "description": "Run `uploadHandler` immediately after files are accepted.",
42465
+ "default": "true",
42466
+ "value": {
42467
+ "type": "boolean",
42468
+ "kind": "expression"
42469
+ }
42470
+ },
42471
+ {
42472
+ "name": "disabled",
42473
+ "description": "Disables browsing, dropping and attachment actions.",
42474
+ "default": "false",
42475
+ "value": {
42476
+ "type": "boolean",
42477
+ "kind": "expression"
42478
+ }
42479
+ },
42480
+ {
42481
+ "name": "required",
42482
+ "description": "Requires at least one selected file for native form validation.",
42483
+ "default": "false",
42484
+ "value": {
42485
+ "type": "boolean",
42486
+ "kind": "expression"
42487
+ }
42488
+ },
42489
+ {
42490
+ "name": "name",
42491
+ "description": "Form field name. Each queued file is appended with this name.",
42492
+ "default": "''",
42493
+ "value": {
42494
+ "type": "string",
42495
+ "kind": "expression"
42496
+ }
42497
+ },
42498
+ {
42499
+ "name": "aria-label",
42500
+ "description": "Accessible name for the drop zone.",
42501
+ "default": "null",
42502
+ "value": {
42503
+ "type": "string | null",
42504
+ "kind": "expression"
42505
+ }
42506
+ }
42507
+ ],
42508
+ "js": {
42509
+ "properties": [
42510
+ {
42511
+ "name": "maxFiles",
42512
+ "description": "Maximum number of queued files. Zero means unlimited.",
42513
+ "value": {
42514
+ "type": "number",
42515
+ "kind": "expression"
42516
+ }
42517
+ },
42518
+ {
42519
+ "name": "maxSize",
42520
+ "description": "Maximum size of each file in bytes. Zero means unlimited.",
42521
+ "value": {
42522
+ "type": "number",
42523
+ "kind": "expression"
42524
+ }
42525
+ },
42526
+ {
42527
+ "name": "autoUpload",
42528
+ "description": "Run `uploadHandler` immediately after files are accepted.",
42529
+ "value": {
42530
+ "type": "boolean",
42531
+ "kind": "expression"
42532
+ }
42533
+ },
42534
+ {
42535
+ "name": "ariaLabel",
42536
+ "description": "Accessible name for the drop zone.",
42537
+ "value": {
42538
+ "type": "string | null",
42539
+ "kind": "expression"
42540
+ }
42541
+ }
42542
+ ],
42543
+ "events": [
42544
+ {
42545
+ "name": "input",
42546
+ "description": "Fired whenever the file value changes, for form and framework bindings.",
42547
+ "value": {
42548
+ "type": "Event",
42549
+ "kind": "expression"
42550
+ }
42551
+ },
42552
+ {
42553
+ "name": "change",
42554
+ "description": "Fired whenever files are added or removed, for form and framework bindings.",
42555
+ "value": {
42556
+ "type": "Event",
42557
+ "kind": "expression"
42558
+ }
42559
+ },
42560
+ {
42561
+ "name": "files-selected",
42562
+ "description": "Fired after valid files enter the queue through browse, drop or `addFiles()`.",
42563
+ "value": {
42564
+ "type": "CustomEvent<UploadFilesEventDetail>",
42565
+ "kind": "expression"
42566
+ }
42567
+ },
42568
+ {
42569
+ "name": "file-reject",
42570
+ "description": "Fired when type, size, count or single-file rules reject files.",
42571
+ "value": {
42572
+ "type": "CustomEvent<{ rejections: UploadRejection[] }>",
42573
+ "kind": "expression"
42574
+ }
42575
+ },
42576
+ {
42577
+ "name": "upload-start",
42578
+ "description": "Fired when an item begins uploading.",
42579
+ "value": {
42580
+ "type": "CustomEvent<{ item: UploadItem }>",
42581
+ "kind": "expression"
42582
+ }
42583
+ },
42584
+ {
42585
+ "name": "upload-progress",
42586
+ "description": "Fired when the upload handler reports progress.",
42587
+ "value": {
42588
+ "type": "CustomEvent<UploadProgressEventDetail>",
42589
+ "kind": "expression"
42590
+ }
42591
+ },
42592
+ {
42593
+ "name": "upload-success",
42594
+ "description": "Fired after an upload handler resolves; `item.result` contains its result.",
42595
+ "value": {
42596
+ "type": "CustomEvent<UploadResultEventDetail>",
42597
+ "kind": "expression"
42598
+ }
42599
+ },
42600
+ {
42601
+ "name": "upload-error",
42602
+ "description": "Fired after an upload handler rejects; `item.error` contains the error.",
42603
+ "value": {
42604
+ "type": "CustomEvent<UploadResultEventDetail>",
42605
+ "kind": "expression"
42606
+ }
42607
+ },
42608
+ {
42609
+ "name": "upload-remove",
42610
+ "description": "Fired after an item is removed or an active upload is cancelled.",
42611
+ "value": {
42612
+ "type": "CustomEvent<{ item: UploadItem }>",
42613
+ "kind": "expression"
42614
+ }
42615
+ }
42616
+ ]
42617
+ }
42618
+ },
40994
42619
  {
40995
42620
  "name": "c2-virtual-list",
40996
42621
  "description": "A long list that only renders what you can see. It windows `items` to the visible range plus an overscan margin with\nthe same `VirtualScrollController` the data grid uses, so 50 000 rows cost the same DOM as 20, and it renders every\nvisible row as a real `c2-list-item` — the same markup, slots, selection styling and theme as `c2-list`.\n\n`@c2n/virtual-list`",