@kubuild/components 0.7.0 → 0.8.1
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.
- package/dist/blocks/index.cjs +601 -12
- package/dist/blocks/index.cjs.map +1 -1
- package/dist/blocks/index.d.ts +2 -1
- package/dist/blocks/index.d.ts.map +1 -1
- package/dist/blocks/index.js +3 -1
- package/dist/blocks/sales.d.ts +7 -0
- package/dist/blocks/sales.d.ts.map +1 -0
- package/dist/canonical-props.d.ts +8 -0
- package/dist/canonical-props.d.ts.map +1 -0
- package/dist/{chunk-3HU2KE2B.js → chunk-CJN5OHHX.js} +596 -9
- package/dist/chunk-CJN5OHHX.js.map +1 -0
- package/dist/{chunk-JTQ35OQQ.js → chunk-DIZKTXJI.js} +601 -13
- package/dist/chunk-DIZKTXJI.js.map +1 -0
- package/dist/definitions/constants.d.ts.map +1 -1
- package/dist/definitions/conversion/accordion.d.ts +8 -0
- package/dist/definitions/conversion/accordion.d.ts.map +1 -0
- package/dist/definitions/conversion/carousel.d.ts +7 -0
- package/dist/definitions/conversion/carousel.d.ts.map +1 -0
- package/dist/definitions/conversion/countdown.d.ts +19 -0
- package/dist/definitions/conversion/countdown.d.ts.map +1 -0
- package/dist/definitions/conversion/divider.d.ts +9 -0
- package/dist/definitions/conversion/divider.d.ts.map +1 -0
- package/dist/definitions/conversion/index.d.ts +7 -0
- package/dist/definitions/conversion/index.d.ts.map +1 -0
- package/dist/definitions/conversion/rating.d.ts +7 -0
- package/dist/definitions/conversion/rating.d.ts.map +1 -0
- package/dist/definitions/conversion/tabs.d.ts +9 -0
- package/dist/definitions/conversion/tabs.d.ts.map +1 -0
- package/dist/definitions/form/button.d.ts.map +1 -1
- package/dist/definitions/index.cjs +746 -147
- package/dist/definitions/index.cjs.map +1 -1
- package/dist/definitions/index.d.ts +1 -0
- package/dist/definitions/index.d.ts.map +1 -1
- package/dist/definitions/index.js +27 -1
- package/dist/definitions/types.d.ts +4 -1
- package/dist/definitions/types.d.ts.map +1 -1
- package/dist/definitions/typography/badge.d.ts.map +1 -1
- package/dist/definitions/typography/blockquote.d.ts.map +1 -1
- package/dist/definitions/typography/heading.d.ts.map +1 -1
- package/dist/definitions/typography/link.d.ts.map +1 -1
- package/dist/definitions/typography/paragraph.d.ts.map +1 -1
- package/dist/definitions/typography/text.d.ts.map +1 -1
- package/dist/index.cjs +1417 -227
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -2
- package/dist/index.js.map +1 -1
- package/dist/registry.d.ts +12 -0
- package/dist/registry.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-3HU2KE2B.js.map +0 -1
- package/dist/chunk-JTQ35OQQ.js.map +0 -1
|
@@ -21,11 +21,18 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var definitions_exports = {};
|
|
22
22
|
__export(definitions_exports, {
|
|
23
23
|
CONTENT_CHILD_TYPES: () => CONTENT_CHILD_TYPES,
|
|
24
|
+
COUNTDOWN_EXPIRE_BEHAVIORS: () => COUNTDOWN_EXPIRE_BEHAVIORS,
|
|
25
|
+
COUNTDOWN_FORMATS: () => COUNTDOWN_FORMATS,
|
|
26
|
+
COUNTDOWN_MODES: () => COUNTDOWN_MODES,
|
|
27
|
+
COUNTDOWN_STORAGE_TYPES: () => COUNTDOWN_STORAGE_TYPES,
|
|
24
28
|
LAYOUT_PARENTS: () => LAYOUT_PARENTS,
|
|
29
|
+
accordionDefinition: () => accordionDefinition,
|
|
30
|
+
accordionItemDefinition: () => accordionItemDefinition,
|
|
25
31
|
badgeDefinition: () => badgeDefinition,
|
|
26
32
|
blockquoteDefinition: () => blockquoteDefinition,
|
|
27
33
|
buttonDefinition: () => buttonDefinition,
|
|
28
34
|
buttonSubmitDefinition: () => buttonSubmitDefinition,
|
|
35
|
+
carouselDefinition: () => carouselDefinition,
|
|
29
36
|
checkboxDefinition: () => checkboxDefinition,
|
|
30
37
|
codeBlockDefinition: () => codeBlockDefinition,
|
|
31
38
|
collapsibleDefinition: () => collapsibleDefinition,
|
|
@@ -33,7 +40,9 @@ __export(definitions_exports, {
|
|
|
33
40
|
columnsDefinition: () => columnsDefinition,
|
|
34
41
|
containerDefinition: () => containerDefinition,
|
|
35
42
|
coreComponentDefinitions: () => coreComponentDefinitions,
|
|
43
|
+
countdownDefinition: () => countdownDefinition,
|
|
36
44
|
createDefaultComponentRegistry: () => createDefaultComponentRegistry,
|
|
45
|
+
dividerDefinition: () => dividerDefinition,
|
|
37
46
|
drawerDefinition: () => drawerDefinition,
|
|
38
47
|
fileUploadDefinition: () => fileUploadDefinition,
|
|
39
48
|
flexDefinition: () => flexDefinition,
|
|
@@ -53,12 +62,16 @@ __export(definitions_exports, {
|
|
|
53
62
|
radioDefinition: () => radioDefinition,
|
|
54
63
|
radioGroupDefinition: () => radioGroupDefinition,
|
|
55
64
|
radioItemDefinition: () => radioItemDefinition,
|
|
65
|
+
ratingDefinition: () => ratingDefinition,
|
|
56
66
|
sectionDefinition: () => sectionDefinition,
|
|
57
67
|
selectDefinition: () => selectDefinition,
|
|
68
|
+
spacerDefinition: () => spacerDefinition,
|
|
58
69
|
switchDefinition: () => switchDefinition,
|
|
70
|
+
tabPanelDefinition: () => tabPanelDefinition,
|
|
59
71
|
tableCellDefinition: () => tableCellDefinition,
|
|
60
72
|
tableDefinition: () => tableDefinition,
|
|
61
73
|
tableRowDefinition: () => tableRowDefinition,
|
|
74
|
+
tabsDefinition: () => tabsDefinition,
|
|
62
75
|
textDefinition: () => textDefinition,
|
|
63
76
|
textareaDefinition: () => textareaDefinition,
|
|
64
77
|
videoDefinition: () => videoDefinition
|
|
@@ -955,7 +968,20 @@ function autoDisableOnSubmitTrait(overrides) {
|
|
|
955
968
|
}
|
|
956
969
|
|
|
957
970
|
// src/definitions/constants.ts
|
|
958
|
-
var LAYOUT_PARENTS = [
|
|
971
|
+
var LAYOUT_PARENTS = [
|
|
972
|
+
"page",
|
|
973
|
+
"section",
|
|
974
|
+
"container",
|
|
975
|
+
"columns",
|
|
976
|
+
"flex",
|
|
977
|
+
"grid",
|
|
978
|
+
"modal",
|
|
979
|
+
"drawer",
|
|
980
|
+
"collapsible",
|
|
981
|
+
"accordion-item",
|
|
982
|
+
"tab-panel",
|
|
983
|
+
"carousel"
|
|
984
|
+
];
|
|
959
985
|
var CONTENT_CHILD_TYPES = [
|
|
960
986
|
"heading",
|
|
961
987
|
"text",
|
|
@@ -986,7 +1012,14 @@ var CONTENT_CHILD_TYPES = [
|
|
|
986
1012
|
"custom",
|
|
987
1013
|
"modal",
|
|
988
1014
|
"drawer",
|
|
989
|
-
"collapsible"
|
|
1015
|
+
"collapsible",
|
|
1016
|
+
"countdown",
|
|
1017
|
+
"accordion",
|
|
1018
|
+
"tabs",
|
|
1019
|
+
"carousel",
|
|
1020
|
+
"rating",
|
|
1021
|
+
"divider",
|
|
1022
|
+
"spacer"
|
|
990
1023
|
];
|
|
991
1024
|
|
|
992
1025
|
// src/definitions/layout/page.ts
|
|
@@ -1155,13 +1188,27 @@ var gridDefinition = {
|
|
|
1155
1188
|
};
|
|
1156
1189
|
|
|
1157
1190
|
// src/definitions/typography/heading.ts
|
|
1191
|
+
var import_schema2 = require("@kubuild/schema");
|
|
1192
|
+
|
|
1193
|
+
// src/canonical-props.ts
|
|
1158
1194
|
var import_schema = require("@kubuild/schema");
|
|
1195
|
+
function canonicalTextPropFields(componentType) {
|
|
1196
|
+
const rule = (0, import_schema.getCanonicalTextPropRule)(componentType);
|
|
1197
|
+
if (!rule) return {};
|
|
1198
|
+
return {
|
|
1199
|
+
canonicalTextProp: rule.canonical,
|
|
1200
|
+
deprecatedPropAliases: Object.fromEntries(rule.aliases.map((alias) => [alias, rule.canonical]))
|
|
1201
|
+
};
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
// src/definitions/typography/heading.ts
|
|
1159
1205
|
var headingDefinition = {
|
|
1160
1206
|
type: "heading",
|
|
1161
1207
|
label: "Heading",
|
|
1162
1208
|
category: "typography",
|
|
1163
1209
|
icon: "heading",
|
|
1164
1210
|
acceptsChildren: false,
|
|
1211
|
+
...canonicalTextPropFields("heading"),
|
|
1165
1212
|
defaultProps: { text: "Heading Text", level: 2 },
|
|
1166
1213
|
propFields: [
|
|
1167
1214
|
{ name: "text", label: "Text", type: "string", defaultValue: "Heading Text" },
|
|
@@ -1187,7 +1234,8 @@ var headingDefinition = {
|
|
|
1187
1234
|
],
|
|
1188
1235
|
validateProps: (props) => {
|
|
1189
1236
|
const errors = [];
|
|
1190
|
-
|
|
1237
|
+
const text = props.text ?? props.content;
|
|
1238
|
+
if (!(0, import_schema2.isVariableBinding)(text) && (typeof text !== "string" || text.trim().length === 0)) {
|
|
1191
1239
|
errors.push('Heading requires a non-empty "text".');
|
|
1192
1240
|
}
|
|
1193
1241
|
if (props.level !== void 0 && (typeof props.level !== "number" || props.level < 1 || props.level > 6)) {
|
|
@@ -1206,16 +1254,18 @@ var headingDefinition = {
|
|
|
1206
1254
|
};
|
|
1207
1255
|
|
|
1208
1256
|
// src/definitions/typography/text.ts
|
|
1209
|
-
var
|
|
1257
|
+
var import_schema3 = require("@kubuild/schema");
|
|
1210
1258
|
var textDefinition = {
|
|
1211
1259
|
type: "text",
|
|
1212
1260
|
label: "Text",
|
|
1213
1261
|
category: "typography",
|
|
1214
1262
|
icon: "type",
|
|
1215
1263
|
acceptsChildren: false,
|
|
1216
|
-
|
|
1264
|
+
...canonicalTextPropFields("text"),
|
|
1265
|
+
// `as: 'p'` keeps the block-level rendering the old `content` default produced (STORA-550).
|
|
1266
|
+
defaultProps: { text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", as: "p" },
|
|
1217
1267
|
propFields: [
|
|
1218
|
-
{ name: "
|
|
1268
|
+
{ name: "text", label: "Content", type: "string", defaultValue: "Lorem ipsum dolor sit amet." }
|
|
1219
1269
|
],
|
|
1220
1270
|
traits: [
|
|
1221
1271
|
idTrait(),
|
|
@@ -1223,8 +1273,9 @@ var textDefinition = {
|
|
|
1223
1273
|
ariaLabelTrait()
|
|
1224
1274
|
],
|
|
1225
1275
|
validateProps: (props) => {
|
|
1226
|
-
|
|
1227
|
-
|
|
1276
|
+
const value = props.text ?? props.content;
|
|
1277
|
+
if (!(0, import_schema3.isVariableBinding)(value) && (typeof value !== "string" || value.trim().length === 0)) {
|
|
1278
|
+
return ['Text requires a non-empty "text".'];
|
|
1228
1279
|
}
|
|
1229
1280
|
return true;
|
|
1230
1281
|
},
|
|
@@ -1238,13 +1289,14 @@ var textDefinition = {
|
|
|
1238
1289
|
};
|
|
1239
1290
|
|
|
1240
1291
|
// src/definitions/typography/paragraph.ts
|
|
1241
|
-
var
|
|
1292
|
+
var import_schema4 = require("@kubuild/schema");
|
|
1242
1293
|
var paragraphDefinition = {
|
|
1243
1294
|
type: "paragraph",
|
|
1244
1295
|
label: "Paragraph",
|
|
1245
1296
|
category: "typography",
|
|
1246
1297
|
icon: "paragraph",
|
|
1247
1298
|
acceptsChildren: false,
|
|
1299
|
+
...canonicalTextPropFields("paragraph"),
|
|
1248
1300
|
defaultProps: {
|
|
1249
1301
|
text: "A paragraph of text with clean semantic typography."
|
|
1250
1302
|
},
|
|
@@ -1264,7 +1316,7 @@ var paragraphDefinition = {
|
|
|
1264
1316
|
validateProps: (props) => {
|
|
1265
1317
|
const errors = [];
|
|
1266
1318
|
const textVal = props.text ?? props.content;
|
|
1267
|
-
if (textVal !== void 0 && !(0,
|
|
1319
|
+
if (textVal !== void 0 && !(0, import_schema4.isVariableBinding)(textVal) && (typeof textVal !== "string" || textVal.trim().length === 0)) {
|
|
1268
1320
|
errors.push('Paragraph requires a non-empty "text".');
|
|
1269
1321
|
}
|
|
1270
1322
|
return errors.length > 0 ? errors : true;
|
|
@@ -1280,13 +1332,14 @@ var paragraphDefinition = {
|
|
|
1280
1332
|
};
|
|
1281
1333
|
|
|
1282
1334
|
// src/definitions/typography/link.ts
|
|
1283
|
-
var
|
|
1335
|
+
var import_schema5 = require("@kubuild/schema");
|
|
1284
1336
|
var linkDefinition = {
|
|
1285
1337
|
type: "link",
|
|
1286
1338
|
label: "Link",
|
|
1287
1339
|
category: "typography",
|
|
1288
1340
|
icon: "link",
|
|
1289
1341
|
acceptsChildren: false,
|
|
1342
|
+
...canonicalTextPropFields("link"),
|
|
1290
1343
|
defaultProps: {
|
|
1291
1344
|
text: "Click here",
|
|
1292
1345
|
href: "#",
|
|
@@ -1320,19 +1373,19 @@ var linkDefinition = {
|
|
|
1320
1373
|
],
|
|
1321
1374
|
validateProps: (props) => {
|
|
1322
1375
|
const errors = [];
|
|
1323
|
-
if (props.text !== void 0 && !(0,
|
|
1376
|
+
if (props.text !== void 0 && !(0, import_schema5.isVariableBinding)(props.text) && (typeof props.text !== "string" || props.text.trim().length === 0)) {
|
|
1324
1377
|
errors.push('Link requires a non-empty "text".');
|
|
1325
1378
|
}
|
|
1326
|
-
if (props.href !== void 0 && typeof props.href !== "string" && !(0,
|
|
1379
|
+
if (props.href !== void 0 && typeof props.href !== "string" && !(0, import_schema5.isVariableBinding)(props.href)) {
|
|
1327
1380
|
errors.push('Link "href" must be a string when provided.');
|
|
1328
1381
|
}
|
|
1329
|
-
if (props.target !== void 0 && !(0,
|
|
1382
|
+
if (props.target !== void 0 && !(0, import_schema5.isVariableBinding)(props.target)) {
|
|
1330
1383
|
const allowedTargets = ["_self", "_blank", "_parent", "_top"];
|
|
1331
1384
|
if (typeof props.target !== "string" || !allowedTargets.includes(props.target)) {
|
|
1332
1385
|
errors.push(`Link "target" must be one of: ${allowedTargets.join(", ")}.`);
|
|
1333
1386
|
}
|
|
1334
1387
|
}
|
|
1335
|
-
if (props.rel !== void 0 && typeof props.rel !== "string" && !(0,
|
|
1388
|
+
if (props.rel !== void 0 && typeof props.rel !== "string" && !(0, import_schema5.isVariableBinding)(props.rel)) {
|
|
1336
1389
|
errors.push('Link "rel" must be a string when provided.');
|
|
1337
1390
|
}
|
|
1338
1391
|
return errors.length > 0 ? errors : true;
|
|
@@ -1347,7 +1400,7 @@ var linkDefinition = {
|
|
|
1347
1400
|
};
|
|
1348
1401
|
|
|
1349
1402
|
// src/definitions/typography/blockquote.ts
|
|
1350
|
-
var
|
|
1403
|
+
var import_schema6 = require("@kubuild/schema");
|
|
1351
1404
|
var blockquoteDefinition = {
|
|
1352
1405
|
type: "blockquote",
|
|
1353
1406
|
label: "Blockquote",
|
|
@@ -1367,6 +1420,7 @@ var blockquoteDefinition = {
|
|
|
1367
1420
|
"html-embed",
|
|
1368
1421
|
"custom"
|
|
1369
1422
|
],
|
|
1423
|
+
...canonicalTextPropFields("blockquote"),
|
|
1370
1424
|
defaultProps: {
|
|
1371
1425
|
text: "\u201CSimplicity is the soul of efficiency.\u201D"
|
|
1372
1426
|
},
|
|
@@ -1387,10 +1441,10 @@ var blockquoteDefinition = {
|
|
|
1387
1441
|
],
|
|
1388
1442
|
validateProps: (props) => {
|
|
1389
1443
|
const errors = [];
|
|
1390
|
-
if (props.text !== void 0 && typeof props.text !== "string" && !(0,
|
|
1444
|
+
if (props.text !== void 0 && typeof props.text !== "string" && !(0, import_schema6.isVariableBinding)(props.text)) {
|
|
1391
1445
|
errors.push('Blockquote "text" must be a string when provided.');
|
|
1392
1446
|
}
|
|
1393
|
-
if (props.cite !== void 0 && typeof props.cite !== "string" && !(0,
|
|
1447
|
+
if (props.cite !== void 0 && typeof props.cite !== "string" && !(0, import_schema6.isVariableBinding)(props.cite)) {
|
|
1394
1448
|
errors.push('Blockquote "cite" must be a string when provided.');
|
|
1395
1449
|
}
|
|
1396
1450
|
return errors.length > 0 ? errors : true;
|
|
@@ -1413,13 +1467,14 @@ var blockquoteDefinition = {
|
|
|
1413
1467
|
};
|
|
1414
1468
|
|
|
1415
1469
|
// src/definitions/typography/badge.ts
|
|
1416
|
-
var
|
|
1470
|
+
var import_schema7 = require("@kubuild/schema");
|
|
1417
1471
|
var badgeDefinition = {
|
|
1418
1472
|
type: "badge",
|
|
1419
1473
|
label: "Badge",
|
|
1420
1474
|
category: "typography",
|
|
1421
1475
|
icon: "badge",
|
|
1422
1476
|
acceptsChildren: false,
|
|
1477
|
+
...canonicalTextPropFields("badge"),
|
|
1423
1478
|
defaultProps: {
|
|
1424
1479
|
text: "Badge",
|
|
1425
1480
|
variant: "default"
|
|
@@ -1447,10 +1502,10 @@ var badgeDefinition = {
|
|
|
1447
1502
|
],
|
|
1448
1503
|
validateProps: (props) => {
|
|
1449
1504
|
const errors = [];
|
|
1450
|
-
if (props.text !== void 0 && !(0,
|
|
1505
|
+
if (props.text !== void 0 && !(0, import_schema7.isVariableBinding)(props.text) && (typeof props.text !== "string" || props.text.trim().length === 0)) {
|
|
1451
1506
|
errors.push('Badge requires a non-empty "text".');
|
|
1452
1507
|
}
|
|
1453
|
-
if (props.variant !== void 0 && typeof props.variant !== "string" && !(0,
|
|
1508
|
+
if (props.variant !== void 0 && typeof props.variant !== "string" && !(0, import_schema7.isVariableBinding)(props.variant)) {
|
|
1454
1509
|
errors.push('Badge "variant" must be a string.');
|
|
1455
1510
|
}
|
|
1456
1511
|
return errors.length > 0 ? errors : true;
|
|
@@ -1474,7 +1529,7 @@ var badgeDefinition = {
|
|
|
1474
1529
|
};
|
|
1475
1530
|
|
|
1476
1531
|
// src/definitions/typography/code-block.ts
|
|
1477
|
-
var
|
|
1532
|
+
var import_schema8 = require("@kubuild/schema");
|
|
1478
1533
|
var codeBlockDefinition = {
|
|
1479
1534
|
type: "code-block",
|
|
1480
1535
|
label: "Code Block",
|
|
@@ -1506,10 +1561,10 @@ var codeBlockDefinition = {
|
|
|
1506
1561
|
],
|
|
1507
1562
|
validateProps: (props) => {
|
|
1508
1563
|
const errors = [];
|
|
1509
|
-
if (props.code !== void 0 && typeof props.code !== "string" && !(0,
|
|
1564
|
+
if (props.code !== void 0 && typeof props.code !== "string" && !(0, import_schema8.isVariableBinding)(props.code)) {
|
|
1510
1565
|
errors.push('Code Block "code" must be a string when provided.');
|
|
1511
1566
|
}
|
|
1512
|
-
if (props.language !== void 0 && typeof props.language !== "string" && !(0,
|
|
1567
|
+
if (props.language !== void 0 && typeof props.language !== "string" && !(0, import_schema8.isVariableBinding)(props.language)) {
|
|
1513
1568
|
errors.push('Code Block "language" must be a string when provided.');
|
|
1514
1569
|
}
|
|
1515
1570
|
return errors.length > 0 ? errors : true;
|
|
@@ -1531,7 +1586,7 @@ var codeBlockDefinition = {
|
|
|
1531
1586
|
};
|
|
1532
1587
|
|
|
1533
1588
|
// src/definitions/media/image.ts
|
|
1534
|
-
var
|
|
1589
|
+
var import_schema9 = require("@kubuild/schema");
|
|
1535
1590
|
var imageDefinition = {
|
|
1536
1591
|
type: "image",
|
|
1537
1592
|
label: "Image",
|
|
@@ -1561,12 +1616,12 @@ var imageDefinition = {
|
|
|
1561
1616
|
],
|
|
1562
1617
|
validateProps: (props) => {
|
|
1563
1618
|
const errors = [];
|
|
1564
|
-
const hasSrc = typeof props.src === "string" && props.src.trim().length > 0 || (0,
|
|
1565
|
-
const hasAsset = (0,
|
|
1619
|
+
const hasSrc = typeof props.src === "string" && props.src.trim().length > 0 || (0, import_schema9.isVariableBinding)(props.src);
|
|
1620
|
+
const hasAsset = (0, import_schema9.isAssetReference)(props.asset);
|
|
1566
1621
|
if (!hasSrc && !hasAsset) {
|
|
1567
1622
|
errors.push('Image requires either a non-empty "src" URL or a valid "asset" reference.');
|
|
1568
1623
|
}
|
|
1569
|
-
const hasAlt = typeof props.alt === "string" && props.alt.trim().length > 0 || (0,
|
|
1624
|
+
const hasAlt = typeof props.alt === "string" && props.alt.trim().length > 0 || (0, import_schema9.isVariableBinding)(props.alt);
|
|
1570
1625
|
if (!hasAlt) {
|
|
1571
1626
|
errors.push('Image requires non-empty "alt" text.');
|
|
1572
1627
|
}
|
|
@@ -1582,7 +1637,7 @@ var imageDefinition = {
|
|
|
1582
1637
|
};
|
|
1583
1638
|
|
|
1584
1639
|
// src/definitions/media/video.ts
|
|
1585
|
-
var
|
|
1640
|
+
var import_schema10 = require("@kubuild/schema");
|
|
1586
1641
|
var videoDefinition = {
|
|
1587
1642
|
type: "video",
|
|
1588
1643
|
label: "Video",
|
|
@@ -1650,25 +1705,25 @@ var videoDefinition = {
|
|
|
1650
1705
|
],
|
|
1651
1706
|
validateProps: (props) => {
|
|
1652
1707
|
const errors = [];
|
|
1653
|
-
if (props.src !== void 0 && typeof props.src !== "string" && !(0,
|
|
1708
|
+
if (props.src !== void 0 && typeof props.src !== "string" && !(0, import_schema10.isVariableBinding)(props.src)) {
|
|
1654
1709
|
errors.push('Video "src" must be a string when provided.');
|
|
1655
1710
|
}
|
|
1656
|
-
if (props.provider !== void 0 && !(0,
|
|
1711
|
+
if (props.provider !== void 0 && !(0, import_schema10.isVariableBinding)(props.provider)) {
|
|
1657
1712
|
const allowed = ["auto", "html5", "youtube", "vimeo"];
|
|
1658
1713
|
if (typeof props.provider !== "string" || !allowed.includes(props.provider)) {
|
|
1659
1714
|
errors.push(`Video "provider" must be one of: ${allowed.join(", ")}.`);
|
|
1660
1715
|
}
|
|
1661
1716
|
}
|
|
1662
|
-
if (props.controls !== void 0 && typeof props.controls !== "boolean" && !(0,
|
|
1717
|
+
if (props.controls !== void 0 && typeof props.controls !== "boolean" && !(0, import_schema10.isVariableBinding)(props.controls)) {
|
|
1663
1718
|
errors.push('Video "controls" must be a boolean.');
|
|
1664
1719
|
}
|
|
1665
|
-
if (props.autoplay !== void 0 && typeof props.autoplay !== "boolean" && !(0,
|
|
1720
|
+
if (props.autoplay !== void 0 && typeof props.autoplay !== "boolean" && !(0, import_schema10.isVariableBinding)(props.autoplay)) {
|
|
1666
1721
|
errors.push('Video "autoplay" must be a boolean.');
|
|
1667
1722
|
}
|
|
1668
|
-
if (props.loop !== void 0 && typeof props.loop !== "boolean" && !(0,
|
|
1723
|
+
if (props.loop !== void 0 && typeof props.loop !== "boolean" && !(0, import_schema10.isVariableBinding)(props.loop)) {
|
|
1669
1724
|
errors.push('Video "loop" must be a boolean.');
|
|
1670
1725
|
}
|
|
1671
|
-
if (props.muted !== void 0 && typeof props.muted !== "boolean" && !(0,
|
|
1726
|
+
if (props.muted !== void 0 && typeof props.muted !== "boolean" && !(0, import_schema10.isVariableBinding)(props.muted)) {
|
|
1672
1727
|
errors.push('Video "muted" must be a boolean.');
|
|
1673
1728
|
}
|
|
1674
1729
|
return errors.length > 0 ? errors : true;
|
|
@@ -1686,7 +1741,7 @@ var videoDefinition = {
|
|
|
1686
1741
|
};
|
|
1687
1742
|
|
|
1688
1743
|
// src/definitions/media/icon.ts
|
|
1689
|
-
var
|
|
1744
|
+
var import_schema11 = require("@kubuild/schema");
|
|
1690
1745
|
var iconDefinition = {
|
|
1691
1746
|
type: "icon",
|
|
1692
1747
|
label: "Icon",
|
|
@@ -1712,15 +1767,15 @@ var iconDefinition = {
|
|
|
1712
1767
|
],
|
|
1713
1768
|
validateProps: (props) => {
|
|
1714
1769
|
const errors = [];
|
|
1715
|
-
if (props.name !== void 0 && !(0,
|
|
1770
|
+
if (props.name !== void 0 && !(0, import_schema11.isVariableBinding)(props.name) && (typeof props.name !== "string" || props.name.trim().length === 0)) {
|
|
1716
1771
|
errors.push('Icon requires a non-empty "name".');
|
|
1717
1772
|
}
|
|
1718
|
-
if (props.size !== void 0 && !(0,
|
|
1773
|
+
if (props.size !== void 0 && !(0, import_schema11.isVariableBinding)(props.size)) {
|
|
1719
1774
|
if (typeof props.size !== "number" || props.size < 0) {
|
|
1720
1775
|
errors.push('Icon "size" must be a non-negative number.');
|
|
1721
1776
|
}
|
|
1722
1777
|
}
|
|
1723
|
-
if (props.strokeWidth !== void 0 && !(0,
|
|
1778
|
+
if (props.strokeWidth !== void 0 && !(0, import_schema11.isVariableBinding)(props.strokeWidth)) {
|
|
1724
1779
|
if (typeof props.strokeWidth !== "number" || props.strokeWidth < 0) {
|
|
1725
1780
|
errors.push('Icon "strokeWidth" must be a non-negative number.');
|
|
1726
1781
|
}
|
|
@@ -1737,7 +1792,7 @@ var iconDefinition = {
|
|
|
1737
1792
|
};
|
|
1738
1793
|
|
|
1739
1794
|
// src/definitions/media/html-embed.ts
|
|
1740
|
-
var
|
|
1795
|
+
var import_schema12 = require("@kubuild/schema");
|
|
1741
1796
|
var htmlEmbedDefinition = {
|
|
1742
1797
|
type: "html-embed",
|
|
1743
1798
|
label: "HTML Embed",
|
|
@@ -1761,7 +1816,7 @@ var htmlEmbedDefinition = {
|
|
|
1761
1816
|
],
|
|
1762
1817
|
validateProps: (props) => {
|
|
1763
1818
|
const errors = [];
|
|
1764
|
-
if (props.html !== void 0 && typeof props.html !== "string" && !(0,
|
|
1819
|
+
if (props.html !== void 0 && typeof props.html !== "string" && !(0, import_schema12.isVariableBinding)(props.html)) {
|
|
1765
1820
|
errors.push('HTML Embed "html" must be a string.');
|
|
1766
1821
|
}
|
|
1767
1822
|
return errors.length > 0 ? errors : true;
|
|
@@ -1775,7 +1830,7 @@ var htmlEmbedDefinition = {
|
|
|
1775
1830
|
};
|
|
1776
1831
|
|
|
1777
1832
|
// src/definitions/data/table.ts
|
|
1778
|
-
var
|
|
1833
|
+
var import_schema13 = require("@kubuild/schema");
|
|
1779
1834
|
var tableDefinition = {
|
|
1780
1835
|
type: "table",
|
|
1781
1836
|
label: "Table",
|
|
@@ -1815,13 +1870,13 @@ var tableDefinition = {
|
|
|
1815
1870
|
],
|
|
1816
1871
|
validateProps: (props) => {
|
|
1817
1872
|
const errors = [];
|
|
1818
|
-
if (props.striped !== void 0 && typeof props.striped !== "boolean" && !(0,
|
|
1873
|
+
if (props.striped !== void 0 && typeof props.striped !== "boolean" && !(0, import_schema13.isVariableBinding)(props.striped)) {
|
|
1819
1874
|
errors.push('Table "striped" must be a boolean.');
|
|
1820
1875
|
}
|
|
1821
|
-
if (props.bordered !== void 0 && typeof props.bordered !== "boolean" && !(0,
|
|
1876
|
+
if (props.bordered !== void 0 && typeof props.bordered !== "boolean" && !(0, import_schema13.isVariableBinding)(props.bordered)) {
|
|
1822
1877
|
errors.push('Table "bordered" must be a boolean.');
|
|
1823
1878
|
}
|
|
1824
|
-
if (props.compact !== void 0 && typeof props.compact !== "boolean" && !(0,
|
|
1879
|
+
if (props.compact !== void 0 && typeof props.compact !== "boolean" && !(0, import_schema13.isVariableBinding)(props.compact)) {
|
|
1825
1880
|
errors.push('Table "compact" must be a boolean.');
|
|
1826
1881
|
}
|
|
1827
1882
|
return errors.length > 0 ? errors : true;
|
|
@@ -1906,22 +1961,22 @@ var tableCellDefinition = {
|
|
|
1906
1961
|
],
|
|
1907
1962
|
validateProps: (props) => {
|
|
1908
1963
|
const errors = [];
|
|
1909
|
-
if (props.tag !== void 0 && !(0,
|
|
1964
|
+
if (props.tag !== void 0 && !(0, import_schema13.isVariableBinding)(props.tag)) {
|
|
1910
1965
|
if (props.tag !== "td" && props.tag !== "th") {
|
|
1911
1966
|
errors.push('Table Cell "tag" must be either "td" or "th".');
|
|
1912
1967
|
}
|
|
1913
1968
|
}
|
|
1914
|
-
if (props.colSpan !== void 0 && !(0,
|
|
1969
|
+
if (props.colSpan !== void 0 && !(0, import_schema13.isVariableBinding)(props.colSpan)) {
|
|
1915
1970
|
if (typeof props.colSpan !== "number" || props.colSpan < 1 || !Number.isInteger(props.colSpan)) {
|
|
1916
1971
|
errors.push('Table Cell "colSpan" must be a positive integer (>= 1).');
|
|
1917
1972
|
}
|
|
1918
1973
|
}
|
|
1919
|
-
if (props.rowSpan !== void 0 && !(0,
|
|
1974
|
+
if (props.rowSpan !== void 0 && !(0, import_schema13.isVariableBinding)(props.rowSpan)) {
|
|
1920
1975
|
if (typeof props.rowSpan !== "number" || props.rowSpan < 1 || !Number.isInteger(props.rowSpan)) {
|
|
1921
1976
|
errors.push('Table Cell "rowSpan" must be a positive integer (>= 1).');
|
|
1922
1977
|
}
|
|
1923
1978
|
}
|
|
1924
|
-
if (props.text !== void 0 && typeof props.text !== "string" && !(0,
|
|
1979
|
+
if (props.text !== void 0 && typeof props.text !== "string" && !(0, import_schema13.isVariableBinding)(props.text)) {
|
|
1925
1980
|
errors.push('Table Cell "text" must be a string when provided.');
|
|
1926
1981
|
}
|
|
1927
1982
|
return errors.length > 0 ? errors : true;
|
|
@@ -1938,7 +1993,7 @@ var tableCellDefinition = {
|
|
|
1938
1993
|
};
|
|
1939
1994
|
|
|
1940
1995
|
// src/definitions/data/list.ts
|
|
1941
|
-
var
|
|
1996
|
+
var import_schema14 = require("@kubuild/schema");
|
|
1942
1997
|
var listDefinition = {
|
|
1943
1998
|
type: "list",
|
|
1944
1999
|
label: "List",
|
|
@@ -1987,12 +2042,12 @@ var listDefinition = {
|
|
|
1987
2042
|
],
|
|
1988
2043
|
validateProps: (props) => {
|
|
1989
2044
|
const errors = [];
|
|
1990
|
-
if (props.tag !== void 0 && !(0,
|
|
2045
|
+
if (props.tag !== void 0 && !(0, import_schema14.isVariableBinding)(props.tag)) {
|
|
1991
2046
|
if (props.tag !== "ul" && props.tag !== "ol") {
|
|
1992
2047
|
errors.push('List "tag" must be either "ul" or "ol".');
|
|
1993
2048
|
}
|
|
1994
2049
|
}
|
|
1995
|
-
if (props.listStyleType !== void 0 && !(0,
|
|
2050
|
+
if (props.listStyleType !== void 0 && !(0, import_schema14.isVariableBinding)(props.listStyleType)) {
|
|
1996
2051
|
const allowed = ["disc", "circle", "square", "decimal", "none", "custom-icon"];
|
|
1997
2052
|
if (typeof props.listStyleType !== "string" || !allowed.includes(props.listStyleType)) {
|
|
1998
2053
|
errors.push(`List "listStyleType" must be one of: ${allowed.join(", ")}.`);
|
|
@@ -2047,7 +2102,7 @@ var listItemDefinition = {
|
|
|
2047
2102
|
],
|
|
2048
2103
|
validateProps: (props) => {
|
|
2049
2104
|
const errors = [];
|
|
2050
|
-
if (props.text !== void 0 && typeof props.text !== "string" && !(0,
|
|
2105
|
+
if (props.text !== void 0 && typeof props.text !== "string" && !(0, import_schema14.isVariableBinding)(props.text)) {
|
|
2051
2106
|
errors.push('List Item "text" must be a string when provided.');
|
|
2052
2107
|
}
|
|
2053
2108
|
return errors.length > 0 ? errors : true;
|
|
@@ -2084,7 +2139,7 @@ var collectionDefinition = {
|
|
|
2084
2139
|
};
|
|
2085
2140
|
|
|
2086
2141
|
// src/definitions/form/button.ts
|
|
2087
|
-
var
|
|
2142
|
+
var import_schema15 = require("@kubuild/schema");
|
|
2088
2143
|
var buttonDefinition = {
|
|
2089
2144
|
type: "button",
|
|
2090
2145
|
label: "Button",
|
|
@@ -2092,6 +2147,7 @@ var buttonDefinition = {
|
|
|
2092
2147
|
icon: "mouse-pointer",
|
|
2093
2148
|
acceptsChildren: false,
|
|
2094
2149
|
capabilities: ["actionRegistry"],
|
|
2150
|
+
...canonicalTextPropFields("button"),
|
|
2095
2151
|
defaultProps: {
|
|
2096
2152
|
label: "Click Me",
|
|
2097
2153
|
variant: "primary"
|
|
@@ -2135,22 +2191,22 @@ var buttonDefinition = {
|
|
|
2135
2191
|
],
|
|
2136
2192
|
validateProps: (props) => {
|
|
2137
2193
|
const errors = [];
|
|
2138
|
-
const hasLabel = typeof props.label === "string" && props.label.trim().length > 0 || (0,
|
|
2194
|
+
const hasLabel = typeof props.label === "string" && props.label.trim().length > 0 || (0, import_schema15.isVariableBinding)(props.label);
|
|
2139
2195
|
if (!hasLabel) {
|
|
2140
2196
|
errors.push('Button requires a non-empty "label".');
|
|
2141
2197
|
}
|
|
2142
|
-
if (props.href !== void 0 && typeof props.href !== "string" && !(0,
|
|
2198
|
+
if (props.href !== void 0 && typeof props.href !== "string" && !(0, import_schema15.isVariableBinding)(props.href)) {
|
|
2143
2199
|
errors.push('Button "href" must be a string when provided.');
|
|
2144
2200
|
}
|
|
2145
|
-
if (props.buttonType !== void 0 && !(0,
|
|
2201
|
+
if (props.buttonType !== void 0 && !(0, import_schema15.isVariableBinding)(props.buttonType)) {
|
|
2146
2202
|
if (!["button", "submit", "reset"].includes(props.buttonType)) {
|
|
2147
2203
|
errors.push('Button "buttonType" must be one of: "button", "submit", "reset".');
|
|
2148
2204
|
}
|
|
2149
2205
|
}
|
|
2150
|
-
if (props.action !== void 0 && !(0,
|
|
2206
|
+
if (props.action !== void 0 && !(0, import_schema15.isActionBinding)(props.action)) {
|
|
2151
2207
|
errors.push('Button "action" must be a valid action binding when provided.');
|
|
2152
2208
|
}
|
|
2153
|
-
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0,
|
|
2209
|
+
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0, import_schema15.isVariableBinding)(props.disabled)) {
|
|
2154
2210
|
errors.push('Button "disabled" must be a boolean when provided.');
|
|
2155
2211
|
}
|
|
2156
2212
|
return errors.length > 0 ? errors : true;
|
|
@@ -2238,25 +2294,25 @@ var buttonSubmitDefinition = {
|
|
|
2238
2294
|
],
|
|
2239
2295
|
validateProps: (props) => {
|
|
2240
2296
|
const errors = [];
|
|
2241
|
-
const hasLabel = typeof props.label === "string" && props.label.trim().length > 0 || (0,
|
|
2297
|
+
const hasLabel = typeof props.label === "string" && props.label.trim().length > 0 || (0, import_schema15.isVariableBinding)(props.label);
|
|
2242
2298
|
if (!hasLabel) {
|
|
2243
2299
|
errors.push('Submit Button requires a non-empty "label".');
|
|
2244
2300
|
}
|
|
2245
|
-
if (props.loadingText !== void 0 && typeof props.loadingText !== "string" && !(0,
|
|
2301
|
+
if (props.loadingText !== void 0 && typeof props.loadingText !== "string" && !(0, import_schema15.isVariableBinding)(props.loadingText)) {
|
|
2246
2302
|
errors.push('Submit Button "loadingText" must be a string when provided.');
|
|
2247
2303
|
}
|
|
2248
|
-
if (props.showSpinner !== void 0 && typeof props.showSpinner !== "boolean" && !(0,
|
|
2304
|
+
if (props.showSpinner !== void 0 && typeof props.showSpinner !== "boolean" && !(0, import_schema15.isVariableBinding)(props.showSpinner)) {
|
|
2249
2305
|
errors.push('Submit Button "showSpinner" must be a boolean when provided.');
|
|
2250
2306
|
}
|
|
2251
|
-
if (props.autoDisableOnSubmit !== void 0 && typeof props.autoDisableOnSubmit !== "boolean" && !(0,
|
|
2307
|
+
if (props.autoDisableOnSubmit !== void 0 && typeof props.autoDisableOnSubmit !== "boolean" && !(0, import_schema15.isVariableBinding)(props.autoDisableOnSubmit)) {
|
|
2252
2308
|
errors.push('Submit Button "autoDisableOnSubmit" must be a boolean when provided.');
|
|
2253
2309
|
}
|
|
2254
|
-
if (props.buttonType !== void 0 && !(0,
|
|
2310
|
+
if (props.buttonType !== void 0 && !(0, import_schema15.isVariableBinding)(props.buttonType)) {
|
|
2255
2311
|
if (!["submit", "reset", "button"].includes(props.buttonType)) {
|
|
2256
2312
|
errors.push('Submit Button "buttonType" must be one of: "submit", "reset", "button".');
|
|
2257
2313
|
}
|
|
2258
2314
|
}
|
|
2259
|
-
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0,
|
|
2315
|
+
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0, import_schema15.isVariableBinding)(props.disabled)) {
|
|
2260
2316
|
errors.push('Submit Button "disabled" must be a boolean when provided.');
|
|
2261
2317
|
}
|
|
2262
2318
|
return errors.length > 0 ? errors : true;
|
|
@@ -2283,7 +2339,7 @@ var buttonSubmitDefinition = {
|
|
|
2283
2339
|
};
|
|
2284
2340
|
|
|
2285
2341
|
// src/definitions/form/form.ts
|
|
2286
|
-
var
|
|
2342
|
+
var import_schema16 = require("@kubuild/schema");
|
|
2287
2343
|
var formDefinition = {
|
|
2288
2344
|
type: "form",
|
|
2289
2345
|
label: "Form",
|
|
@@ -2370,34 +2426,34 @@ var formDefinition = {
|
|
|
2370
2426
|
],
|
|
2371
2427
|
validateProps: (props) => {
|
|
2372
2428
|
const errors = [];
|
|
2373
|
-
if (props.name !== void 0 && typeof props.name !== "string" && !(0,
|
|
2429
|
+
if (props.name !== void 0 && typeof props.name !== "string" && !(0, import_schema16.isVariableBinding)(props.name)) {
|
|
2374
2430
|
errors.push('Form "name" must be a string when provided.');
|
|
2375
2431
|
}
|
|
2376
|
-
if (props.action !== void 0 && typeof props.action !== "string" && !(0,
|
|
2432
|
+
if (props.action !== void 0 && typeof props.action !== "string" && !(0, import_schema16.isVariableBinding)(props.action)) {
|
|
2377
2433
|
errors.push('Form "action" must be a string when provided.');
|
|
2378
2434
|
}
|
|
2379
|
-
if (props.method !== void 0 && !(0,
|
|
2435
|
+
if (props.method !== void 0 && !(0, import_schema16.isVariableBinding)(props.method)) {
|
|
2380
2436
|
if (!["GET", "POST", "get", "post"].includes(props.method)) {
|
|
2381
2437
|
errors.push('Form "method" must be either "GET" or "POST".');
|
|
2382
2438
|
}
|
|
2383
2439
|
}
|
|
2384
|
-
if (props.target !== void 0 && !(0,
|
|
2440
|
+
if (props.target !== void 0 && !(0, import_schema16.isVariableBinding)(props.target)) {
|
|
2385
2441
|
if (!["_self", "_blank", "_parent", "_top"].includes(props.target)) {
|
|
2386
2442
|
errors.push('Form "target" must be one of: "_self", "_blank", "_parent", "_top".');
|
|
2387
2443
|
}
|
|
2388
2444
|
}
|
|
2389
|
-
if (props.autoComplete !== void 0 && !(0,
|
|
2445
|
+
if (props.autoComplete !== void 0 && !(0, import_schema16.isVariableBinding)(props.autoComplete)) {
|
|
2390
2446
|
if (!["on", "off"].includes(props.autoComplete)) {
|
|
2391
2447
|
errors.push('Form "autoComplete" must be either "on" or "off".');
|
|
2392
2448
|
}
|
|
2393
2449
|
}
|
|
2394
|
-
if (props.preventDefault !== void 0 && typeof props.preventDefault !== "boolean" && !(0,
|
|
2450
|
+
if (props.preventDefault !== void 0 && typeof props.preventDefault !== "boolean" && !(0, import_schema16.isVariableBinding)(props.preventDefault)) {
|
|
2395
2451
|
errors.push('Form "preventDefault" must be a boolean when provided.');
|
|
2396
2452
|
}
|
|
2397
|
-
if (props.scrollToFirstError !== void 0 && typeof props.scrollToFirstError !== "boolean" && !(0,
|
|
2453
|
+
if (props.scrollToFirstError !== void 0 && typeof props.scrollToFirstError !== "boolean" && !(0, import_schema16.isVariableBinding)(props.scrollToFirstError)) {
|
|
2398
2454
|
errors.push('Form "scrollToFirstError" must be a boolean when provided.');
|
|
2399
2455
|
}
|
|
2400
|
-
if (props.resetOnSubmit !== void 0 && typeof props.resetOnSubmit !== "boolean" && !(0,
|
|
2456
|
+
if (props.resetOnSubmit !== void 0 && typeof props.resetOnSubmit !== "boolean" && !(0, import_schema16.isVariableBinding)(props.resetOnSubmit)) {
|
|
2401
2457
|
errors.push('Form "resetOnSubmit" must be a boolean when provided.');
|
|
2402
2458
|
}
|
|
2403
2459
|
return errors.length > 0 ? errors : true;
|
|
@@ -2413,7 +2469,7 @@ var formDefinition = {
|
|
|
2413
2469
|
};
|
|
2414
2470
|
|
|
2415
2471
|
// src/definitions/form/input.ts
|
|
2416
|
-
var
|
|
2472
|
+
var import_schema17 = require("@kubuild/schema");
|
|
2417
2473
|
var inputDefinition = {
|
|
2418
2474
|
type: "input",
|
|
2419
2475
|
label: "Input",
|
|
@@ -2495,47 +2551,47 @@ var inputDefinition = {
|
|
|
2495
2551
|
],
|
|
2496
2552
|
validateProps: (props) => {
|
|
2497
2553
|
const errors = [];
|
|
2498
|
-
if (props.name !== void 0 && typeof props.name !== "string" && !(0,
|
|
2554
|
+
if (props.name !== void 0 && typeof props.name !== "string" && !(0, import_schema17.isVariableBinding)(props.name)) {
|
|
2499
2555
|
errors.push('Input "name" must be a string when provided.');
|
|
2500
2556
|
}
|
|
2501
|
-
if (props.type !== void 0 && !(0,
|
|
2557
|
+
if (props.type !== void 0 && !(0, import_schema17.isVariableBinding)(props.type)) {
|
|
2502
2558
|
const validTypes = ["text", "email", "number", "password", "tel", "url", "search", "date", "hidden"];
|
|
2503
2559
|
if (!validTypes.includes(props.type)) {
|
|
2504
2560
|
errors.push(`Input "type" must be one of: ${validTypes.join(", ")}.`);
|
|
2505
2561
|
}
|
|
2506
2562
|
}
|
|
2507
|
-
if (props.placeholder !== void 0 && typeof props.placeholder !== "string" && !(0,
|
|
2563
|
+
if (props.placeholder !== void 0 && typeof props.placeholder !== "string" && !(0, import_schema17.isVariableBinding)(props.placeholder)) {
|
|
2508
2564
|
errors.push('Input "placeholder" must be a string when provided.');
|
|
2509
2565
|
}
|
|
2510
|
-
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0,
|
|
2566
|
+
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0, import_schema17.isVariableBinding)(props.required)) {
|
|
2511
2567
|
errors.push('Input "required" must be a boolean when provided.');
|
|
2512
2568
|
}
|
|
2513
|
-
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0,
|
|
2569
|
+
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0, import_schema17.isVariableBinding)(props.disabled)) {
|
|
2514
2570
|
errors.push('Input "disabled" must be a boolean when provided.');
|
|
2515
2571
|
}
|
|
2516
|
-
if (props.readOnly !== void 0 && typeof props.readOnly !== "boolean" && !(0,
|
|
2572
|
+
if (props.readOnly !== void 0 && typeof props.readOnly !== "boolean" && !(0, import_schema17.isVariableBinding)(props.readOnly)) {
|
|
2517
2573
|
errors.push('Input "readOnly" must be a boolean when provided.');
|
|
2518
2574
|
}
|
|
2519
|
-
if (props.pattern !== void 0 && typeof props.pattern !== "string" && !(0,
|
|
2575
|
+
if (props.pattern !== void 0 && typeof props.pattern !== "string" && !(0, import_schema17.isVariableBinding)(props.pattern)) {
|
|
2520
2576
|
errors.push('Input "pattern" must be a string when provided.');
|
|
2521
2577
|
}
|
|
2522
|
-
if (props.minLength !== void 0 && !(0,
|
|
2578
|
+
if (props.minLength !== void 0 && !(0, import_schema17.isVariableBinding)(props.minLength)) {
|
|
2523
2579
|
if (typeof props.minLength !== "number" || props.minLength < 0 || !Number.isInteger(props.minLength)) {
|
|
2524
2580
|
errors.push('Input "minLength" must be a non-negative integer when provided.');
|
|
2525
2581
|
}
|
|
2526
2582
|
}
|
|
2527
|
-
if (props.maxLength !== void 0 && !(0,
|
|
2583
|
+
if (props.maxLength !== void 0 && !(0, import_schema17.isVariableBinding)(props.maxLength)) {
|
|
2528
2584
|
if (typeof props.maxLength !== "number" || props.maxLength < 0 || !Number.isInteger(props.maxLength)) {
|
|
2529
2585
|
errors.push('Input "maxLength" must be a non-negative integer when provided.');
|
|
2530
2586
|
}
|
|
2531
2587
|
}
|
|
2532
|
-
if (props.prefixIcon !== void 0 && typeof props.prefixIcon !== "string" && !(0,
|
|
2588
|
+
if (props.prefixIcon !== void 0 && typeof props.prefixIcon !== "string" && !(0, import_schema17.isVariableBinding)(props.prefixIcon)) {
|
|
2533
2589
|
errors.push('Input "prefixIcon" must be a string when provided.');
|
|
2534
2590
|
}
|
|
2535
|
-
if (props.suffixIcon !== void 0 && typeof props.suffixIcon !== "string" && !(0,
|
|
2591
|
+
if (props.suffixIcon !== void 0 && typeof props.suffixIcon !== "string" && !(0, import_schema17.isVariableBinding)(props.suffixIcon)) {
|
|
2536
2592
|
errors.push('Input "suffixIcon" must be a string when provided.');
|
|
2537
2593
|
}
|
|
2538
|
-
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0,
|
|
2594
|
+
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0, import_schema17.isVariableBinding)(props.helperText)) {
|
|
2539
2595
|
errors.push('Input "helperText" must be a string when provided.');
|
|
2540
2596
|
}
|
|
2541
2597
|
return errors.length > 0 ? errors : true;
|
|
@@ -2560,7 +2616,7 @@ var inputDefinition = {
|
|
|
2560
2616
|
};
|
|
2561
2617
|
|
|
2562
2618
|
// src/definitions/form/textarea.ts
|
|
2563
|
-
var
|
|
2619
|
+
var import_schema18 = require("@kubuild/schema");
|
|
2564
2620
|
var textareaDefinition = {
|
|
2565
2621
|
type: "textarea",
|
|
2566
2622
|
label: "Textarea",
|
|
@@ -2622,41 +2678,41 @@ var textareaDefinition = {
|
|
|
2622
2678
|
],
|
|
2623
2679
|
validateProps: (props) => {
|
|
2624
2680
|
const errors = [];
|
|
2625
|
-
if (props.name !== void 0 && typeof props.name !== "string" && !(0,
|
|
2681
|
+
if (props.name !== void 0 && typeof props.name !== "string" && !(0, import_schema18.isVariableBinding)(props.name)) {
|
|
2626
2682
|
errors.push('Textarea "name" must be a string when provided.');
|
|
2627
2683
|
}
|
|
2628
|
-
if (props.rows !== void 0 && !(0,
|
|
2684
|
+
if (props.rows !== void 0 && !(0, import_schema18.isVariableBinding)(props.rows)) {
|
|
2629
2685
|
if (typeof props.rows !== "number" || props.rows < 1 || !Number.isInteger(props.rows)) {
|
|
2630
2686
|
errors.push('Textarea "rows" must be a positive integer (>= 1).');
|
|
2631
2687
|
}
|
|
2632
2688
|
}
|
|
2633
|
-
if (props.placeholder !== void 0 && typeof props.placeholder !== "string" && !(0,
|
|
2689
|
+
if (props.placeholder !== void 0 && typeof props.placeholder !== "string" && !(0, import_schema18.isVariableBinding)(props.placeholder)) {
|
|
2634
2690
|
errors.push('Textarea "placeholder" must be a string when provided.');
|
|
2635
2691
|
}
|
|
2636
|
-
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0,
|
|
2692
|
+
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0, import_schema18.isVariableBinding)(props.required)) {
|
|
2637
2693
|
errors.push('Textarea "required" must be a boolean when provided.');
|
|
2638
2694
|
}
|
|
2639
|
-
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0,
|
|
2695
|
+
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0, import_schema18.isVariableBinding)(props.disabled)) {
|
|
2640
2696
|
errors.push('Textarea "disabled" must be a boolean when provided.');
|
|
2641
2697
|
}
|
|
2642
|
-
if (props.readOnly !== void 0 && typeof props.readOnly !== "boolean" && !(0,
|
|
2698
|
+
if (props.readOnly !== void 0 && typeof props.readOnly !== "boolean" && !(0, import_schema18.isVariableBinding)(props.readOnly)) {
|
|
2643
2699
|
errors.push('Textarea "readOnly" must be a boolean when provided.');
|
|
2644
2700
|
}
|
|
2645
|
-
if (props.resize !== void 0 && !(0,
|
|
2701
|
+
if (props.resize !== void 0 && !(0, import_schema18.isVariableBinding)(props.resize)) {
|
|
2646
2702
|
const allowedResize = ["vertical", "horizontal", "both", "none"];
|
|
2647
2703
|
if (typeof props.resize !== "string" || !allowedResize.includes(props.resize)) {
|
|
2648
2704
|
errors.push(`Textarea "resize" must be one of: ${allowedResize.join(", ")}.`);
|
|
2649
2705
|
}
|
|
2650
2706
|
}
|
|
2651
|
-
if (props.autoGrow !== void 0 && typeof props.autoGrow !== "boolean" && !(0,
|
|
2707
|
+
if (props.autoGrow !== void 0 && typeof props.autoGrow !== "boolean" && !(0, import_schema18.isVariableBinding)(props.autoGrow)) {
|
|
2652
2708
|
errors.push('Textarea "autoGrow" must be a boolean when provided.');
|
|
2653
2709
|
}
|
|
2654
|
-
if (props.maxCharCount !== void 0 && !(0,
|
|
2710
|
+
if (props.maxCharCount !== void 0 && !(0, import_schema18.isVariableBinding)(props.maxCharCount)) {
|
|
2655
2711
|
if (typeof props.maxCharCount !== "number" || props.maxCharCount < 1 || !Number.isInteger(props.maxCharCount)) {
|
|
2656
2712
|
errors.push('Textarea "maxCharCount" must be a positive integer (>= 1) when provided.');
|
|
2657
2713
|
}
|
|
2658
2714
|
}
|
|
2659
|
-
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0,
|
|
2715
|
+
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0, import_schema18.isVariableBinding)(props.helperText)) {
|
|
2660
2716
|
errors.push('Textarea "helperText" must be a string when provided.');
|
|
2661
2717
|
}
|
|
2662
2718
|
return errors.length > 0 ? errors : true;
|
|
@@ -2681,7 +2737,7 @@ var textareaDefinition = {
|
|
|
2681
2737
|
};
|
|
2682
2738
|
|
|
2683
2739
|
// src/definitions/form/select.ts
|
|
2684
|
-
var
|
|
2740
|
+
var import_schema19 = require("@kubuild/schema");
|
|
2685
2741
|
var selectDefinition = {
|
|
2686
2742
|
type: "select",
|
|
2687
2743
|
label: "Select",
|
|
@@ -2733,21 +2789,21 @@ var selectDefinition = {
|
|
|
2733
2789
|
],
|
|
2734
2790
|
validateProps: (props) => {
|
|
2735
2791
|
const errors = [];
|
|
2736
|
-
if (props.name !== void 0 && typeof props.name !== "string" && !(0,
|
|
2792
|
+
if (props.name !== void 0 && typeof props.name !== "string" && !(0, import_schema19.isVariableBinding)(props.name)) {
|
|
2737
2793
|
errors.push('Select "name" must be a string when provided.');
|
|
2738
2794
|
}
|
|
2739
|
-
if (props.options !== void 0 && !(0,
|
|
2795
|
+
if (props.options !== void 0 && !(0, import_schema19.isVariableBinding)(props.options)) {
|
|
2740
2796
|
if (!Array.isArray(props.options) && typeof props.options !== "string") {
|
|
2741
2797
|
errors.push('Select "options" must be an array of option objects or a JSON string.');
|
|
2742
2798
|
}
|
|
2743
2799
|
}
|
|
2744
|
-
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0,
|
|
2800
|
+
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0, import_schema19.isVariableBinding)(props.required)) {
|
|
2745
2801
|
errors.push('Select "required" must be a boolean when provided.');
|
|
2746
2802
|
}
|
|
2747
|
-
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0,
|
|
2803
|
+
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0, import_schema19.isVariableBinding)(props.disabled)) {
|
|
2748
2804
|
errors.push('Select "disabled" must be a boolean when provided.');
|
|
2749
2805
|
}
|
|
2750
|
-
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0,
|
|
2806
|
+
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0, import_schema19.isVariableBinding)(props.helperText)) {
|
|
2751
2807
|
errors.push('Select "helperText" must be a string when provided.');
|
|
2752
2808
|
}
|
|
2753
2809
|
return errors.length > 0 ? errors : true;
|
|
@@ -2772,7 +2828,7 @@ var selectDefinition = {
|
|
|
2772
2828
|
};
|
|
2773
2829
|
|
|
2774
2830
|
// src/definitions/form/checkbox.ts
|
|
2775
|
-
var
|
|
2831
|
+
var import_schema20 = require("@kubuild/schema");
|
|
2776
2832
|
var checkboxDefinition = {
|
|
2777
2833
|
type: "checkbox",
|
|
2778
2834
|
label: "Checkbox",
|
|
@@ -2814,28 +2870,28 @@ var checkboxDefinition = {
|
|
|
2814
2870
|
],
|
|
2815
2871
|
validateProps: (props) => {
|
|
2816
2872
|
const errors = [];
|
|
2817
|
-
if (props.label !== void 0 && typeof props.label !== "string" && !(0,
|
|
2873
|
+
if (props.label !== void 0 && typeof props.label !== "string" && !(0, import_schema20.isVariableBinding)(props.label)) {
|
|
2818
2874
|
errors.push('Checkbox "label" must be a string when provided.');
|
|
2819
2875
|
}
|
|
2820
|
-
if (props.name !== void 0 && typeof props.name !== "string" && !(0,
|
|
2876
|
+
if (props.name !== void 0 && typeof props.name !== "string" && !(0, import_schema20.isVariableBinding)(props.name)) {
|
|
2821
2877
|
errors.push('Checkbox "name" must be a string when provided.');
|
|
2822
2878
|
}
|
|
2823
|
-
if (props.value !== void 0 && typeof props.value !== "string" && !(0,
|
|
2879
|
+
if (props.value !== void 0 && typeof props.value !== "string" && !(0, import_schema20.isVariableBinding)(props.value)) {
|
|
2824
2880
|
errors.push('Checkbox "value" must be a string when provided.');
|
|
2825
2881
|
}
|
|
2826
|
-
if (props.defaultChecked !== void 0 && typeof props.defaultChecked !== "boolean" && !(0,
|
|
2882
|
+
if (props.defaultChecked !== void 0 && typeof props.defaultChecked !== "boolean" && !(0, import_schema20.isVariableBinding)(props.defaultChecked)) {
|
|
2827
2883
|
errors.push('Checkbox "defaultChecked" must be a boolean when provided.');
|
|
2828
2884
|
}
|
|
2829
|
-
if (props.indeterminate !== void 0 && typeof props.indeterminate !== "boolean" && !(0,
|
|
2885
|
+
if (props.indeterminate !== void 0 && typeof props.indeterminate !== "boolean" && !(0, import_schema20.isVariableBinding)(props.indeterminate)) {
|
|
2830
2886
|
errors.push('Checkbox "indeterminate" must be a boolean when provided.');
|
|
2831
2887
|
}
|
|
2832
|
-
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0,
|
|
2888
|
+
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0, import_schema20.isVariableBinding)(props.required)) {
|
|
2833
2889
|
errors.push('Checkbox "required" must be a boolean when provided.');
|
|
2834
2890
|
}
|
|
2835
|
-
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0,
|
|
2891
|
+
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0, import_schema20.isVariableBinding)(props.disabled)) {
|
|
2836
2892
|
errors.push('Checkbox "disabled" must be a boolean when provided.');
|
|
2837
2893
|
}
|
|
2838
|
-
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0,
|
|
2894
|
+
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0, import_schema20.isVariableBinding)(props.helperText)) {
|
|
2839
2895
|
errors.push('Checkbox "helperText" must be a string when provided.');
|
|
2840
2896
|
}
|
|
2841
2897
|
return errors.length > 0 ? errors : true;
|
|
@@ -2854,7 +2910,7 @@ var checkboxDefinition = {
|
|
|
2854
2910
|
};
|
|
2855
2911
|
|
|
2856
2912
|
// src/definitions/form/switch.ts
|
|
2857
|
-
var
|
|
2913
|
+
var import_schema21 = require("@kubuild/schema");
|
|
2858
2914
|
var switchDefinition = {
|
|
2859
2915
|
type: "switch",
|
|
2860
2916
|
label: "Switch",
|
|
@@ -2906,31 +2962,31 @@ var switchDefinition = {
|
|
|
2906
2962
|
],
|
|
2907
2963
|
validateProps: (props) => {
|
|
2908
2964
|
const errors = [];
|
|
2909
|
-
if (props.label !== void 0 && typeof props.label !== "string" && !(0,
|
|
2965
|
+
if (props.label !== void 0 && typeof props.label !== "string" && !(0, import_schema21.isVariableBinding)(props.label)) {
|
|
2910
2966
|
errors.push('Switch "label" must be a string when provided.');
|
|
2911
2967
|
}
|
|
2912
|
-
if (props.name !== void 0 && typeof props.name !== "string" && !(0,
|
|
2968
|
+
if (props.name !== void 0 && typeof props.name !== "string" && !(0, import_schema21.isVariableBinding)(props.name)) {
|
|
2913
2969
|
errors.push('Switch "name" must be a string when provided.');
|
|
2914
2970
|
}
|
|
2915
|
-
if (props.value !== void 0 && typeof props.value !== "string" && !(0,
|
|
2971
|
+
if (props.value !== void 0 && typeof props.value !== "string" && !(0, import_schema21.isVariableBinding)(props.value)) {
|
|
2916
2972
|
errors.push('Switch "value" must be a string when provided.');
|
|
2917
2973
|
}
|
|
2918
|
-
if (props.defaultChecked !== void 0 && typeof props.defaultChecked !== "boolean" && !(0,
|
|
2974
|
+
if (props.defaultChecked !== void 0 && typeof props.defaultChecked !== "boolean" && !(0, import_schema21.isVariableBinding)(props.defaultChecked)) {
|
|
2919
2975
|
errors.push('Switch "defaultChecked" must be a boolean when provided.');
|
|
2920
2976
|
}
|
|
2921
|
-
if (props.switchSize !== void 0 && !(0,
|
|
2977
|
+
if (props.switchSize !== void 0 && !(0, import_schema21.isVariableBinding)(props.switchSize)) {
|
|
2922
2978
|
const allowedSizes = ["sm", "md", "lg"];
|
|
2923
2979
|
if (typeof props.switchSize !== "string" || !allowedSizes.includes(props.switchSize)) {
|
|
2924
2980
|
errors.push(`Switch "switchSize" must be one of: ${allowedSizes.join(", ")}.`);
|
|
2925
2981
|
}
|
|
2926
2982
|
}
|
|
2927
|
-
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0,
|
|
2983
|
+
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0, import_schema21.isVariableBinding)(props.required)) {
|
|
2928
2984
|
errors.push('Switch "required" must be a boolean when provided.');
|
|
2929
2985
|
}
|
|
2930
|
-
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0,
|
|
2986
|
+
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0, import_schema21.isVariableBinding)(props.disabled)) {
|
|
2931
2987
|
errors.push('Switch "disabled" must be a boolean when provided.');
|
|
2932
2988
|
}
|
|
2933
|
-
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0,
|
|
2989
|
+
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0, import_schema21.isVariableBinding)(props.helperText)) {
|
|
2934
2990
|
errors.push('Switch "helperText" must be a string when provided.');
|
|
2935
2991
|
}
|
|
2936
2992
|
return errors.length > 0 ? errors : true;
|
|
@@ -2949,7 +3005,7 @@ var switchDefinition = {
|
|
|
2949
3005
|
};
|
|
2950
3006
|
|
|
2951
3007
|
// src/definitions/form/radio.ts
|
|
2952
|
-
var
|
|
3008
|
+
var import_schema22 = require("@kubuild/schema");
|
|
2953
3009
|
var radioGroupDefinition = {
|
|
2954
3010
|
type: "radio-group",
|
|
2955
3011
|
label: "Radio Group",
|
|
@@ -3000,25 +3056,25 @@ var radioGroupDefinition = {
|
|
|
3000
3056
|
],
|
|
3001
3057
|
validateProps: (props) => {
|
|
3002
3058
|
const errors = [];
|
|
3003
|
-
if (props.name !== void 0 && typeof props.name !== "string" && !(0,
|
|
3059
|
+
if (props.name !== void 0 && typeof props.name !== "string" && !(0, import_schema22.isVariableBinding)(props.name)) {
|
|
3004
3060
|
errors.push('RadioGroup "name" must be a string when provided.');
|
|
3005
3061
|
}
|
|
3006
|
-
if (props.defaultSelected !== void 0 && typeof props.defaultSelected !== "string" && !(0,
|
|
3062
|
+
if (props.defaultSelected !== void 0 && typeof props.defaultSelected !== "string" && !(0, import_schema22.isVariableBinding)(props.defaultSelected)) {
|
|
3007
3063
|
errors.push('RadioGroup "defaultSelected" must be a string when provided.');
|
|
3008
3064
|
}
|
|
3009
|
-
if (props.orientation !== void 0 && !(0,
|
|
3065
|
+
if (props.orientation !== void 0 && !(0, import_schema22.isVariableBinding)(props.orientation)) {
|
|
3010
3066
|
const allowedOrientations = ["vertical", "horizontal"];
|
|
3011
3067
|
if (typeof props.orientation !== "string" || !allowedOrientations.includes(props.orientation)) {
|
|
3012
3068
|
errors.push(`RadioGroup "orientation" must be one of: ${allowedOrientations.join(", ")}.`);
|
|
3013
3069
|
}
|
|
3014
3070
|
}
|
|
3015
|
-
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0,
|
|
3071
|
+
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0, import_schema22.isVariableBinding)(props.required)) {
|
|
3016
3072
|
errors.push('RadioGroup "required" must be a boolean when provided.');
|
|
3017
3073
|
}
|
|
3018
|
-
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0,
|
|
3074
|
+
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0, import_schema22.isVariableBinding)(props.disabled)) {
|
|
3019
3075
|
errors.push('RadioGroup "disabled" must be a boolean when provided.');
|
|
3020
3076
|
}
|
|
3021
|
-
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0,
|
|
3077
|
+
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0, import_schema22.isVariableBinding)(props.helperText)) {
|
|
3022
3078
|
errors.push('RadioGroup "helperText" must be a string when provided.');
|
|
3023
3079
|
}
|
|
3024
3080
|
return errors.length > 0 ? errors : true;
|
|
@@ -3069,25 +3125,25 @@ var radioDefinition = {
|
|
|
3069
3125
|
],
|
|
3070
3126
|
validateProps: (props) => {
|
|
3071
3127
|
const errors = [];
|
|
3072
|
-
if (props.label !== void 0 && typeof props.label !== "string" && !(0,
|
|
3128
|
+
if (props.label !== void 0 && typeof props.label !== "string" && !(0, import_schema22.isVariableBinding)(props.label)) {
|
|
3073
3129
|
errors.push('Radio "label" must be a string when provided.');
|
|
3074
3130
|
}
|
|
3075
|
-
if (props.name !== void 0 && typeof props.name !== "string" && !(0,
|
|
3131
|
+
if (props.name !== void 0 && typeof props.name !== "string" && !(0, import_schema22.isVariableBinding)(props.name)) {
|
|
3076
3132
|
errors.push('Radio "name" must be a string when provided.');
|
|
3077
3133
|
}
|
|
3078
|
-
if (props.value !== void 0 && typeof props.value !== "string" && !(0,
|
|
3134
|
+
if (props.value !== void 0 && typeof props.value !== "string" && !(0, import_schema22.isVariableBinding)(props.value)) {
|
|
3079
3135
|
errors.push('Radio "value" must be a string when provided.');
|
|
3080
3136
|
}
|
|
3081
|
-
if (props.defaultChecked !== void 0 && typeof props.defaultChecked !== "boolean" && !(0,
|
|
3137
|
+
if (props.defaultChecked !== void 0 && typeof props.defaultChecked !== "boolean" && !(0, import_schema22.isVariableBinding)(props.defaultChecked)) {
|
|
3082
3138
|
errors.push('Radio "defaultChecked" must be a boolean when provided.');
|
|
3083
3139
|
}
|
|
3084
|
-
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0,
|
|
3140
|
+
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0, import_schema22.isVariableBinding)(props.required)) {
|
|
3085
3141
|
errors.push('Radio "required" must be a boolean when provided.');
|
|
3086
3142
|
}
|
|
3087
|
-
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0,
|
|
3143
|
+
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0, import_schema22.isVariableBinding)(props.disabled)) {
|
|
3088
3144
|
errors.push('Radio "disabled" must be a boolean when provided.');
|
|
3089
3145
|
}
|
|
3090
|
-
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0,
|
|
3146
|
+
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0, import_schema22.isVariableBinding)(props.helperText)) {
|
|
3091
3147
|
errors.push('Radio "helperText" must be a string when provided.');
|
|
3092
3148
|
}
|
|
3093
3149
|
return errors.length > 0 ? errors : true;
|
|
@@ -3111,7 +3167,7 @@ var radioItemDefinition = {
|
|
|
3111
3167
|
};
|
|
3112
3168
|
|
|
3113
3169
|
// src/definitions/form/file-upload.ts
|
|
3114
|
-
var
|
|
3170
|
+
var import_schema23 = require("@kubuild/schema");
|
|
3115
3171
|
var fileUploadDefinition = {
|
|
3116
3172
|
type: "file-upload",
|
|
3117
3173
|
label: "File Upload",
|
|
@@ -3156,33 +3212,33 @@ var fileUploadDefinition = {
|
|
|
3156
3212
|
],
|
|
3157
3213
|
validateProps: (props) => {
|
|
3158
3214
|
const errors = [];
|
|
3159
|
-
if (props.label !== void 0 && typeof props.label !== "string" && !(0,
|
|
3215
|
+
if (props.label !== void 0 && typeof props.label !== "string" && !(0, import_schema23.isVariableBinding)(props.label)) {
|
|
3160
3216
|
errors.push('FileUpload "label" must be a string when provided.');
|
|
3161
3217
|
}
|
|
3162
|
-
if (props.name !== void 0 && typeof props.name !== "string" && !(0,
|
|
3218
|
+
if (props.name !== void 0 && typeof props.name !== "string" && !(0, import_schema23.isVariableBinding)(props.name)) {
|
|
3163
3219
|
errors.push('FileUpload "name" must be a string when provided.');
|
|
3164
3220
|
}
|
|
3165
|
-
if (props.accept !== void 0 && typeof props.accept !== "string" && !(0,
|
|
3221
|
+
if (props.accept !== void 0 && typeof props.accept !== "string" && !(0, import_schema23.isVariableBinding)(props.accept)) {
|
|
3166
3222
|
errors.push('FileUpload "accept" must be a string when provided.');
|
|
3167
3223
|
}
|
|
3168
|
-
if (props.maxFileSize !== void 0 && !(0,
|
|
3224
|
+
if (props.maxFileSize !== void 0 && !(0, import_schema23.isVariableBinding)(props.maxFileSize)) {
|
|
3169
3225
|
if (typeof props.maxFileSize !== "number" || props.maxFileSize <= 0) {
|
|
3170
3226
|
errors.push('FileUpload "maxFileSize" must be a positive number when provided.');
|
|
3171
3227
|
}
|
|
3172
3228
|
}
|
|
3173
|
-
if (props.multiple !== void 0 && typeof props.multiple !== "boolean" && !(0,
|
|
3229
|
+
if (props.multiple !== void 0 && typeof props.multiple !== "boolean" && !(0, import_schema23.isVariableBinding)(props.multiple)) {
|
|
3174
3230
|
errors.push('FileUpload "multiple" must be a boolean when provided.');
|
|
3175
3231
|
}
|
|
3176
|
-
if (props.showPreview !== void 0 && typeof props.showPreview !== "boolean" && !(0,
|
|
3232
|
+
if (props.showPreview !== void 0 && typeof props.showPreview !== "boolean" && !(0, import_schema23.isVariableBinding)(props.showPreview)) {
|
|
3177
3233
|
errors.push('FileUpload "showPreview" must be a boolean when provided.');
|
|
3178
3234
|
}
|
|
3179
|
-
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0,
|
|
3235
|
+
if (props.required !== void 0 && typeof props.required !== "boolean" && !(0, import_schema23.isVariableBinding)(props.required)) {
|
|
3180
3236
|
errors.push('FileUpload "required" must be a boolean when provided.');
|
|
3181
3237
|
}
|
|
3182
|
-
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0,
|
|
3238
|
+
if (props.disabled !== void 0 && typeof props.disabled !== "boolean" && !(0, import_schema23.isVariableBinding)(props.disabled)) {
|
|
3183
3239
|
errors.push('FileUpload "disabled" must be a boolean when provided.');
|
|
3184
3240
|
}
|
|
3185
|
-
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0,
|
|
3241
|
+
if (props.helperText !== void 0 && typeof props.helperText !== "string" && !(0, import_schema23.isVariableBinding)(props.helperText)) {
|
|
3186
3242
|
errors.push('FileUpload "helperText" must be a string when provided.');
|
|
3187
3243
|
}
|
|
3188
3244
|
return errors.length > 0 ? errors : true;
|
|
@@ -3422,6 +3478,526 @@ var collapsibleDefinition = {
|
|
|
3422
3478
|
}
|
|
3423
3479
|
};
|
|
3424
3480
|
|
|
3481
|
+
// src/definitions/conversion/countdown.ts
|
|
3482
|
+
var import_schema24 = require("@kubuild/schema");
|
|
3483
|
+
var COUNTDOWN_MODES = ["evergreen", "fixed"];
|
|
3484
|
+
var COUNTDOWN_FORMATS = ["mm:ss", "hh:mm:ss", "d h m s"];
|
|
3485
|
+
var COUNTDOWN_EXPIRE_BEHAVIORS = ["text", "hide", "zero"];
|
|
3486
|
+
var COUNTDOWN_STORAGE_TYPES = ["session", "local"];
|
|
3487
|
+
var countdownDefinition = {
|
|
3488
|
+
type: "countdown",
|
|
3489
|
+
label: "Countdown",
|
|
3490
|
+
category: "interactive",
|
|
3491
|
+
icon: "clock",
|
|
3492
|
+
description: "Urgency timer for limited offers (evergreen per-visitor or fixed deadline).",
|
|
3493
|
+
acceptsChildren: false,
|
|
3494
|
+
defaultProps: {
|
|
3495
|
+
mode: "evergreen",
|
|
3496
|
+
durationMinutes: 15,
|
|
3497
|
+
targetDate: "",
|
|
3498
|
+
timezone: "UTC",
|
|
3499
|
+
format: "hh:mm:ss",
|
|
3500
|
+
label: "",
|
|
3501
|
+
labelDays: "Days",
|
|
3502
|
+
labelHours: "Hours",
|
|
3503
|
+
labelMinutes: "Minutes",
|
|
3504
|
+
labelSeconds: "Seconds",
|
|
3505
|
+
expireBehavior: "text",
|
|
3506
|
+
expiredText: "This offer has expired.",
|
|
3507
|
+
storage: "session",
|
|
3508
|
+
storageKey: ""
|
|
3509
|
+
},
|
|
3510
|
+
propFields: [
|
|
3511
|
+
{
|
|
3512
|
+
name: "mode",
|
|
3513
|
+
label: "Mode",
|
|
3514
|
+
type: "select",
|
|
3515
|
+
defaultValue: "evergreen",
|
|
3516
|
+
options: [
|
|
3517
|
+
{ label: "Evergreen (per visitor)", value: "evergreen" },
|
|
3518
|
+
{ label: "Fixed date", value: "fixed" }
|
|
3519
|
+
]
|
|
3520
|
+
},
|
|
3521
|
+
{
|
|
3522
|
+
name: "durationMinutes",
|
|
3523
|
+
label: "Duration (minutes)",
|
|
3524
|
+
type: "number",
|
|
3525
|
+
defaultValue: 15,
|
|
3526
|
+
description: "Evergreen mode: how long each visitor gets from their first view."
|
|
3527
|
+
},
|
|
3528
|
+
{
|
|
3529
|
+
name: "targetDate",
|
|
3530
|
+
label: "Target Date/Time",
|
|
3531
|
+
type: "string",
|
|
3532
|
+
defaultValue: "",
|
|
3533
|
+
description: 'Fixed mode: wall-clock time "YYYY-MM-DDTHH:mm" in the selected timezone.'
|
|
3534
|
+
},
|
|
3535
|
+
{
|
|
3536
|
+
name: "timezone",
|
|
3537
|
+
label: "Timezone",
|
|
3538
|
+
type: "string",
|
|
3539
|
+
defaultValue: "UTC",
|
|
3540
|
+
description: 'Fixed mode: IANA timezone name, e.g. "Asia/Jakarta" or "Europe/London".'
|
|
3541
|
+
},
|
|
3542
|
+
{
|
|
3543
|
+
name: "format",
|
|
3544
|
+
label: "Format",
|
|
3545
|
+
type: "select",
|
|
3546
|
+
defaultValue: "hh:mm:ss",
|
|
3547
|
+
options: [
|
|
3548
|
+
{ label: "mm:ss", value: "mm:ss" },
|
|
3549
|
+
{ label: "hh:mm:ss", value: "hh:mm:ss" },
|
|
3550
|
+
{ label: "d h m s (unit blocks)", value: "d h m s" }
|
|
3551
|
+
]
|
|
3552
|
+
},
|
|
3553
|
+
{
|
|
3554
|
+
name: "label",
|
|
3555
|
+
label: "Label",
|
|
3556
|
+
type: "string",
|
|
3557
|
+
defaultValue: "",
|
|
3558
|
+
description: 'Optional text shown before the timer, e.g. "Offer ends in".'
|
|
3559
|
+
},
|
|
3560
|
+
{ name: "labelDays", label: "Days Label", type: "string", defaultValue: "Days" },
|
|
3561
|
+
{ name: "labelHours", label: "Hours Label", type: "string", defaultValue: "Hours" },
|
|
3562
|
+
{ name: "labelMinutes", label: "Minutes Label", type: "string", defaultValue: "Minutes" },
|
|
3563
|
+
{ name: "labelSeconds", label: "Seconds Label", type: "string", defaultValue: "Seconds" },
|
|
3564
|
+
{
|
|
3565
|
+
name: "expireBehavior",
|
|
3566
|
+
label: "When Expired",
|
|
3567
|
+
type: "select",
|
|
3568
|
+
defaultValue: "text",
|
|
3569
|
+
options: [
|
|
3570
|
+
{ label: "Show expired text", value: "text" },
|
|
3571
|
+
{ label: "Hide timer", value: "hide" },
|
|
3572
|
+
{ label: "Keep showing zeros", value: "zero" }
|
|
3573
|
+
],
|
|
3574
|
+
description: 'Add an "On Expire" action pipeline to redirect, show a toast, open a modal, etc.'
|
|
3575
|
+
},
|
|
3576
|
+
{
|
|
3577
|
+
name: "expiredText",
|
|
3578
|
+
label: "Expired Text",
|
|
3579
|
+
type: "string",
|
|
3580
|
+
defaultValue: "This offer has expired."
|
|
3581
|
+
},
|
|
3582
|
+
{
|
|
3583
|
+
name: "storage",
|
|
3584
|
+
label: "Evergreen Storage",
|
|
3585
|
+
type: "select",
|
|
3586
|
+
defaultValue: "session",
|
|
3587
|
+
options: [
|
|
3588
|
+
{ label: "Session (per browser session)", value: "session" },
|
|
3589
|
+
{ label: "Local (persists across visits)", value: "local" }
|
|
3590
|
+
]
|
|
3591
|
+
},
|
|
3592
|
+
{
|
|
3593
|
+
name: "storageKey",
|
|
3594
|
+
label: "Storage Key",
|
|
3595
|
+
type: "string",
|
|
3596
|
+
defaultValue: "",
|
|
3597
|
+
description: "Share one deadline across pages by using the same key (defaults to the node id)."
|
|
3598
|
+
}
|
|
3599
|
+
],
|
|
3600
|
+
traits: [
|
|
3601
|
+
idTrait(),
|
|
3602
|
+
ariaLabelTrait({ description: 'Accessible name for the timer, e.g. "Offer ends in".' })
|
|
3603
|
+
],
|
|
3604
|
+
defaultStyles: {
|
|
3605
|
+
base: {
|
|
3606
|
+
display: "flex",
|
|
3607
|
+
alignItems: "center",
|
|
3608
|
+
justifyContent: "center",
|
|
3609
|
+
gap: "12px",
|
|
3610
|
+
fontSize: "28px",
|
|
3611
|
+
fontWeight: "700",
|
|
3612
|
+
fontVariantNumeric: "tabular-nums"
|
|
3613
|
+
}
|
|
3614
|
+
},
|
|
3615
|
+
validateProps: (props) => {
|
|
3616
|
+
const errors = [];
|
|
3617
|
+
const checkEnum = (name, allowed) => {
|
|
3618
|
+
const value = props[name];
|
|
3619
|
+
if (value === void 0 || (0, import_schema24.isVariableBinding)(value)) return;
|
|
3620
|
+
if (typeof value !== "string" || !allowed.includes(value)) {
|
|
3621
|
+
errors.push(`Countdown "${name}" must be one of: ${allowed.join(", ")}.`);
|
|
3622
|
+
}
|
|
3623
|
+
};
|
|
3624
|
+
checkEnum("mode", COUNTDOWN_MODES);
|
|
3625
|
+
checkEnum("format", COUNTDOWN_FORMATS);
|
|
3626
|
+
checkEnum("expireBehavior", COUNTDOWN_EXPIRE_BEHAVIORS);
|
|
3627
|
+
checkEnum("storage", COUNTDOWN_STORAGE_TYPES);
|
|
3628
|
+
const duration = props.durationMinutes;
|
|
3629
|
+
if (duration !== void 0 && !(0, import_schema24.isVariableBinding)(duration)) {
|
|
3630
|
+
if (typeof duration !== "number" || !Number.isFinite(duration) || duration < 0) {
|
|
3631
|
+
errors.push('Countdown "durationMinutes" must be a non-negative number.');
|
|
3632
|
+
}
|
|
3633
|
+
}
|
|
3634
|
+
return errors;
|
|
3635
|
+
}
|
|
3636
|
+
};
|
|
3637
|
+
|
|
3638
|
+
// src/definitions/conversion/accordion.ts
|
|
3639
|
+
var import_schema25 = require("@kubuild/schema");
|
|
3640
|
+
var accordionDefinition = {
|
|
3641
|
+
type: "accordion",
|
|
3642
|
+
label: "Accordion",
|
|
3643
|
+
category: "interactive",
|
|
3644
|
+
icon: "chevron-down",
|
|
3645
|
+
description: "Group of expandable items (FAQ) with single- or multi-open behavior.",
|
|
3646
|
+
acceptsChildren: true,
|
|
3647
|
+
allowedChildren: ["accordion-item"],
|
|
3648
|
+
defaultProps: {
|
|
3649
|
+
allowMultiple: false,
|
|
3650
|
+
defaultOpenIndex: 0,
|
|
3651
|
+
icon: "chevron",
|
|
3652
|
+
faqSchema: false
|
|
3653
|
+
},
|
|
3654
|
+
defaultChildren: [
|
|
3655
|
+
{
|
|
3656
|
+
type: "accordion-item",
|
|
3657
|
+
props: { title: "What is included?" },
|
|
3658
|
+
children: [{ type: "paragraph", props: { text: "Everything you need to get started." } }]
|
|
3659
|
+
},
|
|
3660
|
+
{
|
|
3661
|
+
type: "accordion-item",
|
|
3662
|
+
props: { title: "Can I get a refund?" },
|
|
3663
|
+
children: [{ type: "paragraph", props: { text: "Yes, within 30 days of purchase." } }]
|
|
3664
|
+
},
|
|
3665
|
+
{
|
|
3666
|
+
type: "accordion-item",
|
|
3667
|
+
props: { title: "How do I get access?" },
|
|
3668
|
+
children: [
|
|
3669
|
+
{ type: "paragraph", props: { text: "You receive an email right after checkout." } }
|
|
3670
|
+
]
|
|
3671
|
+
}
|
|
3672
|
+
],
|
|
3673
|
+
propFields: [
|
|
3674
|
+
{
|
|
3675
|
+
name: "allowMultiple",
|
|
3676
|
+
label: "Allow Multiple Open",
|
|
3677
|
+
type: "boolean",
|
|
3678
|
+
defaultValue: false,
|
|
3679
|
+
description: "When off, opening an item closes the others."
|
|
3680
|
+
},
|
|
3681
|
+
{
|
|
3682
|
+
name: "defaultOpenIndex",
|
|
3683
|
+
label: "Default Open Item",
|
|
3684
|
+
type: "number",
|
|
3685
|
+
defaultValue: 0,
|
|
3686
|
+
description: "Zero-based index of the item open on first render (-1 = all closed)."
|
|
3687
|
+
},
|
|
3688
|
+
{
|
|
3689
|
+
name: "icon",
|
|
3690
|
+
label: "Icon",
|
|
3691
|
+
type: "select",
|
|
3692
|
+
defaultValue: "chevron",
|
|
3693
|
+
options: [
|
|
3694
|
+
{ label: "Chevron", value: "chevron" },
|
|
3695
|
+
{ label: "Plus / Minus", value: "plus" },
|
|
3696
|
+
{ label: "None", value: "none" }
|
|
3697
|
+
]
|
|
3698
|
+
},
|
|
3699
|
+
{
|
|
3700
|
+
name: "faqSchema",
|
|
3701
|
+
label: "Output FAQPage JSON-LD",
|
|
3702
|
+
type: "boolean",
|
|
3703
|
+
defaultValue: false,
|
|
3704
|
+
description: "Emits schema.org FAQPage structured data on the published page for SEO."
|
|
3705
|
+
}
|
|
3706
|
+
],
|
|
3707
|
+
traits: [idTrait(), ariaLabelTrait({ description: "Accessible name for the accordion group." })],
|
|
3708
|
+
defaultStyles: {
|
|
3709
|
+
base: {
|
|
3710
|
+
display: "flex",
|
|
3711
|
+
flexDirection: "column",
|
|
3712
|
+
width: "100%",
|
|
3713
|
+
borderTop: "1px solid #e2e8f0"
|
|
3714
|
+
}
|
|
3715
|
+
},
|
|
3716
|
+
validateProps: (props) => {
|
|
3717
|
+
const errors = [];
|
|
3718
|
+
const idx = props.defaultOpenIndex;
|
|
3719
|
+
if (idx !== void 0 && !(0, import_schema25.isVariableBinding)(idx) && (typeof idx !== "number" || !Number.isInteger(idx))) {
|
|
3720
|
+
errors.push('Accordion "defaultOpenIndex" must be an integer.');
|
|
3721
|
+
}
|
|
3722
|
+
return errors;
|
|
3723
|
+
}
|
|
3724
|
+
};
|
|
3725
|
+
var accordionItemDefinition = {
|
|
3726
|
+
type: "accordion-item",
|
|
3727
|
+
label: "Accordion Item",
|
|
3728
|
+
category: "interactive",
|
|
3729
|
+
icon: "chevron-right",
|
|
3730
|
+
description: "One question/answer row of an accordion: a title header plus content children.",
|
|
3731
|
+
acceptsChildren: true,
|
|
3732
|
+
allowedChildren: ["container", "columns", "flex", "grid", ...CONTENT_CHILD_TYPES],
|
|
3733
|
+
defaultProps: {
|
|
3734
|
+
title: "Question"
|
|
3735
|
+
},
|
|
3736
|
+
defaultChildren: [{ type: "paragraph", props: { text: "Answer goes here." } }],
|
|
3737
|
+
propFields: [{ name: "title", label: "Title", type: "string", defaultValue: "Question" }],
|
|
3738
|
+
traits: [idTrait()],
|
|
3739
|
+
defaultStyles: {
|
|
3740
|
+
base: {
|
|
3741
|
+
borderBottom: "1px solid #e2e8f0"
|
|
3742
|
+
}
|
|
3743
|
+
}
|
|
3744
|
+
};
|
|
3745
|
+
|
|
3746
|
+
// src/definitions/conversion/tabs.ts
|
|
3747
|
+
var import_schema26 = require("@kubuild/schema");
|
|
3748
|
+
var tabsDefinition = {
|
|
3749
|
+
type: "tabs",
|
|
3750
|
+
label: "Tabs",
|
|
3751
|
+
category: "interactive",
|
|
3752
|
+
icon: "tabs",
|
|
3753
|
+
description: "Tabbed content for product variants, specifications, or plan comparison.",
|
|
3754
|
+
acceptsChildren: true,
|
|
3755
|
+
allowedChildren: ["tab-panel"],
|
|
3756
|
+
defaultProps: {
|
|
3757
|
+
activeIndex: 0
|
|
3758
|
+
},
|
|
3759
|
+
defaultChildren: [
|
|
3760
|
+
{
|
|
3761
|
+
type: "tab-panel",
|
|
3762
|
+
props: { label: "Tab 1" },
|
|
3763
|
+
children: [{ type: "paragraph", props: { text: "Content for the first tab." } }]
|
|
3764
|
+
},
|
|
3765
|
+
{
|
|
3766
|
+
type: "tab-panel",
|
|
3767
|
+
props: { label: "Tab 2" },
|
|
3768
|
+
children: [{ type: "paragraph", props: { text: "Content for the second tab." } }]
|
|
3769
|
+
}
|
|
3770
|
+
],
|
|
3771
|
+
propFields: [
|
|
3772
|
+
{
|
|
3773
|
+
name: "activeIndex",
|
|
3774
|
+
label: "Active Tab",
|
|
3775
|
+
type: "number",
|
|
3776
|
+
defaultValue: 0,
|
|
3777
|
+
description: "Zero-based index of the tab shown initially."
|
|
3778
|
+
}
|
|
3779
|
+
],
|
|
3780
|
+
traits: [idTrait(), ariaLabelTrait({ description: "Accessible name for the tab list." })],
|
|
3781
|
+
defaultStyles: {
|
|
3782
|
+
base: {
|
|
3783
|
+
display: "flex",
|
|
3784
|
+
flexDirection: "column",
|
|
3785
|
+
width: "100%"
|
|
3786
|
+
}
|
|
3787
|
+
},
|
|
3788
|
+
validateProps: (props) => {
|
|
3789
|
+
const errors = [];
|
|
3790
|
+
const idx = props.activeIndex;
|
|
3791
|
+
if (idx !== void 0 && !(0, import_schema26.isVariableBinding)(idx) && (typeof idx !== "number" || !Number.isInteger(idx) || idx < 0)) {
|
|
3792
|
+
errors.push('Tabs "activeIndex" must be a non-negative integer.');
|
|
3793
|
+
}
|
|
3794
|
+
return errors;
|
|
3795
|
+
}
|
|
3796
|
+
};
|
|
3797
|
+
var tabPanelDefinition = {
|
|
3798
|
+
type: "tab-panel",
|
|
3799
|
+
label: "Tab Panel",
|
|
3800
|
+
category: "interactive",
|
|
3801
|
+
icon: "layout",
|
|
3802
|
+
description: "Content of a single tab; its label is shown in the tab list.",
|
|
3803
|
+
acceptsChildren: true,
|
|
3804
|
+
allowedChildren: ["container", "columns", "flex", "grid", ...CONTENT_CHILD_TYPES],
|
|
3805
|
+
defaultProps: {
|
|
3806
|
+
label: "Tab"
|
|
3807
|
+
},
|
|
3808
|
+
defaultChildren: [{ type: "paragraph", props: { text: "Tab content." } }],
|
|
3809
|
+
propFields: [{ name: "label", label: "Tab Label", type: "string", defaultValue: "Tab" }],
|
|
3810
|
+
traits: [idTrait()],
|
|
3811
|
+
defaultStyles: {
|
|
3812
|
+
base: {
|
|
3813
|
+
paddingTop: "16px"
|
|
3814
|
+
}
|
|
3815
|
+
}
|
|
3816
|
+
};
|
|
3817
|
+
|
|
3818
|
+
// src/definitions/conversion/carousel.ts
|
|
3819
|
+
var import_schema27 = require("@kubuild/schema");
|
|
3820
|
+
var carouselDefinition = {
|
|
3821
|
+
type: "carousel",
|
|
3822
|
+
label: "Carousel",
|
|
3823
|
+
category: "interactive",
|
|
3824
|
+
icon: "carousel",
|
|
3825
|
+
description: "Slider for product galleries and testimonials; each child is a slide.",
|
|
3826
|
+
acceptsChildren: true,
|
|
3827
|
+
allowedChildren: ["*"],
|
|
3828
|
+
defaultProps: {
|
|
3829
|
+
autoplay: false,
|
|
3830
|
+
interval: 5e3,
|
|
3831
|
+
loop: true,
|
|
3832
|
+
showDots: true,
|
|
3833
|
+
showArrows: true
|
|
3834
|
+
},
|
|
3835
|
+
defaultChildren: [
|
|
3836
|
+
{ type: "container", children: [{ type: "paragraph", props: { text: "Slide 1" } }] },
|
|
3837
|
+
{ type: "container", children: [{ type: "paragraph", props: { text: "Slide 2" } }] },
|
|
3838
|
+
{ type: "container", children: [{ type: "paragraph", props: { text: "Slide 3" } }] }
|
|
3839
|
+
],
|
|
3840
|
+
propFields: [
|
|
3841
|
+
{ name: "autoplay", label: "Autoplay", type: "boolean", defaultValue: false },
|
|
3842
|
+
{ name: "interval", label: "Autoplay Interval (ms)", type: "number", defaultValue: 5e3 },
|
|
3843
|
+
{ name: "loop", label: "Loop", type: "boolean", defaultValue: true },
|
|
3844
|
+
{ name: "showDots", label: "Show Dots", type: "boolean", defaultValue: true },
|
|
3845
|
+
{ name: "showArrows", label: "Show Arrows", type: "boolean", defaultValue: true }
|
|
3846
|
+
],
|
|
3847
|
+
traits: [
|
|
3848
|
+
idTrait(),
|
|
3849
|
+
ariaLabelTrait({ description: 'Accessible name for the carousel, e.g. "Testimonials".' })
|
|
3850
|
+
],
|
|
3851
|
+
defaultStyles: {
|
|
3852
|
+
base: {
|
|
3853
|
+
position: "relative",
|
|
3854
|
+
width: "100%",
|
|
3855
|
+
overflow: "hidden"
|
|
3856
|
+
}
|
|
3857
|
+
},
|
|
3858
|
+
validateProps: (props) => {
|
|
3859
|
+
const errors = [];
|
|
3860
|
+
const interval = props.interval;
|
|
3861
|
+
if (interval !== void 0 && !(0, import_schema27.isVariableBinding)(interval) && (typeof interval !== "number" || !(interval > 0))) {
|
|
3862
|
+
errors.push('Carousel "interval" must be a positive number of milliseconds.');
|
|
3863
|
+
}
|
|
3864
|
+
return errors;
|
|
3865
|
+
}
|
|
3866
|
+
};
|
|
3867
|
+
|
|
3868
|
+
// src/definitions/conversion/rating.ts
|
|
3869
|
+
var import_schema28 = require("@kubuild/schema");
|
|
3870
|
+
var ratingDefinition = {
|
|
3871
|
+
type: "rating",
|
|
3872
|
+
label: "Rating",
|
|
3873
|
+
category: "media",
|
|
3874
|
+
icon: "star",
|
|
3875
|
+
description: "Read-only star rating with half-star support.",
|
|
3876
|
+
acceptsChildren: false,
|
|
3877
|
+
defaultProps: {
|
|
3878
|
+
value: 5,
|
|
3879
|
+
max: 5,
|
|
3880
|
+
size: 20,
|
|
3881
|
+
color: "#f59e0b",
|
|
3882
|
+
emptyColor: "#e2e8f0",
|
|
3883
|
+
labelTemplate: "{value} out of {max}"
|
|
3884
|
+
},
|
|
3885
|
+
propFields: [
|
|
3886
|
+
{
|
|
3887
|
+
name: "value",
|
|
3888
|
+
label: "Value",
|
|
3889
|
+
type: "number",
|
|
3890
|
+
defaultValue: 5,
|
|
3891
|
+
description: "Rounded to the nearest half star."
|
|
3892
|
+
},
|
|
3893
|
+
{ name: "max", label: "Max Stars", type: "number", defaultValue: 5 },
|
|
3894
|
+
{ name: "size", label: "Star Size (px)", type: "number", defaultValue: 20 },
|
|
3895
|
+
{ name: "color", label: "Color", type: "color", defaultValue: "#f59e0b" },
|
|
3896
|
+
{ name: "emptyColor", label: "Empty Color", type: "color", defaultValue: "#e2e8f0" },
|
|
3897
|
+
{
|
|
3898
|
+
name: "labelTemplate",
|
|
3899
|
+
label: "Accessible Label",
|
|
3900
|
+
type: "string",
|
|
3901
|
+
defaultValue: "{value} out of {max}",
|
|
3902
|
+
description: 'Screen reader text; {value} and {max} are replaced (e.g. "{value} dari {max}").'
|
|
3903
|
+
}
|
|
3904
|
+
],
|
|
3905
|
+
traits: [idTrait()],
|
|
3906
|
+
defaultStyles: {
|
|
3907
|
+
base: {
|
|
3908
|
+
display: "inline-flex",
|
|
3909
|
+
alignItems: "center",
|
|
3910
|
+
gap: "2px"
|
|
3911
|
+
}
|
|
3912
|
+
},
|
|
3913
|
+
validateProps: (props) => {
|
|
3914
|
+
const errors = [];
|
|
3915
|
+
for (const name of ["value", "max", "size"]) {
|
|
3916
|
+
const v = props[name];
|
|
3917
|
+
if (v !== void 0 && !(0, import_schema28.isVariableBinding)(v) && (typeof v !== "number" || !Number.isFinite(v) || v < 0)) {
|
|
3918
|
+
errors.push(`Rating "${name}" must be a non-negative number.`);
|
|
3919
|
+
}
|
|
3920
|
+
}
|
|
3921
|
+
return errors;
|
|
3922
|
+
}
|
|
3923
|
+
};
|
|
3924
|
+
|
|
3925
|
+
// src/definitions/conversion/divider.ts
|
|
3926
|
+
var import_schema29 = require("@kubuild/schema");
|
|
3927
|
+
var dividerDefinition = {
|
|
3928
|
+
type: "divider",
|
|
3929
|
+
label: "Divider",
|
|
3930
|
+
category: "layout",
|
|
3931
|
+
icon: "divider",
|
|
3932
|
+
description: "Horizontal rule (solid/dashed/dotted) with an optional centered label.",
|
|
3933
|
+
acceptsChildren: false,
|
|
3934
|
+
defaultProps: {
|
|
3935
|
+
lineStyle: "solid",
|
|
3936
|
+
thickness: 1,
|
|
3937
|
+
color: "#e2e8f0",
|
|
3938
|
+
label: ""
|
|
3939
|
+
},
|
|
3940
|
+
propFields: [
|
|
3941
|
+
{
|
|
3942
|
+
name: "lineStyle",
|
|
3943
|
+
label: "Line Style",
|
|
3944
|
+
type: "select",
|
|
3945
|
+
defaultValue: "solid",
|
|
3946
|
+
options: [
|
|
3947
|
+
{ label: "Solid", value: "solid" },
|
|
3948
|
+
{ label: "Dashed", value: "dashed" },
|
|
3949
|
+
{ label: "Dotted", value: "dotted" }
|
|
3950
|
+
]
|
|
3951
|
+
},
|
|
3952
|
+
{ name: "thickness", label: "Thickness (px)", type: "number", defaultValue: 1 },
|
|
3953
|
+
{ name: "color", label: "Color", type: "color", defaultValue: "#e2e8f0" },
|
|
3954
|
+
{
|
|
3955
|
+
name: "label",
|
|
3956
|
+
label: "Center Label",
|
|
3957
|
+
type: "string",
|
|
3958
|
+
defaultValue: "",
|
|
3959
|
+
description: 'Optional text in the middle of the line, e.g. "OR".'
|
|
3960
|
+
}
|
|
3961
|
+
],
|
|
3962
|
+
traits: [idTrait()],
|
|
3963
|
+
defaultStyles: {
|
|
3964
|
+
base: {
|
|
3965
|
+
width: "100%",
|
|
3966
|
+
marginTop: "16px",
|
|
3967
|
+
marginBottom: "16px"
|
|
3968
|
+
}
|
|
3969
|
+
},
|
|
3970
|
+
validateProps: (props) => {
|
|
3971
|
+
const v = props.lineStyle;
|
|
3972
|
+
if (v !== void 0 && !(0, import_schema29.isVariableBinding)(v) && !["solid", "dashed", "dotted"].includes(v)) {
|
|
3973
|
+
return ['Divider "lineStyle" must be one of: solid, dashed, dotted.'];
|
|
3974
|
+
}
|
|
3975
|
+
return [];
|
|
3976
|
+
}
|
|
3977
|
+
};
|
|
3978
|
+
var spacerDefinition = {
|
|
3979
|
+
type: "spacer",
|
|
3980
|
+
label: "Spacer",
|
|
3981
|
+
category: "layout",
|
|
3982
|
+
icon: "dimension",
|
|
3983
|
+
description: "Empty vertical space; height is responsive per breakpoint.",
|
|
3984
|
+
acceptsChildren: false,
|
|
3985
|
+
defaultProps: {},
|
|
3986
|
+
traits: [idTrait()],
|
|
3987
|
+
defaultStyles: {
|
|
3988
|
+
base: {
|
|
3989
|
+
width: "100%",
|
|
3990
|
+
height: "48px"
|
|
3991
|
+
},
|
|
3992
|
+
tablet: {
|
|
3993
|
+
height: "32px"
|
|
3994
|
+
},
|
|
3995
|
+
mobile: {
|
|
3996
|
+
height: "24px"
|
|
3997
|
+
}
|
|
3998
|
+
}
|
|
3999
|
+
};
|
|
4000
|
+
|
|
3425
4001
|
// src/definitions/index.ts
|
|
3426
4002
|
var coreComponentDefinitions = [
|
|
3427
4003
|
pageDefinition,
|
|
@@ -3461,7 +4037,17 @@ var coreComponentDefinitions = [
|
|
|
3461
4037
|
tableCellDefinition,
|
|
3462
4038
|
modalDefinition,
|
|
3463
4039
|
drawerDefinition,
|
|
3464
|
-
collapsibleDefinition
|
|
4040
|
+
collapsibleDefinition,
|
|
4041
|
+
// Conversion components (Epic 60)
|
|
4042
|
+
countdownDefinition,
|
|
4043
|
+
accordionDefinition,
|
|
4044
|
+
accordionItemDefinition,
|
|
4045
|
+
tabsDefinition,
|
|
4046
|
+
tabPanelDefinition,
|
|
4047
|
+
carouselDefinition,
|
|
4048
|
+
ratingDefinition,
|
|
4049
|
+
dividerDefinition,
|
|
4050
|
+
spacerDefinition
|
|
3465
4051
|
];
|
|
3466
4052
|
function createDefaultComponentRegistry() {
|
|
3467
4053
|
const registry = new ComponentRegistry();
|
|
@@ -3473,11 +4059,18 @@ function createDefaultComponentRegistry() {
|
|
|
3473
4059
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3474
4060
|
0 && (module.exports = {
|
|
3475
4061
|
CONTENT_CHILD_TYPES,
|
|
4062
|
+
COUNTDOWN_EXPIRE_BEHAVIORS,
|
|
4063
|
+
COUNTDOWN_FORMATS,
|
|
4064
|
+
COUNTDOWN_MODES,
|
|
4065
|
+
COUNTDOWN_STORAGE_TYPES,
|
|
3476
4066
|
LAYOUT_PARENTS,
|
|
4067
|
+
accordionDefinition,
|
|
4068
|
+
accordionItemDefinition,
|
|
3477
4069
|
badgeDefinition,
|
|
3478
4070
|
blockquoteDefinition,
|
|
3479
4071
|
buttonDefinition,
|
|
3480
4072
|
buttonSubmitDefinition,
|
|
4073
|
+
carouselDefinition,
|
|
3481
4074
|
checkboxDefinition,
|
|
3482
4075
|
codeBlockDefinition,
|
|
3483
4076
|
collapsibleDefinition,
|
|
@@ -3485,7 +4078,9 @@ function createDefaultComponentRegistry() {
|
|
|
3485
4078
|
columnsDefinition,
|
|
3486
4079
|
containerDefinition,
|
|
3487
4080
|
coreComponentDefinitions,
|
|
4081
|
+
countdownDefinition,
|
|
3488
4082
|
createDefaultComponentRegistry,
|
|
4083
|
+
dividerDefinition,
|
|
3489
4084
|
drawerDefinition,
|
|
3490
4085
|
fileUploadDefinition,
|
|
3491
4086
|
flexDefinition,
|
|
@@ -3505,12 +4100,16 @@ function createDefaultComponentRegistry() {
|
|
|
3505
4100
|
radioDefinition,
|
|
3506
4101
|
radioGroupDefinition,
|
|
3507
4102
|
radioItemDefinition,
|
|
4103
|
+
ratingDefinition,
|
|
3508
4104
|
sectionDefinition,
|
|
3509
4105
|
selectDefinition,
|
|
4106
|
+
spacerDefinition,
|
|
3510
4107
|
switchDefinition,
|
|
4108
|
+
tabPanelDefinition,
|
|
3511
4109
|
tableCellDefinition,
|
|
3512
4110
|
tableDefinition,
|
|
3513
4111
|
tableRowDefinition,
|
|
4112
|
+
tabsDefinition,
|
|
3514
4113
|
textDefinition,
|
|
3515
4114
|
textareaDefinition,
|
|
3516
4115
|
videoDefinition
|