@kubuild/components 0.2.0 → 0.3.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.
Files changed (133) hide show
  1. package/dist/blocks/forms.d.ts +6 -0
  2. package/dist/blocks/forms.d.ts.map +1 -0
  3. package/dist/blocks/index.cjs +1661 -0
  4. package/dist/blocks/index.cjs.map +1 -0
  5. package/dist/blocks/index.d.ts +11 -0
  6. package/dist/blocks/index.d.ts.map +1 -0
  7. package/dist/blocks/index.js +15 -0
  8. package/dist/blocks/index.js.map +1 -0
  9. package/dist/blocks/layout.d.ts +6 -0
  10. package/dist/blocks/layout.d.ts.map +1 -0
  11. package/dist/blocks/sections.d.ts +6 -0
  12. package/dist/blocks/sections.d.ts.map +1 -0
  13. package/dist/{blocks.d.ts → blocks/types.d.ts} +2 -5
  14. package/dist/blocks/types.d.ts.map +1 -0
  15. package/dist/chunk-JTQ35OQQ.js +1631 -0
  16. package/dist/chunk-JTQ35OQQ.js.map +1 -0
  17. package/dist/chunk-K6I6U7F3.js +2707 -0
  18. package/dist/chunk-K6I6U7F3.js.map +1 -0
  19. package/dist/chunk-OK53DS7G.js +911 -0
  20. package/dist/chunk-OK53DS7G.js.map +1 -0
  21. package/dist/definitions/constants.d.ts +10 -0
  22. package/dist/definitions/constants.d.ts.map +1 -0
  23. package/dist/definitions/data/collection.d.ts +3 -0
  24. package/dist/definitions/data/collection.d.ts.map +1 -0
  25. package/dist/definitions/data/index.d.ts +4 -0
  26. package/dist/definitions/data/index.d.ts.map +1 -0
  27. package/dist/definitions/data/list.d.ts +4 -0
  28. package/dist/definitions/data/list.d.ts.map +1 -0
  29. package/dist/definitions/data/table.d.ts +5 -0
  30. package/dist/definitions/data/table.d.ts.map +1 -0
  31. package/dist/definitions/form/button.d.ts +4 -0
  32. package/dist/definitions/form/button.d.ts.map +1 -0
  33. package/dist/definitions/form/checkbox.d.ts +3 -0
  34. package/dist/definitions/form/checkbox.d.ts.map +1 -0
  35. package/dist/definitions/form/file-upload.d.ts +3 -0
  36. package/dist/definitions/form/file-upload.d.ts.map +1 -0
  37. package/dist/definitions/form/form.d.ts +3 -0
  38. package/dist/definitions/form/form.d.ts.map +1 -0
  39. package/dist/definitions/form/index.d.ts +10 -0
  40. package/dist/definitions/form/index.d.ts.map +1 -0
  41. package/dist/definitions/form/input.d.ts +3 -0
  42. package/dist/definitions/form/input.d.ts.map +1 -0
  43. package/dist/definitions/form/radio.d.ts +5 -0
  44. package/dist/definitions/form/radio.d.ts.map +1 -0
  45. package/dist/definitions/form/select.d.ts +3 -0
  46. package/dist/definitions/form/select.d.ts.map +1 -0
  47. package/dist/definitions/form/switch.d.ts +3 -0
  48. package/dist/definitions/form/switch.d.ts.map +1 -0
  49. package/dist/definitions/form/textarea.d.ts +3 -0
  50. package/dist/definitions/form/textarea.d.ts.map +1 -0
  51. package/dist/definitions/index.cjs +3512 -0
  52. package/dist/definitions/index.cjs.map +1 -0
  53. package/dist/definitions/index.d.ts +12 -0
  54. package/dist/definitions/index.d.ts.map +1 -0
  55. package/dist/definitions/index.js +90 -0
  56. package/dist/definitions/index.js.map +1 -0
  57. package/dist/definitions/interactive/collapsible.d.ts +3 -0
  58. package/dist/definitions/interactive/collapsible.d.ts.map +1 -0
  59. package/dist/definitions/interactive/drawer.d.ts +3 -0
  60. package/dist/definitions/interactive/drawer.d.ts.map +1 -0
  61. package/dist/definitions/interactive/index.d.ts +4 -0
  62. package/dist/definitions/interactive/index.d.ts.map +1 -0
  63. package/dist/definitions/interactive/modal.d.ts +3 -0
  64. package/dist/definitions/interactive/modal.d.ts.map +1 -0
  65. package/dist/definitions/layout/columns.d.ts +3 -0
  66. package/dist/definitions/layout/columns.d.ts.map +1 -0
  67. package/dist/definitions/layout/container.d.ts +3 -0
  68. package/dist/definitions/layout/container.d.ts.map +1 -0
  69. package/dist/definitions/layout/flex.d.ts +7 -0
  70. package/dist/definitions/layout/flex.d.ts.map +1 -0
  71. package/dist/definitions/layout/grid.d.ts +7 -0
  72. package/dist/definitions/layout/grid.d.ts.map +1 -0
  73. package/dist/definitions/layout/index.d.ts +7 -0
  74. package/dist/definitions/layout/index.d.ts.map +1 -0
  75. package/dist/definitions/layout/page.d.ts +3 -0
  76. package/dist/definitions/layout/page.d.ts.map +1 -0
  77. package/dist/definitions/layout/section.d.ts +3 -0
  78. package/dist/definitions/layout/section.d.ts.map +1 -0
  79. package/dist/definitions/media/html-embed.d.ts +3 -0
  80. package/dist/definitions/media/html-embed.d.ts.map +1 -0
  81. package/dist/definitions/media/icon.d.ts +3 -0
  82. package/dist/definitions/media/icon.d.ts.map +1 -0
  83. package/dist/definitions/media/image.d.ts +3 -0
  84. package/dist/definitions/media/image.d.ts.map +1 -0
  85. package/dist/definitions/media/index.d.ts +5 -0
  86. package/dist/definitions/media/index.d.ts.map +1 -0
  87. package/dist/definitions/media/video.d.ts +3 -0
  88. package/dist/definitions/media/video.d.ts.map +1 -0
  89. package/dist/definitions/types.d.ts +5 -0
  90. package/dist/definitions/types.d.ts.map +1 -0
  91. package/dist/definitions/typography/badge.d.ts +3 -0
  92. package/dist/definitions/typography/badge.d.ts.map +1 -0
  93. package/dist/definitions/typography/blockquote.d.ts +3 -0
  94. package/dist/definitions/typography/blockquote.d.ts.map +1 -0
  95. package/dist/definitions/typography/code-block.d.ts +3 -0
  96. package/dist/definitions/typography/code-block.d.ts.map +1 -0
  97. package/dist/definitions/typography/heading.d.ts +3 -0
  98. package/dist/definitions/typography/heading.d.ts.map +1 -0
  99. package/dist/definitions/typography/index.d.ts +8 -0
  100. package/dist/definitions/typography/index.d.ts.map +1 -0
  101. package/dist/definitions/typography/link.d.ts +3 -0
  102. package/dist/definitions/typography/link.d.ts.map +1 -0
  103. package/dist/definitions/typography/paragraph.d.ts +3 -0
  104. package/dist/definitions/typography/paragraph.d.ts.map +1 -0
  105. package/dist/definitions/typography/text.d.ts +3 -0
  106. package/dist/definitions/typography/text.d.ts.map +1 -0
  107. package/dist/index.cjs +1568 -814
  108. package/dist/index.cjs.map +1 -1
  109. package/dist/index.js +120 -4332
  110. package/dist/index.js.map +1 -1
  111. package/dist/traits/common.d.ts +8 -0
  112. package/dist/traits/common.d.ts.map +1 -0
  113. package/dist/{traits.d.ts → traits/form.d.ts} +2 -109
  114. package/dist/traits/form.d.ts.map +1 -0
  115. package/dist/traits/index.cjs +998 -0
  116. package/dist/traits/index.cjs.map +1 -0
  117. package/dist/traits/index.d.ts +7 -0
  118. package/dist/traits/index.d.ts.map +1 -0
  119. package/dist/traits/index.js +129 -0
  120. package/dist/traits/index.js.map +1 -0
  121. package/dist/traits/link.d.ts +8 -0
  122. package/dist/traits/link.d.ts.map +1 -0
  123. package/dist/traits/media.d.ts +18 -0
  124. package/dist/traits/media.d.ts.map +1 -0
  125. package/dist/traits/structure.d.ts +10 -0
  126. package/dist/traits/structure.d.ts.map +1 -0
  127. package/dist/traits/types.d.ts +69 -0
  128. package/dist/traits/types.d.ts.map +1 -0
  129. package/package.json +20 -4
  130. package/dist/blocks.d.ts.map +0 -1
  131. package/dist/definitions.d.ts +0 -37
  132. package/dist/definitions.d.ts.map +0 -1
  133. package/dist/traits.d.ts.map +0 -1
@@ -0,0 +1,998 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/traits/index.ts
21
+ var traits_exports = {};
22
+ __export(traits_exports, {
23
+ TRAIT_GROUP_LABELS: () => TRAIT_GROUP_LABELS,
24
+ TRAIT_GROUP_ORDER: () => TRAIT_GROUP_ORDER,
25
+ acceptTrait: () => acceptTrait,
26
+ actionTrait: () => actionTrait,
27
+ altTrait: () => altTrait,
28
+ ariaLabelTrait: () => ariaLabelTrait,
29
+ autoCompleteTrait: () => autoCompleteTrait,
30
+ autoDisableOnSubmitTrait: () => autoDisableOnSubmitTrait,
31
+ autoGrowTrait: () => autoGrowTrait,
32
+ autoplayTrait: () => autoplayTrait,
33
+ buttonTypeTrait: () => buttonTypeTrait,
34
+ citeTrait: () => citeTrait,
35
+ colSpanTrait: () => colSpanTrait,
36
+ collectTraitNames: () => collectTraitNames,
37
+ controlsTrait: () => controlsTrait,
38
+ defaultCheckedTrait: () => defaultCheckedTrait,
39
+ defaultSelectedTrait: () => defaultSelectedTrait,
40
+ defaultValueTrait: () => defaultValueTrait,
41
+ disabledTrait: () => disabledTrait,
42
+ fieldNameTrait: () => fieldNameTrait,
43
+ helperTextTrait: () => helperTextTrait,
44
+ hrefTrait: () => hrefTrait,
45
+ idTrait: () => idTrait,
46
+ indeterminateTrait: () => indeterminateTrait,
47
+ inputTypeTrait: () => inputTypeTrait,
48
+ labelTextTrait: () => labelTextTrait,
49
+ loadingTextTrait: () => loadingTextTrait,
50
+ loadingTrait: () => loadingTrait,
51
+ loopTrait: () => loopTrait,
52
+ maxCharCountTrait: () => maxCharCountTrait,
53
+ maxFileSizeTrait: () => maxFileSizeTrait,
54
+ maxLengthTrait: () => maxLengthTrait,
55
+ methodTrait: () => methodTrait,
56
+ minLengthTrait: () => minLengthTrait,
57
+ multipleTrait: () => multipleTrait,
58
+ mutedTrait: () => mutedTrait,
59
+ optionsListTrait: () => optionsListTrait,
60
+ orientationTrait: () => orientationTrait,
61
+ patternTrait: () => patternTrait,
62
+ placeholderTrait: () => placeholderTrait,
63
+ posterTrait: () => posterTrait,
64
+ prefixIconTrait: () => prefixIconTrait,
65
+ preventDefaultTrait: () => preventDefaultTrait,
66
+ readOnlyTrait: () => readOnlyTrait,
67
+ relTrait: () => relTrait,
68
+ requiredTrait: () => requiredTrait,
69
+ resetOnSubmitTrait: () => resetOnSubmitTrait,
70
+ resizeTrait: () => resizeTrait,
71
+ rowSpanTrait: () => rowSpanTrait,
72
+ rowsTrait: () => rowsTrait,
73
+ scrollToFirstErrorTrait: () => scrollToFirstErrorTrait,
74
+ showPreviewTrait: () => showPreviewTrait,
75
+ showSpinnerTrait: () => showSpinnerTrait,
76
+ sortTraits: () => sortTraits,
77
+ srcTrait: () => srcTrait,
78
+ suffixIconTrait: () => suffixIconTrait,
79
+ switchSizeTrait: () => switchSizeTrait,
80
+ tagTrait: () => tagTrait,
81
+ targetTrait: () => targetTrait,
82
+ titleTrait: () => titleTrait,
83
+ valueTrait: () => valueTrait,
84
+ withOverrides: () => withOverrides
85
+ });
86
+ module.exports = __toCommonJS(traits_exports);
87
+
88
+ // src/traits/types.ts
89
+ var TRAIT_GROUP_ORDER = [
90
+ "identity",
91
+ "link",
92
+ "media",
93
+ "form",
94
+ "behavior",
95
+ "semantic",
96
+ "accessibility"
97
+ ];
98
+ var TRAIT_GROUP_LABELS = {
99
+ identity: "Identity",
100
+ link: "Link",
101
+ media: "Media",
102
+ form: "Form",
103
+ behavior: "Behavior",
104
+ semantic: "Semantic",
105
+ accessibility: "Accessibility"
106
+ };
107
+ function withOverrides(base, overrides) {
108
+ return overrides ? { ...base, ...overrides } : base;
109
+ }
110
+ function sortTraits(traits) {
111
+ const groupRank = (group) => {
112
+ if (!group) return Number.MAX_SAFE_INTEGER;
113
+ const idx = TRAIT_GROUP_ORDER.indexOf(group);
114
+ return idx === -1 ? Number.MAX_SAFE_INTEGER : idx;
115
+ };
116
+ return [...traits].sort((a, b) => groupRank(a.group) - groupRank(b.group));
117
+ }
118
+ function collectTraitNames(traitsList) {
119
+ const names = /* @__PURE__ */ new Set();
120
+ for (const traits of traitsList) {
121
+ for (const trait of traits) {
122
+ names.add(trait.name);
123
+ }
124
+ }
125
+ return Array.from(names);
126
+ }
127
+
128
+ // src/traits/common.ts
129
+ function idTrait(overrides) {
130
+ return withOverrides(
131
+ {
132
+ name: "id",
133
+ label: "Element ID",
134
+ type: "string",
135
+ attribute: "id",
136
+ group: "identity",
137
+ description: "A custom, document-unique identifier used for anchors, CSS, and scripting."
138
+ },
139
+ overrides
140
+ );
141
+ }
142
+ function titleTrait(overrides) {
143
+ return withOverrides(
144
+ {
145
+ name: "title",
146
+ label: "Title",
147
+ type: "string",
148
+ attribute: "title",
149
+ group: "semantic",
150
+ description: "Advisory title for the element (tooltip / document title)."
151
+ },
152
+ overrides
153
+ );
154
+ }
155
+ function ariaLabelTrait(overrides) {
156
+ return withOverrides(
157
+ {
158
+ name: "ariaLabel",
159
+ label: "Accessible Label (aria-label)",
160
+ type: "string",
161
+ attribute: "aria-label",
162
+ group: "accessibility",
163
+ description: "Accessible name for assistive technology when no visible label exists."
164
+ },
165
+ overrides
166
+ );
167
+ }
168
+
169
+ // src/traits/link.ts
170
+ function hrefTrait(overrides) {
171
+ return withOverrides(
172
+ {
173
+ name: "href",
174
+ label: "Link URL",
175
+ type: "string",
176
+ defaultValue: "#",
177
+ attribute: "href",
178
+ group: "link",
179
+ description: "The destination URL the element navigates to when activated."
180
+ },
181
+ overrides
182
+ );
183
+ }
184
+ function targetTrait(overrides) {
185
+ return withOverrides(
186
+ {
187
+ name: "target",
188
+ label: "Open In",
189
+ type: "select",
190
+ defaultValue: "_self",
191
+ attribute: "target",
192
+ group: "link",
193
+ options: [
194
+ { label: "Same tab (_self)", value: "_self" },
195
+ { label: "New tab (_blank)", value: "_blank" },
196
+ { label: "Parent frame (_parent)", value: "_parent" },
197
+ { label: "Top frame (_top)", value: "_top" }
198
+ ],
199
+ description: "Where the linked resource should open."
200
+ },
201
+ overrides
202
+ );
203
+ }
204
+ function relTrait(overrides) {
205
+ return withOverrides(
206
+ {
207
+ name: "rel",
208
+ label: "Relationship (rel)",
209
+ type: "string",
210
+ defaultValue: "",
211
+ attribute: "rel",
212
+ group: "link",
213
+ description: 'Space-separated relationship tokens (e.g. "noopener noreferrer").'
214
+ },
215
+ overrides
216
+ );
217
+ }
218
+
219
+ // src/traits/media.ts
220
+ function srcTrait(overrides) {
221
+ return withOverrides(
222
+ {
223
+ name: "src",
224
+ label: "Source URL",
225
+ type: "string",
226
+ attribute: "src",
227
+ group: "media",
228
+ required: true,
229
+ description: "The source URL of the media resource."
230
+ },
231
+ overrides
232
+ );
233
+ }
234
+ function altTrait(overrides) {
235
+ return withOverrides(
236
+ {
237
+ name: "alt",
238
+ label: "Alt Text",
239
+ type: "string",
240
+ attribute: "alt",
241
+ group: "accessibility",
242
+ required: true,
243
+ description: "Alternative text describing the media for screen readers and fallback."
244
+ },
245
+ overrides
246
+ );
247
+ }
248
+ function posterTrait(overrides) {
249
+ return withOverrides(
250
+ {
251
+ name: "poster",
252
+ label: "Poster Image URL",
253
+ type: "string",
254
+ attribute: "poster",
255
+ group: "media",
256
+ description: "A preview image shown before the video starts playing."
257
+ },
258
+ overrides
259
+ );
260
+ }
261
+ function controlsTrait(overrides) {
262
+ return withOverrides(
263
+ {
264
+ name: "controls",
265
+ label: "Show Controls",
266
+ type: "boolean",
267
+ defaultValue: true,
268
+ attribute: "controls",
269
+ group: "media",
270
+ description: "Whether to show the native play/pause/volume controls."
271
+ },
272
+ overrides
273
+ );
274
+ }
275
+ function autoplayTrait(overrides) {
276
+ return withOverrides(
277
+ {
278
+ name: "autoplay",
279
+ label: "Autoplay",
280
+ type: "boolean",
281
+ defaultValue: false,
282
+ attribute: "autoplay",
283
+ group: "media",
284
+ description: "Whether the media starts playing automatically on load."
285
+ },
286
+ overrides
287
+ );
288
+ }
289
+ function loopTrait(overrides) {
290
+ return withOverrides(
291
+ {
292
+ name: "loop",
293
+ label: "Loop",
294
+ type: "boolean",
295
+ defaultValue: false,
296
+ attribute: "loop",
297
+ group: "media",
298
+ description: "Whether the media restarts automatically when it reaches the end."
299
+ },
300
+ overrides
301
+ );
302
+ }
303
+ function mutedTrait(overrides) {
304
+ return withOverrides(
305
+ {
306
+ name: "muted",
307
+ label: "Muted",
308
+ type: "boolean",
309
+ defaultValue: false,
310
+ attribute: "muted",
311
+ group: "media",
312
+ description: "Whether the media starts with the audio muted."
313
+ },
314
+ overrides
315
+ );
316
+ }
317
+ function loadingTrait(overrides) {
318
+ return withOverrides(
319
+ {
320
+ name: "loading",
321
+ label: "Loading Mode",
322
+ type: "select",
323
+ defaultValue: "lazy",
324
+ attribute: "loading",
325
+ group: "media",
326
+ options: [
327
+ { label: "Lazy (load when near viewport)", value: "lazy" },
328
+ { label: "Eager (load immediately)", value: "eager" }
329
+ ],
330
+ description: "Native loading hint: lazy defers offscreen images, eager loads immediately."
331
+ },
332
+ overrides
333
+ );
334
+ }
335
+
336
+ // src/traits/structure.ts
337
+ function citeTrait(overrides) {
338
+ return withOverrides(
339
+ {
340
+ name: "cite",
341
+ label: "Citation URL (cite)",
342
+ type: "string",
343
+ attribute: "cite",
344
+ group: "semantic",
345
+ description: "The URL of the source document the quote is taken from."
346
+ },
347
+ overrides
348
+ );
349
+ }
350
+ function colSpanTrait(overrides) {
351
+ return withOverrides(
352
+ {
353
+ name: "colSpan",
354
+ label: "Column Span (colSpan)",
355
+ type: "number",
356
+ defaultValue: 1,
357
+ attribute: "colspan",
358
+ group: "semantic",
359
+ description: "The number of columns the cell spans."
360
+ },
361
+ overrides
362
+ );
363
+ }
364
+ function rowSpanTrait(overrides) {
365
+ return withOverrides(
366
+ {
367
+ name: "rowSpan",
368
+ label: "Row Span (rowSpan)",
369
+ type: "number",
370
+ defaultValue: 1,
371
+ attribute: "rowspan",
372
+ group: "semantic",
373
+ description: "The number of rows the cell spans."
374
+ },
375
+ overrides
376
+ );
377
+ }
378
+ function tagTrait(overrides) {
379
+ return withOverrides(
380
+ {
381
+ name: "tag",
382
+ label: "HTML Tag",
383
+ type: "select",
384
+ attribute: "tag",
385
+ group: "semantic",
386
+ description: "The semantic HTML tag the component renders as."
387
+ },
388
+ overrides
389
+ );
390
+ }
391
+
392
+ // src/traits/form.ts
393
+ function placeholderTrait(overrides) {
394
+ return withOverrides(
395
+ {
396
+ name: "placeholder",
397
+ label: "Placeholder",
398
+ type: "string",
399
+ attribute: "placeholder",
400
+ group: "form",
401
+ description: "Hint text shown inside the control when it is empty."
402
+ },
403
+ overrides
404
+ );
405
+ }
406
+ function fieldNameTrait(overrides) {
407
+ return withOverrides(
408
+ {
409
+ name: "name",
410
+ label: "Field Name",
411
+ type: "string",
412
+ attribute: "name",
413
+ group: "form",
414
+ required: true,
415
+ description: "The name submitted with the form data for this field."
416
+ },
417
+ overrides
418
+ );
419
+ }
420
+ function requiredTrait(overrides) {
421
+ return withOverrides(
422
+ {
423
+ name: "required",
424
+ label: "Required",
425
+ type: "boolean",
426
+ defaultValue: false,
427
+ attribute: "required",
428
+ group: "form",
429
+ description: "Whether the field must be filled before the form can be submitted."
430
+ },
431
+ overrides
432
+ );
433
+ }
434
+ function disabledTrait(overrides) {
435
+ return withOverrides(
436
+ {
437
+ name: "disabled",
438
+ label: "Disabled",
439
+ type: "boolean",
440
+ defaultValue: false,
441
+ attribute: "disabled",
442
+ group: "behavior",
443
+ description: "Disables the control so it cannot be focused or activated."
444
+ },
445
+ overrides
446
+ );
447
+ }
448
+ function readOnlyTrait(overrides) {
449
+ return withOverrides(
450
+ {
451
+ name: "readOnly",
452
+ label: "Read Only",
453
+ type: "boolean",
454
+ defaultValue: false,
455
+ attribute: "readonly",
456
+ group: "behavior",
457
+ description: "Prevents the user from modifying the control value."
458
+ },
459
+ overrides
460
+ );
461
+ }
462
+ function actionTrait(overrides) {
463
+ return withOverrides(
464
+ {
465
+ name: "action",
466
+ label: "Action URL",
467
+ type: "string",
468
+ attribute: "action",
469
+ group: "form",
470
+ description: "The URL the form data is submitted to."
471
+ },
472
+ overrides
473
+ );
474
+ }
475
+ function methodTrait(overrides) {
476
+ return withOverrides(
477
+ {
478
+ name: "method",
479
+ label: "Method",
480
+ type: "select",
481
+ defaultValue: "POST",
482
+ attribute: "method",
483
+ group: "form",
484
+ options: [
485
+ { label: "POST", value: "POST" },
486
+ { label: "GET", value: "GET" }
487
+ ],
488
+ description: "The HTTP method used to submit the form."
489
+ },
490
+ overrides
491
+ );
492
+ }
493
+ function autoCompleteTrait(overrides) {
494
+ return withOverrides(
495
+ {
496
+ name: "autoComplete",
497
+ label: "Auto Complete",
498
+ type: "select",
499
+ defaultValue: "on",
500
+ attribute: "autocomplete",
501
+ group: "form",
502
+ options: [
503
+ { label: "On", value: "on" },
504
+ { label: "Off", value: "off" }
505
+ ],
506
+ description: "Whether the browser may autofill values for this form."
507
+ },
508
+ overrides
509
+ );
510
+ }
511
+ function valueTrait(overrides) {
512
+ return withOverrides(
513
+ {
514
+ name: "value",
515
+ label: "Value",
516
+ type: "string",
517
+ attribute: "value",
518
+ group: "form",
519
+ description: "The value submitted with the form data when the control is selected."
520
+ },
521
+ overrides
522
+ );
523
+ }
524
+ function defaultCheckedTrait(overrides) {
525
+ return withOverrides(
526
+ {
527
+ name: "defaultChecked",
528
+ label: "Default Checked",
529
+ type: "boolean",
530
+ defaultValue: false,
531
+ attribute: "checked",
532
+ group: "form",
533
+ description: "Whether the control starts in the checked state."
534
+ },
535
+ overrides
536
+ );
537
+ }
538
+ function defaultValueTrait(overrides) {
539
+ return withOverrides(
540
+ {
541
+ name: "defaultValue",
542
+ label: "Default Value",
543
+ type: "string",
544
+ attribute: "value",
545
+ group: "form",
546
+ description: "The initial value of the control before the user edits it."
547
+ },
548
+ overrides
549
+ );
550
+ }
551
+ function rowsTrait(overrides) {
552
+ return withOverrides(
553
+ {
554
+ name: "rows",
555
+ label: "Rows",
556
+ type: "number",
557
+ defaultValue: 4,
558
+ attribute: "rows",
559
+ group: "form",
560
+ description: "The number of visible text lines in the textarea."
561
+ },
562
+ overrides
563
+ );
564
+ }
565
+ function inputTypeTrait(overrides) {
566
+ return withOverrides(
567
+ {
568
+ name: "type",
569
+ label: "Input Type",
570
+ type: "select",
571
+ defaultValue: "text",
572
+ attribute: "type",
573
+ group: "form",
574
+ description: "The semantic input type of the control."
575
+ },
576
+ overrides
577
+ );
578
+ }
579
+ function buttonTypeTrait(overrides) {
580
+ return withOverrides(
581
+ {
582
+ name: "buttonType",
583
+ label: "Button Type",
584
+ type: "select",
585
+ defaultValue: "button",
586
+ attribute: "type",
587
+ group: "form",
588
+ options: [
589
+ { label: "Button", value: "button" },
590
+ { label: "Submit Form (submit)", value: "submit" },
591
+ { label: "Reset Form (reset)", value: "reset" }
592
+ ],
593
+ description: "The button\u2019s behavior inside a form."
594
+ },
595
+ overrides
596
+ );
597
+ }
598
+ function preventDefaultTrait(overrides) {
599
+ return withOverrides(
600
+ {
601
+ name: "preventDefault",
602
+ label: "Prevent Default",
603
+ type: "boolean",
604
+ defaultValue: true,
605
+ group: "form",
606
+ description: "Intercept the native browser submit and handle it via the KUBUILD action pipeline instead."
607
+ },
608
+ overrides
609
+ );
610
+ }
611
+ function scrollToFirstErrorTrait(overrides) {
612
+ return withOverrides(
613
+ {
614
+ name: "scrollToFirstError",
615
+ label: "Scroll to First Error",
616
+ type: "boolean",
617
+ defaultValue: true,
618
+ group: "form",
619
+ description: "Automatically scroll to and focus the first invalid field when submission fails validation."
620
+ },
621
+ overrides
622
+ );
623
+ }
624
+ function resetOnSubmitTrait(overrides) {
625
+ return withOverrides(
626
+ {
627
+ name: "resetOnSubmit",
628
+ label: "Reset on Submit",
629
+ type: "boolean",
630
+ defaultValue: false,
631
+ group: "form",
632
+ description: "Reset all fields to their initial values after a successful form submission."
633
+ },
634
+ overrides
635
+ );
636
+ }
637
+ function patternTrait(overrides) {
638
+ return withOverrides(
639
+ {
640
+ name: "pattern",
641
+ label: "Pattern (regex)",
642
+ type: "string",
643
+ attribute: "pattern",
644
+ group: "form",
645
+ description: "A regular expression the input value must match to pass validation."
646
+ },
647
+ overrides
648
+ );
649
+ }
650
+ function minLengthTrait(overrides) {
651
+ return withOverrides(
652
+ {
653
+ name: "minLength",
654
+ label: "Min Length",
655
+ type: "number",
656
+ attribute: "minlength",
657
+ group: "form",
658
+ description: "The minimum number of characters the user must enter."
659
+ },
660
+ overrides
661
+ );
662
+ }
663
+ function maxLengthTrait(overrides) {
664
+ return withOverrides(
665
+ {
666
+ name: "maxLength",
667
+ label: "Max Length",
668
+ type: "number",
669
+ attribute: "maxlength",
670
+ group: "form",
671
+ description: "The maximum number of characters the user is allowed to enter."
672
+ },
673
+ overrides
674
+ );
675
+ }
676
+ function prefixIconTrait(overrides) {
677
+ return withOverrides(
678
+ {
679
+ name: "prefixIcon",
680
+ label: "Prefix Icon",
681
+ type: "string",
682
+ group: "form",
683
+ description: 'Lucide icon name displayed before the input value (e.g. "mail", "search").'
684
+ },
685
+ overrides
686
+ );
687
+ }
688
+ function suffixIconTrait(overrides) {
689
+ return withOverrides(
690
+ {
691
+ name: "suffixIcon",
692
+ label: "Suffix Icon",
693
+ type: "string",
694
+ group: "form",
695
+ description: 'Lucide icon name displayed after the input value (e.g. "eye", "check").'
696
+ },
697
+ overrides
698
+ );
699
+ }
700
+ function helperTextTrait(overrides) {
701
+ return withOverrides(
702
+ {
703
+ name: "helperText",
704
+ label: "Helper Text",
705
+ type: "string",
706
+ group: "form",
707
+ description: 'A short message displayed below the input to guide the user (e.g. "Must be at least 8 characters").'
708
+ },
709
+ overrides
710
+ );
711
+ }
712
+ function resizeTrait(overrides) {
713
+ return withOverrides(
714
+ {
715
+ name: "resize",
716
+ label: "Resize",
717
+ type: "select",
718
+ defaultValue: "vertical",
719
+ group: "form",
720
+ options: [
721
+ { label: "Vertical only", value: "vertical" },
722
+ { label: "Horizontal only", value: "horizontal" },
723
+ { label: "Both", value: "both" },
724
+ { label: "None", value: "none" }
725
+ ],
726
+ description: "Controls whether and how the user can resize the textarea."
727
+ },
728
+ overrides
729
+ );
730
+ }
731
+ function autoGrowTrait(overrides) {
732
+ return withOverrides(
733
+ {
734
+ name: "autoGrow",
735
+ label: "Auto Grow",
736
+ type: "boolean",
737
+ defaultValue: false,
738
+ group: "form",
739
+ description: "Automatically expand the textarea height to fit the content without scrolling."
740
+ },
741
+ overrides
742
+ );
743
+ }
744
+ function maxCharCountTrait(overrides) {
745
+ return withOverrides(
746
+ {
747
+ name: "maxCharCount",
748
+ label: "Max Character Count",
749
+ type: "number",
750
+ group: "form",
751
+ description: 'Maximum character limit displayed as a counter below the textarea (e.g. "120 / 500").'
752
+ },
753
+ overrides
754
+ );
755
+ }
756
+ function optionsListTrait(overrides) {
757
+ return withOverrides(
758
+ {
759
+ name: "options",
760
+ label: "Options",
761
+ type: "string",
762
+ group: "form",
763
+ description: "The list of dropdown options, each with a label and value. Editable via the inspector trait panel."
764
+ },
765
+ overrides
766
+ );
767
+ }
768
+ function labelTextTrait(overrides) {
769
+ return withOverrides(
770
+ {
771
+ name: "label",
772
+ label: "Label Text",
773
+ type: "string",
774
+ group: "form",
775
+ description: "The visible text label displayed alongside the control."
776
+ },
777
+ overrides
778
+ );
779
+ }
780
+ function indeterminateTrait(overrides) {
781
+ return withOverrides(
782
+ {
783
+ name: "indeterminate",
784
+ label: "Indeterminate",
785
+ type: "boolean",
786
+ defaultValue: false,
787
+ group: "form",
788
+ description: "Renders the checkbox in a mixed/indeterminate visual state (neither checked nor unchecked)."
789
+ },
790
+ overrides
791
+ );
792
+ }
793
+ function switchSizeTrait(overrides) {
794
+ return withOverrides(
795
+ {
796
+ name: "switchSize",
797
+ label: "Size",
798
+ type: "select",
799
+ defaultValue: "md",
800
+ group: "form",
801
+ options: [
802
+ { label: "Small", value: "sm" },
803
+ { label: "Medium", value: "md" },
804
+ { label: "Large", value: "lg" }
805
+ ],
806
+ description: "The visual size of the switch toggle."
807
+ },
808
+ overrides
809
+ );
810
+ }
811
+ function orientationTrait(overrides) {
812
+ return withOverrides(
813
+ {
814
+ name: "orientation",
815
+ label: "Orientation",
816
+ type: "select",
817
+ defaultValue: "vertical",
818
+ group: "form",
819
+ options: [
820
+ { label: "Vertical", value: "vertical" },
821
+ { label: "Horizontal", value: "horizontal" }
822
+ ],
823
+ description: "The layout direction of the child controls (vertical stack or horizontal row)."
824
+ },
825
+ overrides
826
+ );
827
+ }
828
+ function defaultSelectedTrait(overrides) {
829
+ return withOverrides(
830
+ {
831
+ name: "defaultSelected",
832
+ label: "Default Selected",
833
+ type: "string",
834
+ group: "form",
835
+ description: "The value of the radio item that is selected by default."
836
+ },
837
+ overrides
838
+ );
839
+ }
840
+ function acceptTrait(overrides) {
841
+ return withOverrides(
842
+ {
843
+ name: "accept",
844
+ label: "Accepted File Types",
845
+ type: "string",
846
+ attribute: "accept",
847
+ defaultValue: "*/*",
848
+ group: "form",
849
+ description: 'Comma-separated list of MIME types or file extensions accepted (e.g. "image/*,.pdf,.docx").'
850
+ },
851
+ overrides
852
+ );
853
+ }
854
+ function maxFileSizeTrait(overrides) {
855
+ return withOverrides(
856
+ {
857
+ name: "maxFileSize",
858
+ label: "Max File Size (MB)",
859
+ type: "number",
860
+ defaultValue: 10,
861
+ group: "form",
862
+ description: "The maximum allowable file size in megabytes (MB)."
863
+ },
864
+ overrides
865
+ );
866
+ }
867
+ function multipleTrait(overrides) {
868
+ return withOverrides(
869
+ {
870
+ name: "multiple",
871
+ label: "Allow Multiple Files",
872
+ type: "boolean",
873
+ attribute: "multiple",
874
+ defaultValue: false,
875
+ group: "form",
876
+ description: "Allow multiple files to be selected and uploaded at once."
877
+ },
878
+ overrides
879
+ );
880
+ }
881
+ function showPreviewTrait(overrides) {
882
+ return withOverrides(
883
+ {
884
+ name: "showPreview",
885
+ label: "Show Preview",
886
+ type: "boolean",
887
+ defaultValue: true,
888
+ group: "form",
889
+ description: "Display an interactive preview (image thumbnail or file list with badges) for selected files."
890
+ },
891
+ overrides
892
+ );
893
+ }
894
+ function loadingTextTrait(overrides) {
895
+ return withOverrides(
896
+ {
897
+ name: "loadingText",
898
+ label: "Loading Text",
899
+ type: "string",
900
+ defaultValue: "Submitting...",
901
+ group: "behavior",
902
+ description: "Text displayed on the button while the form submission is in progress."
903
+ },
904
+ overrides
905
+ );
906
+ }
907
+ function showSpinnerTrait(overrides) {
908
+ return withOverrides(
909
+ {
910
+ name: "showSpinner",
911
+ label: "Show Loading Spinner",
912
+ type: "boolean",
913
+ defaultValue: true,
914
+ group: "behavior",
915
+ description: "Automatically show an animated loading spinner icon while form is submitting."
916
+ },
917
+ overrides
918
+ );
919
+ }
920
+ function autoDisableOnSubmitTrait(overrides) {
921
+ return withOverrides(
922
+ {
923
+ name: "autoDisableOnSubmit",
924
+ label: "Auto Disable on Submit",
925
+ type: "boolean",
926
+ defaultValue: true,
927
+ group: "behavior",
928
+ description: "Automatically disable the button to prevent duplicate submissions while the form is submitting."
929
+ },
930
+ overrides
931
+ );
932
+ }
933
+ // Annotate the CommonJS export names for ESM import in node:
934
+ 0 && (module.exports = {
935
+ TRAIT_GROUP_LABELS,
936
+ TRAIT_GROUP_ORDER,
937
+ acceptTrait,
938
+ actionTrait,
939
+ altTrait,
940
+ ariaLabelTrait,
941
+ autoCompleteTrait,
942
+ autoDisableOnSubmitTrait,
943
+ autoGrowTrait,
944
+ autoplayTrait,
945
+ buttonTypeTrait,
946
+ citeTrait,
947
+ colSpanTrait,
948
+ collectTraitNames,
949
+ controlsTrait,
950
+ defaultCheckedTrait,
951
+ defaultSelectedTrait,
952
+ defaultValueTrait,
953
+ disabledTrait,
954
+ fieldNameTrait,
955
+ helperTextTrait,
956
+ hrefTrait,
957
+ idTrait,
958
+ indeterminateTrait,
959
+ inputTypeTrait,
960
+ labelTextTrait,
961
+ loadingTextTrait,
962
+ loadingTrait,
963
+ loopTrait,
964
+ maxCharCountTrait,
965
+ maxFileSizeTrait,
966
+ maxLengthTrait,
967
+ methodTrait,
968
+ minLengthTrait,
969
+ multipleTrait,
970
+ mutedTrait,
971
+ optionsListTrait,
972
+ orientationTrait,
973
+ patternTrait,
974
+ placeholderTrait,
975
+ posterTrait,
976
+ prefixIconTrait,
977
+ preventDefaultTrait,
978
+ readOnlyTrait,
979
+ relTrait,
980
+ requiredTrait,
981
+ resetOnSubmitTrait,
982
+ resizeTrait,
983
+ rowSpanTrait,
984
+ rowsTrait,
985
+ scrollToFirstErrorTrait,
986
+ showPreviewTrait,
987
+ showSpinnerTrait,
988
+ sortTraits,
989
+ srcTrait,
990
+ suffixIconTrait,
991
+ switchSizeTrait,
992
+ tagTrait,
993
+ targetTrait,
994
+ titleTrait,
995
+ valueTrait,
996
+ withOverrides
997
+ });
998
+ //# sourceMappingURL=index.cjs.map