@kubuild/components 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-PWKMZYTC.js → chunk-CJN5OHHX.js} +596 -10
- 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 -148
- 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/media/image.d.ts.map +1 -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 -228
- 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-JTQ35OQQ.js.map +0 -1
- package/dist/chunk-PWKMZYTC.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",
|
|
@@ -1547,7 +1602,6 @@ var imageDefinition = {
|
|
|
1547
1602
|
},
|
|
1548
1603
|
propFields: [
|
|
1549
1604
|
{ name: "src", label: "Image URL", type: "string" },
|
|
1550
|
-
{ name: "asset", label: "Asset Reference", type: "json" },
|
|
1551
1605
|
{ name: "alt", label: "Alt Text", type: "string", defaultValue: "Default image" },
|
|
1552
1606
|
{ name: "width", label: "Width", type: "number" },
|
|
1553
1607
|
{ name: "height", label: "Height", type: "number" }
|
|
@@ -1562,12 +1616,12 @@ var imageDefinition = {
|
|
|
1562
1616
|
],
|
|
1563
1617
|
validateProps: (props) => {
|
|
1564
1618
|
const errors = [];
|
|
1565
|
-
const hasSrc = typeof props.src === "string" && props.src.trim().length > 0 || (0,
|
|
1566
|
-
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);
|
|
1567
1621
|
if (!hasSrc && !hasAsset) {
|
|
1568
1622
|
errors.push('Image requires either a non-empty "src" URL or a valid "asset" reference.');
|
|
1569
1623
|
}
|
|
1570
|
-
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);
|
|
1571
1625
|
if (!hasAlt) {
|
|
1572
1626
|
errors.push('Image requires non-empty "alt" text.');
|
|
1573
1627
|
}
|
|
@@ -1583,7 +1637,7 @@ var imageDefinition = {
|
|
|
1583
1637
|
};
|
|
1584
1638
|
|
|
1585
1639
|
// src/definitions/media/video.ts
|
|
1586
|
-
var
|
|
1640
|
+
var import_schema10 = require("@kubuild/schema");
|
|
1587
1641
|
var videoDefinition = {
|
|
1588
1642
|
type: "video",
|
|
1589
1643
|
label: "Video",
|
|
@@ -1651,25 +1705,25 @@ var videoDefinition = {
|
|
|
1651
1705
|
],
|
|
1652
1706
|
validateProps: (props) => {
|
|
1653
1707
|
const errors = [];
|
|
1654
|
-
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)) {
|
|
1655
1709
|
errors.push('Video "src" must be a string when provided.');
|
|
1656
1710
|
}
|
|
1657
|
-
if (props.provider !== void 0 && !(0,
|
|
1711
|
+
if (props.provider !== void 0 && !(0, import_schema10.isVariableBinding)(props.provider)) {
|
|
1658
1712
|
const allowed = ["auto", "html5", "youtube", "vimeo"];
|
|
1659
1713
|
if (typeof props.provider !== "string" || !allowed.includes(props.provider)) {
|
|
1660
1714
|
errors.push(`Video "provider" must be one of: ${allowed.join(", ")}.`);
|
|
1661
1715
|
}
|
|
1662
1716
|
}
|
|
1663
|
-
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)) {
|
|
1664
1718
|
errors.push('Video "controls" must be a boolean.');
|
|
1665
1719
|
}
|
|
1666
|
-
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)) {
|
|
1667
1721
|
errors.push('Video "autoplay" must be a boolean.');
|
|
1668
1722
|
}
|
|
1669
|
-
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)) {
|
|
1670
1724
|
errors.push('Video "loop" must be a boolean.');
|
|
1671
1725
|
}
|
|
1672
|
-
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)) {
|
|
1673
1727
|
errors.push('Video "muted" must be a boolean.');
|
|
1674
1728
|
}
|
|
1675
1729
|
return errors.length > 0 ? errors : true;
|
|
@@ -1687,7 +1741,7 @@ var videoDefinition = {
|
|
|
1687
1741
|
};
|
|
1688
1742
|
|
|
1689
1743
|
// src/definitions/media/icon.ts
|
|
1690
|
-
var
|
|
1744
|
+
var import_schema11 = require("@kubuild/schema");
|
|
1691
1745
|
var iconDefinition = {
|
|
1692
1746
|
type: "icon",
|
|
1693
1747
|
label: "Icon",
|
|
@@ -1713,15 +1767,15 @@ var iconDefinition = {
|
|
|
1713
1767
|
],
|
|
1714
1768
|
validateProps: (props) => {
|
|
1715
1769
|
const errors = [];
|
|
1716
|
-
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)) {
|
|
1717
1771
|
errors.push('Icon requires a non-empty "name".');
|
|
1718
1772
|
}
|
|
1719
|
-
if (props.size !== void 0 && !(0,
|
|
1773
|
+
if (props.size !== void 0 && !(0, import_schema11.isVariableBinding)(props.size)) {
|
|
1720
1774
|
if (typeof props.size !== "number" || props.size < 0) {
|
|
1721
1775
|
errors.push('Icon "size" must be a non-negative number.');
|
|
1722
1776
|
}
|
|
1723
1777
|
}
|
|
1724
|
-
if (props.strokeWidth !== void 0 && !(0,
|
|
1778
|
+
if (props.strokeWidth !== void 0 && !(0, import_schema11.isVariableBinding)(props.strokeWidth)) {
|
|
1725
1779
|
if (typeof props.strokeWidth !== "number" || props.strokeWidth < 0) {
|
|
1726
1780
|
errors.push('Icon "strokeWidth" must be a non-negative number.');
|
|
1727
1781
|
}
|
|
@@ -1738,7 +1792,7 @@ var iconDefinition = {
|
|
|
1738
1792
|
};
|
|
1739
1793
|
|
|
1740
1794
|
// src/definitions/media/html-embed.ts
|
|
1741
|
-
var
|
|
1795
|
+
var import_schema12 = require("@kubuild/schema");
|
|
1742
1796
|
var htmlEmbedDefinition = {
|
|
1743
1797
|
type: "html-embed",
|
|
1744
1798
|
label: "HTML Embed",
|
|
@@ -1762,7 +1816,7 @@ var htmlEmbedDefinition = {
|
|
|
1762
1816
|
],
|
|
1763
1817
|
validateProps: (props) => {
|
|
1764
1818
|
const errors = [];
|
|
1765
|
-
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)) {
|
|
1766
1820
|
errors.push('HTML Embed "html" must be a string.');
|
|
1767
1821
|
}
|
|
1768
1822
|
return errors.length > 0 ? errors : true;
|
|
@@ -1776,7 +1830,7 @@ var htmlEmbedDefinition = {
|
|
|
1776
1830
|
};
|
|
1777
1831
|
|
|
1778
1832
|
// src/definitions/data/table.ts
|
|
1779
|
-
var
|
|
1833
|
+
var import_schema13 = require("@kubuild/schema");
|
|
1780
1834
|
var tableDefinition = {
|
|
1781
1835
|
type: "table",
|
|
1782
1836
|
label: "Table",
|
|
@@ -1816,13 +1870,13 @@ var tableDefinition = {
|
|
|
1816
1870
|
],
|
|
1817
1871
|
validateProps: (props) => {
|
|
1818
1872
|
const errors = [];
|
|
1819
|
-
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)) {
|
|
1820
1874
|
errors.push('Table "striped" must be a boolean.');
|
|
1821
1875
|
}
|
|
1822
|
-
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)) {
|
|
1823
1877
|
errors.push('Table "bordered" must be a boolean.');
|
|
1824
1878
|
}
|
|
1825
|
-
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)) {
|
|
1826
1880
|
errors.push('Table "compact" must be a boolean.');
|
|
1827
1881
|
}
|
|
1828
1882
|
return errors.length > 0 ? errors : true;
|
|
@@ -1907,22 +1961,22 @@ var tableCellDefinition = {
|
|
|
1907
1961
|
],
|
|
1908
1962
|
validateProps: (props) => {
|
|
1909
1963
|
const errors = [];
|
|
1910
|
-
if (props.tag !== void 0 && !(0,
|
|
1964
|
+
if (props.tag !== void 0 && !(0, import_schema13.isVariableBinding)(props.tag)) {
|
|
1911
1965
|
if (props.tag !== "td" && props.tag !== "th") {
|
|
1912
1966
|
errors.push('Table Cell "tag" must be either "td" or "th".');
|
|
1913
1967
|
}
|
|
1914
1968
|
}
|
|
1915
|
-
if (props.colSpan !== void 0 && !(0,
|
|
1969
|
+
if (props.colSpan !== void 0 && !(0, import_schema13.isVariableBinding)(props.colSpan)) {
|
|
1916
1970
|
if (typeof props.colSpan !== "number" || props.colSpan < 1 || !Number.isInteger(props.colSpan)) {
|
|
1917
1971
|
errors.push('Table Cell "colSpan" must be a positive integer (>= 1).');
|
|
1918
1972
|
}
|
|
1919
1973
|
}
|
|
1920
|
-
if (props.rowSpan !== void 0 && !(0,
|
|
1974
|
+
if (props.rowSpan !== void 0 && !(0, import_schema13.isVariableBinding)(props.rowSpan)) {
|
|
1921
1975
|
if (typeof props.rowSpan !== "number" || props.rowSpan < 1 || !Number.isInteger(props.rowSpan)) {
|
|
1922
1976
|
errors.push('Table Cell "rowSpan" must be a positive integer (>= 1).');
|
|
1923
1977
|
}
|
|
1924
1978
|
}
|
|
1925
|
-
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)) {
|
|
1926
1980
|
errors.push('Table Cell "text" must be a string when provided.');
|
|
1927
1981
|
}
|
|
1928
1982
|
return errors.length > 0 ? errors : true;
|
|
@@ -1939,7 +1993,7 @@ var tableCellDefinition = {
|
|
|
1939
1993
|
};
|
|
1940
1994
|
|
|
1941
1995
|
// src/definitions/data/list.ts
|
|
1942
|
-
var
|
|
1996
|
+
var import_schema14 = require("@kubuild/schema");
|
|
1943
1997
|
var listDefinition = {
|
|
1944
1998
|
type: "list",
|
|
1945
1999
|
label: "List",
|
|
@@ -1988,12 +2042,12 @@ var listDefinition = {
|
|
|
1988
2042
|
],
|
|
1989
2043
|
validateProps: (props) => {
|
|
1990
2044
|
const errors = [];
|
|
1991
|
-
if (props.tag !== void 0 && !(0,
|
|
2045
|
+
if (props.tag !== void 0 && !(0, import_schema14.isVariableBinding)(props.tag)) {
|
|
1992
2046
|
if (props.tag !== "ul" && props.tag !== "ol") {
|
|
1993
2047
|
errors.push('List "tag" must be either "ul" or "ol".');
|
|
1994
2048
|
}
|
|
1995
2049
|
}
|
|
1996
|
-
if (props.listStyleType !== void 0 && !(0,
|
|
2050
|
+
if (props.listStyleType !== void 0 && !(0, import_schema14.isVariableBinding)(props.listStyleType)) {
|
|
1997
2051
|
const allowed = ["disc", "circle", "square", "decimal", "none", "custom-icon"];
|
|
1998
2052
|
if (typeof props.listStyleType !== "string" || !allowed.includes(props.listStyleType)) {
|
|
1999
2053
|
errors.push(`List "listStyleType" must be one of: ${allowed.join(", ")}.`);
|
|
@@ -2048,7 +2102,7 @@ var listItemDefinition = {
|
|
|
2048
2102
|
],
|
|
2049
2103
|
validateProps: (props) => {
|
|
2050
2104
|
const errors = [];
|
|
2051
|
-
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)) {
|
|
2052
2106
|
errors.push('List Item "text" must be a string when provided.');
|
|
2053
2107
|
}
|
|
2054
2108
|
return errors.length > 0 ? errors : true;
|
|
@@ -2085,7 +2139,7 @@ var collectionDefinition = {
|
|
|
2085
2139
|
};
|
|
2086
2140
|
|
|
2087
2141
|
// src/definitions/form/button.ts
|
|
2088
|
-
var
|
|
2142
|
+
var import_schema15 = require("@kubuild/schema");
|
|
2089
2143
|
var buttonDefinition = {
|
|
2090
2144
|
type: "button",
|
|
2091
2145
|
label: "Button",
|
|
@@ -2093,6 +2147,7 @@ var buttonDefinition = {
|
|
|
2093
2147
|
icon: "mouse-pointer",
|
|
2094
2148
|
acceptsChildren: false,
|
|
2095
2149
|
capabilities: ["actionRegistry"],
|
|
2150
|
+
...canonicalTextPropFields("button"),
|
|
2096
2151
|
defaultProps: {
|
|
2097
2152
|
label: "Click Me",
|
|
2098
2153
|
variant: "primary"
|
|
@@ -2136,22 +2191,22 @@ var buttonDefinition = {
|
|
|
2136
2191
|
],
|
|
2137
2192
|
validateProps: (props) => {
|
|
2138
2193
|
const errors = [];
|
|
2139
|
-
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);
|
|
2140
2195
|
if (!hasLabel) {
|
|
2141
2196
|
errors.push('Button requires a non-empty "label".');
|
|
2142
2197
|
}
|
|
2143
|
-
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)) {
|
|
2144
2199
|
errors.push('Button "href" must be a string when provided.');
|
|
2145
2200
|
}
|
|
2146
|
-
if (props.buttonType !== void 0 && !(0,
|
|
2201
|
+
if (props.buttonType !== void 0 && !(0, import_schema15.isVariableBinding)(props.buttonType)) {
|
|
2147
2202
|
if (!["button", "submit", "reset"].includes(props.buttonType)) {
|
|
2148
2203
|
errors.push('Button "buttonType" must be one of: "button", "submit", "reset".');
|
|
2149
2204
|
}
|
|
2150
2205
|
}
|
|
2151
|
-
if (props.action !== void 0 && !(0,
|
|
2206
|
+
if (props.action !== void 0 && !(0, import_schema15.isActionBinding)(props.action)) {
|
|
2152
2207
|
errors.push('Button "action" must be a valid action binding when provided.');
|
|
2153
2208
|
}
|
|
2154
|
-
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)) {
|
|
2155
2210
|
errors.push('Button "disabled" must be a boolean when provided.');
|
|
2156
2211
|
}
|
|
2157
2212
|
return errors.length > 0 ? errors : true;
|
|
@@ -2239,25 +2294,25 @@ var buttonSubmitDefinition = {
|
|
|
2239
2294
|
],
|
|
2240
2295
|
validateProps: (props) => {
|
|
2241
2296
|
const errors = [];
|
|
2242
|
-
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);
|
|
2243
2298
|
if (!hasLabel) {
|
|
2244
2299
|
errors.push('Submit Button requires a non-empty "label".');
|
|
2245
2300
|
}
|
|
2246
|
-
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)) {
|
|
2247
2302
|
errors.push('Submit Button "loadingText" must be a string when provided.');
|
|
2248
2303
|
}
|
|
2249
|
-
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)) {
|
|
2250
2305
|
errors.push('Submit Button "showSpinner" must be a boolean when provided.');
|
|
2251
2306
|
}
|
|
2252
|
-
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)) {
|
|
2253
2308
|
errors.push('Submit Button "autoDisableOnSubmit" must be a boolean when provided.');
|
|
2254
2309
|
}
|
|
2255
|
-
if (props.buttonType !== void 0 && !(0,
|
|
2310
|
+
if (props.buttonType !== void 0 && !(0, import_schema15.isVariableBinding)(props.buttonType)) {
|
|
2256
2311
|
if (!["submit", "reset", "button"].includes(props.buttonType)) {
|
|
2257
2312
|
errors.push('Submit Button "buttonType" must be one of: "submit", "reset", "button".');
|
|
2258
2313
|
}
|
|
2259
2314
|
}
|
|
2260
|
-
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)) {
|
|
2261
2316
|
errors.push('Submit Button "disabled" must be a boolean when provided.');
|
|
2262
2317
|
}
|
|
2263
2318
|
return errors.length > 0 ? errors : true;
|
|
@@ -2284,7 +2339,7 @@ var buttonSubmitDefinition = {
|
|
|
2284
2339
|
};
|
|
2285
2340
|
|
|
2286
2341
|
// src/definitions/form/form.ts
|
|
2287
|
-
var
|
|
2342
|
+
var import_schema16 = require("@kubuild/schema");
|
|
2288
2343
|
var formDefinition = {
|
|
2289
2344
|
type: "form",
|
|
2290
2345
|
label: "Form",
|
|
@@ -2371,34 +2426,34 @@ var formDefinition = {
|
|
|
2371
2426
|
],
|
|
2372
2427
|
validateProps: (props) => {
|
|
2373
2428
|
const errors = [];
|
|
2374
|
-
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)) {
|
|
2375
2430
|
errors.push('Form "name" must be a string when provided.');
|
|
2376
2431
|
}
|
|
2377
|
-
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)) {
|
|
2378
2433
|
errors.push('Form "action" must be a string when provided.');
|
|
2379
2434
|
}
|
|
2380
|
-
if (props.method !== void 0 && !(0,
|
|
2435
|
+
if (props.method !== void 0 && !(0, import_schema16.isVariableBinding)(props.method)) {
|
|
2381
2436
|
if (!["GET", "POST", "get", "post"].includes(props.method)) {
|
|
2382
2437
|
errors.push('Form "method" must be either "GET" or "POST".');
|
|
2383
2438
|
}
|
|
2384
2439
|
}
|
|
2385
|
-
if (props.target !== void 0 && !(0,
|
|
2440
|
+
if (props.target !== void 0 && !(0, import_schema16.isVariableBinding)(props.target)) {
|
|
2386
2441
|
if (!["_self", "_blank", "_parent", "_top"].includes(props.target)) {
|
|
2387
2442
|
errors.push('Form "target" must be one of: "_self", "_blank", "_parent", "_top".');
|
|
2388
2443
|
}
|
|
2389
2444
|
}
|
|
2390
|
-
if (props.autoComplete !== void 0 && !(0,
|
|
2445
|
+
if (props.autoComplete !== void 0 && !(0, import_schema16.isVariableBinding)(props.autoComplete)) {
|
|
2391
2446
|
if (!["on", "off"].includes(props.autoComplete)) {
|
|
2392
2447
|
errors.push('Form "autoComplete" must be either "on" or "off".');
|
|
2393
2448
|
}
|
|
2394
2449
|
}
|
|
2395
|
-
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)) {
|
|
2396
2451
|
errors.push('Form "preventDefault" must be a boolean when provided.');
|
|
2397
2452
|
}
|
|
2398
|
-
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)) {
|
|
2399
2454
|
errors.push('Form "scrollToFirstError" must be a boolean when provided.');
|
|
2400
2455
|
}
|
|
2401
|
-
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)) {
|
|
2402
2457
|
errors.push('Form "resetOnSubmit" must be a boolean when provided.');
|
|
2403
2458
|
}
|
|
2404
2459
|
return errors.length > 0 ? errors : true;
|
|
@@ -2414,7 +2469,7 @@ var formDefinition = {
|
|
|
2414
2469
|
};
|
|
2415
2470
|
|
|
2416
2471
|
// src/definitions/form/input.ts
|
|
2417
|
-
var
|
|
2472
|
+
var import_schema17 = require("@kubuild/schema");
|
|
2418
2473
|
var inputDefinition = {
|
|
2419
2474
|
type: "input",
|
|
2420
2475
|
label: "Input",
|
|
@@ -2496,47 +2551,47 @@ var inputDefinition = {
|
|
|
2496
2551
|
],
|
|
2497
2552
|
validateProps: (props) => {
|
|
2498
2553
|
const errors = [];
|
|
2499
|
-
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)) {
|
|
2500
2555
|
errors.push('Input "name" must be a string when provided.');
|
|
2501
2556
|
}
|
|
2502
|
-
if (props.type !== void 0 && !(0,
|
|
2557
|
+
if (props.type !== void 0 && !(0, import_schema17.isVariableBinding)(props.type)) {
|
|
2503
2558
|
const validTypes = ["text", "email", "number", "password", "tel", "url", "search", "date", "hidden"];
|
|
2504
2559
|
if (!validTypes.includes(props.type)) {
|
|
2505
2560
|
errors.push(`Input "type" must be one of: ${validTypes.join(", ")}.`);
|
|
2506
2561
|
}
|
|
2507
2562
|
}
|
|
2508
|
-
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)) {
|
|
2509
2564
|
errors.push('Input "placeholder" must be a string when provided.');
|
|
2510
2565
|
}
|
|
2511
|
-
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)) {
|
|
2512
2567
|
errors.push('Input "required" must be a boolean when provided.');
|
|
2513
2568
|
}
|
|
2514
|
-
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)) {
|
|
2515
2570
|
errors.push('Input "disabled" must be a boolean when provided.');
|
|
2516
2571
|
}
|
|
2517
|
-
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)) {
|
|
2518
2573
|
errors.push('Input "readOnly" must be a boolean when provided.');
|
|
2519
2574
|
}
|
|
2520
|
-
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)) {
|
|
2521
2576
|
errors.push('Input "pattern" must be a string when provided.');
|
|
2522
2577
|
}
|
|
2523
|
-
if (props.minLength !== void 0 && !(0,
|
|
2578
|
+
if (props.minLength !== void 0 && !(0, import_schema17.isVariableBinding)(props.minLength)) {
|
|
2524
2579
|
if (typeof props.minLength !== "number" || props.minLength < 0 || !Number.isInteger(props.minLength)) {
|
|
2525
2580
|
errors.push('Input "minLength" must be a non-negative integer when provided.');
|
|
2526
2581
|
}
|
|
2527
2582
|
}
|
|
2528
|
-
if (props.maxLength !== void 0 && !(0,
|
|
2583
|
+
if (props.maxLength !== void 0 && !(0, import_schema17.isVariableBinding)(props.maxLength)) {
|
|
2529
2584
|
if (typeof props.maxLength !== "number" || props.maxLength < 0 || !Number.isInteger(props.maxLength)) {
|
|
2530
2585
|
errors.push('Input "maxLength" must be a non-negative integer when provided.');
|
|
2531
2586
|
}
|
|
2532
2587
|
}
|
|
2533
|
-
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)) {
|
|
2534
2589
|
errors.push('Input "prefixIcon" must be a string when provided.');
|
|
2535
2590
|
}
|
|
2536
|
-
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)) {
|
|
2537
2592
|
errors.push('Input "suffixIcon" must be a string when provided.');
|
|
2538
2593
|
}
|
|
2539
|
-
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)) {
|
|
2540
2595
|
errors.push('Input "helperText" must be a string when provided.');
|
|
2541
2596
|
}
|
|
2542
2597
|
return errors.length > 0 ? errors : true;
|
|
@@ -2561,7 +2616,7 @@ var inputDefinition = {
|
|
|
2561
2616
|
};
|
|
2562
2617
|
|
|
2563
2618
|
// src/definitions/form/textarea.ts
|
|
2564
|
-
var
|
|
2619
|
+
var import_schema18 = require("@kubuild/schema");
|
|
2565
2620
|
var textareaDefinition = {
|
|
2566
2621
|
type: "textarea",
|
|
2567
2622
|
label: "Textarea",
|
|
@@ -2623,41 +2678,41 @@ var textareaDefinition = {
|
|
|
2623
2678
|
],
|
|
2624
2679
|
validateProps: (props) => {
|
|
2625
2680
|
const errors = [];
|
|
2626
|
-
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)) {
|
|
2627
2682
|
errors.push('Textarea "name" must be a string when provided.');
|
|
2628
2683
|
}
|
|
2629
|
-
if (props.rows !== void 0 && !(0,
|
|
2684
|
+
if (props.rows !== void 0 && !(0, import_schema18.isVariableBinding)(props.rows)) {
|
|
2630
2685
|
if (typeof props.rows !== "number" || props.rows < 1 || !Number.isInteger(props.rows)) {
|
|
2631
2686
|
errors.push('Textarea "rows" must be a positive integer (>= 1).');
|
|
2632
2687
|
}
|
|
2633
2688
|
}
|
|
2634
|
-
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)) {
|
|
2635
2690
|
errors.push('Textarea "placeholder" must be a string when provided.');
|
|
2636
2691
|
}
|
|
2637
|
-
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)) {
|
|
2638
2693
|
errors.push('Textarea "required" must be a boolean when provided.');
|
|
2639
2694
|
}
|
|
2640
|
-
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)) {
|
|
2641
2696
|
errors.push('Textarea "disabled" must be a boolean when provided.');
|
|
2642
2697
|
}
|
|
2643
|
-
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)) {
|
|
2644
2699
|
errors.push('Textarea "readOnly" must be a boolean when provided.');
|
|
2645
2700
|
}
|
|
2646
|
-
if (props.resize !== void 0 && !(0,
|
|
2701
|
+
if (props.resize !== void 0 && !(0, import_schema18.isVariableBinding)(props.resize)) {
|
|
2647
2702
|
const allowedResize = ["vertical", "horizontal", "both", "none"];
|
|
2648
2703
|
if (typeof props.resize !== "string" || !allowedResize.includes(props.resize)) {
|
|
2649
2704
|
errors.push(`Textarea "resize" must be one of: ${allowedResize.join(", ")}.`);
|
|
2650
2705
|
}
|
|
2651
2706
|
}
|
|
2652
|
-
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)) {
|
|
2653
2708
|
errors.push('Textarea "autoGrow" must be a boolean when provided.');
|
|
2654
2709
|
}
|
|
2655
|
-
if (props.maxCharCount !== void 0 && !(0,
|
|
2710
|
+
if (props.maxCharCount !== void 0 && !(0, import_schema18.isVariableBinding)(props.maxCharCount)) {
|
|
2656
2711
|
if (typeof props.maxCharCount !== "number" || props.maxCharCount < 1 || !Number.isInteger(props.maxCharCount)) {
|
|
2657
2712
|
errors.push('Textarea "maxCharCount" must be a positive integer (>= 1) when provided.');
|
|
2658
2713
|
}
|
|
2659
2714
|
}
|
|
2660
|
-
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)) {
|
|
2661
2716
|
errors.push('Textarea "helperText" must be a string when provided.');
|
|
2662
2717
|
}
|
|
2663
2718
|
return errors.length > 0 ? errors : true;
|
|
@@ -2682,7 +2737,7 @@ var textareaDefinition = {
|
|
|
2682
2737
|
};
|
|
2683
2738
|
|
|
2684
2739
|
// src/definitions/form/select.ts
|
|
2685
|
-
var
|
|
2740
|
+
var import_schema19 = require("@kubuild/schema");
|
|
2686
2741
|
var selectDefinition = {
|
|
2687
2742
|
type: "select",
|
|
2688
2743
|
label: "Select",
|
|
@@ -2734,21 +2789,21 @@ var selectDefinition = {
|
|
|
2734
2789
|
],
|
|
2735
2790
|
validateProps: (props) => {
|
|
2736
2791
|
const errors = [];
|
|
2737
|
-
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)) {
|
|
2738
2793
|
errors.push('Select "name" must be a string when provided.');
|
|
2739
2794
|
}
|
|
2740
|
-
if (props.options !== void 0 && !(0,
|
|
2795
|
+
if (props.options !== void 0 && !(0, import_schema19.isVariableBinding)(props.options)) {
|
|
2741
2796
|
if (!Array.isArray(props.options) && typeof props.options !== "string") {
|
|
2742
2797
|
errors.push('Select "options" must be an array of option objects or a JSON string.');
|
|
2743
2798
|
}
|
|
2744
2799
|
}
|
|
2745
|
-
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)) {
|
|
2746
2801
|
errors.push('Select "required" must be a boolean when provided.');
|
|
2747
2802
|
}
|
|
2748
|
-
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)) {
|
|
2749
2804
|
errors.push('Select "disabled" must be a boolean when provided.');
|
|
2750
2805
|
}
|
|
2751
|
-
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)) {
|
|
2752
2807
|
errors.push('Select "helperText" must be a string when provided.');
|
|
2753
2808
|
}
|
|
2754
2809
|
return errors.length > 0 ? errors : true;
|
|
@@ -2773,7 +2828,7 @@ var selectDefinition = {
|
|
|
2773
2828
|
};
|
|
2774
2829
|
|
|
2775
2830
|
// src/definitions/form/checkbox.ts
|
|
2776
|
-
var
|
|
2831
|
+
var import_schema20 = require("@kubuild/schema");
|
|
2777
2832
|
var checkboxDefinition = {
|
|
2778
2833
|
type: "checkbox",
|
|
2779
2834
|
label: "Checkbox",
|
|
@@ -2815,28 +2870,28 @@ var checkboxDefinition = {
|
|
|
2815
2870
|
],
|
|
2816
2871
|
validateProps: (props) => {
|
|
2817
2872
|
const errors = [];
|
|
2818
|
-
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)) {
|
|
2819
2874
|
errors.push('Checkbox "label" must be a string when provided.');
|
|
2820
2875
|
}
|
|
2821
|
-
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)) {
|
|
2822
2877
|
errors.push('Checkbox "name" must be a string when provided.');
|
|
2823
2878
|
}
|
|
2824
|
-
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)) {
|
|
2825
2880
|
errors.push('Checkbox "value" must be a string when provided.');
|
|
2826
2881
|
}
|
|
2827
|
-
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)) {
|
|
2828
2883
|
errors.push('Checkbox "defaultChecked" must be a boolean when provided.');
|
|
2829
2884
|
}
|
|
2830
|
-
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)) {
|
|
2831
2886
|
errors.push('Checkbox "indeterminate" must be a boolean when provided.');
|
|
2832
2887
|
}
|
|
2833
|
-
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)) {
|
|
2834
2889
|
errors.push('Checkbox "required" must be a boolean when provided.');
|
|
2835
2890
|
}
|
|
2836
|
-
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)) {
|
|
2837
2892
|
errors.push('Checkbox "disabled" must be a boolean when provided.');
|
|
2838
2893
|
}
|
|
2839
|
-
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)) {
|
|
2840
2895
|
errors.push('Checkbox "helperText" must be a string when provided.');
|
|
2841
2896
|
}
|
|
2842
2897
|
return errors.length > 0 ? errors : true;
|
|
@@ -2855,7 +2910,7 @@ var checkboxDefinition = {
|
|
|
2855
2910
|
};
|
|
2856
2911
|
|
|
2857
2912
|
// src/definitions/form/switch.ts
|
|
2858
|
-
var
|
|
2913
|
+
var import_schema21 = require("@kubuild/schema");
|
|
2859
2914
|
var switchDefinition = {
|
|
2860
2915
|
type: "switch",
|
|
2861
2916
|
label: "Switch",
|
|
@@ -2907,31 +2962,31 @@ var switchDefinition = {
|
|
|
2907
2962
|
],
|
|
2908
2963
|
validateProps: (props) => {
|
|
2909
2964
|
const errors = [];
|
|
2910
|
-
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)) {
|
|
2911
2966
|
errors.push('Switch "label" must be a string when provided.');
|
|
2912
2967
|
}
|
|
2913
|
-
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)) {
|
|
2914
2969
|
errors.push('Switch "name" must be a string when provided.');
|
|
2915
2970
|
}
|
|
2916
|
-
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)) {
|
|
2917
2972
|
errors.push('Switch "value" must be a string when provided.');
|
|
2918
2973
|
}
|
|
2919
|
-
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)) {
|
|
2920
2975
|
errors.push('Switch "defaultChecked" must be a boolean when provided.');
|
|
2921
2976
|
}
|
|
2922
|
-
if (props.switchSize !== void 0 && !(0,
|
|
2977
|
+
if (props.switchSize !== void 0 && !(0, import_schema21.isVariableBinding)(props.switchSize)) {
|
|
2923
2978
|
const allowedSizes = ["sm", "md", "lg"];
|
|
2924
2979
|
if (typeof props.switchSize !== "string" || !allowedSizes.includes(props.switchSize)) {
|
|
2925
2980
|
errors.push(`Switch "switchSize" must be one of: ${allowedSizes.join(", ")}.`);
|
|
2926
2981
|
}
|
|
2927
2982
|
}
|
|
2928
|
-
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)) {
|
|
2929
2984
|
errors.push('Switch "required" must be a boolean when provided.');
|
|
2930
2985
|
}
|
|
2931
|
-
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)) {
|
|
2932
2987
|
errors.push('Switch "disabled" must be a boolean when provided.');
|
|
2933
2988
|
}
|
|
2934
|
-
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)) {
|
|
2935
2990
|
errors.push('Switch "helperText" must be a string when provided.');
|
|
2936
2991
|
}
|
|
2937
2992
|
return errors.length > 0 ? errors : true;
|
|
@@ -2950,7 +3005,7 @@ var switchDefinition = {
|
|
|
2950
3005
|
};
|
|
2951
3006
|
|
|
2952
3007
|
// src/definitions/form/radio.ts
|
|
2953
|
-
var
|
|
3008
|
+
var import_schema22 = require("@kubuild/schema");
|
|
2954
3009
|
var radioGroupDefinition = {
|
|
2955
3010
|
type: "radio-group",
|
|
2956
3011
|
label: "Radio Group",
|
|
@@ -3001,25 +3056,25 @@ var radioGroupDefinition = {
|
|
|
3001
3056
|
],
|
|
3002
3057
|
validateProps: (props) => {
|
|
3003
3058
|
const errors = [];
|
|
3004
|
-
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)) {
|
|
3005
3060
|
errors.push('RadioGroup "name" must be a string when provided.');
|
|
3006
3061
|
}
|
|
3007
|
-
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)) {
|
|
3008
3063
|
errors.push('RadioGroup "defaultSelected" must be a string when provided.');
|
|
3009
3064
|
}
|
|
3010
|
-
if (props.orientation !== void 0 && !(0,
|
|
3065
|
+
if (props.orientation !== void 0 && !(0, import_schema22.isVariableBinding)(props.orientation)) {
|
|
3011
3066
|
const allowedOrientations = ["vertical", "horizontal"];
|
|
3012
3067
|
if (typeof props.orientation !== "string" || !allowedOrientations.includes(props.orientation)) {
|
|
3013
3068
|
errors.push(`RadioGroup "orientation" must be one of: ${allowedOrientations.join(", ")}.`);
|
|
3014
3069
|
}
|
|
3015
3070
|
}
|
|
3016
|
-
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)) {
|
|
3017
3072
|
errors.push('RadioGroup "required" must be a boolean when provided.');
|
|
3018
3073
|
}
|
|
3019
|
-
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)) {
|
|
3020
3075
|
errors.push('RadioGroup "disabled" must be a boolean when provided.');
|
|
3021
3076
|
}
|
|
3022
|
-
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)) {
|
|
3023
3078
|
errors.push('RadioGroup "helperText" must be a string when provided.');
|
|
3024
3079
|
}
|
|
3025
3080
|
return errors.length > 0 ? errors : true;
|
|
@@ -3070,25 +3125,25 @@ var radioDefinition = {
|
|
|
3070
3125
|
],
|
|
3071
3126
|
validateProps: (props) => {
|
|
3072
3127
|
const errors = [];
|
|
3073
|
-
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)) {
|
|
3074
3129
|
errors.push('Radio "label" must be a string when provided.');
|
|
3075
3130
|
}
|
|
3076
|
-
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)) {
|
|
3077
3132
|
errors.push('Radio "name" must be a string when provided.');
|
|
3078
3133
|
}
|
|
3079
|
-
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)) {
|
|
3080
3135
|
errors.push('Radio "value" must be a string when provided.');
|
|
3081
3136
|
}
|
|
3082
|
-
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)) {
|
|
3083
3138
|
errors.push('Radio "defaultChecked" must be a boolean when provided.');
|
|
3084
3139
|
}
|
|
3085
|
-
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)) {
|
|
3086
3141
|
errors.push('Radio "required" must be a boolean when provided.');
|
|
3087
3142
|
}
|
|
3088
|
-
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)) {
|
|
3089
3144
|
errors.push('Radio "disabled" must be a boolean when provided.');
|
|
3090
3145
|
}
|
|
3091
|
-
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)) {
|
|
3092
3147
|
errors.push('Radio "helperText" must be a string when provided.');
|
|
3093
3148
|
}
|
|
3094
3149
|
return errors.length > 0 ? errors : true;
|
|
@@ -3112,7 +3167,7 @@ var radioItemDefinition = {
|
|
|
3112
3167
|
};
|
|
3113
3168
|
|
|
3114
3169
|
// src/definitions/form/file-upload.ts
|
|
3115
|
-
var
|
|
3170
|
+
var import_schema23 = require("@kubuild/schema");
|
|
3116
3171
|
var fileUploadDefinition = {
|
|
3117
3172
|
type: "file-upload",
|
|
3118
3173
|
label: "File Upload",
|
|
@@ -3157,33 +3212,33 @@ var fileUploadDefinition = {
|
|
|
3157
3212
|
],
|
|
3158
3213
|
validateProps: (props) => {
|
|
3159
3214
|
const errors = [];
|
|
3160
|
-
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)) {
|
|
3161
3216
|
errors.push('FileUpload "label" must be a string when provided.');
|
|
3162
3217
|
}
|
|
3163
|
-
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)) {
|
|
3164
3219
|
errors.push('FileUpload "name" must be a string when provided.');
|
|
3165
3220
|
}
|
|
3166
|
-
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)) {
|
|
3167
3222
|
errors.push('FileUpload "accept" must be a string when provided.');
|
|
3168
3223
|
}
|
|
3169
|
-
if (props.maxFileSize !== void 0 && !(0,
|
|
3224
|
+
if (props.maxFileSize !== void 0 && !(0, import_schema23.isVariableBinding)(props.maxFileSize)) {
|
|
3170
3225
|
if (typeof props.maxFileSize !== "number" || props.maxFileSize <= 0) {
|
|
3171
3226
|
errors.push('FileUpload "maxFileSize" must be a positive number when provided.');
|
|
3172
3227
|
}
|
|
3173
3228
|
}
|
|
3174
|
-
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)) {
|
|
3175
3230
|
errors.push('FileUpload "multiple" must be a boolean when provided.');
|
|
3176
3231
|
}
|
|
3177
|
-
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)) {
|
|
3178
3233
|
errors.push('FileUpload "showPreview" must be a boolean when provided.');
|
|
3179
3234
|
}
|
|
3180
|
-
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)) {
|
|
3181
3236
|
errors.push('FileUpload "required" must be a boolean when provided.');
|
|
3182
3237
|
}
|
|
3183
|
-
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)) {
|
|
3184
3239
|
errors.push('FileUpload "disabled" must be a boolean when provided.');
|
|
3185
3240
|
}
|
|
3186
|
-
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)) {
|
|
3187
3242
|
errors.push('FileUpload "helperText" must be a string when provided.');
|
|
3188
3243
|
}
|
|
3189
3244
|
return errors.length > 0 ? errors : true;
|
|
@@ -3423,6 +3478,526 @@ var collapsibleDefinition = {
|
|
|
3423
3478
|
}
|
|
3424
3479
|
};
|
|
3425
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
|
+
|
|
3426
4001
|
// src/definitions/index.ts
|
|
3427
4002
|
var coreComponentDefinitions = [
|
|
3428
4003
|
pageDefinition,
|
|
@@ -3462,7 +4037,17 @@ var coreComponentDefinitions = [
|
|
|
3462
4037
|
tableCellDefinition,
|
|
3463
4038
|
modalDefinition,
|
|
3464
4039
|
drawerDefinition,
|
|
3465
|
-
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
|
|
3466
4051
|
];
|
|
3467
4052
|
function createDefaultComponentRegistry() {
|
|
3468
4053
|
const registry = new ComponentRegistry();
|
|
@@ -3474,11 +4059,18 @@ function createDefaultComponentRegistry() {
|
|
|
3474
4059
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3475
4060
|
0 && (module.exports = {
|
|
3476
4061
|
CONTENT_CHILD_TYPES,
|
|
4062
|
+
COUNTDOWN_EXPIRE_BEHAVIORS,
|
|
4063
|
+
COUNTDOWN_FORMATS,
|
|
4064
|
+
COUNTDOWN_MODES,
|
|
4065
|
+
COUNTDOWN_STORAGE_TYPES,
|
|
3477
4066
|
LAYOUT_PARENTS,
|
|
4067
|
+
accordionDefinition,
|
|
4068
|
+
accordionItemDefinition,
|
|
3478
4069
|
badgeDefinition,
|
|
3479
4070
|
blockquoteDefinition,
|
|
3480
4071
|
buttonDefinition,
|
|
3481
4072
|
buttonSubmitDefinition,
|
|
4073
|
+
carouselDefinition,
|
|
3482
4074
|
checkboxDefinition,
|
|
3483
4075
|
codeBlockDefinition,
|
|
3484
4076
|
collapsibleDefinition,
|
|
@@ -3486,7 +4078,9 @@ function createDefaultComponentRegistry() {
|
|
|
3486
4078
|
columnsDefinition,
|
|
3487
4079
|
containerDefinition,
|
|
3488
4080
|
coreComponentDefinitions,
|
|
4081
|
+
countdownDefinition,
|
|
3489
4082
|
createDefaultComponentRegistry,
|
|
4083
|
+
dividerDefinition,
|
|
3490
4084
|
drawerDefinition,
|
|
3491
4085
|
fileUploadDefinition,
|
|
3492
4086
|
flexDefinition,
|
|
@@ -3506,12 +4100,16 @@ function createDefaultComponentRegistry() {
|
|
|
3506
4100
|
radioDefinition,
|
|
3507
4101
|
radioGroupDefinition,
|
|
3508
4102
|
radioItemDefinition,
|
|
4103
|
+
ratingDefinition,
|
|
3509
4104
|
sectionDefinition,
|
|
3510
4105
|
selectDefinition,
|
|
4106
|
+
spacerDefinition,
|
|
3511
4107
|
switchDefinition,
|
|
4108
|
+
tabPanelDefinition,
|
|
3512
4109
|
tableCellDefinition,
|
|
3513
4110
|
tableDefinition,
|
|
3514
4111
|
tableRowDefinition,
|
|
4112
|
+
tabsDefinition,
|
|
3515
4113
|
textDefinition,
|
|
3516
4114
|
textareaDefinition,
|
|
3517
4115
|
videoDefinition
|