@kubex/zinc 1.1.118 → 1.1.119

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.
@@ -56,6 +56,79 @@
56
56
  }
57
57
  ]
58
58
  },
59
+ {
60
+ "kind": "javascript-module",
61
+ "path": "components/action-bar/action-bar.js",
62
+ "declarations": [
63
+ {
64
+ "kind": "class",
65
+ "description": "",
66
+ "name": "ZnActionBar",
67
+ "cssProperties": [
68
+ {
69
+ "description": "An example CSS custom property.",
70
+ "name": "--example"
71
+ }
72
+ ],
73
+ "cssParts": [
74
+ {
75
+ "description": "The component's base wrapper.",
76
+ "name": "base"
77
+ }
78
+ ],
79
+ "slots": [
80
+ {
81
+ "description": "The default slot.",
82
+ "name": ""
83
+ },
84
+ {
85
+ "description": "An example slot.",
86
+ "name": "example"
87
+ }
88
+ ],
89
+ "members": [
90
+ {
91
+ "kind": "field",
92
+ "name": "localize",
93
+ "privacy": "private",
94
+ "readonly": true,
95
+ "default": "new LocalizeController(this)"
96
+ }
97
+ ],
98
+ "events": [
99
+ {
100
+ "description": "Emitted as an example.",
101
+ "name": "zn-event-name"
102
+ }
103
+ ],
104
+ "superclass": {
105
+ "name": "ZincElement",
106
+ "module": "/src/internal/zinc-element"
107
+ },
108
+ "summary": "Short summary of the component's intended use.",
109
+ "tagNameWithoutPrefix": "action-bar",
110
+ "tagName": "zn-action-bar",
111
+ "customElement": true,
112
+ "jsDoc": "/**\n * @summary Short summary of the component's intended use.\n * @documentation https://zinc.style/components/action-bar\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-example\n *\n * @event zn-event-name - Emitted as an example.\n *\n * @slot - The default slot.\n * @slot example - An example slot.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --example - An example CSS custom property.\n */",
113
+ "documentation": "https://zinc.style/components/action-bar",
114
+ "status": "experimental",
115
+ "since": "1.0",
116
+ "dependencies": [
117
+ "zn-example"
118
+ ]
119
+ }
120
+ ],
121
+ "exports": [
122
+ {
123
+ "kind": "js",
124
+ "name": "default",
125
+ "declaration": {
126
+ "name": "ZnActionBar",
127
+ "module": "components/action-bar/action-bar.js"
128
+ }
129
+ }
130
+ ]
131
+ },
59
132
  {
60
133
  "kind": "javascript-module",
61
134
  "path": "components/alert/alert.js",
@@ -250,79 +323,6 @@
250
323
  }
251
324
  ]
252
325
  },
253
- {
254
- "kind": "javascript-module",
255
- "path": "components/action-bar/action-bar.js",
256
- "declarations": [
257
- {
258
- "kind": "class",
259
- "description": "",
260
- "name": "ZnActionBar",
261
- "cssProperties": [
262
- {
263
- "description": "An example CSS custom property.",
264
- "name": "--example"
265
- }
266
- ],
267
- "cssParts": [
268
- {
269
- "description": "The component's base wrapper.",
270
- "name": "base"
271
- }
272
- ],
273
- "slots": [
274
- {
275
- "description": "The default slot.",
276
- "name": ""
277
- },
278
- {
279
- "description": "An example slot.",
280
- "name": "example"
281
- }
282
- ],
283
- "members": [
284
- {
285
- "kind": "field",
286
- "name": "localize",
287
- "privacy": "private",
288
- "readonly": true,
289
- "default": "new LocalizeController(this)"
290
- }
291
- ],
292
- "events": [
293
- {
294
- "description": "Emitted as an example.",
295
- "name": "zn-event-name"
296
- }
297
- ],
298
- "superclass": {
299
- "name": "ZincElement",
300
- "module": "/src/internal/zinc-element"
301
- },
302
- "summary": "Short summary of the component's intended use.",
303
- "tagNameWithoutPrefix": "action-bar",
304
- "tagName": "zn-action-bar",
305
- "customElement": true,
306
- "jsDoc": "/**\n * @summary Short summary of the component's intended use.\n * @documentation https://zinc.style/components/action-bar\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-example\n *\n * @event zn-event-name - Emitted as an example.\n *\n * @slot - The default slot.\n * @slot example - An example slot.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --example - An example CSS custom property.\n */",
307
- "documentation": "https://zinc.style/components/action-bar",
308
- "status": "experimental",
309
- "since": "1.0",
310
- "dependencies": [
311
- "zn-example"
312
- ]
313
- }
314
- ],
315
- "exports": [
316
- {
317
- "kind": "js",
318
- "name": "default",
319
- "declaration": {
320
- "name": "ZnActionBar",
321
- "module": "components/action-bar/action-bar.js"
322
- }
323
- }
324
- ]
325
- },
326
326
  {
327
327
  "kind": "javascript-module",
328
328
  "path": "components/animated-button/animated-button.js",
@@ -842,269 +842,6 @@
842
842
  }
843
843
  ]
844
844
  },
845
- {
846
- "kind": "javascript-module",
847
- "path": "components/background/background.js",
848
- "declarations": [
849
- {
850
- "kind": "class",
851
- "description": "",
852
- "name": "ZnBackground",
853
- "cssProperties": [
854
- {
855
- "description": "Fallback colour when the `color` attribute is not set.",
856
- "name": "--zn-background-color"
857
- },
858
- {
859
- "description": "Position of the background image. Defaults to `center`.",
860
- "name": "--zn-background-image-position"
861
- },
862
- {
863
- "description": "Direction of the overlay gradient. Defaults to `110deg`.",
864
- "name": "--zn-background-overlay-angle"
865
- },
866
- {
867
- "description": "Colour of the floating icons. Defaults to `currentColor`.",
868
- "name": "--zn-background-floating-icon-color"
869
- }
870
- ],
871
- "cssParts": [
872
- {
873
- "description": "The component's full-size background canvas.",
874
- "name": "base"
875
- },
876
- {
877
- "description": "The decorative background image.",
878
- "name": "image"
879
- },
880
- {
881
- "description": "The contrast overlay between the image and content.",
882
- "name": "overlay"
883
- },
884
- {
885
- "description": "The non-interactive layer containing the floating icons.",
886
- "name": "floating-icons"
887
- },
888
- {
889
- "description": "Each floating `zn-icon`.",
890
- "name": "floating-icon"
891
- },
892
- {
893
- "description": "The wrapper around the default slot.",
894
- "name": "content"
895
- }
896
- ],
897
- "slots": [
898
- {
899
- "description": "Content displayed above the background layers.",
900
- "name": ""
901
- }
902
- ],
903
- "members": [
904
- {
905
- "kind": "field",
906
- "name": "dependencies",
907
- "type": {
908
- "text": "object"
909
- },
910
- "static": true,
911
- "default": "{'zn-icon': ZnIcon}"
912
- },
913
- {
914
- "kind": "field",
915
- "name": "resizeObserver",
916
- "privacy": "private",
917
- "readonly": true,
918
- "default": "new ResizeController<number>(this, { callback: entries => { const width = entries[0]?.contentRect.width ?? this.offsetWidth; return Math.max(1, Math.min(width * 0.05, 150)); }, })"
919
- },
920
- {
921
- "kind": "field",
922
- "name": "image",
923
- "type": {
924
- "text": "string"
925
- },
926
- "default": "''",
927
- "description": "URL of the decorative background image.",
928
- "attribute": "image"
929
- },
930
- {
931
- "kind": "field",
932
- "name": "color",
933
- "type": {
934
- "text": "string"
935
- },
936
- "default": "''",
937
- "description": "CSS colour painted beneath the image.",
938
- "attribute": "color"
939
- },
940
- {
941
- "kind": "field",
942
- "name": "imageStrength",
943
- "type": {
944
- "text": "BackgroundImageStrength"
945
- },
946
- "default": "'full'",
947
- "description": "Visibility of the image: `soft` (30%), `medium` (62%) or `full` (100%).",
948
- "attribute": "image-strength",
949
- "reflects": true
950
- },
951
- {
952
- "kind": "field",
953
- "name": "motion",
954
- "type": {
955
- "text": "BackgroundMotion"
956
- },
957
- "default": "'none'",
958
- "description": "Subtle animation applied to the image. Motion stops when reduced motion is requested.",
959
- "attribute": "motion",
960
- "reflects": true
961
- },
962
- {
963
- "kind": "field",
964
- "name": "overlay",
965
- "type": {
966
- "text": "BackgroundOverlay"
967
- },
968
- "default": "'soft'",
969
- "description": "Strength of the contrast gradient above the image.",
970
- "attribute": "overlay",
971
- "reflects": true
972
- },
973
- {
974
- "kind": "field",
975
- "name": "overlayTone",
976
- "type": {
977
- "text": "BackgroundOverlayTone"
978
- },
979
- "default": "'light'",
980
- "description": "Whether the overlay uses a light or dark contrast treatment.",
981
- "attribute": "overlay-tone",
982
- "reflects": true
983
- },
984
- {
985
- "kind": "field",
986
- "name": "floatingIcons",
987
- "type": {
988
- "text": "string"
989
- },
990
- "default": "''",
991
- "description": "Comma-separated Zinc icon names placed as ambient decoration. At most eight are rendered.",
992
- "attribute": "floating-icons"
993
- },
994
- {
995
- "kind": "field",
996
- "name": "paused",
997
- "type": {
998
- "text": "boolean"
999
- },
1000
- "default": "false",
1001
- "description": "Pauses background motion without changing the selected motion treatment.",
1002
- "attribute": "paused",
1003
- "reflects": true
1004
- }
1005
- ],
1006
- "attributes": [
1007
- {
1008
- "name": "image",
1009
- "type": {
1010
- "text": "string"
1011
- },
1012
- "default": "''",
1013
- "description": "URL of the decorative background image.",
1014
- "fieldName": "image"
1015
- },
1016
- {
1017
- "name": "color",
1018
- "type": {
1019
- "text": "string"
1020
- },
1021
- "default": "''",
1022
- "description": "CSS colour painted beneath the image.",
1023
- "fieldName": "color"
1024
- },
1025
- {
1026
- "name": "image-strength",
1027
- "type": {
1028
- "text": "BackgroundImageStrength"
1029
- },
1030
- "default": "'full'",
1031
- "description": "Visibility of the image: `soft` (30%), `medium` (62%) or `full` (100%).",
1032
- "fieldName": "imageStrength"
1033
- },
1034
- {
1035
- "name": "motion",
1036
- "type": {
1037
- "text": "BackgroundMotion"
1038
- },
1039
- "default": "'none'",
1040
- "description": "Subtle animation applied to the image. Motion stops when reduced motion is requested.",
1041
- "fieldName": "motion"
1042
- },
1043
- {
1044
- "name": "overlay",
1045
- "type": {
1046
- "text": "BackgroundOverlay"
1047
- },
1048
- "default": "'soft'",
1049
- "description": "Strength of the contrast gradient above the image.",
1050
- "fieldName": "overlay"
1051
- },
1052
- {
1053
- "name": "overlay-tone",
1054
- "type": {
1055
- "text": "BackgroundOverlayTone"
1056
- },
1057
- "default": "'light'",
1058
- "description": "Whether the overlay uses a light or dark contrast treatment.",
1059
- "fieldName": "overlayTone"
1060
- },
1061
- {
1062
- "name": "floating-icons",
1063
- "type": {
1064
- "text": "string"
1065
- },
1066
- "default": "''",
1067
- "description": "Comma-separated Zinc icon names placed as ambient decoration. At most eight are rendered.",
1068
- "fieldName": "floatingIcons"
1069
- },
1070
- {
1071
- "name": "paused",
1072
- "type": {
1073
- "text": "boolean"
1074
- },
1075
- "default": "false",
1076
- "description": "Pauses background motion without changing the selected motion treatment.",
1077
- "fieldName": "paused"
1078
- }
1079
- ],
1080
- "superclass": {
1081
- "name": "ZincElement",
1082
- "module": "/src/internal/zinc-element"
1083
- },
1084
- "summary": "Composes a colour, decorative image, image strength, optional motion and contrast overlay behind slotted content.",
1085
- "tagNameWithoutPrefix": "background",
1086
- "tagName": "zn-background",
1087
- "customElement": true,
1088
- "jsDoc": "/**\n * @summary Composes a colour, decorative image, image strength, optional motion and contrast overlay behind slotted content.\n *\n * @documentation https://zinc.style/components/background\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-icon\n *\n * @slot - Content displayed above the background layers.\n *\n * @csspart base - The component's full-size background canvas.\n * @csspart image - The decorative background image.\n * @csspart overlay - The contrast overlay between the image and content.\n * @csspart floating-icons - The non-interactive layer containing the floating icons.\n * @csspart floating-icon - Each floating `zn-icon`.\n * @csspart content - The wrapper around the default slot.\n *\n * @cssproperty --zn-background-color - Fallback colour when the `color` attribute is not set.\n * @cssproperty --zn-background-image-position - Position of the background image. Defaults to `center`.\n * @cssproperty --zn-background-overlay-angle - Direction of the overlay gradient. Defaults to `110deg`.\n * @cssproperty --zn-background-floating-icon-color - Colour of the floating icons. Defaults to `currentColor`.\n */",
1089
- "documentation": "https://zinc.style/components/background",
1090
- "status": "experimental",
1091
- "since": "1.0",
1092
- "dependencies": [
1093
- "zn-icon"
1094
- ]
1095
- }
1096
- ],
1097
- "exports": [
1098
- {
1099
- "kind": "js",
1100
- "name": "default",
1101
- "declaration": {
1102
- "name": "ZnBackground",
1103
- "module": "components/background/background.js"
1104
- }
1105
- }
1106
- ]
1107
- },
1108
845
  {
1109
846
  "kind": "javascript-module",
1110
847
  "path": "components/bulk-actions/bulk-actions.js",
@@ -1462,6 +1199,434 @@
1462
1199
  }
1463
1200
  ]
1464
1201
  },
1202
+ {
1203
+ "kind": "javascript-module",
1204
+ "path": "components/background/background.js",
1205
+ "declarations": [
1206
+ {
1207
+ "kind": "class",
1208
+ "description": "",
1209
+ "name": "ZnBackground",
1210
+ "cssProperties": [
1211
+ {
1212
+ "description": "Fallback colour when the `color` attribute is not set.",
1213
+ "name": "--zn-background-color"
1214
+ },
1215
+ {
1216
+ "description": "Position of the background image. Defaults to `center`.",
1217
+ "name": "--zn-background-image-position"
1218
+ },
1219
+ {
1220
+ "description": "Direction of the overlay gradient. Defaults to `110deg`.",
1221
+ "name": "--zn-background-overlay-angle"
1222
+ },
1223
+ {
1224
+ "description": "Colour of the floating icons. Defaults to `currentColor`.",
1225
+ "name": "--zn-background-floating-icon-color"
1226
+ }
1227
+ ],
1228
+ "cssParts": [
1229
+ {
1230
+ "description": "The component's full-size background canvas.",
1231
+ "name": "base"
1232
+ },
1233
+ {
1234
+ "description": "The decorative background image.",
1235
+ "name": "image"
1236
+ },
1237
+ {
1238
+ "description": "The contrast overlay between the image and content.",
1239
+ "name": "overlay"
1240
+ },
1241
+ {
1242
+ "description": "The non-interactive layer containing the floating icons.",
1243
+ "name": "floating-icons"
1244
+ },
1245
+ {
1246
+ "description": "Each floating `zn-icon`.",
1247
+ "name": "floating-icon"
1248
+ },
1249
+ {
1250
+ "description": "The wrapper around the default slot.",
1251
+ "name": "content"
1252
+ }
1253
+ ],
1254
+ "slots": [
1255
+ {
1256
+ "description": "Content displayed above the background layers.",
1257
+ "name": ""
1258
+ }
1259
+ ],
1260
+ "members": [
1261
+ {
1262
+ "kind": "field",
1263
+ "name": "dependencies",
1264
+ "type": {
1265
+ "text": "object"
1266
+ },
1267
+ "static": true,
1268
+ "default": "{'zn-icon': ZnIcon}"
1269
+ },
1270
+ {
1271
+ "kind": "field",
1272
+ "name": "resizeObserver",
1273
+ "privacy": "private",
1274
+ "readonly": true,
1275
+ "default": "new ResizeController<number>(this, { callback: entries => { const width = entries[0]?.contentRect.width ?? this.offsetWidth; return Math.max(1, Math.min(width * 0.05, 150)); }, })"
1276
+ },
1277
+ {
1278
+ "kind": "field",
1279
+ "name": "image",
1280
+ "type": {
1281
+ "text": "string"
1282
+ },
1283
+ "default": "''",
1284
+ "description": "URL of the decorative background image.",
1285
+ "attribute": "image"
1286
+ },
1287
+ {
1288
+ "kind": "field",
1289
+ "name": "color",
1290
+ "type": {
1291
+ "text": "string"
1292
+ },
1293
+ "default": "''",
1294
+ "description": "CSS colour painted beneath the image.",
1295
+ "attribute": "color"
1296
+ },
1297
+ {
1298
+ "kind": "field",
1299
+ "name": "imageStrength",
1300
+ "type": {
1301
+ "text": "BackgroundImageStrength"
1302
+ },
1303
+ "default": "'full'",
1304
+ "description": "Visibility of the image: `soft` (30%), `medium` (62%) or `full` (100%).",
1305
+ "attribute": "image-strength",
1306
+ "reflects": true
1307
+ },
1308
+ {
1309
+ "kind": "field",
1310
+ "name": "motion",
1311
+ "type": {
1312
+ "text": "BackgroundMotion"
1313
+ },
1314
+ "default": "'none'",
1315
+ "description": "Subtle animation applied to the image. Motion stops when reduced motion is requested.",
1316
+ "attribute": "motion",
1317
+ "reflects": true
1318
+ },
1319
+ {
1320
+ "kind": "field",
1321
+ "name": "overlay",
1322
+ "type": {
1323
+ "text": "BackgroundOverlay"
1324
+ },
1325
+ "default": "'soft'",
1326
+ "description": "Strength of the contrast gradient above the image.",
1327
+ "attribute": "overlay",
1328
+ "reflects": true
1329
+ },
1330
+ {
1331
+ "kind": "field",
1332
+ "name": "overlayTone",
1333
+ "type": {
1334
+ "text": "BackgroundOverlayTone"
1335
+ },
1336
+ "default": "'light'",
1337
+ "description": "Whether the overlay uses a light or dark contrast treatment.",
1338
+ "attribute": "overlay-tone",
1339
+ "reflects": true
1340
+ },
1341
+ {
1342
+ "kind": "field",
1343
+ "name": "floatingIcons",
1344
+ "type": {
1345
+ "text": "string"
1346
+ },
1347
+ "default": "''",
1348
+ "description": "Comma-separated Zinc icon names placed as ambient decoration. At most eight are rendered.",
1349
+ "attribute": "floating-icons"
1350
+ },
1351
+ {
1352
+ "kind": "field",
1353
+ "name": "paused",
1354
+ "type": {
1355
+ "text": "boolean"
1356
+ },
1357
+ "default": "false",
1358
+ "description": "Pauses background motion without changing the selected motion treatment.",
1359
+ "attribute": "paused",
1360
+ "reflects": true
1361
+ }
1362
+ ],
1363
+ "attributes": [
1364
+ {
1365
+ "name": "image",
1366
+ "type": {
1367
+ "text": "string"
1368
+ },
1369
+ "default": "''",
1370
+ "description": "URL of the decorative background image.",
1371
+ "fieldName": "image"
1372
+ },
1373
+ {
1374
+ "name": "color",
1375
+ "type": {
1376
+ "text": "string"
1377
+ },
1378
+ "default": "''",
1379
+ "description": "CSS colour painted beneath the image.",
1380
+ "fieldName": "color"
1381
+ },
1382
+ {
1383
+ "name": "image-strength",
1384
+ "type": {
1385
+ "text": "BackgroundImageStrength"
1386
+ },
1387
+ "default": "'full'",
1388
+ "description": "Visibility of the image: `soft` (30%), `medium` (62%) or `full` (100%).",
1389
+ "fieldName": "imageStrength"
1390
+ },
1391
+ {
1392
+ "name": "motion",
1393
+ "type": {
1394
+ "text": "BackgroundMotion"
1395
+ },
1396
+ "default": "'none'",
1397
+ "description": "Subtle animation applied to the image. Motion stops when reduced motion is requested.",
1398
+ "fieldName": "motion"
1399
+ },
1400
+ {
1401
+ "name": "overlay",
1402
+ "type": {
1403
+ "text": "BackgroundOverlay"
1404
+ },
1405
+ "default": "'soft'",
1406
+ "description": "Strength of the contrast gradient above the image.",
1407
+ "fieldName": "overlay"
1408
+ },
1409
+ {
1410
+ "name": "overlay-tone",
1411
+ "type": {
1412
+ "text": "BackgroundOverlayTone"
1413
+ },
1414
+ "default": "'light'",
1415
+ "description": "Whether the overlay uses a light or dark contrast treatment.",
1416
+ "fieldName": "overlayTone"
1417
+ },
1418
+ {
1419
+ "name": "floating-icons",
1420
+ "type": {
1421
+ "text": "string"
1422
+ },
1423
+ "default": "''",
1424
+ "description": "Comma-separated Zinc icon names placed as ambient decoration. At most eight are rendered.",
1425
+ "fieldName": "floatingIcons"
1426
+ },
1427
+ {
1428
+ "name": "paused",
1429
+ "type": {
1430
+ "text": "boolean"
1431
+ },
1432
+ "default": "false",
1433
+ "description": "Pauses background motion without changing the selected motion treatment.",
1434
+ "fieldName": "paused"
1435
+ }
1436
+ ],
1437
+ "superclass": {
1438
+ "name": "ZincElement",
1439
+ "module": "/src/internal/zinc-element"
1440
+ },
1441
+ "summary": "Composes a colour, decorative image, image strength, optional motion and contrast overlay behind slotted content.",
1442
+ "tagNameWithoutPrefix": "background",
1443
+ "tagName": "zn-background",
1444
+ "customElement": true,
1445
+ "jsDoc": "/**\n * @summary Composes a colour, decorative image, image strength, optional motion and contrast overlay behind slotted content.\n *\n * @documentation https://zinc.style/components/background\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-icon\n *\n * @slot - Content displayed above the background layers.\n *\n * @csspart base - The component's full-size background canvas.\n * @csspart image - The decorative background image.\n * @csspart overlay - The contrast overlay between the image and content.\n * @csspart floating-icons - The non-interactive layer containing the floating icons.\n * @csspart floating-icon - Each floating `zn-icon`.\n * @csspart content - The wrapper around the default slot.\n *\n * @cssproperty --zn-background-color - Fallback colour when the `color` attribute is not set.\n * @cssproperty --zn-background-image-position - Position of the background image. Defaults to `center`.\n * @cssproperty --zn-background-overlay-angle - Direction of the overlay gradient. Defaults to `110deg`.\n * @cssproperty --zn-background-floating-icon-color - Colour of the floating icons. Defaults to `currentColor`.\n */",
1446
+ "documentation": "https://zinc.style/components/background",
1447
+ "status": "experimental",
1448
+ "since": "1.0",
1449
+ "dependencies": [
1450
+ "zn-icon"
1451
+ ]
1452
+ }
1453
+ ],
1454
+ "exports": [
1455
+ {
1456
+ "kind": "js",
1457
+ "name": "default",
1458
+ "declaration": {
1459
+ "name": "ZnBackground",
1460
+ "module": "components/background/background.js"
1461
+ }
1462
+ }
1463
+ ]
1464
+ },
1465
+ {
1466
+ "kind": "javascript-module",
1467
+ "path": "components/button-group/button-group.js",
1468
+ "declarations": [
1469
+ {
1470
+ "kind": "class",
1471
+ "description": "",
1472
+ "name": "ZnButtonGroup",
1473
+ "cssProperties": [
1474
+ {
1475
+ "description": "Use flex-grow to fill available space.",
1476
+ "name": "--grow"
1477
+ },
1478
+ {
1479
+ "description": "Justify content at the start of the flex space.",
1480
+ "name": "--start"
1481
+ }
1482
+ ],
1483
+ "cssParts": [
1484
+ {
1485
+ "description": "The component's base wrapper.",
1486
+ "name": "base"
1487
+ }
1488
+ ],
1489
+ "slots": [
1490
+ {
1491
+ "description": "The default slot.",
1492
+ "name": ""
1493
+ }
1494
+ ],
1495
+ "members": [
1496
+ {
1497
+ "kind": "field",
1498
+ "name": "direction",
1499
+ "type": {
1500
+ "text": "'horizontal' | 'vertical'"
1501
+ },
1502
+ "default": "'horizontal'",
1503
+ "attribute": "direction"
1504
+ },
1505
+ {
1506
+ "kind": "field",
1507
+ "name": "grow",
1508
+ "type": {
1509
+ "text": "boolean"
1510
+ },
1511
+ "default": "false",
1512
+ "attribute": "grow"
1513
+ },
1514
+ {
1515
+ "kind": "field",
1516
+ "name": "wrap",
1517
+ "type": {
1518
+ "text": "boolean"
1519
+ },
1520
+ "default": "false",
1521
+ "attribute": "wrap"
1522
+ },
1523
+ {
1524
+ "kind": "field",
1525
+ "name": "start",
1526
+ "type": {
1527
+ "text": "boolean"
1528
+ },
1529
+ "default": "false",
1530
+ "attribute": "start"
1531
+ },
1532
+ {
1533
+ "kind": "field",
1534
+ "name": "gap",
1535
+ "type": {
1536
+ "text": "boolean"
1537
+ },
1538
+ "default": "false",
1539
+ "attribute": "gap"
1540
+ },
1541
+ {
1542
+ "kind": "field",
1543
+ "name": "defaultSlot",
1544
+ "type": {
1545
+ "text": "HTMLSlotElement"
1546
+ }
1547
+ },
1548
+ {
1549
+ "kind": "method",
1550
+ "name": "handleSlotChange",
1551
+ "privacy": "private"
1552
+ }
1553
+ ],
1554
+ "events": [
1555
+ {
1556
+ "description": "Emitted as an example.",
1557
+ "name": "zn-event-name"
1558
+ }
1559
+ ],
1560
+ "attributes": [
1561
+ {
1562
+ "name": "direction",
1563
+ "type": {
1564
+ "text": "'horizontal' | 'vertical'"
1565
+ },
1566
+ "default": "'horizontal'",
1567
+ "fieldName": "direction"
1568
+ },
1569
+ {
1570
+ "name": "grow",
1571
+ "type": {
1572
+ "text": "boolean"
1573
+ },
1574
+ "default": "false",
1575
+ "fieldName": "grow"
1576
+ },
1577
+ {
1578
+ "name": "wrap",
1579
+ "type": {
1580
+ "text": "boolean"
1581
+ },
1582
+ "default": "false",
1583
+ "fieldName": "wrap"
1584
+ },
1585
+ {
1586
+ "name": "start",
1587
+ "type": {
1588
+ "text": "boolean"
1589
+ },
1590
+ "default": "false",
1591
+ "fieldName": "start"
1592
+ },
1593
+ {
1594
+ "name": "gap",
1595
+ "type": {
1596
+ "text": "boolean"
1597
+ },
1598
+ "default": "false",
1599
+ "fieldName": "gap"
1600
+ }
1601
+ ],
1602
+ "superclass": {
1603
+ "name": "ZincElement",
1604
+ "module": "/src/internal/zinc-element"
1605
+ },
1606
+ "summary": "Short summary of the component's intended use.",
1607
+ "tagNameWithoutPrefix": "button-group",
1608
+ "tagName": "zn-button-group",
1609
+ "customElement": true,
1610
+ "jsDoc": "/**\n * @summary Short summary of the component's intended use.\n * @documentation https://zinc.style/components/button-group\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-example\n *\n * @event zn-event-name - Emitted as an example.\n *\n * @slot - The default slot.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --grow - Use flex-grow to fill available space.\n * @cssproperty --start - Justify content at the start of the flex space.\n */",
1611
+ "documentation": "https://zinc.style/components/button-group",
1612
+ "status": "experimental",
1613
+ "since": "1.0",
1614
+ "dependencies": [
1615
+ "zn-example"
1616
+ ]
1617
+ }
1618
+ ],
1619
+ "exports": [
1620
+ {
1621
+ "kind": "js",
1622
+ "name": "default",
1623
+ "declaration": {
1624
+ "name": "ZnButtonGroup",
1625
+ "module": "components/button-group/button-group.js"
1626
+ }
1627
+ }
1628
+ ]
1629
+ },
1465
1630
  {
1466
1631
  "kind": "javascript-module",
1467
1632
  "path": "components/button/button.js",
@@ -2417,171 +2582,6 @@
2417
2582
  }
2418
2583
  ]
2419
2584
  },
2420
- {
2421
- "kind": "javascript-module",
2422
- "path": "components/button-group/button-group.js",
2423
- "declarations": [
2424
- {
2425
- "kind": "class",
2426
- "description": "",
2427
- "name": "ZnButtonGroup",
2428
- "cssProperties": [
2429
- {
2430
- "description": "Use flex-grow to fill available space.",
2431
- "name": "--grow"
2432
- },
2433
- {
2434
- "description": "Justify content at the start of the flex space.",
2435
- "name": "--start"
2436
- }
2437
- ],
2438
- "cssParts": [
2439
- {
2440
- "description": "The component's base wrapper.",
2441
- "name": "base"
2442
- }
2443
- ],
2444
- "slots": [
2445
- {
2446
- "description": "The default slot.",
2447
- "name": ""
2448
- }
2449
- ],
2450
- "members": [
2451
- {
2452
- "kind": "field",
2453
- "name": "direction",
2454
- "type": {
2455
- "text": "'horizontal' | 'vertical'"
2456
- },
2457
- "default": "'horizontal'",
2458
- "attribute": "direction"
2459
- },
2460
- {
2461
- "kind": "field",
2462
- "name": "grow",
2463
- "type": {
2464
- "text": "boolean"
2465
- },
2466
- "default": "false",
2467
- "attribute": "grow"
2468
- },
2469
- {
2470
- "kind": "field",
2471
- "name": "wrap",
2472
- "type": {
2473
- "text": "boolean"
2474
- },
2475
- "default": "false",
2476
- "attribute": "wrap"
2477
- },
2478
- {
2479
- "kind": "field",
2480
- "name": "start",
2481
- "type": {
2482
- "text": "boolean"
2483
- },
2484
- "default": "false",
2485
- "attribute": "start"
2486
- },
2487
- {
2488
- "kind": "field",
2489
- "name": "gap",
2490
- "type": {
2491
- "text": "boolean"
2492
- },
2493
- "default": "false",
2494
- "attribute": "gap"
2495
- },
2496
- {
2497
- "kind": "field",
2498
- "name": "defaultSlot",
2499
- "type": {
2500
- "text": "HTMLSlotElement"
2501
- }
2502
- },
2503
- {
2504
- "kind": "method",
2505
- "name": "handleSlotChange",
2506
- "privacy": "private"
2507
- }
2508
- ],
2509
- "events": [
2510
- {
2511
- "description": "Emitted as an example.",
2512
- "name": "zn-event-name"
2513
- }
2514
- ],
2515
- "attributes": [
2516
- {
2517
- "name": "direction",
2518
- "type": {
2519
- "text": "'horizontal' | 'vertical'"
2520
- },
2521
- "default": "'horizontal'",
2522
- "fieldName": "direction"
2523
- },
2524
- {
2525
- "name": "grow",
2526
- "type": {
2527
- "text": "boolean"
2528
- },
2529
- "default": "false",
2530
- "fieldName": "grow"
2531
- },
2532
- {
2533
- "name": "wrap",
2534
- "type": {
2535
- "text": "boolean"
2536
- },
2537
- "default": "false",
2538
- "fieldName": "wrap"
2539
- },
2540
- {
2541
- "name": "start",
2542
- "type": {
2543
- "text": "boolean"
2544
- },
2545
- "default": "false",
2546
- "fieldName": "start"
2547
- },
2548
- {
2549
- "name": "gap",
2550
- "type": {
2551
- "text": "boolean"
2552
- },
2553
- "default": "false",
2554
- "fieldName": "gap"
2555
- }
2556
- ],
2557
- "superclass": {
2558
- "name": "ZincElement",
2559
- "module": "/src/internal/zinc-element"
2560
- },
2561
- "summary": "Short summary of the component's intended use.",
2562
- "tagNameWithoutPrefix": "button-group",
2563
- "tagName": "zn-button-group",
2564
- "customElement": true,
2565
- "jsDoc": "/**\n * @summary Short summary of the component's intended use.\n * @documentation https://zinc.style/components/button-group\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-example\n *\n * @event zn-event-name - Emitted as an example.\n *\n * @slot - The default slot.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --grow - Use flex-grow to fill available space.\n * @cssproperty --start - Justify content at the start of the flex space.\n */",
2566
- "documentation": "https://zinc.style/components/button-group",
2567
- "status": "experimental",
2568
- "since": "1.0",
2569
- "dependencies": [
2570
- "zn-example"
2571
- ]
2572
- }
2573
- ],
2574
- "exports": [
2575
- {
2576
- "kind": "js",
2577
- "name": "default",
2578
- "declaration": {
2579
- "name": "ZnButtonGroup",
2580
- "module": "components/button-group/button-group.js"
2581
- }
2582
- }
2583
- ]
2584
- },
2585
2585
  {
2586
2586
  "kind": "javascript-module",
2587
2587
  "path": "components/button-menu/button-menu.js",
@@ -16550,22 +16550,11 @@
16550
16550
  },
16551
16551
  {
16552
16552
  "kind": "field",
16553
- "name": "tracked",
16554
- "type": {
16555
- "text": "HTMLElement | null"
16556
- },
16553
+ "name": "clipped",
16557
16554
  "privacy": "private",
16558
- "default": "null",
16559
- "description": "The scroller the label is tracked against by hand; null while native sticky is enough."
16560
- },
16561
- {
16562
- "kind": "field",
16563
- "name": "stickyTop",
16564
- "type": {
16565
- "text": "number"
16566
- },
16567
- "privacy": "private",
16568
- "default": "0"
16555
+ "readonly": true,
16556
+ "default": "new Map<HTMLElement, { x: string; y: string }>()",
16557
+ "description": "The scroll containers we have clipped, against the inline overflow each carried before."
16569
16558
  },
16570
16559
  {
16571
16560
  "kind": "field",
@@ -16576,24 +16565,6 @@
16576
16565
  "privacy": "private",
16577
16566
  "default": "0"
16578
16567
  },
16579
- {
16580
- "kind": "field",
16581
- "name": "rebind",
16582
- "type": {
16583
- "text": "boolean"
16584
- },
16585
- "privacy": "private",
16586
- "default": "false"
16587
- },
16588
- {
16589
- "kind": "field",
16590
- "name": "offset",
16591
- "type": {
16592
- "text": "number"
16593
- },
16594
- "privacy": "private",
16595
- "default": "0"
16596
- },
16597
16568
  {
16598
16569
  "kind": "field",
16599
16570
  "name": "resizeObserver",
@@ -16616,84 +16587,53 @@
16616
16587
  "kind": "method",
16617
16588
  "name": "schedule",
16618
16589
  "privacy": "private",
16619
- "parameters": [
16620
- {
16621
- "name": "rebind",
16622
- "default": "false",
16623
- "type": {
16624
- "text": "boolean"
16625
- }
16626
- }
16627
- ],
16628
- "description": "Coalesces scroll and resize work into one frame, and out of the ResizeObserver callback."
16590
+ "description": "Coalesces resize work into one frame, and out of the ResizeObserver callback."
16591
+ },
16592
+ {
16593
+ "kind": "field",
16594
+ "name": "onViewportResize",
16595
+ "privacy": "private",
16596
+ "readonly": true
16629
16597
  },
16630
16598
  {
16631
16599
  "kind": "method",
16632
- "name": "findScroller",
16600
+ "name": "freeSticky",
16633
16601
  "privacy": "private",
16634
- "description": "Native sticky only follows the nearest scroll container. Where that container isn't the one\nthe user actually scrolls — a `zn-panel` body sized to its content inside a scrolling\nslideout, say the label never moves, so it gets translated by hand instead."
16602
+ "description": "Native sticky anchors to the nearest scroll container, even one that cannot scroll — a `zn-panel` body sized to\nits content, say — where it then holds the label still for the whole scroll. `overflow: clip` clips without\nmaking a scroll container, so clipping those takes them out of sticky's search and the label follows the box the\nuser actually scrolls, moved by the compositor rather than by hand."
16635
16603
  },
16636
16604
  {
16637
16605
  "kind": "method",
16638
- "name": "trackScroller",
16606
+ "name": "clip",
16639
16607
  "privacy": "private",
16640
16608
  "parameters": [
16641
16609
  {
16642
- "name": "scroller",
16610
+ "name": "element",
16643
16611
  "type": {
16644
- "text": "HTMLElement | null"
16612
+ "text": "HTMLElement"
16645
16613
  }
16646
16614
  }
16647
16615
  ]
16648
16616
  },
16649
16617
  {
16650
16618
  "kind": "method",
16651
- "name": "scrollTarget",
16619
+ "name": "release",
16652
16620
  "privacy": "private",
16653
- "return": {
16654
- "type": {
16655
- "text": "EventTarget | null"
16656
- }
16657
- },
16658
16621
  "parameters": [
16659
16622
  {
16660
- "name": "scroller",
16623
+ "name": "elements",
16661
16624
  "type": {
16662
- "text": "HTMLElement | null"
16625
+ "text": "HTMLElement[]"
16663
16626
  }
16664
16627
  }
16665
- ],
16666
- "description": "The document scrolls through the window, every other scroller reports its own events."
16667
- },
16668
- {
16669
- "kind": "field",
16670
- "name": "onScroll",
16671
- "privacy": "private",
16672
- "readonly": true
16673
- },
16674
- {
16675
- "kind": "field",
16676
- "name": "onViewportResize",
16677
- "privacy": "private",
16678
- "readonly": true
16679
- },
16680
- {
16681
- "kind": "method",
16682
- "name": "positionLabel",
16683
- "privacy": "private"
16628
+ ]
16684
16629
  },
16685
16630
  {
16686
16631
  "kind": "method",
16687
- "name": "nearestScrollContainer",
16632
+ "name": "isStickyAnchor",
16688
16633
  "privacy": "private",
16689
- "return": {
16690
- "type": {
16691
- "text": "HTMLElement | null"
16692
- }
16693
- },
16694
16634
  "parameters": [
16695
16635
  {
16696
- "name": "from",
16636
+ "name": "element",
16697
16637
  "type": {
16698
16638
  "text": "HTMLElement"
16699
16639
  }
@@ -16703,32 +16643,26 @@
16703
16643
  },
16704
16644
  {
16705
16645
  "kind": "method",
16706
- "name": "scrollingAncestor",
16646
+ "name": "isScrollContainer",
16707
16647
  "privacy": "private",
16708
- "return": {
16709
- "type": {
16710
- "text": "HTMLElement | null"
16711
- }
16712
- },
16713
16648
  "parameters": [
16714
16649
  {
16715
- "name": "from",
16650
+ "name": "overflow",
16716
16651
  "type": {
16717
- "text": "HTMLElement"
16652
+ "text": "string"
16718
16653
  }
16719
16654
  }
16720
- ],
16721
- "description": "The nearest ancestor the user can actually scroll, falling back to the document."
16655
+ ]
16722
16656
  },
16723
16657
  {
16724
16658
  "kind": "method",
16725
- "name": "isScrollContainer",
16659
+ "name": "overflows",
16726
16660
  "privacy": "private",
16727
16661
  "parameters": [
16728
16662
  {
16729
- "name": "overflow",
16663
+ "name": "element",
16730
16664
  "type": {
16731
- "text": "string"
16665
+ "text": "HTMLElement"
16732
16666
  }
16733
16667
  }
16734
16668
  ]
@@ -28338,6 +28272,230 @@
28338
28272
  }
28339
28273
  ]
28340
28274
  },
28275
+ {
28276
+ "kind": "javascript-module",
28277
+ "path": "components/pagination/pagination.js",
28278
+ "declarations": [
28279
+ {
28280
+ "kind": "class",
28281
+ "description": "",
28282
+ "name": "ZnPagination",
28283
+ "members": [
28284
+ {
28285
+ "kind": "field",
28286
+ "name": "limit",
28287
+ "type": {
28288
+ "text": "number"
28289
+ },
28290
+ "default": "10",
28291
+ "attribute": "limit",
28292
+ "reflects": true
28293
+ },
28294
+ {
28295
+ "kind": "field",
28296
+ "name": "total",
28297
+ "type": {
28298
+ "text": "number"
28299
+ },
28300
+ "default": "0",
28301
+ "attribute": "total",
28302
+ "reflects": true
28303
+ },
28304
+ {
28305
+ "kind": "field",
28306
+ "name": "page",
28307
+ "type": {
28308
+ "text": "number"
28309
+ },
28310
+ "default": "1",
28311
+ "attribute": "page",
28312
+ "reflects": true
28313
+ },
28314
+ {
28315
+ "kind": "field",
28316
+ "name": "uri",
28317
+ "type": {
28318
+ "text": "string"
28319
+ },
28320
+ "default": "\"\"",
28321
+ "attribute": "uri",
28322
+ "reflects": true
28323
+ },
28324
+ {
28325
+ "kind": "method",
28326
+ "name": "_createLink",
28327
+ "privacy": "protected",
28328
+ "return": {
28329
+ "type": {
28330
+ "text": "string"
28331
+ }
28332
+ },
28333
+ "parameters": [
28334
+ {
28335
+ "name": "page",
28336
+ "type": {
28337
+ "text": "number"
28338
+ }
28339
+ }
28340
+ ]
28341
+ },
28342
+ {
28343
+ "kind": "method",
28344
+ "name": "_calculatePages",
28345
+ "privacy": "protected"
28346
+ }
28347
+ ],
28348
+ "attributes": [
28349
+ {
28350
+ "name": "limit",
28351
+ "type": {
28352
+ "text": "number"
28353
+ },
28354
+ "default": "10",
28355
+ "fieldName": "limit"
28356
+ },
28357
+ {
28358
+ "name": "total",
28359
+ "type": {
28360
+ "text": "number"
28361
+ },
28362
+ "default": "0",
28363
+ "fieldName": "total"
28364
+ },
28365
+ {
28366
+ "name": "page",
28367
+ "type": {
28368
+ "text": "number"
28369
+ },
28370
+ "default": "1",
28371
+ "fieldName": "page"
28372
+ },
28373
+ {
28374
+ "name": "uri",
28375
+ "type": {
28376
+ "text": "string"
28377
+ },
28378
+ "default": "\"\"",
28379
+ "fieldName": "uri"
28380
+ }
28381
+ ],
28382
+ "superclass": {
28383
+ "name": "ZincElement",
28384
+ "module": "/src/internal/zinc-element"
28385
+ },
28386
+ "summary": "Pagination component for navigating through pages of content.",
28387
+ "tagNameWithoutPrefix": "pagination",
28388
+ "tagName": "zn-pagination",
28389
+ "customElement": true,
28390
+ "jsDoc": "/**\n * @summary Pagination component for navigating through pages of content.\n * @documentation https://zinc.style/components/pagination\n * @status experimental\n * @since 1.0\n */",
28391
+ "documentation": "https://zinc.style/components/pagination",
28392
+ "status": "experimental",
28393
+ "since": "1.0"
28394
+ }
28395
+ ],
28396
+ "exports": [
28397
+ {
28398
+ "kind": "js",
28399
+ "name": "default",
28400
+ "declaration": {
28401
+ "name": "ZnPagination",
28402
+ "module": "components/pagination/pagination.js"
28403
+ }
28404
+ }
28405
+ ]
28406
+ },
28407
+ {
28408
+ "kind": "javascript-module",
28409
+ "path": "components/pane/pane.js",
28410
+ "declarations": [
28411
+ {
28412
+ "kind": "class",
28413
+ "description": "",
28414
+ "name": "ZnPane",
28415
+ "cssProperties": [
28416
+ {
28417
+ "description": "An example CSS custom property.",
28418
+ "name": "--example"
28419
+ }
28420
+ ],
28421
+ "cssParts": [
28422
+ {
28423
+ "description": "The component's base wrapper.",
28424
+ "name": "base"
28425
+ }
28426
+ ],
28427
+ "slots": [
28428
+ {
28429
+ "description": "The default slot.",
28430
+ "name": ""
28431
+ },
28432
+ {
28433
+ "description": "An example slot.",
28434
+ "name": "example"
28435
+ }
28436
+ ],
28437
+ "members": [
28438
+ {
28439
+ "kind": "field",
28440
+ "name": "flush",
28441
+ "type": {
28442
+ "text": "boolean"
28443
+ },
28444
+ "attribute": "flush"
28445
+ },
28446
+ {
28447
+ "kind": "field",
28448
+ "name": "_header",
28449
+ "type": {
28450
+ "text": "HTMLElement | null"
28451
+ },
28452
+ "privacy": "protected",
28453
+ "default": "null"
28454
+ }
28455
+ ],
28456
+ "events": [
28457
+ {
28458
+ "description": "Emitted as an example.",
28459
+ "name": "zn-event-name"
28460
+ }
28461
+ ],
28462
+ "attributes": [
28463
+ {
28464
+ "name": "flush",
28465
+ "type": {
28466
+ "text": "boolean"
28467
+ },
28468
+ "fieldName": "flush"
28469
+ }
28470
+ ],
28471
+ "superclass": {
28472
+ "name": "ZincElement",
28473
+ "module": "/src/internal/zinc-element"
28474
+ },
28475
+ "summary": "Short summary of the component's intended use.",
28476
+ "tagNameWithoutPrefix": "pane",
28477
+ "tagName": "zn-pane",
28478
+ "customElement": true,
28479
+ "jsDoc": "/**\n * @summary Short summary of the component's intended use.\n * @documentation https://zinc.style/components/pane\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-example\n *\n * @event zn-event-name - Emitted as an example.\n *\n * @slot - The default slot.\n * @slot example - An example slot.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --example - An example CSS custom property.\n */",
28480
+ "documentation": "https://zinc.style/components/pane",
28481
+ "status": "experimental",
28482
+ "since": "1.0",
28483
+ "dependencies": [
28484
+ "zn-example"
28485
+ ]
28486
+ }
28487
+ ],
28488
+ "exports": [
28489
+ {
28490
+ "kind": "js",
28491
+ "name": "default",
28492
+ "declaration": {
28493
+ "name": "ZnPane",
28494
+ "module": "components/pane/pane.js"
28495
+ }
28496
+ }
28497
+ ]
28498
+ },
28341
28499
  {
28342
28500
  "kind": "javascript-module",
28343
28501
  "path": "components/page-nav/page-nav.js",
@@ -29612,230 +29770,6 @@
29612
29770
  }
29613
29771
  ]
29614
29772
  },
29615
- {
29616
- "kind": "javascript-module",
29617
- "path": "components/pagination/pagination.js",
29618
- "declarations": [
29619
- {
29620
- "kind": "class",
29621
- "description": "",
29622
- "name": "ZnPagination",
29623
- "members": [
29624
- {
29625
- "kind": "field",
29626
- "name": "limit",
29627
- "type": {
29628
- "text": "number"
29629
- },
29630
- "default": "10",
29631
- "attribute": "limit",
29632
- "reflects": true
29633
- },
29634
- {
29635
- "kind": "field",
29636
- "name": "total",
29637
- "type": {
29638
- "text": "number"
29639
- },
29640
- "default": "0",
29641
- "attribute": "total",
29642
- "reflects": true
29643
- },
29644
- {
29645
- "kind": "field",
29646
- "name": "page",
29647
- "type": {
29648
- "text": "number"
29649
- },
29650
- "default": "1",
29651
- "attribute": "page",
29652
- "reflects": true
29653
- },
29654
- {
29655
- "kind": "field",
29656
- "name": "uri",
29657
- "type": {
29658
- "text": "string"
29659
- },
29660
- "default": "\"\"",
29661
- "attribute": "uri",
29662
- "reflects": true
29663
- },
29664
- {
29665
- "kind": "method",
29666
- "name": "_createLink",
29667
- "privacy": "protected",
29668
- "return": {
29669
- "type": {
29670
- "text": "string"
29671
- }
29672
- },
29673
- "parameters": [
29674
- {
29675
- "name": "page",
29676
- "type": {
29677
- "text": "number"
29678
- }
29679
- }
29680
- ]
29681
- },
29682
- {
29683
- "kind": "method",
29684
- "name": "_calculatePages",
29685
- "privacy": "protected"
29686
- }
29687
- ],
29688
- "attributes": [
29689
- {
29690
- "name": "limit",
29691
- "type": {
29692
- "text": "number"
29693
- },
29694
- "default": "10",
29695
- "fieldName": "limit"
29696
- },
29697
- {
29698
- "name": "total",
29699
- "type": {
29700
- "text": "number"
29701
- },
29702
- "default": "0",
29703
- "fieldName": "total"
29704
- },
29705
- {
29706
- "name": "page",
29707
- "type": {
29708
- "text": "number"
29709
- },
29710
- "default": "1",
29711
- "fieldName": "page"
29712
- },
29713
- {
29714
- "name": "uri",
29715
- "type": {
29716
- "text": "string"
29717
- },
29718
- "default": "\"\"",
29719
- "fieldName": "uri"
29720
- }
29721
- ],
29722
- "superclass": {
29723
- "name": "ZincElement",
29724
- "module": "/src/internal/zinc-element"
29725
- },
29726
- "summary": "Pagination component for navigating through pages of content.",
29727
- "tagNameWithoutPrefix": "pagination",
29728
- "tagName": "zn-pagination",
29729
- "customElement": true,
29730
- "jsDoc": "/**\n * @summary Pagination component for navigating through pages of content.\n * @documentation https://zinc.style/components/pagination\n * @status experimental\n * @since 1.0\n */",
29731
- "documentation": "https://zinc.style/components/pagination",
29732
- "status": "experimental",
29733
- "since": "1.0"
29734
- }
29735
- ],
29736
- "exports": [
29737
- {
29738
- "kind": "js",
29739
- "name": "default",
29740
- "declaration": {
29741
- "name": "ZnPagination",
29742
- "module": "components/pagination/pagination.js"
29743
- }
29744
- }
29745
- ]
29746
- },
29747
- {
29748
- "kind": "javascript-module",
29749
- "path": "components/pane/pane.js",
29750
- "declarations": [
29751
- {
29752
- "kind": "class",
29753
- "description": "",
29754
- "name": "ZnPane",
29755
- "cssProperties": [
29756
- {
29757
- "description": "An example CSS custom property.",
29758
- "name": "--example"
29759
- }
29760
- ],
29761
- "cssParts": [
29762
- {
29763
- "description": "The component's base wrapper.",
29764
- "name": "base"
29765
- }
29766
- ],
29767
- "slots": [
29768
- {
29769
- "description": "The default slot.",
29770
- "name": ""
29771
- },
29772
- {
29773
- "description": "An example slot.",
29774
- "name": "example"
29775
- }
29776
- ],
29777
- "members": [
29778
- {
29779
- "kind": "field",
29780
- "name": "flush",
29781
- "type": {
29782
- "text": "boolean"
29783
- },
29784
- "attribute": "flush"
29785
- },
29786
- {
29787
- "kind": "field",
29788
- "name": "_header",
29789
- "type": {
29790
- "text": "HTMLElement | null"
29791
- },
29792
- "privacy": "protected",
29793
- "default": "null"
29794
- }
29795
- ],
29796
- "events": [
29797
- {
29798
- "description": "Emitted as an example.",
29799
- "name": "zn-event-name"
29800
- }
29801
- ],
29802
- "attributes": [
29803
- {
29804
- "name": "flush",
29805
- "type": {
29806
- "text": "boolean"
29807
- },
29808
- "fieldName": "flush"
29809
- }
29810
- ],
29811
- "superclass": {
29812
- "name": "ZincElement",
29813
- "module": "/src/internal/zinc-element"
29814
- },
29815
- "summary": "Short summary of the component's intended use.",
29816
- "tagNameWithoutPrefix": "pane",
29817
- "tagName": "zn-pane",
29818
- "customElement": true,
29819
- "jsDoc": "/**\n * @summary Short summary of the component's intended use.\n * @documentation https://zinc.style/components/pane\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-example\n *\n * @event zn-event-name - Emitted as an example.\n *\n * @slot - The default slot.\n * @slot example - An example slot.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --example - An example CSS custom property.\n */",
29820
- "documentation": "https://zinc.style/components/pane",
29821
- "status": "experimental",
29822
- "since": "1.0",
29823
- "dependencies": [
29824
- "zn-example"
29825
- ]
29826
- }
29827
- ],
29828
- "exports": [
29829
- {
29830
- "kind": "js",
29831
- "name": "default",
29832
- "declaration": {
29833
- "name": "ZnPane",
29834
- "module": "components/pane/pane.js"
29835
- }
29836
- }
29837
- ]
29838
- },
29839
29773
  {
29840
29774
  "kind": "javascript-module",
29841
29775
  "path": "components/panel/panel.js",
@@ -30632,502 +30566,644 @@
30632
30566
  },
30633
30567
  {
30634
30568
  "kind": "javascript-module",
30635
- "path": "components/preview-frame/preview-frame.js",
30569
+ "path": "components/priority-list/priority-list.js",
30636
30570
  "declarations": [
30637
30571
  {
30638
30572
  "kind": "class",
30639
30573
  "description": "",
30640
- "name": "ZnPreviewFrame",
30574
+ "name": "ZnPriorityList",
30641
30575
  "cssProperties": [
30642
30576
  {
30643
- "description": "Spacing of the backdrop dot grid (`backdrop=\"dots\"`). Defaults to 20px.",
30644
- "name": "--zn-preview-frame-dot-spacing"
30577
+ "description": "The gap between list items. Defaults to `var(--zn-spacing-2x-small)`.",
30578
+ "name": "--zn-priority-list-item-gap"
30645
30579
  },
30646
30580
  {
30647
- "description": "Opacity of the backdrop dots (`backdrop=\"dots\"`). Defaults to 0.08.",
30648
- "name": "--zn-preview-frame-dot-opacity"
30581
+ "description": "The padding inside each item. Defaults to `var(--zn-spacing-small) var(--zn-spacing-medium)`.",
30582
+ "name": "--zn-priority-list-item-padding"
30583
+ },
30584
+ {
30585
+ "description": "The gap between an item's slotted actions. Defaults to `var(--zn-spacing-x-small)`.",
30586
+ "name": "--zn-priority-list-actions-gap"
30587
+ },
30588
+ {
30589
+ "description": "The color of the drag handle. Defaults to `var(--zn-color-neutral-500)`.",
30590
+ "name": "--zn-priority-list-handle-color"
30591
+ },
30592
+ {
30593
+ "description": "The color of the priority number. Defaults to `var(--zn-color-neutral-600)`.",
30594
+ "name": "--zn-priority-list-priority-color"
30649
30595
  }
30650
30596
  ],
30651
30597
  "cssParts": [
30652
30598
  {
30653
- "description": "The component's base wrapper.",
30654
- "name": "base"
30599
+ "description": "The form control wrapper.",
30600
+ "name": "form-control"
30655
30601
  },
30656
30602
  {
30657
- "description": "The device-width wrapper around the iframe.",
30658
- "name": "stage"
30603
+ "description": "The label wrapper.",
30604
+ "name": "form-control-label"
30659
30605
  },
30660
30606
  {
30661
- "description": "The preview iframe.",
30662
- "name": "iframe"
30607
+ "description": "The input area wrapper.",
30608
+ "name": "form-control-input"
30663
30609
  },
30664
30610
  {
30665
- "description": "The error overlay.",
30666
- "name": "error"
30611
+ "description": "The help text wrapper.",
30612
+ "name": "form-control-help-text"
30613
+ },
30614
+ {
30615
+ "description": "The list container.",
30616
+ "name": "list"
30617
+ },
30618
+ {
30619
+ "description": "An individual list item row.",
30620
+ "name": "item"
30621
+ },
30622
+ {
30623
+ "description": "The drag handle icon.",
30624
+ "name": "drag-handle"
30625
+ },
30626
+ {
30627
+ "description": "The priority number badge.",
30628
+ "name": "priority"
30629
+ },
30630
+ {
30631
+ "description": "The content area of an item.",
30632
+ "name": "content"
30633
+ }
30634
+ ],
30635
+ "slots": [
30636
+ {
30637
+ "description": "The default slot where list items are placed. Each slotted element must have a `value` attribute that uniquely identifies the item. The component automatically assigns slot names to project each item into the correct position. The item's position in the list determines its priority (top = `priority-start`, incrementing).",
30638
+ "name": ""
30639
+ },
30640
+ {
30641
+ "description": "The component's label. Required for proper accessibility. Alternatively, use the `label` attribute.",
30642
+ "name": "label"
30643
+ },
30644
+ {
30645
+ "description": "Used to add text displayed in a tooltip next to the label.",
30646
+ "name": "label-tooltip"
30647
+ },
30648
+ {
30649
+ "description": "Text that describes how to use the component. Alternatively, use the `help-text` attribute.",
30650
+ "name": "help-text"
30667
30651
  }
30668
30652
  ],
30669
30653
  "members": [
30670
30654
  {
30671
30655
  "kind": "field",
30672
- "name": "src",
30656
+ "name": "dependencies",
30673
30657
  "type": {
30674
- "text": "string"
30658
+ "text": "object"
30675
30659
  },
30676
- "default": "''",
30677
- "description": "URL of the preview shell page (tokened embed URL).",
30678
- "attribute": "src"
30660
+ "static": true,
30661
+ "default": "{ 'zn-icon': ZnIcon, }"
30679
30662
  },
30680
30663
  {
30681
30664
  "kind": "field",
30682
- "name": "frameOrigin",
30665
+ "name": "formControlController",
30666
+ "privacy": "protected",
30667
+ "readonly": true,
30668
+ "default": "new FormControlController(this, { value: (control: ZnPriorityList) => { return JSON.stringify(control.getPriorityMap()); }, defaultValue: (control: ZnPriorityList) => control.defaultValue, // A form reset passes defaultValue straight back in, so this has to accept the // key array as well as the serialised value other callers set. setValue: (control: ZnPriorityList, value: string | string[]) => { if (!value || (Array.isArray(value) && value.length === 0)) return; const keys: unknown = Array.isArray(value) ? value : safeParse(value); if (Array.isArray(keys) && keys.every((item: unknown): item is string => typeof item === 'string')) { control.value = keys as string[]; } }, })"
30669
+ },
30670
+ {
30671
+ "kind": "field",
30672
+ "name": "hasSlotController",
30673
+ "privacy": "private",
30674
+ "readonly": true,
30675
+ "default": "new HasSlotController(this, 'help-text', 'label')"
30676
+ },
30677
+ {
30678
+ "kind": "field",
30679
+ "name": "hiddenInputsContainer",
30683
30680
  "type": {
30684
- "text": "string"
30685
- },
30686
- "default": "''",
30687
- "description": "Expected origin of the iframe; all postMessage traffic is checked against it.",
30688
- "attribute": "frame-origin"
30681
+ "text": "HTMLDivElement"
30682
+ }
30689
30683
  },
30690
30684
  {
30691
30685
  "kind": "field",
30692
- "name": "dataUri",
30686
+ "name": "name",
30693
30687
  "type": {
30694
30688
  "text": "string"
30695
30689
  },
30696
30690
  "default": "''",
30697
- "description": "Endpoint returning the hp-preview:config payload JSON. The console proxy rewrites this attribute to an app-prefixed path for proper fetch resolution.",
30698
- "attribute": "data-uri"
30691
+ "description": "The name prefix for form submission. Each item generates a hidden input named `{name}[{itemValue}]`\nwith the priority number as its value.",
30692
+ "attribute": "name"
30699
30693
  },
30700
30694
  {
30701
30695
  "kind": "field",
30702
- "name": "watch",
30696
+ "name": "value",
30703
30697
  "type": {
30704
- "text": "string"
30698
+ "text": "string[]"
30705
30699
  },
30706
- "default": "'form[data-auto-save]'",
30707
- "description": "Selector (resolved against the component's root node) for the forms to watch.\nDefaults to only forms explicitly opted in via a `data-auto-save` attribute —\nunmarked forms keep normal submit behavior and are never intercepted,\nauto-saved, or used to trigger a preview refresh. Override to widen the scope.",
30708
- "attribute": "watch"
30700
+ "description": "The current ordered list of item keys, reflecting the visual order. This is the source of truth for ordering.\nEach entry should match a `value` attribute on a slotted child element.",
30701
+ "attribute": "value"
30709
30702
  },
30710
30703
  {
30711
30704
  "kind": "field",
30712
- "name": "refreshOn",
30705
+ "name": "_value",
30713
30706
  "type": {
30714
- "text": "string"
30707
+ "text": "string[]"
30715
30708
  },
30716
- "default": "'form'",
30717
- "description": "Selector for forms whose saves are left to the shell but should still\nrefresh the preview. These are never intercepted: the shell submits them\n(so its own response handling — alerts, refreshes — runs as normal) and the\npreview re-fetches its config once the shell reports the save complete.\nMatched by delegation on the shell's bubbled `complete` event rather than\nby attaching to the forms themselves, so a save anywhere on the page\nrefreshes the preview — including forms in a different DOM root, e.g. a\npage-level form saved while the preview sits inside a tab panel's shadow\nroot (a page's Template select lives on one tab, its preview on another).\nSet empty to disable.",
30718
- "attribute": "refresh-on"
30709
+ "privacy": "private",
30710
+ "default": "[]"
30719
30711
  },
30720
30712
  {
30721
30713
  "kind": "field",
30722
- "name": "debounce",
30714
+ "name": "defaultValue",
30723
30715
  "type": {
30724
- "text": "number"
30716
+ "text": "string[]"
30725
30717
  },
30726
- "default": "400",
30727
- "description": "Debounce in ms between a form change and its auto-save.",
30728
- "attribute": "debounce"
30718
+ "default": "[]"
30729
30719
  },
30730
30720
  {
30731
30721
  "kind": "field",
30732
- "name": "zoom",
30722
+ "name": "label",
30733
30723
  "type": {
30734
- "text": "number"
30724
+ "text": "string"
30735
30725
  },
30736
- "default": "1",
30737
- "description": "Zooms the previewed page out (0–1]. The frame always fills the panel;\nzoom shrinks the content browser-style, so 0.4 shows the page at 40%\nsize with correspondingly more of it visible. 1 = natural size.\nIgnored when `fill` is set.",
30738
- "attribute": "zoom"
30726
+ "default": "''",
30727
+ "description": "The component's label. Required for proper accessibility.",
30728
+ "attribute": "label"
30739
30729
  },
30740
30730
  {
30741
30731
  "kind": "field",
30742
- "name": "minHeight",
30732
+ "name": "labelTooltip",
30743
30733
  "type": {
30744
- "text": "number"
30734
+ "text": "string"
30745
30735
  },
30746
- "default": "480",
30747
- "description": "The visible height (in CSS pixels) of the preview panel. Fixed rather\nthan measured, because a measured height would feed back into the\nscaled iframe's layout box and grow unbounded. With `fill` set, this\nbecomes a `min-height` floor instead of the height.",
30748
- "attribute": "min-height"
30736
+ "default": "''",
30737
+ "description": "Text that appears in a tooltip next to the label.",
30738
+ "attribute": "label-tooltip"
30749
30739
  },
30750
30740
  {
30751
30741
  "kind": "field",
30752
- "name": "fill",
30742
+ "name": "helpText",
30753
30743
  "type": {
30754
- "text": "boolean"
30744
+ "text": "string"
30755
30745
  },
30756
- "default": "false",
30757
- "description": "Fills the panel's own column height instead of using a fixed\n`min-height` pixel height — for hosts (like zn-theme-editor) whose\nlayout already stretches the column to match a taller sibling.\n`zoom` is ignored when set: its oversize maths depends on a known\npixel height, which `fill` deliberately doesn't have.",
30758
- "attribute": "fill"
30746
+ "default": "''",
30747
+ "description": "Help text that describes how to use the component.",
30748
+ "attribute": "help-text"
30759
30749
  },
30760
30750
  {
30761
30751
  "kind": "field",
30762
- "name": "device",
30752
+ "name": "form",
30763
30753
  "type": {
30764
- "text": "PreviewFrameDevice"
30754
+ "text": "string"
30765
30755
  },
30766
- "default": "'desktop'",
30767
- "description": "Constrains and centres the preview to a device width: `desktop` (100%),\n`tablet` (768px) or `mobile` (390px). The iframe element itself is\nnarrowed, so the embedded page's own media queries fire.",
30768
- "attribute": "device",
30756
+ "default": "''",
30757
+ "description": "Associates the control with a form by id. The form must be in the same document or shadow root.",
30758
+ "attribute": "form",
30769
30759
  "reflects": true
30770
30760
  },
30771
30761
  {
30772
30762
  "kind": "field",
30773
- "name": "backdrop",
30763
+ "name": "size",
30774
30764
  "type": {
30775
- "text": "'dots' | 'panel'"
30765
+ "text": "'small' | 'medium' | 'large'"
30776
30766
  },
30777
- "default": "'dots'",
30778
- "description": "Backdrop behind the stage: `dots` (default) is the canvas dot grid; `panel` is a plain `rgb(var(--zn-panel))` fill.",
30779
- "attribute": "backdrop",
30767
+ "default": "'medium'",
30768
+ "description": "The size of the list items.",
30769
+ "attribute": "size",
30780
30770
  "reflects": true
30781
30771
  },
30782
30772
  {
30783
30773
  "kind": "field",
30784
- "name": "interactive",
30774
+ "name": "disabled",
30785
30775
  "type": {
30786
30776
  "text": "boolean"
30787
30777
  },
30788
30778
  "default": "false",
30789
- "description": "Lets pointer input through to the embedded page. The preview is inert by\ndefault: clicks never reach the frame, so the previewed page can't be\nnavigated or submitted from inside the preview. Cross-origin content can't\nbe reached from here to cancel its own handlers, so this blocks pointer\ninput entirely — hover goes with it. Scrolling doesn't: an overflowing\npage is scrolled by the panel rather than by the frame (see _contentHeight).\n\nSet, the frame becomes a real viewport instead: it stays the panel's own\nheight and the embed scrolls itself, so there is one scrollbar rather than\na panel scrolling an oversized frame, and the embed's viewport-relative\nlayout (`100vh`, `position: fixed`, sticky headers) sizes to what's on\nscreen. _contentHeight is ignored while this is set.",
30790
- "attribute": "interactive",
30779
+ "description": "Whether the priority list is disabled.",
30780
+ "attribute": "disabled",
30791
30781
  "reflects": true
30792
30782
  },
30793
30783
  {
30794
30784
  "kind": "field",
30795
- "name": "frame",
30796
- "type": {
30797
- "text": "HTMLIFrameElement"
30798
- }
30799
- },
30800
- {
30801
- "kind": "field",
30802
- "name": "error",
30785
+ "name": "required",
30803
30786
  "type": {
30804
- "text": "string"
30787
+ "text": "boolean"
30805
30788
  },
30806
- "privacy": "private",
30807
- "default": "''"
30789
+ "default": "false",
30790
+ "description": "Ensures the form control has a value before allowing submission.",
30791
+ "attribute": "required",
30792
+ "reflects": true
30808
30793
  },
30809
30794
  {
30810
30795
  "kind": "field",
30811
- "name": "_contentHeight",
30796
+ "name": "priorityStart",
30812
30797
  "type": {
30813
30798
  "text": "number"
30814
30799
  },
30815
- "privacy": "private",
30816
- "default": "0",
30817
- "description": "Height of the embedded page's content, when it's known: reported by the\nembed (`height` on hp-preview:rendered, or an hp-preview:height message) or\nmeasured directly for a same-origin embed. The frame is laid out at this\nheight rather than the panel's, so the page never scrolls inside the frame\n— the panel scrolls instead, which is what makes an overflowing preview\nreachable while pointer input to the frame is blocked. 0 = unknown, and the\nframe falls back to filling the panel. Kept up to date either way, but only\nlaid out when the frame is inert: an `interactive` frame scrolls itself."
30800
+ "default": "1",
30801
+ "description": "The starting priority number. Defaults to 1.",
30802
+ "attribute": "priority-start"
30818
30803
  },
30819
30804
  {
30820
30805
  "kind": "field",
30821
- "name": "_generation",
30806
+ "name": "formAction",
30822
30807
  "type": {
30823
- "text": "number"
30808
+ "text": "string"
30824
30809
  },
30825
- "privacy": "private",
30826
- "default": "0"
30810
+ "description": "When set, the associated form will be submitted with the given action URL whenever items are reordered.\nIf set to an empty string, the form will be submitted using its existing action.",
30811
+ "attribute": "formaction"
30827
30812
  },
30828
30813
  {
30829
30814
  "kind": "field",
30830
- "name": "_theme",
30815
+ "name": "order",
30831
30816
  "type": {
30832
- "text": "Record<string, unknown> | undefined"
30817
+ "text": "string"
30833
30818
  },
30834
- "privacy": "private"
30819
+ "default": "''",
30820
+ "description": "A comma-separated list of item keys defining the initial display order.\nKeys must match the `value` attributes on slotted children.\nAny slotted items not listed are appended at the end in DOM order.",
30821
+ "attribute": "order"
30835
30822
  },
30836
30823
  {
30837
30824
  "kind": "field",
30838
- "name": "_contentObserver",
30825
+ "name": "draggedKey",
30839
30826
  "type": {
30840
- "text": "ResizeObserver | undefined"
30827
+ "text": "string | null"
30841
30828
  },
30842
- "privacy": "private"
30843
- },
30844
- {
30845
- "kind": "field",
30846
- "name": "_watchedForms",
30847
30829
  "privacy": "private",
30848
- "readonly": true,
30849
- "default": "new Set<HTMLFormElement>()"
30830
+ "default": "null"
30850
30831
  },
30851
30832
  {
30852
30833
  "kind": "field",
30853
- "name": "_debounceTimers",
30834
+ "name": "isDragging",
30835
+ "type": {
30836
+ "text": "boolean"
30837
+ },
30854
30838
  "privacy": "private",
30855
- "readonly": true,
30856
- "default": "new Map<HTMLFormElement, number>()"
30839
+ "default": "false"
30857
30840
  },
30858
30841
  {
30859
30842
  "kind": "field",
30860
- "name": "_shellSaveRoots",
30843
+ "name": "dragOverKey",
30861
30844
  "type": {
30862
- "text": "EventTarget[]"
30845
+ "text": "string | null"
30863
30846
  },
30864
30847
  "privacy": "private",
30865
- "default": "[]"
30848
+ "default": "null"
30866
30849
  },
30867
30850
  {
30868
30851
  "kind": "field",
30869
- "name": "_lastShellSave",
30852
+ "name": "validity",
30870
30853
  "type": {
30871
- "text": "Event | undefined"
30854
+ "text": "ValidityState"
30872
30855
  },
30873
- "privacy": "private"
30856
+ "description": "Gets the validity state object.",
30857
+ "readonly": true
30874
30858
  },
30875
30859
  {
30876
30860
  "kind": "field",
30877
- "name": "_formObserver",
30878
- "privacy": "private",
30879
- "readonly": true,
30880
- "default": "new MutationController(this, { target: null, config: {subtree: true, childList: true}, callback: () => this._attachForms(), })"
30861
+ "name": "validationMessage",
30862
+ "type": {
30863
+ "text": "string"
30864
+ },
30865
+ "description": "Gets the validation message.",
30866
+ "readonly": true
30881
30867
  },
30882
30868
  {
30883
- "kind": "field",
30884
- "name": "_onMessage",
30869
+ "kind": "method",
30870
+ "name": "_initializeOrderFromSlot",
30885
30871
  "privacy": "private",
30886
- "readonly": true
30872
+ "description": "Initialize item order from slotted children if no explicit value was provided.\nIf an `order` attribute is set, use it to define the initial order,\nappending any slotted items not listed in the order at the end."
30887
30873
  },
30888
30874
  {
30889
30875
  "kind": "method",
30890
- "name": "_applyContentHeight",
30876
+ "name": "_getSlottedItems",
30891
30877
  "privacy": "private",
30892
- "parameters": [
30893
- {
30894
- "name": "height",
30895
- "type": {
30896
- "text": "unknown"
30897
- }
30878
+ "return": {
30879
+ "type": {
30880
+ "text": "HTMLElement[]"
30898
30881
  }
30899
- ]
30882
+ },
30883
+ "description": "Gets all direct children with a `value` attribute (excluding those in reserved slots)."
30900
30884
  },
30901
30885
  {
30902
30886
  "kind": "method",
30903
- "name": "_resetContentHeight",
30904
- "privacy": "private"
30887
+ "name": "_assignSlotNames",
30888
+ "privacy": "private",
30889
+ "description": "Assigns `slot` attributes to light DOM children based on their `value` attribute,\nso they project into the correct named slot in the shadow DOM."
30905
30890
  },
30906
30891
  {
30907
- "kind": "field",
30908
- "name": "_onFrameLoad",
30909
- "privacy": "private",
30910
- "readonly": true
30892
+ "kind": "method",
30893
+ "name": "getPriorityMap",
30894
+ "return": {
30895
+ "type": {
30896
+ "text": "PriorityItem[]"
30897
+ }
30898
+ },
30899
+ "description": "Returns the priority map: an array of { key, priority } objects."
30911
30900
  },
30912
30901
  {
30913
30902
  "kind": "method",
30914
- "name": "refresh",
30915
- "description": "Re-fetches the payload and pushes a fresh config to the preview."
30903
+ "name": "_syncHiddenInputs",
30904
+ "privacy": "private",
30905
+ "description": "Syncs hidden inputs so form data includes priority values."
30916
30906
  },
30917
30907
  {
30918
30908
  "kind": "method",
30919
- "name": "setTheme",
30909
+ "name": "_moveItem",
30910
+ "privacy": "private",
30920
30911
  "parameters": [
30921
30912
  {
30922
- "name": "theme",
30913
+ "name": "fromIndex",
30923
30914
  "type": {
30924
- "text": "Record<string, unknown>"
30915
+ "text": "number"
30916
+ }
30917
+ },
30918
+ {
30919
+ "name": "toIndex",
30920
+ "type": {
30921
+ "text": "number"
30925
30922
  }
30926
30923
  }
30927
30924
  ],
30928
- "description": "Pushes a theme payload into the preview. The payload is retained and\nre-posted after every ready handshake, so a frame reload doesn't drop an\nin-progress theme."
30925
+ "description": "Moves an item from one index to another."
30929
30926
  },
30930
30927
  {
30931
30928
  "kind": "method",
30932
- "name": "_postTheme",
30933
- "privacy": "private"
30929
+ "name": "_submitForm",
30930
+ "privacy": "private",
30931
+ "description": "Submits the associated form if a `formaction` attribute is set."
30934
30932
  },
30935
30933
  {
30936
30934
  "kind": "method",
30937
- "name": "_sendConfig",
30938
- "privacy": "private"
30935
+ "name": "_handleDragStart",
30936
+ "privacy": "private",
30937
+ "parameters": [
30938
+ {
30939
+ "name": "event",
30940
+ "type": {
30941
+ "text": "DragEvent"
30942
+ }
30943
+ },
30944
+ {
30945
+ "name": "key",
30946
+ "type": {
30947
+ "text": "string"
30948
+ }
30949
+ }
30950
+ ]
30939
30951
  },
30940
30952
  {
30941
30953
  "kind": "method",
30942
- "name": "_attachForms",
30954
+ "name": "_handleDragEnd",
30943
30955
  "privacy": "private"
30944
30956
  },
30945
- {
30946
- "kind": "field",
30947
- "name": "_onShellSave",
30948
- "privacy": "private",
30949
- "readonly": true
30950
- },
30951
30957
  {
30952
30958
  "kind": "method",
30953
- "name": "_detachForm",
30959
+ "name": "_handleDragOver",
30954
30960
  "privacy": "private",
30955
30961
  "parameters": [
30956
30962
  {
30957
- "name": "form",
30963
+ "name": "event",
30958
30964
  "type": {
30959
- "text": "HTMLFormElement"
30965
+ "text": "DragEvent"
30966
+ }
30967
+ },
30968
+ {
30969
+ "name": "key",
30970
+ "type": {
30971
+ "text": "string"
30960
30972
  }
30961
30973
  }
30962
30974
  ]
30963
30975
  },
30964
30976
  {
30965
- "kind": "field",
30966
- "name": "_onChange",
30967
- "privacy": "private",
30968
- "readonly": true
30969
- },
30970
- {
30971
- "kind": "field",
30972
- "name": "_onSubmit",
30977
+ "kind": "method",
30978
+ "name": "_handleDragLeave",
30973
30979
  "privacy": "private",
30974
- "readonly": true
30980
+ "parameters": [
30981
+ {
30982
+ "name": "event",
30983
+ "type": {
30984
+ "text": "DragEvent"
30985
+ }
30986
+ },
30987
+ {
30988
+ "name": "key",
30989
+ "type": {
30990
+ "text": "string"
30991
+ }
30992
+ }
30993
+ ]
30975
30994
  },
30976
30995
  {
30977
30996
  "kind": "method",
30978
- "name": "_save",
30997
+ "name": "_handleDrop",
30979
30998
  "privacy": "private",
30980
30999
  "parameters": [
30981
31000
  {
30982
- "name": "form",
31001
+ "name": "event",
30983
31002
  "type": {
30984
- "text": "HTMLFormElement"
31003
+ "text": "DragEvent"
30985
31004
  }
30986
31005
  }
30987
31006
  ]
30988
31007
  },
30989
31008
  {
30990
31009
  "kind": "method",
30991
- "name": "_fail",
31010
+ "name": "_handleKeyDown",
30992
31011
  "privacy": "private",
30993
31012
  "parameters": [
30994
31013
  {
30995
- "name": "message",
31014
+ "name": "event",
31015
+ "type": {
31016
+ "text": "KeyboardEvent"
31017
+ }
31018
+ },
31019
+ {
31020
+ "name": "key",
30996
31021
  "type": {
30997
31022
  "text": "string"
30998
31023
  }
30999
31024
  }
31000
31025
  ]
31026
+ },
31027
+ {
31028
+ "kind": "method",
31029
+ "name": "_handleSlotChange",
31030
+ "privacy": "private"
31031
+ },
31032
+ {
31033
+ "kind": "method",
31034
+ "name": "checkValidity",
31035
+ "return": {
31036
+ "type": {
31037
+ "text": "boolean"
31038
+ }
31039
+ },
31040
+ "description": "Checks for validity but does not show a validation message."
31041
+ },
31042
+ {
31043
+ "kind": "method",
31044
+ "name": "getForm",
31045
+ "return": {
31046
+ "type": {
31047
+ "text": "HTMLFormElement | null"
31048
+ }
31049
+ },
31050
+ "description": "Gets the associated form, if one exists."
31051
+ },
31052
+ {
31053
+ "kind": "method",
31054
+ "name": "reportValidity",
31055
+ "return": {
31056
+ "type": {
31057
+ "text": "boolean"
31058
+ }
31059
+ },
31060
+ "description": "Checks for validity and shows the browser's validation message if the control is invalid."
31061
+ },
31062
+ {
31063
+ "kind": "method",
31064
+ "name": "setCustomValidity",
31065
+ "parameters": [
31066
+ {
31067
+ "name": "_message",
31068
+ "default": "''"
31069
+ }
31070
+ ],
31071
+ "description": "Sets a custom validation message. Pass an empty string to restore validity."
31001
31072
  }
31002
31073
  ],
31003
31074
  "events": [
31004
31075
  {
31005
- "description": "Emitted when the preview reports a render error or a save fails.",
31006
- "name": "zn-error"
31076
+ "description": "Emitted when the order of items changes.",
31077
+ "name": "zn-change"
31078
+ },
31079
+ {
31080
+ "description": "Emitted when items are reordered. Call `getPriorityMap()` on the component to get the updated `{ key: string, priority: number }[]` array.",
31081
+ "name": "zn-reorder"
31007
31082
  }
31008
31083
  ],
31009
31084
  "attributes": [
31010
31085
  {
31011
- "name": "src",
31086
+ "name": "name",
31012
31087
  "type": {
31013
31088
  "text": "string"
31014
31089
  },
31015
31090
  "default": "''",
31016
- "description": "URL of the preview shell page (tokened embed URL).",
31017
- "fieldName": "src"
31091
+ "description": "The name prefix for form submission. Each item generates a hidden input named `{name}[{itemValue}]`\nwith the priority number as its value.",
31092
+ "fieldName": "name"
31018
31093
  },
31019
31094
  {
31020
- "name": "frame-origin",
31095
+ "name": "value",
31021
31096
  "type": {
31022
- "text": "string"
31097
+ "text": "string[]"
31023
31098
  },
31024
- "default": "''",
31025
- "description": "Expected origin of the iframe; all postMessage traffic is checked against it.",
31026
- "fieldName": "frameOrigin"
31099
+ "description": "The current ordered list of item keys, reflecting the visual order. This is the source of truth for ordering.\nEach entry should match a `value` attribute on a slotted child element.",
31100
+ "fieldName": "value"
31027
31101
  },
31028
31102
  {
31029
- "name": "data-uri",
31103
+ "name": "label",
31030
31104
  "type": {
31031
31105
  "text": "string"
31032
31106
  },
31033
31107
  "default": "''",
31034
- "description": "Endpoint returning the hp-preview:config payload JSON. The console proxy rewrites this attribute to an app-prefixed path for proper fetch resolution.",
31035
- "fieldName": "dataUri"
31108
+ "description": "The component's label. Required for proper accessibility.",
31109
+ "fieldName": "label"
31036
31110
  },
31037
31111
  {
31038
- "name": "watch",
31112
+ "name": "label-tooltip",
31039
31113
  "type": {
31040
31114
  "text": "string"
31041
31115
  },
31042
- "default": "'form[data-auto-save]'",
31043
- "description": "Selector (resolved against the component's root node) for the forms to watch.\nDefaults to only forms explicitly opted in via a `data-auto-save` attribute —\nunmarked forms keep normal submit behavior and are never intercepted,\nauto-saved, or used to trigger a preview refresh. Override to widen the scope.",
31044
- "fieldName": "watch"
31116
+ "default": "''",
31117
+ "description": "Text that appears in a tooltip next to the label.",
31118
+ "fieldName": "labelTooltip"
31045
31119
  },
31046
31120
  {
31047
- "name": "refresh-on",
31121
+ "name": "help-text",
31048
31122
  "type": {
31049
31123
  "text": "string"
31050
31124
  },
31051
- "default": "'form'",
31052
- "description": "Selector for forms whose saves are left to the shell but should still\nrefresh the preview. These are never intercepted: the shell submits them\n(so its own response handling — alerts, refreshes — runs as normal) and the\npreview re-fetches its config once the shell reports the save complete.\nMatched by delegation on the shell's bubbled `complete` event rather than\nby attaching to the forms themselves, so a save anywhere on the page\nrefreshes the preview — including forms in a different DOM root, e.g. a\npage-level form saved while the preview sits inside a tab panel's shadow\nroot (a page's Template select lives on one tab, its preview on another).\nSet empty to disable.",
31053
- "fieldName": "refreshOn"
31125
+ "default": "''",
31126
+ "description": "Help text that describes how to use the component.",
31127
+ "fieldName": "helpText"
31054
31128
  },
31055
31129
  {
31056
- "name": "debounce",
31130
+ "name": "form",
31057
31131
  "type": {
31058
- "text": "number"
31132
+ "text": "string"
31059
31133
  },
31060
- "default": "400",
31061
- "description": "Debounce in ms between a form change and its auto-save.",
31062
- "fieldName": "debounce"
31134
+ "default": "''",
31135
+ "description": "Associates the control with a form by id. The form must be in the same document or shadow root.",
31136
+ "fieldName": "form"
31063
31137
  },
31064
31138
  {
31065
- "name": "zoom",
31139
+ "name": "size",
31066
31140
  "type": {
31067
- "text": "number"
31141
+ "text": "'small' | 'medium' | 'large'"
31068
31142
  },
31069
- "default": "1",
31070
- "description": "Zooms the previewed page out (0–1]. The frame always fills the panel;\nzoom shrinks the content browser-style, so 0.4 shows the page at 40%\nsize with correspondingly more of it visible. 1 = natural size.\nIgnored when `fill` is set.",
31071
- "fieldName": "zoom"
31143
+ "default": "'medium'",
31144
+ "description": "The size of the list items.",
31145
+ "fieldName": "size"
31072
31146
  },
31073
31147
  {
31074
- "name": "min-height",
31148
+ "name": "disabled",
31075
31149
  "type": {
31076
- "text": "number"
31150
+ "text": "boolean"
31077
31151
  },
31078
- "default": "480",
31079
- "description": "The visible height (in CSS pixels) of the preview panel. Fixed rather\nthan measured, because a measured height would feed back into the\nscaled iframe's layout box and grow unbounded. With `fill` set, this\nbecomes a `min-height` floor instead of the height.",
31080
- "fieldName": "minHeight"
31152
+ "default": "false",
31153
+ "description": "Whether the priority list is disabled.",
31154
+ "fieldName": "disabled"
31081
31155
  },
31082
31156
  {
31083
- "name": "fill",
31157
+ "name": "required",
31084
31158
  "type": {
31085
31159
  "text": "boolean"
31086
31160
  },
31087
31161
  "default": "false",
31088
- "description": "Fills the panel's own column height instead of using a fixed\n`min-height` pixel height — for hosts (like zn-theme-editor) whose\nlayout already stretches the column to match a taller sibling.\n`zoom` is ignored when set: its oversize maths depends on a known\npixel height, which `fill` deliberately doesn't have.",
31089
- "fieldName": "fill"
31162
+ "description": "Ensures the form control has a value before allowing submission.",
31163
+ "fieldName": "required"
31090
31164
  },
31091
31165
  {
31092
- "name": "device",
31166
+ "name": "priority-start",
31093
31167
  "type": {
31094
- "text": "PreviewFrameDevice"
31168
+ "text": "number"
31095
31169
  },
31096
- "default": "'desktop'",
31097
- "description": "Constrains and centres the preview to a device width: `desktop` (100%),\n`tablet` (768px) or `mobile` (390px). The iframe element itself is\nnarrowed, so the embedded page's own media queries fire.",
31098
- "fieldName": "device"
31170
+ "default": "1",
31171
+ "description": "The starting priority number. Defaults to 1.",
31172
+ "fieldName": "priorityStart"
31099
31173
  },
31100
31174
  {
31101
- "name": "backdrop",
31175
+ "name": "formaction",
31102
31176
  "type": {
31103
- "text": "'dots' | 'panel'"
31177
+ "text": "string"
31104
31178
  },
31105
- "default": "'dots'",
31106
- "description": "Backdrop behind the stage: `dots` (default) is the canvas dot grid; `panel` is a plain `rgb(var(--zn-panel))` fill.",
31107
- "fieldName": "backdrop"
31179
+ "description": "When set, the associated form will be submitted with the given action URL whenever items are reordered.\nIf set to an empty string, the form will be submitted using its existing action.",
31180
+ "fieldName": "formAction"
31108
31181
  },
31109
31182
  {
31110
- "name": "interactive",
31183
+ "name": "order",
31111
31184
  "type": {
31112
- "text": "boolean"
31185
+ "text": "string"
31113
31186
  },
31114
- "default": "false",
31115
- "description": "Lets pointer input through to the embedded page. The preview is inert by\ndefault: clicks never reach the frame, so the previewed page can't be\nnavigated or submitted from inside the preview. Cross-origin content can't\nbe reached from here to cancel its own handlers, so this blocks pointer\ninput entirely — hover goes with it. Scrolling doesn't: an overflowing\npage is scrolled by the panel rather than by the frame (see _contentHeight).\n\nSet, the frame becomes a real viewport instead: it stays the panel's own\nheight and the embed scrolls itself, so there is one scrollbar rather than\na panel scrolling an oversized frame, and the embed's viewport-relative\nlayout (`100vh`, `position: fixed`, sticky headers) sizes to what's on\nscreen. _contentHeight is ignored while this is set.",
31116
- "fieldName": "interactive"
31187
+ "default": "''",
31188
+ "description": "A comma-separated list of item keys defining the initial display order.\nKeys must match the `value` attributes on slotted children.\nAny slotted items not listed are appended at the end in DOM order.",
31189
+ "fieldName": "order"
31117
31190
  }
31118
31191
  ],
31119
31192
  "superclass": {
31120
31193
  "name": "ZincElement",
31121
31194
  "module": "/src/internal/zinc-element"
31122
31195
  },
31123
- "summary": "Embeds a live preview iframe and drives the hp-preview postMessage\nprotocol: answers the frame's ready handshake with a config payload fetched\nfrom data-uri, auto-saves watched forms on change, refreshes the preview\nafter each save (its own, or a shell-driven save of a `refresh-on` form),\naccepts a theme payload via setTheme() that is retained and replayed\nafter every ready handshake, and grows the frame to a content height the\nembed reports so the panel scrolls an overflowing page.",
31124
- "tagNameWithoutPrefix": "preview-frame",
31125
- "tagName": "zn-preview-frame",
31196
+ "summary": "A reorderable list where each item receives a numerical priority based on its position. Supports drag-and-drop\nand keyboard reordering. Priority values are submitted as form data via hidden inputs.",
31197
+ "tagNameWithoutPrefix": "priority-list",
31198
+ "tagName": "zn-priority-list",
31126
31199
  "customElement": true,
31127
- "jsDoc": "/**\n * @summary Embeds a live preview iframe and drives the hp-preview postMessage\n * protocol: answers the frame's ready handshake with a config payload fetched\n * from data-uri, auto-saves watched forms on change, refreshes the preview\n * after each save (its own, or a shell-driven save of a `refresh-on` form),\n * accepts a theme payload via setTheme() that is retained and replayed\n * after every ready handshake, and grows the frame to a content height the\n * embed reports so the panel scrolls an overflowing page.\n *\n * @documentation https://zinc.style/components/preview-frame\n * @status experimental\n * @since 1.0\n *\n * @event zn-error - Emitted when the preview reports a render error or a save fails.\n *\n * @csspart base - The component's base wrapper.\n * @csspart stage - The device-width wrapper around the iframe.\n * @csspart iframe - The preview iframe.\n * @csspart error - The error overlay.\n *\n * @cssproperty --zn-preview-frame-dot-spacing - Spacing of the backdrop dot grid (`backdrop=\"dots\"`). Defaults to 20px.\n * @cssproperty --zn-preview-frame-dot-opacity - Opacity of the backdrop dots (`backdrop=\"dots\"`). Defaults to 0.08.\n */",
31128
- "documentation": "https://zinc.style/components/preview-frame",
31200
+ "jsDoc": "/**\n * @summary A reorderable list where each item receives a numerical priority based on its position. Supports drag-and-drop\n * and keyboard reordering. Priority values are submitted as form data via hidden inputs.\n *\n * @documentation https://zinc.style/components/priority-list\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-icon\n *\n * @slot - The default slot where list items are placed. Each slotted element must have a `value` attribute that\n * uniquely identifies the item. The component automatically assigns slot names to project each item into the\n * correct position. The item's position in the list determines its priority (top = `priority-start`, incrementing).\n * @slot label - The component's label. Required for proper accessibility. Alternatively, use the `label` attribute.\n * @slot label-tooltip - Used to add text displayed in a tooltip next to the label.\n * @slot help-text - Text that describes how to use the component. Alternatively, use the `help-text` attribute.\n *\n * @event zn-change - Emitted when the order of items changes.\n * @event zn-reorder - Emitted when items are reordered. Call `getPriorityMap()` on the component to get\n * the updated `{ key: string, priority: number }[]` array.\n *\n * @csspart form-control - The form control wrapper.\n * @csspart form-control-label - The label wrapper.\n * @csspart form-control-input - The input area wrapper.\n * @csspart form-control-help-text - The help text wrapper.\n * @csspart list - The list container.\n * @csspart item - An individual list item row.\n * @csspart drag-handle - The drag handle icon.\n * @csspart priority - The priority number badge.\n * @csspart content - The content area of an item.\n *\n * @cssproperty --zn-priority-list-item-gap - The gap between list items. Defaults to `var(--zn-spacing-2x-small)`.\n * @cssproperty --zn-priority-list-item-padding - The padding inside each item. Defaults to `var(--zn-spacing-small) var(--zn-spacing-medium)`.\n * @cssproperty --zn-priority-list-actions-gap - The gap between an item's slotted actions. Defaults to `var(--zn-spacing-x-small)`.\n * @cssproperty --zn-priority-list-handle-color - The color of the drag handle. Defaults to `var(--zn-color-neutral-500)`.\n * @cssproperty --zn-priority-list-priority-color - The color of the priority number. Defaults to `var(--zn-color-neutral-600)`.\n */",
31201
+ "documentation": "https://zinc.style/components/priority-list",
31129
31202
  "status": "experimental",
31130
- "since": "1.0"
31203
+ "since": "1.0",
31204
+ "dependencies": [
31205
+ "zn-icon"
31206
+ ]
31131
31207
  }
31132
31208
  ],
31133
31209
  "exports": [
@@ -31135,825 +31211,683 @@
31135
31211
  "kind": "js",
31136
31212
  "name": "default",
31137
31213
  "declaration": {
31138
- "name": "ZnPreviewFrame",
31139
- "module": "components/preview-frame/preview-frame.js"
31214
+ "name": "ZnPriorityList",
31215
+ "module": "components/priority-list/priority-list.js"
31140
31216
  }
31141
31217
  }
31142
31218
  ]
31143
31219
  },
31144
31220
  {
31145
31221
  "kind": "javascript-module",
31146
- "path": "components/priority-list/priority-list.js",
31222
+ "path": "components/progress-bar/progress-bar.js",
31147
31223
  "declarations": [
31148
31224
  {
31149
31225
  "kind": "class",
31150
31226
  "description": "",
31151
- "name": "ZnPriorityList",
31227
+ "name": "ZnProgressBar",
31152
31228
  "cssProperties": [
31153
31229
  {
31154
- "description": "The gap between list items. Defaults to `var(--zn-spacing-2x-small)`.",
31155
- "name": "--zn-priority-list-item-gap"
31230
+ "description": "The color of the progress bar background track.",
31231
+ "name": "--zn-border-color"
31156
31232
  },
31157
31233
  {
31158
- "description": "The padding inside each item. Defaults to `var(--zn-spacing-small) var(--zn-spacing-medium)`.",
31159
- "name": "--zn-priority-list-item-padding"
31234
+ "description": "The color of the progress bar fill.",
31235
+ "name": "--zn-progress-bar-color"
31160
31236
  },
31161
31237
  {
31162
- "description": "The gap between an item's slotted actions. Defaults to `var(--zn-spacing-x-small)`.",
31163
- "name": "--zn-priority-list-actions-gap"
31238
+ "description": "The color of the caption text.",
31239
+ "name": "--zn-text-heading"
31164
31240
  },
31165
31241
  {
31166
- "description": "The color of the drag handle. Defaults to `var(--zn-color-neutral-500)`.",
31167
- "name": "--zn-priority-list-handle-color"
31242
+ "description": "The color of the progress percentage and description text.",
31243
+ "name": "--zn-text"
31168
31244
  },
31169
31245
  {
31170
- "description": "The color of the priority number. Defaults to `var(--zn-color-neutral-600)`.",
31171
- "name": "--zn-priority-list-priority-color"
31246
+ "description": "The spacing between header/footer and the progress bar.",
31247
+ "name": "--zn-spacing-x-small"
31172
31248
  }
31173
31249
  ],
31174
31250
  "cssParts": [
31175
31251
  {
31176
- "description": "The form control wrapper.",
31177
- "name": "form-control"
31178
- },
31179
- {
31180
- "description": "The label wrapper.",
31181
- "name": "form-control-label"
31182
- },
31183
- {
31184
- "description": "The input area wrapper.",
31185
- "name": "form-control-input"
31186
- },
31187
- {
31188
- "description": "The help text wrapper.",
31189
- "name": "form-control-help-text"
31190
- },
31191
- {
31192
- "description": "The list container.",
31193
- "name": "list"
31252
+ "description": "The header container that contains the caption and progress text.",
31253
+ "name": "header"
31194
31254
  },
31195
31255
  {
31196
- "description": "An individual list item row.",
31197
- "name": "item"
31256
+ "description": "The caption text element.",
31257
+ "name": "caption"
31198
31258
  },
31199
31259
  {
31200
- "description": "The drag handle icon.",
31201
- "name": "drag-handle"
31260
+ "description": "The progress percentage text element.",
31261
+ "name": "progress"
31202
31262
  },
31203
31263
  {
31204
- "description": "The priority number badge.",
31205
- "name": "priority"
31264
+ "description": "The SVG element containing the progress bar.",
31265
+ "name": "bar"
31206
31266
  },
31207
31267
  {
31208
- "description": "The content area of an item.",
31209
- "name": "content"
31210
- }
31211
- ],
31212
- "slots": [
31213
- {
31214
- "description": "The default slot where list items are placed. Each slotted element must have a `value` attribute that uniquely identifies the item. The component automatically assigns slot names to project each item into the correct position. The item's position in the list determines its priority (top = `priority-start`, incrementing).",
31215
- "name": ""
31268
+ "description": "The background track of the progress bar.",
31269
+ "name": "track"
31216
31270
  },
31217
31271
  {
31218
- "description": "The component's label. Required for proper accessibility. Alternatively, use the `label` attribute.",
31219
- "name": "label"
31272
+ "description": "The filled portion of the progress bar indicating progress.",
31273
+ "name": "fill"
31220
31274
  },
31221
31275
  {
31222
- "description": "Used to add text displayed in a tooltip next to the label.",
31223
- "name": "label-tooltip"
31276
+ "description": "The footer container that contains the description.",
31277
+ "name": "footer"
31224
31278
  },
31225
31279
  {
31226
- "description": "Text that describes how to use the component. Alternatively, use the `help-text` attribute.",
31227
- "name": "help-text"
31280
+ "description": "The description text element.",
31281
+ "name": "info"
31228
31282
  }
31229
31283
  ],
31230
31284
  "members": [
31231
31285
  {
31232
31286
  "kind": "field",
31233
- "name": "dependencies",
31287
+ "name": "caption",
31234
31288
  "type": {
31235
- "text": "object"
31289
+ "text": "string | undefined"
31236
31290
  },
31237
- "static": true,
31238
- "default": "{ 'zn-icon': ZnIcon, }"
31291
+ "attribute": "caption",
31292
+ "reflects": true
31239
31293
  },
31240
31294
  {
31241
31295
  "kind": "field",
31242
- "name": "formControlController",
31243
- "privacy": "protected",
31244
- "readonly": true,
31245
- "default": "new FormControlController(this, { value: (control: ZnPriorityList) => { return JSON.stringify(control.getPriorityMap()); }, defaultValue: (control: ZnPriorityList) => control.defaultValue, // A form reset passes defaultValue straight back in, so this has to accept the // key array as well as the serialised value other callers set. setValue: (control: ZnPriorityList, value: string | string[]) => { if (!value || (Array.isArray(value) && value.length === 0)) return; const keys: unknown = Array.isArray(value) ? value : safeParse(value); if (Array.isArray(keys) && keys.every((item: unknown): item is string => typeof item === 'string')) { control.value = keys as string[]; } }, })"
31296
+ "name": "color",
31297
+ "type": {
31298
+ "text": "ProgressBarColor"
31299
+ },
31300
+ "default": "'current'",
31301
+ "attribute": "color",
31302
+ "reflects": true
31246
31303
  },
31247
31304
  {
31248
31305
  "kind": "field",
31249
- "name": "hasSlotController",
31250
- "privacy": "private",
31251
- "readonly": true,
31252
- "default": "new HasSlotController(this, 'help-text', 'label')"
31306
+ "name": "description",
31307
+ "type": {
31308
+ "text": "string | undefined"
31309
+ },
31310
+ "attribute": "description",
31311
+ "reflects": true
31253
31312
  },
31254
31313
  {
31255
31314
  "kind": "field",
31256
- "name": "hiddenInputsContainer",
31315
+ "name": "value",
31257
31316
  "type": {
31258
- "text": "HTMLDivElement"
31259
- }
31317
+ "text": "number | undefined"
31318
+ },
31319
+ "attribute": "value",
31320
+ "reflects": true
31260
31321
  },
31261
31322
  {
31262
31323
  "kind": "field",
31263
- "name": "name",
31324
+ "name": "showProgress",
31264
31325
  "type": {
31265
- "text": "string"
31326
+ "text": "boolean | undefined"
31266
31327
  },
31267
- "default": "''",
31268
- "description": "The name prefix for form submission. Each item generates a hidden input named `{name}[{itemValue}]`\nwith the priority number as its value.",
31269
- "attribute": "name"
31328
+ "attribute": "show-progress",
31329
+ "reflects": true
31330
+ }
31331
+ ],
31332
+ "attributes": [
31333
+ {
31334
+ "name": "caption",
31335
+ "type": {
31336
+ "text": "string | undefined"
31337
+ },
31338
+ "fieldName": "caption"
31270
31339
  },
31271
31340
  {
31272
- "kind": "field",
31273
- "name": "value",
31341
+ "name": "color",
31274
31342
  "type": {
31275
- "text": "string[]"
31343
+ "text": "ProgressBarColor"
31276
31344
  },
31277
- "description": "The current ordered list of item keys, reflecting the visual order. This is the source of truth for ordering.\nEach entry should match a `value` attribute on a slotted child element.",
31278
- "attribute": "value"
31345
+ "default": "'current'",
31346
+ "fieldName": "color"
31279
31347
  },
31280
31348
  {
31281
- "kind": "field",
31282
- "name": "_value",
31349
+ "name": "description",
31283
31350
  "type": {
31284
- "text": "string[]"
31351
+ "text": "string | undefined"
31285
31352
  },
31286
- "privacy": "private",
31287
- "default": "[]"
31353
+ "fieldName": "description"
31288
31354
  },
31289
31355
  {
31290
- "kind": "field",
31291
- "name": "defaultValue",
31356
+ "name": "value",
31292
31357
  "type": {
31293
- "text": "string[]"
31358
+ "text": "number | undefined"
31294
31359
  },
31295
- "default": "[]"
31360
+ "fieldName": "value"
31296
31361
  },
31297
31362
  {
31298
- "kind": "field",
31299
- "name": "label",
31363
+ "name": "show-progress",
31300
31364
  "type": {
31301
- "text": "string"
31365
+ "text": "boolean | undefined"
31302
31366
  },
31303
- "default": "''",
31304
- "description": "The component's label. Required for proper accessibility.",
31305
- "attribute": "label"
31367
+ "fieldName": "showProgress"
31368
+ }
31369
+ ],
31370
+ "superclass": {
31371
+ "name": "ZincElement",
31372
+ "module": "/src/internal/zinc-element"
31373
+ },
31374
+ "summary": "Progress bars provide visual feedback about the completion status of a task or process.",
31375
+ "tagNameWithoutPrefix": "progress-bar",
31376
+ "tagName": "zn-progress-bar",
31377
+ "customElement": true,
31378
+ "jsDoc": "/**\n * @summary Progress bars provide visual feedback about the completion status of a task or process.\n * @documentation https://zinc.style/components/progress-bar\n * @status experimental\n * @since 1.0\n *\n * @csspart header - The header container that contains the caption and progress text.\n * @csspart caption - The caption text element.\n * @csspart progress - The progress percentage text element.\n * @csspart bar - The SVG element containing the progress bar.\n * @csspart track - The background track of the progress bar.\n * @csspart fill - The filled portion of the progress bar indicating progress.\n * @csspart footer - The footer container that contains the description.\n * @csspart info - The description text element.\n *\n * @cssproperty --zn-border-color - The color of the progress bar background track.\n * @cssproperty --zn-progress-bar-color - The color of the progress bar fill.\n * @cssproperty --zn-text-heading - The color of the caption text.\n * @cssproperty --zn-text - The color of the progress percentage and description text.\n * @cssproperty --zn-spacing-x-small - The spacing between header/footer and the progress bar.\n */",
31379
+ "documentation": "https://zinc.style/components/progress-bar",
31380
+ "status": "experimental",
31381
+ "since": "1.0"
31382
+ }
31383
+ ],
31384
+ "exports": [
31385
+ {
31386
+ "kind": "js",
31387
+ "name": "default",
31388
+ "declaration": {
31389
+ "name": "ZnProgressBar",
31390
+ "module": "components/progress-bar/progress-bar.js"
31391
+ }
31392
+ }
31393
+ ]
31394
+ },
31395
+ {
31396
+ "kind": "javascript-module",
31397
+ "path": "components/preview-frame/preview-frame.js",
31398
+ "declarations": [
31399
+ {
31400
+ "kind": "class",
31401
+ "description": "",
31402
+ "name": "ZnPreviewFrame",
31403
+ "cssProperties": [
31404
+ {
31405
+ "description": "Spacing of the backdrop dot grid (`backdrop=\"dots\"`). Defaults to 20px.",
31406
+ "name": "--zn-preview-frame-dot-spacing"
31407
+ },
31408
+ {
31409
+ "description": "Opacity of the backdrop dots (`backdrop=\"dots\"`). Defaults to 0.08.",
31410
+ "name": "--zn-preview-frame-dot-opacity"
31411
+ }
31412
+ ],
31413
+ "cssParts": [
31414
+ {
31415
+ "description": "The component's base wrapper.",
31416
+ "name": "base"
31306
31417
  },
31418
+ {
31419
+ "description": "The device-width wrapper around the iframe.",
31420
+ "name": "stage"
31421
+ },
31422
+ {
31423
+ "description": "The preview iframe.",
31424
+ "name": "iframe"
31425
+ },
31426
+ {
31427
+ "description": "The error overlay.",
31428
+ "name": "error"
31429
+ }
31430
+ ],
31431
+ "members": [
31307
31432
  {
31308
31433
  "kind": "field",
31309
- "name": "labelTooltip",
31434
+ "name": "src",
31310
31435
  "type": {
31311
31436
  "text": "string"
31312
31437
  },
31313
31438
  "default": "''",
31314
- "description": "Text that appears in a tooltip next to the label.",
31315
- "attribute": "label-tooltip"
31439
+ "description": "URL of the preview shell page (tokened embed URL).",
31440
+ "attribute": "src"
31316
31441
  },
31317
31442
  {
31318
31443
  "kind": "field",
31319
- "name": "helpText",
31444
+ "name": "frameOrigin",
31320
31445
  "type": {
31321
31446
  "text": "string"
31322
31447
  },
31323
31448
  "default": "''",
31324
- "description": "Help text that describes how to use the component.",
31325
- "attribute": "help-text"
31449
+ "description": "Expected origin of the iframe; all postMessage traffic is checked against it.",
31450
+ "attribute": "frame-origin"
31326
31451
  },
31327
31452
  {
31328
31453
  "kind": "field",
31329
- "name": "form",
31454
+ "name": "dataUri",
31330
31455
  "type": {
31331
31456
  "text": "string"
31332
31457
  },
31333
31458
  "default": "''",
31334
- "description": "Associates the control with a form by id. The form must be in the same document or shadow root.",
31335
- "attribute": "form",
31336
- "reflects": true
31459
+ "description": "Endpoint returning the hp-preview:config payload JSON. The console proxy rewrites this attribute to an app-prefixed path for proper fetch resolution.",
31460
+ "attribute": "data-uri"
31337
31461
  },
31338
31462
  {
31339
31463
  "kind": "field",
31340
- "name": "size",
31464
+ "name": "watch",
31341
31465
  "type": {
31342
- "text": "'small' | 'medium' | 'large'"
31466
+ "text": "string"
31343
31467
  },
31344
- "default": "'medium'",
31345
- "description": "The size of the list items.",
31346
- "attribute": "size",
31347
- "reflects": true
31468
+ "default": "'form[data-auto-save]'",
31469
+ "description": "Selector (resolved against the component's root node) for the forms to watch.\nDefaults to only forms explicitly opted in via a `data-auto-save` attribute —\nunmarked forms keep normal submit behavior and are never intercepted,\nauto-saved, or used to trigger a preview refresh. Override to widen the scope.",
31470
+ "attribute": "watch"
31348
31471
  },
31349
31472
  {
31350
31473
  "kind": "field",
31351
- "name": "disabled",
31474
+ "name": "refreshOn",
31352
31475
  "type": {
31353
- "text": "boolean"
31476
+ "text": "string"
31354
31477
  },
31355
- "default": "false",
31356
- "description": "Whether the priority list is disabled.",
31357
- "attribute": "disabled",
31358
- "reflects": true
31478
+ "default": "'form'",
31479
+ "description": "Selector for forms whose saves are left to the shell but should still\nrefresh the preview. These are never intercepted: the shell submits them\n(so its own response handling — alerts, refreshes — runs as normal) and the\npreview re-fetches its config once the shell reports the save complete.\nMatched by delegation on the shell's bubbled `complete` event rather than\nby attaching to the forms themselves, so a save anywhere on the page\nrefreshes the preview — including forms in a different DOM root, e.g. a\npage-level form saved while the preview sits inside a tab panel's shadow\nroot (a page's Template select lives on one tab, its preview on another).\nSet empty to disable.",
31480
+ "attribute": "refresh-on"
31359
31481
  },
31360
31482
  {
31361
31483
  "kind": "field",
31362
- "name": "required",
31484
+ "name": "debounce",
31363
31485
  "type": {
31364
- "text": "boolean"
31486
+ "text": "number"
31365
31487
  },
31366
- "default": "false",
31367
- "description": "Ensures the form control has a value before allowing submission.",
31368
- "attribute": "required",
31369
- "reflects": true
31488
+ "default": "400",
31489
+ "description": "Debounce in ms between a form change and its auto-save.",
31490
+ "attribute": "debounce"
31370
31491
  },
31371
31492
  {
31372
31493
  "kind": "field",
31373
- "name": "priorityStart",
31494
+ "name": "zoom",
31374
31495
  "type": {
31375
31496
  "text": "number"
31376
31497
  },
31377
31498
  "default": "1",
31378
- "description": "The starting priority number. Defaults to 1.",
31379
- "attribute": "priority-start"
31499
+ "description": "Zooms the previewed page out (0–1]. The frame always fills the panel;\nzoom shrinks the content browser-style, so 0.4 shows the page at 40%\nsize with correspondingly more of it visible. 1 = natural size.\nIgnored when `fill` is set.",
31500
+ "attribute": "zoom"
31380
31501
  },
31381
31502
  {
31382
31503
  "kind": "field",
31383
- "name": "formAction",
31504
+ "name": "minHeight",
31384
31505
  "type": {
31385
- "text": "string"
31506
+ "text": "number"
31386
31507
  },
31387
- "description": "When set, the associated form will be submitted with the given action URL whenever items are reordered.\nIf set to an empty string, the form will be submitted using its existing action.",
31388
- "attribute": "formaction"
31508
+ "default": "480",
31509
+ "description": "The visible height (in CSS pixels) of the preview panel. Fixed rather\nthan measured, because a measured height would feed back into the\nscaled iframe's layout box and grow unbounded. With `fill` set, this\nbecomes a `min-height` floor instead of the height.",
31510
+ "attribute": "min-height"
31389
31511
  },
31390
31512
  {
31391
31513
  "kind": "field",
31392
- "name": "order",
31514
+ "name": "fill",
31393
31515
  "type": {
31394
- "text": "string"
31516
+ "text": "boolean"
31395
31517
  },
31396
- "default": "''",
31397
- "description": "A comma-separated list of item keys defining the initial display order.\nKeys must match the `value` attributes on slotted children.\nAny slotted items not listed are appended at the end in DOM order.",
31398
- "attribute": "order"
31518
+ "default": "false",
31519
+ "description": "Fills the panel's own column height instead of using a fixed\n`min-height` pixel height for hosts (like zn-theme-editor) whose\nlayout already stretches the column to match a taller sibling.\n`zoom` is ignored when set: its oversize maths depends on a known\npixel height, which `fill` deliberately doesn't have.",
31520
+ "attribute": "fill"
31399
31521
  },
31400
31522
  {
31401
31523
  "kind": "field",
31402
- "name": "draggedKey",
31524
+ "name": "device",
31403
31525
  "type": {
31404
- "text": "string | null"
31526
+ "text": "PreviewFrameDevice"
31405
31527
  },
31406
- "privacy": "private",
31407
- "default": "null"
31528
+ "default": "'desktop'",
31529
+ "description": "Constrains and centres the preview to a device width: `desktop` (100%),\n`tablet` (768px) or `mobile` (390px). The iframe element itself is\nnarrowed, so the embedded page's own media queries fire.",
31530
+ "attribute": "device",
31531
+ "reflects": true
31408
31532
  },
31409
31533
  {
31410
31534
  "kind": "field",
31411
- "name": "isDragging",
31535
+ "name": "backdrop",
31412
31536
  "type": {
31413
- "text": "boolean"
31537
+ "text": "'dots' | 'panel'"
31414
31538
  },
31415
- "privacy": "private",
31416
- "default": "false"
31539
+ "default": "'dots'",
31540
+ "description": "Backdrop behind the stage: `dots` (default) is the canvas dot grid; `panel` is a plain `rgb(var(--zn-panel))` fill.",
31541
+ "attribute": "backdrop",
31542
+ "reflects": true
31417
31543
  },
31418
31544
  {
31419
31545
  "kind": "field",
31420
- "name": "dragOverKey",
31546
+ "name": "interactive",
31421
31547
  "type": {
31422
- "text": "string | null"
31548
+ "text": "boolean"
31423
31549
  },
31424
- "privacy": "private",
31425
- "default": "null"
31550
+ "default": "false",
31551
+ "description": "Lets pointer input through to the embedded page. The preview is inert by\ndefault: clicks never reach the frame, so the previewed page can't be\nnavigated or submitted from inside the preview. Cross-origin content can't\nbe reached from here to cancel its own handlers, so this blocks pointer\ninput entirely — hover goes with it. Scrolling doesn't: an overflowing\npage is scrolled by the panel rather than by the frame (see _contentHeight).\n\nSet, the frame becomes a real viewport instead: it stays the panel's own\nheight and the embed scrolls itself, so there is one scrollbar rather than\na panel scrolling an oversized frame, and the embed's viewport-relative\nlayout (`100vh`, `position: fixed`, sticky headers) sizes to what's on\nscreen. _contentHeight is ignored while this is set.",
31552
+ "attribute": "interactive",
31553
+ "reflects": true
31426
31554
  },
31427
31555
  {
31428
31556
  "kind": "field",
31429
- "name": "validity",
31557
+ "name": "frame",
31430
31558
  "type": {
31431
- "text": "ValidityState"
31432
- },
31433
- "description": "Gets the validity state object.",
31434
- "readonly": true
31559
+ "text": "HTMLIFrameElement"
31560
+ }
31435
31561
  },
31436
31562
  {
31437
31563
  "kind": "field",
31438
- "name": "validationMessage",
31564
+ "name": "error",
31439
31565
  "type": {
31440
31566
  "text": "string"
31441
31567
  },
31442
- "description": "Gets the validation message.",
31443
- "readonly": true
31444
- },
31445
- {
31446
- "kind": "method",
31447
- "name": "_initializeOrderFromSlot",
31448
- "privacy": "private",
31449
- "description": "Initialize item order from slotted children if no explicit value was provided.\nIf an `order` attribute is set, use it to define the initial order,\nappending any slotted items not listed in the order at the end."
31450
- },
31451
- {
31452
- "kind": "method",
31453
- "name": "_getSlottedItems",
31454
- "privacy": "private",
31455
- "return": {
31456
- "type": {
31457
- "text": "HTMLElement[]"
31458
- }
31459
- },
31460
- "description": "Gets all direct children with a `value` attribute (excluding those in reserved slots)."
31461
- },
31462
- {
31463
- "kind": "method",
31464
- "name": "_assignSlotNames",
31465
- "privacy": "private",
31466
- "description": "Assigns `slot` attributes to light DOM children based on their `value` attribute,\nso they project into the correct named slot in the shadow DOM."
31467
- },
31468
- {
31469
- "kind": "method",
31470
- "name": "getPriorityMap",
31471
- "return": {
31472
- "type": {
31473
- "text": "PriorityItem[]"
31474
- }
31475
- },
31476
- "description": "Returns the priority map: an array of { key, priority } objects."
31477
- },
31478
- {
31479
- "kind": "method",
31480
- "name": "_syncHiddenInputs",
31481
- "privacy": "private",
31482
- "description": "Syncs hidden inputs so form data includes priority values."
31483
- },
31484
- {
31485
- "kind": "method",
31486
- "name": "_moveItem",
31487
- "privacy": "private",
31488
- "parameters": [
31489
- {
31490
- "name": "fromIndex",
31491
- "type": {
31492
- "text": "number"
31493
- }
31494
- },
31495
- {
31496
- "name": "toIndex",
31497
- "type": {
31498
- "text": "number"
31499
- }
31500
- }
31501
- ],
31502
- "description": "Moves an item from one index to another."
31503
- },
31504
- {
31505
- "kind": "method",
31506
- "name": "_submitForm",
31507
31568
  "privacy": "private",
31508
- "description": "Submits the associated form if a `formaction` attribute is set."
31509
- },
31510
- {
31511
- "kind": "method",
31512
- "name": "_handleDragStart",
31513
- "privacy": "private",
31514
- "parameters": [
31515
- {
31516
- "name": "event",
31517
- "type": {
31518
- "text": "DragEvent"
31519
- }
31520
- },
31521
- {
31522
- "name": "key",
31523
- "type": {
31524
- "text": "string"
31525
- }
31526
- }
31527
- ]
31528
- },
31529
- {
31530
- "kind": "method",
31531
- "name": "_handleDragEnd",
31532
- "privacy": "private"
31533
- },
31534
- {
31535
- "kind": "method",
31536
- "name": "_handleDragOver",
31537
- "privacy": "private",
31538
- "parameters": [
31539
- {
31540
- "name": "event",
31541
- "type": {
31542
- "text": "DragEvent"
31543
- }
31544
- },
31545
- {
31546
- "name": "key",
31547
- "type": {
31548
- "text": "string"
31549
- }
31550
- }
31551
- ]
31552
- },
31553
- {
31554
- "kind": "method",
31555
- "name": "_handleDragLeave",
31556
- "privacy": "private",
31557
- "parameters": [
31558
- {
31559
- "name": "event",
31560
- "type": {
31561
- "text": "DragEvent"
31562
- }
31563
- },
31564
- {
31565
- "name": "key",
31566
- "type": {
31567
- "text": "string"
31568
- }
31569
- }
31570
- ]
31571
- },
31572
- {
31573
- "kind": "method",
31574
- "name": "_handleDrop",
31575
- "privacy": "private",
31576
- "parameters": [
31577
- {
31578
- "name": "event",
31579
- "type": {
31580
- "text": "DragEvent"
31581
- }
31582
- }
31583
- ]
31584
- },
31585
- {
31586
- "kind": "method",
31587
- "name": "_handleKeyDown",
31588
- "privacy": "private",
31589
- "parameters": [
31590
- {
31591
- "name": "event",
31592
- "type": {
31593
- "text": "KeyboardEvent"
31594
- }
31595
- },
31596
- {
31597
- "name": "key",
31598
- "type": {
31599
- "text": "string"
31600
- }
31601
- }
31602
- ]
31603
- },
31604
- {
31605
- "kind": "method",
31606
- "name": "_handleSlotChange",
31607
- "privacy": "private"
31608
- },
31609
- {
31610
- "kind": "method",
31611
- "name": "checkValidity",
31612
- "return": {
31613
- "type": {
31614
- "text": "boolean"
31615
- }
31616
- },
31617
- "description": "Checks for validity but does not show a validation message."
31618
- },
31619
- {
31620
- "kind": "method",
31621
- "name": "getForm",
31622
- "return": {
31623
- "type": {
31624
- "text": "HTMLFormElement | null"
31625
- }
31626
- },
31627
- "description": "Gets the associated form, if one exists."
31628
- },
31629
- {
31630
- "kind": "method",
31631
- "name": "reportValidity",
31632
- "return": {
31633
- "type": {
31634
- "text": "boolean"
31635
- }
31636
- },
31637
- "description": "Checks for validity and shows the browser's validation message if the control is invalid."
31638
- },
31639
- {
31640
- "kind": "method",
31641
- "name": "setCustomValidity",
31642
- "parameters": [
31643
- {
31644
- "name": "_message",
31645
- "default": "''"
31646
- }
31647
- ],
31648
- "description": "Sets a custom validation message. Pass an empty string to restore validity."
31649
- }
31650
- ],
31651
- "events": [
31652
- {
31653
- "description": "Emitted when the order of items changes.",
31654
- "name": "zn-change"
31569
+ "default": "''"
31655
31570
  },
31656
31571
  {
31657
- "description": "Emitted when items are reordered. Call `getPriorityMap()` on the component to get the updated `{ key: string, priority: number }[]` array.",
31658
- "name": "zn-reorder"
31659
- }
31660
- ],
31661
- "attributes": [
31662
- {
31663
- "name": "name",
31572
+ "kind": "field",
31573
+ "name": "_contentHeight",
31664
31574
  "type": {
31665
- "text": "string"
31575
+ "text": "number"
31666
31576
  },
31667
- "default": "''",
31668
- "description": "The name prefix for form submission. Each item generates a hidden input named `{name}[{itemValue}]`\nwith the priority number as its value.",
31669
- "fieldName": "name"
31577
+ "privacy": "private",
31578
+ "default": "0",
31579
+ "description": "Height of the embedded page's content, when it's known: reported by the\nembed (`height` on hp-preview:rendered, or an hp-preview:height message) or\nmeasured directly for a same-origin embed. The frame is laid out at this\nheight rather than the panel's, so the page never scrolls inside the frame\n— the panel scrolls instead, which is what makes an overflowing preview\nreachable while pointer input to the frame is blocked. 0 = unknown, and the\nframe falls back to filling the panel. Kept up to date either way, but only\nlaid out when the frame is inert: an `interactive` frame scrolls itself."
31670
31580
  },
31671
31581
  {
31672
- "name": "value",
31582
+ "kind": "field",
31583
+ "name": "_generation",
31673
31584
  "type": {
31674
- "text": "string[]"
31585
+ "text": "number"
31675
31586
  },
31676
- "description": "The current ordered list of item keys, reflecting the visual order. This is the source of truth for ordering.\nEach entry should match a `value` attribute on a slotted child element.",
31677
- "fieldName": "value"
31587
+ "privacy": "private",
31588
+ "default": "0"
31678
31589
  },
31679
31590
  {
31680
- "name": "label",
31591
+ "kind": "field",
31592
+ "name": "_theme",
31681
31593
  "type": {
31682
- "text": "string"
31594
+ "text": "Record<string, unknown> | undefined"
31683
31595
  },
31684
- "default": "''",
31685
- "description": "The component's label. Required for proper accessibility.",
31686
- "fieldName": "label"
31596
+ "privacy": "private"
31687
31597
  },
31688
31598
  {
31689
- "name": "label-tooltip",
31599
+ "kind": "field",
31600
+ "name": "_contentObserver",
31690
31601
  "type": {
31691
- "text": "string"
31602
+ "text": "ResizeObserver | undefined"
31692
31603
  },
31693
- "default": "''",
31694
- "description": "Text that appears in a tooltip next to the label.",
31695
- "fieldName": "labelTooltip"
31604
+ "privacy": "private"
31696
31605
  },
31697
31606
  {
31698
- "name": "help-text",
31699
- "type": {
31700
- "text": "string"
31701
- },
31702
- "default": "''",
31703
- "description": "Help text that describes how to use the component.",
31704
- "fieldName": "helpText"
31607
+ "kind": "field",
31608
+ "name": "_watchedForms",
31609
+ "privacy": "private",
31610
+ "readonly": true,
31611
+ "default": "new Set<HTMLFormElement>()"
31705
31612
  },
31706
31613
  {
31707
- "name": "form",
31708
- "type": {
31709
- "text": "string"
31710
- },
31711
- "default": "''",
31712
- "description": "Associates the control with a form by id. The form must be in the same document or shadow root.",
31713
- "fieldName": "form"
31614
+ "kind": "field",
31615
+ "name": "_debounceTimers",
31616
+ "privacy": "private",
31617
+ "readonly": true,
31618
+ "default": "new Map<HTMLFormElement, number>()"
31714
31619
  },
31715
31620
  {
31716
- "name": "size",
31621
+ "kind": "field",
31622
+ "name": "_shellSaveRoots",
31717
31623
  "type": {
31718
- "text": "'small' | 'medium' | 'large'"
31624
+ "text": "EventTarget[]"
31719
31625
  },
31720
- "default": "'medium'",
31721
- "description": "The size of the list items.",
31722
- "fieldName": "size"
31626
+ "privacy": "private",
31627
+ "default": "[]"
31723
31628
  },
31724
31629
  {
31725
- "name": "disabled",
31630
+ "kind": "field",
31631
+ "name": "_lastShellSave",
31726
31632
  "type": {
31727
- "text": "boolean"
31633
+ "text": "Event | undefined"
31728
31634
  },
31729
- "default": "false",
31730
- "description": "Whether the priority list is disabled.",
31731
- "fieldName": "disabled"
31635
+ "privacy": "private"
31732
31636
  },
31733
31637
  {
31734
- "name": "required",
31735
- "type": {
31736
- "text": "boolean"
31737
- },
31738
- "default": "false",
31739
- "description": "Ensures the form control has a value before allowing submission.",
31740
- "fieldName": "required"
31638
+ "kind": "field",
31639
+ "name": "_formObserver",
31640
+ "privacy": "private",
31641
+ "readonly": true,
31642
+ "default": "new MutationController(this, { target: null, config: {subtree: true, childList: true}, callback: () => this._attachForms(), })"
31741
31643
  },
31742
31644
  {
31743
- "name": "priority-start",
31744
- "type": {
31745
- "text": "number"
31746
- },
31747
- "default": "1",
31748
- "description": "The starting priority number. Defaults to 1.",
31749
- "fieldName": "priorityStart"
31645
+ "kind": "field",
31646
+ "name": "_onMessage",
31647
+ "privacy": "private",
31648
+ "readonly": true
31750
31649
  },
31751
31650
  {
31752
- "name": "formaction",
31753
- "type": {
31754
- "text": "string"
31755
- },
31756
- "description": "When set, the associated form will be submitted with the given action URL whenever items are reordered.\nIf set to an empty string, the form will be submitted using its existing action.",
31757
- "fieldName": "formAction"
31651
+ "kind": "method",
31652
+ "name": "_applyContentHeight",
31653
+ "privacy": "private",
31654
+ "parameters": [
31655
+ {
31656
+ "name": "height",
31657
+ "type": {
31658
+ "text": "unknown"
31659
+ }
31660
+ }
31661
+ ]
31758
31662
  },
31759
31663
  {
31760
- "name": "order",
31761
- "type": {
31762
- "text": "string"
31763
- },
31764
- "default": "''",
31765
- "description": "A comma-separated list of item keys defining the initial display order.\nKeys must match the `value` attributes on slotted children.\nAny slotted items not listed are appended at the end in DOM order.",
31766
- "fieldName": "order"
31767
- }
31768
- ],
31769
- "superclass": {
31770
- "name": "ZincElement",
31771
- "module": "/src/internal/zinc-element"
31772
- },
31773
- "summary": "A reorderable list where each item receives a numerical priority based on its position. Supports drag-and-drop\nand keyboard reordering. Priority values are submitted as form data via hidden inputs.",
31774
- "tagNameWithoutPrefix": "priority-list",
31775
- "tagName": "zn-priority-list",
31776
- "customElement": true,
31777
- "jsDoc": "/**\n * @summary A reorderable list where each item receives a numerical priority based on its position. Supports drag-and-drop\n * and keyboard reordering. Priority values are submitted as form data via hidden inputs.\n *\n * @documentation https://zinc.style/components/priority-list\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-icon\n *\n * @slot - The default slot where list items are placed. Each slotted element must have a `value` attribute that\n * uniquely identifies the item. The component automatically assigns slot names to project each item into the\n * correct position. The item's position in the list determines its priority (top = `priority-start`, incrementing).\n * @slot label - The component's label. Required for proper accessibility. Alternatively, use the `label` attribute.\n * @slot label-tooltip - Used to add text displayed in a tooltip next to the label.\n * @slot help-text - Text that describes how to use the component. Alternatively, use the `help-text` attribute.\n *\n * @event zn-change - Emitted when the order of items changes.\n * @event zn-reorder - Emitted when items are reordered. Call `getPriorityMap()` on the component to get\n * the updated `{ key: string, priority: number }[]` array.\n *\n * @csspart form-control - The form control wrapper.\n * @csspart form-control-label - The label wrapper.\n * @csspart form-control-input - The input area wrapper.\n * @csspart form-control-help-text - The help text wrapper.\n * @csspart list - The list container.\n * @csspart item - An individual list item row.\n * @csspart drag-handle - The drag handle icon.\n * @csspart priority - The priority number badge.\n * @csspart content - The content area of an item.\n *\n * @cssproperty --zn-priority-list-item-gap - The gap between list items. Defaults to `var(--zn-spacing-2x-small)`.\n * @cssproperty --zn-priority-list-item-padding - The padding inside each item. Defaults to `var(--zn-spacing-small) var(--zn-spacing-medium)`.\n * @cssproperty --zn-priority-list-actions-gap - The gap between an item's slotted actions. Defaults to `var(--zn-spacing-x-small)`.\n * @cssproperty --zn-priority-list-handle-color - The color of the drag handle. Defaults to `var(--zn-color-neutral-500)`.\n * @cssproperty --zn-priority-list-priority-color - The color of the priority number. Defaults to `var(--zn-color-neutral-600)`.\n */",
31778
- "documentation": "https://zinc.style/components/priority-list",
31779
- "status": "experimental",
31780
- "since": "1.0",
31781
- "dependencies": [
31782
- "zn-icon"
31783
- ]
31784
- }
31785
- ],
31786
- "exports": [
31787
- {
31788
- "kind": "js",
31789
- "name": "default",
31790
- "declaration": {
31791
- "name": "ZnPriorityList",
31792
- "module": "components/priority-list/priority-list.js"
31793
- }
31794
- }
31795
- ]
31796
- },
31797
- {
31798
- "kind": "javascript-module",
31799
- "path": "components/progress-bar/progress-bar.js",
31800
- "declarations": [
31801
- {
31802
- "kind": "class",
31803
- "description": "",
31804
- "name": "ZnProgressBar",
31805
- "cssProperties": [
31806
- {
31807
- "description": "The color of the progress bar background track.",
31808
- "name": "--zn-border-color"
31664
+ "kind": "method",
31665
+ "name": "_resetContentHeight",
31666
+ "privacy": "private"
31809
31667
  },
31810
31668
  {
31811
- "description": "The color of the progress bar fill.",
31812
- "name": "--zn-progress-bar-color"
31669
+ "kind": "field",
31670
+ "name": "_onFrameLoad",
31671
+ "privacy": "private",
31672
+ "readonly": true
31813
31673
  },
31814
31674
  {
31815
- "description": "The color of the caption text.",
31816
- "name": "--zn-text-heading"
31675
+ "kind": "method",
31676
+ "name": "refresh",
31677
+ "description": "Re-fetches the payload and pushes a fresh config to the preview."
31817
31678
  },
31818
31679
  {
31819
- "description": "The color of the progress percentage and description text.",
31820
- "name": "--zn-text"
31680
+ "kind": "method",
31681
+ "name": "setTheme",
31682
+ "parameters": [
31683
+ {
31684
+ "name": "theme",
31685
+ "type": {
31686
+ "text": "Record<string, unknown>"
31687
+ }
31688
+ }
31689
+ ],
31690
+ "description": "Pushes a theme payload into the preview. The payload is retained and\nre-posted after every ready handshake, so a frame reload doesn't drop an\nin-progress theme."
31821
31691
  },
31822
31692
  {
31823
- "description": "The spacing between header/footer and the progress bar.",
31824
- "name": "--zn-spacing-x-small"
31825
- }
31826
- ],
31827
- "cssParts": [
31693
+ "kind": "method",
31694
+ "name": "_postTheme",
31695
+ "privacy": "private"
31696
+ },
31828
31697
  {
31829
- "description": "The header container that contains the caption and progress text.",
31830
- "name": "header"
31698
+ "kind": "method",
31699
+ "name": "_sendConfig",
31700
+ "privacy": "private"
31831
31701
  },
31832
31702
  {
31833
- "description": "The caption text element.",
31834
- "name": "caption"
31703
+ "kind": "method",
31704
+ "name": "_attachForms",
31705
+ "privacy": "private"
31835
31706
  },
31836
31707
  {
31837
- "description": "The progress percentage text element.",
31838
- "name": "progress"
31708
+ "kind": "field",
31709
+ "name": "_onShellSave",
31710
+ "privacy": "private",
31711
+ "readonly": true
31839
31712
  },
31840
31713
  {
31841
- "description": "The SVG element containing the progress bar.",
31842
- "name": "bar"
31714
+ "kind": "method",
31715
+ "name": "_detachForm",
31716
+ "privacy": "private",
31717
+ "parameters": [
31718
+ {
31719
+ "name": "form",
31720
+ "type": {
31721
+ "text": "HTMLFormElement"
31722
+ }
31723
+ }
31724
+ ]
31843
31725
  },
31844
31726
  {
31845
- "description": "The background track of the progress bar.",
31846
- "name": "track"
31727
+ "kind": "field",
31728
+ "name": "_onChange",
31729
+ "privacy": "private",
31730
+ "readonly": true
31847
31731
  },
31848
31732
  {
31849
- "description": "The filled portion of the progress bar indicating progress.",
31850
- "name": "fill"
31733
+ "kind": "field",
31734
+ "name": "_onSubmit",
31735
+ "privacy": "private",
31736
+ "readonly": true
31851
31737
  },
31852
31738
  {
31853
- "description": "The footer container that contains the description.",
31854
- "name": "footer"
31739
+ "kind": "method",
31740
+ "name": "_save",
31741
+ "privacy": "private",
31742
+ "parameters": [
31743
+ {
31744
+ "name": "form",
31745
+ "type": {
31746
+ "text": "HTMLFormElement"
31747
+ }
31748
+ }
31749
+ ]
31855
31750
  },
31856
31751
  {
31857
- "description": "The description text element.",
31858
- "name": "info"
31752
+ "kind": "method",
31753
+ "name": "_fail",
31754
+ "privacy": "private",
31755
+ "parameters": [
31756
+ {
31757
+ "name": "message",
31758
+ "type": {
31759
+ "text": "string"
31760
+ }
31761
+ }
31762
+ ]
31859
31763
  }
31860
31764
  ],
31861
- "members": [
31765
+ "events": [
31862
31766
  {
31863
- "kind": "field",
31864
- "name": "caption",
31767
+ "description": "Emitted when the preview reports a render error or a save fails.",
31768
+ "name": "zn-error"
31769
+ }
31770
+ ],
31771
+ "attributes": [
31772
+ {
31773
+ "name": "src",
31865
31774
  "type": {
31866
- "text": "string | undefined"
31775
+ "text": "string"
31867
31776
  },
31868
- "attribute": "caption",
31869
- "reflects": true
31777
+ "default": "''",
31778
+ "description": "URL of the preview shell page (tokened embed URL).",
31779
+ "fieldName": "src"
31870
31780
  },
31871
31781
  {
31872
- "kind": "field",
31873
- "name": "color",
31782
+ "name": "frame-origin",
31874
31783
  "type": {
31875
- "text": "ProgressBarColor"
31784
+ "text": "string"
31876
31785
  },
31877
- "default": "'current'",
31878
- "attribute": "color",
31879
- "reflects": true
31786
+ "default": "''",
31787
+ "description": "Expected origin of the iframe; all postMessage traffic is checked against it.",
31788
+ "fieldName": "frameOrigin"
31880
31789
  },
31881
31790
  {
31882
- "kind": "field",
31883
- "name": "description",
31791
+ "name": "data-uri",
31884
31792
  "type": {
31885
- "text": "string | undefined"
31793
+ "text": "string"
31886
31794
  },
31887
- "attribute": "description",
31888
- "reflects": true
31795
+ "default": "''",
31796
+ "description": "Endpoint returning the hp-preview:config payload JSON. The console proxy rewrites this attribute to an app-prefixed path for proper fetch resolution.",
31797
+ "fieldName": "dataUri"
31889
31798
  },
31890
31799
  {
31891
- "kind": "field",
31892
- "name": "value",
31800
+ "name": "watch",
31893
31801
  "type": {
31894
- "text": "number | undefined"
31802
+ "text": "string"
31895
31803
  },
31896
- "attribute": "value",
31897
- "reflects": true
31804
+ "default": "'form[data-auto-save]'",
31805
+ "description": "Selector (resolved against the component's root node) for the forms to watch.\nDefaults to only forms explicitly opted in via a `data-auto-save` attribute —\nunmarked forms keep normal submit behavior and are never intercepted,\nauto-saved, or used to trigger a preview refresh. Override to widen the scope.",
31806
+ "fieldName": "watch"
31898
31807
  },
31899
31808
  {
31900
- "kind": "field",
31901
- "name": "showProgress",
31809
+ "name": "refresh-on",
31902
31810
  "type": {
31903
- "text": "boolean | undefined"
31811
+ "text": "string"
31904
31812
  },
31905
- "attribute": "show-progress",
31906
- "reflects": true
31907
- }
31908
- ],
31909
- "attributes": [
31813
+ "default": "'form'",
31814
+ "description": "Selector for forms whose saves are left to the shell but should still\nrefresh the preview. These are never intercepted: the shell submits them\n(so its own response handling — alerts, refreshes — runs as normal) and the\npreview re-fetches its config once the shell reports the save complete.\nMatched by delegation on the shell's bubbled `complete` event rather than\nby attaching to the forms themselves, so a save anywhere on the page\nrefreshes the preview — including forms in a different DOM root, e.g. a\npage-level form saved while the preview sits inside a tab panel's shadow\nroot (a page's Template select lives on one tab, its preview on another).\nSet empty to disable.",
31815
+ "fieldName": "refreshOn"
31816
+ },
31910
31817
  {
31911
- "name": "caption",
31818
+ "name": "debounce",
31912
31819
  "type": {
31913
- "text": "string | undefined"
31820
+ "text": "number"
31914
31821
  },
31915
- "fieldName": "caption"
31822
+ "default": "400",
31823
+ "description": "Debounce in ms between a form change and its auto-save.",
31824
+ "fieldName": "debounce"
31916
31825
  },
31917
31826
  {
31918
- "name": "color",
31827
+ "name": "zoom",
31919
31828
  "type": {
31920
- "text": "ProgressBarColor"
31829
+ "text": "number"
31921
31830
  },
31922
- "default": "'current'",
31923
- "fieldName": "color"
31831
+ "default": "1",
31832
+ "description": "Zooms the previewed page out (0–1]. The frame always fills the panel;\nzoom shrinks the content browser-style, so 0.4 shows the page at 40%\nsize with correspondingly more of it visible. 1 = natural size.\nIgnored when `fill` is set.",
31833
+ "fieldName": "zoom"
31924
31834
  },
31925
31835
  {
31926
- "name": "description",
31836
+ "name": "min-height",
31927
31837
  "type": {
31928
- "text": "string | undefined"
31838
+ "text": "number"
31929
31839
  },
31930
- "fieldName": "description"
31840
+ "default": "480",
31841
+ "description": "The visible height (in CSS pixels) of the preview panel. Fixed rather\nthan measured, because a measured height would feed back into the\nscaled iframe's layout box and grow unbounded. With `fill` set, this\nbecomes a `min-height` floor instead of the height.",
31842
+ "fieldName": "minHeight"
31931
31843
  },
31932
31844
  {
31933
- "name": "value",
31845
+ "name": "fill",
31934
31846
  "type": {
31935
- "text": "number | undefined"
31847
+ "text": "boolean"
31936
31848
  },
31937
- "fieldName": "value"
31849
+ "default": "false",
31850
+ "description": "Fills the panel's own column height instead of using a fixed\n`min-height` pixel height — for hosts (like zn-theme-editor) whose\nlayout already stretches the column to match a taller sibling.\n`zoom` is ignored when set: its oversize maths depends on a known\npixel height, which `fill` deliberately doesn't have.",
31851
+ "fieldName": "fill"
31938
31852
  },
31939
31853
  {
31940
- "name": "show-progress",
31854
+ "name": "device",
31941
31855
  "type": {
31942
- "text": "boolean | undefined"
31856
+ "text": "PreviewFrameDevice"
31943
31857
  },
31944
- "fieldName": "showProgress"
31858
+ "default": "'desktop'",
31859
+ "description": "Constrains and centres the preview to a device width: `desktop` (100%),\n`tablet` (768px) or `mobile` (390px). The iframe element itself is\nnarrowed, so the embedded page's own media queries fire.",
31860
+ "fieldName": "device"
31861
+ },
31862
+ {
31863
+ "name": "backdrop",
31864
+ "type": {
31865
+ "text": "'dots' | 'panel'"
31866
+ },
31867
+ "default": "'dots'",
31868
+ "description": "Backdrop behind the stage: `dots` (default) is the canvas dot grid; `panel` is a plain `rgb(var(--zn-panel))` fill.",
31869
+ "fieldName": "backdrop"
31870
+ },
31871
+ {
31872
+ "name": "interactive",
31873
+ "type": {
31874
+ "text": "boolean"
31875
+ },
31876
+ "default": "false",
31877
+ "description": "Lets pointer input through to the embedded page. The preview is inert by\ndefault: clicks never reach the frame, so the previewed page can't be\nnavigated or submitted from inside the preview. Cross-origin content can't\nbe reached from here to cancel its own handlers, so this blocks pointer\ninput entirely — hover goes with it. Scrolling doesn't: an overflowing\npage is scrolled by the panel rather than by the frame (see _contentHeight).\n\nSet, the frame becomes a real viewport instead: it stays the panel's own\nheight and the embed scrolls itself, so there is one scrollbar rather than\na panel scrolling an oversized frame, and the embed's viewport-relative\nlayout (`100vh`, `position: fixed`, sticky headers) sizes to what's on\nscreen. _contentHeight is ignored while this is set.",
31878
+ "fieldName": "interactive"
31945
31879
  }
31946
31880
  ],
31947
31881
  "superclass": {
31948
31882
  "name": "ZincElement",
31949
31883
  "module": "/src/internal/zinc-element"
31950
31884
  },
31951
- "summary": "Progress bars provide visual feedback about the completion status of a task or process.",
31952
- "tagNameWithoutPrefix": "progress-bar",
31953
- "tagName": "zn-progress-bar",
31885
+ "summary": "Embeds a live preview iframe and drives the hp-preview postMessage\nprotocol: answers the frame's ready handshake with a config payload fetched\nfrom data-uri, auto-saves watched forms on change, refreshes the preview\nafter each save (its own, or a shell-driven save of a `refresh-on` form),\naccepts a theme payload via setTheme() that is retained and replayed\nafter every ready handshake, and grows the frame to a content height the\nembed reports so the panel scrolls an overflowing page.",
31886
+ "tagNameWithoutPrefix": "preview-frame",
31887
+ "tagName": "zn-preview-frame",
31954
31888
  "customElement": true,
31955
- "jsDoc": "/**\n * @summary Progress bars provide visual feedback about the completion status of a task or process.\n * @documentation https://zinc.style/components/progress-bar\n * @status experimental\n * @since 1.0\n *\n * @csspart header - The header container that contains the caption and progress text.\n * @csspart caption - The caption text element.\n * @csspart progress - The progress percentage text element.\n * @csspart bar - The SVG element containing the progress bar.\n * @csspart track - The background track of the progress bar.\n * @csspart fill - The filled portion of the progress bar indicating progress.\n * @csspart footer - The footer container that contains the description.\n * @csspart info - The description text element.\n *\n * @cssproperty --zn-border-color - The color of the progress bar background track.\n * @cssproperty --zn-progress-bar-color - The color of the progress bar fill.\n * @cssproperty --zn-text-heading - The color of the caption text.\n * @cssproperty --zn-text - The color of the progress percentage and description text.\n * @cssproperty --zn-spacing-x-small - The spacing between header/footer and the progress bar.\n */",
31956
- "documentation": "https://zinc.style/components/progress-bar",
31889
+ "jsDoc": "/**\n * @summary Embeds a live preview iframe and drives the hp-preview postMessage\n * protocol: answers the frame's ready handshake with a config payload fetched\n * from data-uri, auto-saves watched forms on change, refreshes the preview\n * after each save (its own, or a shell-driven save of a `refresh-on` form),\n * accepts a theme payload via setTheme() that is retained and replayed\n * after every ready handshake, and grows the frame to a content height the\n * embed reports so the panel scrolls an overflowing page.\n *\n * @documentation https://zinc.style/components/preview-frame\n * @status experimental\n * @since 1.0\n *\n * @event zn-error - Emitted when the preview reports a render error or a save fails.\n *\n * @csspart base - The component's base wrapper.\n * @csspart stage - The device-width wrapper around the iframe.\n * @csspart iframe - The preview iframe.\n * @csspart error - The error overlay.\n *\n * @cssproperty --zn-preview-frame-dot-spacing - Spacing of the backdrop dot grid (`backdrop=\"dots\"`). Defaults to 20px.\n * @cssproperty --zn-preview-frame-dot-opacity - Opacity of the backdrop dots (`backdrop=\"dots\"`). Defaults to 0.08.\n */",
31890
+ "documentation": "https://zinc.style/components/preview-frame",
31957
31891
  "status": "experimental",
31958
31892
  "since": "1.0"
31959
31893
  }
@@ -31963,8 +31897,8 @@
31963
31897
  "kind": "js",
31964
31898
  "name": "default",
31965
31899
  "declaration": {
31966
- "name": "ZnProgressBar",
31967
- "module": "components/progress-bar/progress-bar.js"
31900
+ "name": "ZnPreviewFrame",
31901
+ "module": "components/preview-frame/preview-frame.js"
31968
31902
  }
31969
31903
  }
31970
31904
  ]
@@ -34658,7 +34592,7 @@
34658
34592
  "name": "slashController",
34659
34593
  "privacy": "private",
34660
34594
  "readonly": true,
34661
- "default": "new SlashMenuController(this, { menu: () => this.mountSlashMenu(), // The menu only belongs in a block that is nothing but the slash command — a // block prefix like \"## \" is not valid remarkd part-way through a line. items: () => this.isSlashBlock() ? SLASH_ITEMS.filter(item => item.action !== 'include' || !!this.includeUrl) : [], onSelect: item => this.handleSlashSelect(item) })"
34595
+ "default": "new SlashMenuController(this, { menu: () => this.mountSlashMenu(), // The menu only belongs in a block that is nothing but the slash command — a // block prefix like \"## \" is not valid remarkd part-way through a line. items: () => this.isSlashBlock() ? SLASH_ITEMS.filter(item => this.slashItemAvailable(item)) : [], onSelect: item => this.handleSlashSelect(item) })"
34662
34596
  },
34663
34597
  {
34664
34598
  "kind": "field",
@@ -34856,6 +34790,84 @@
34856
34790
  "privacy": "private",
34857
34791
  "default": "''"
34858
34792
  },
34793
+ {
34794
+ "kind": "field",
34795
+ "name": "linkPickerOpen",
34796
+ "type": {
34797
+ "text": "boolean"
34798
+ },
34799
+ "privacy": "private",
34800
+ "default": "false"
34801
+ },
34802
+ {
34803
+ "kind": "field",
34804
+ "name": "linkQuery",
34805
+ "type": {
34806
+ "text": "string"
34807
+ },
34808
+ "privacy": "private",
34809
+ "default": "''"
34810
+ },
34811
+ {
34812
+ "kind": "field",
34813
+ "name": "linkResults",
34814
+ "type": {
34815
+ "text": "LinkOption[] | null"
34816
+ },
34817
+ "privacy": "private",
34818
+ "default": "null"
34819
+ },
34820
+ {
34821
+ "kind": "field",
34822
+ "name": "linkSearchFailed",
34823
+ "type": {
34824
+ "text": "boolean"
34825
+ },
34826
+ "privacy": "private",
34827
+ "default": "false"
34828
+ },
34829
+ {
34830
+ "kind": "field",
34831
+ "name": "linkSelection",
34832
+ "type": {
34833
+ "text": "[number, number] | null"
34834
+ },
34835
+ "privacy": "private",
34836
+ "default": "null"
34837
+ },
34838
+ {
34839
+ "kind": "field",
34840
+ "name": "linkSearchTimer",
34841
+ "type": {
34842
+ "text": "ReturnType<typeof setTimeout> | undefined"
34843
+ },
34844
+ "privacy": "private"
34845
+ },
34846
+ {
34847
+ "kind": "field",
34848
+ "name": "linkSearchToken",
34849
+ "type": {
34850
+ "text": "number"
34851
+ },
34852
+ "privacy": "private",
34853
+ "default": "0"
34854
+ },
34855
+ {
34856
+ "kind": "field",
34857
+ "name": "linkRefs",
34858
+ "privacy": "private",
34859
+ "default": "new Map<string, LinkOption | null>()",
34860
+ "description": "Resolved link targets by reference; a null value is one the app does not know."
34861
+ },
34862
+ {
34863
+ "kind": "field",
34864
+ "name": "linkRefsPending",
34865
+ "type": {
34866
+ "text": "boolean"
34867
+ },
34868
+ "privacy": "private",
34869
+ "default": "false"
34870
+ },
34859
34871
  {
34860
34872
  "kind": "field",
34861
34873
  "name": "pendingDragHandle",
@@ -34969,6 +34981,16 @@
34969
34981
  "description": "Endpoint listing the Includes this document may embed, as\n`{\"items\":[{id,title,description,scope,keywords,languages,url}]}`. Labels the\nchips rendered for `include::` directives and feeds the include picker.",
34970
34982
  "attribute": "include-url"
34971
34983
  },
34984
+ {
34985
+ "kind": "field",
34986
+ "name": "linkUrl",
34987
+ "type": {
34988
+ "text": "string"
34989
+ },
34990
+ "default": "''",
34991
+ "description": "Endpoint the article link picker searches, as\n`{\"items\":[{ref,kind,title,context,status}]}`. Queried with `?q=<term>` as\nthe author types and with `?refs=a,b` to resolve the references a body\nalready carries.",
34992
+ "attribute": "link-url"
34993
+ },
34972
34994
  {
34973
34995
  "kind": "field",
34974
34996
  "name": "allowRaw",
@@ -35091,6 +35113,10 @@
35091
35113
  "kind": "method",
35092
35114
  "name": "handleIncludeUrlChange"
35093
35115
  },
35116
+ {
35117
+ "kind": "method",
35118
+ "name": "handleLinkUrlChange"
35119
+ },
35094
35120
  {
35095
35121
  "kind": "method",
35096
35122
  "name": "splitBlocks",
@@ -35699,6 +35725,31 @@
35699
35725
  }
35700
35726
  ]
35701
35727
  },
35728
+ {
35729
+ "kind": "method",
35730
+ "name": "pickLink",
35731
+ "privacy": "private",
35732
+ "description": "Opens the picker over the block being edited. The caret range is captured\nnow: the picker's own filter takes focus, so the textarea's selection is\ngone by the time an option is chosen."
35733
+ },
35734
+ {
35735
+ "kind": "field",
35736
+ "name": "closeLinkPicker",
35737
+ "privacy": "private"
35738
+ },
35739
+ {
35740
+ "kind": "method",
35741
+ "name": "searchLinks",
35742
+ "privacy": "private",
35743
+ "parameters": [
35744
+ {
35745
+ "name": "term",
35746
+ "type": {
35747
+ "text": "string"
35748
+ }
35749
+ }
35750
+ ],
35751
+ "description": "Debounced; only the newest response is kept."
35752
+ },
35702
35753
  {
35703
35754
  "kind": "field",
35704
35755
  "name": "closeIncludePicker",
@@ -35804,6 +35855,25 @@
35804
35855
  },
35805
35856
  "description": "Fetches the include list once; every later caller shares the same promise."
35806
35857
  },
35858
+ {
35859
+ "kind": "method",
35860
+ "name": "resolveContentLinks",
35861
+ "privacy": "private",
35862
+ "description": "Resolves the references in the body that have not been resolved yet, so a\nlink whose target is gone can be marked. A failed request records nothing:\nan unanswered reference is not a broken one."
35863
+ },
35864
+ {
35865
+ "kind": "method",
35866
+ "name": "markContentLinks",
35867
+ "privacy": "private",
35868
+ "parameters": [
35869
+ {
35870
+ "name": "root",
35871
+ "type": {
35872
+ "text": "Element"
35873
+ }
35874
+ }
35875
+ ]
35876
+ },
35807
35877
  {
35808
35878
  "kind": "method",
35809
35879
  "name": "autosize",
@@ -35981,7 +36051,44 @@
35981
36051
  }
35982
36052
  }
35983
36053
  ],
35984
- "description": "An inline action needs an open block to apply its mark to."
36054
+ "description": "Inline marks and the article link both apply into an open block, not a new one."
36055
+ },
36056
+ {
36057
+ "kind": "method",
36058
+ "name": "actionAvailable",
36059
+ "privacy": "private",
36060
+ "return": {
36061
+ "type": {
36062
+ "text": "boolean"
36063
+ }
36064
+ },
36065
+ "parameters": [
36066
+ {
36067
+ "name": "action",
36068
+ "type": {
36069
+ "text": "EditorAction"
36070
+ }
36071
+ }
36072
+ ],
36073
+ "description": "A picker action with no endpoint configured is not offered at all."
36074
+ },
36075
+ {
36076
+ "kind": "method",
36077
+ "name": "slashItemAvailable",
36078
+ "privacy": "private",
36079
+ "return": {
36080
+ "type": {
36081
+ "text": "boolean"
36082
+ }
36083
+ },
36084
+ "parameters": [
36085
+ {
36086
+ "name": "item",
36087
+ "type": {
36088
+ "text": "SlashMenuItem"
36089
+ }
36090
+ }
36091
+ ]
35985
36092
  },
35986
36093
  {
35987
36094
  "kind": "method",
@@ -36041,6 +36148,24 @@
36041
36148
  "name": "renderIncludePicker",
36042
36149
  "privacy": "private"
36043
36150
  },
36151
+ {
36152
+ "kind": "method",
36153
+ "name": "renderLinkPicker",
36154
+ "privacy": "private"
36155
+ },
36156
+ {
36157
+ "kind": "method",
36158
+ "name": "insertLink",
36159
+ "privacy": "private",
36160
+ "parameters": [
36161
+ {
36162
+ "name": "item",
36163
+ "type": {
36164
+ "text": "LinkOption"
36165
+ }
36166
+ }
36167
+ ]
36168
+ },
36044
36169
  {
36045
36170
  "kind": "method",
36046
36171
  "name": "renderImagePicker",
@@ -36112,6 +36237,15 @@
36112
36237
  "description": "Endpoint listing the Includes this document may embed, as\n`{\"items\":[{id,title,description,scope,keywords,languages,url}]}`. Labels the\nchips rendered for `include::` directives and feeds the include picker.",
36113
36238
  "fieldName": "includeUrl"
36114
36239
  },
36240
+ {
36241
+ "name": "link-url",
36242
+ "type": {
36243
+ "text": "string"
36244
+ },
36245
+ "default": "''",
36246
+ "description": "Endpoint the article link picker searches, as\n`{\"items\":[{ref,kind,title,context,status}]}`. Queried with `?q=<term>` as\nthe author types and with `?refs=a,b` to resolve the references a body\nalready carries.",
36247
+ "fieldName": "linkUrl"
36248
+ },
36115
36249
  {
36116
36250
  "name": "allow-raw",
36117
36251
  "type": {
@@ -51364,7 +51498,7 @@
51364
51498
  "package": {
51365
51499
  "name": "@kubex/zinc",
51366
51500
  "description": "A collection of web components for building web applications based off of @shoelace-style/Shoelace",
51367
- "version": "1.1.118",
51501
+ "version": "1.1.119",
51368
51502
  "author": "",
51369
51503
  "license": "MIT"
51370
51504
  }