jsonforms-nuxt-ui-renderers 0.2.0 → 0.2.2

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/index.js CHANGED
@@ -26,14 +26,49 @@ import {
26
26
  getFirstPrimitiveProp
27
27
  } from "@jsonforms/core";
28
28
  import { DispatchRenderer, rendererProps, useJsonFormsArrayControl } from "@jsonforms/vue";
29
- import { computed as computed2, defineComponent, h, resolveComponent } from "vue";
29
+ import { computed as computed2, defineComponent, h as h2, resolveComponent } from "vue";
30
30
 
31
31
  // src/renderers/util.ts
32
+ import { h } from "vue";
32
33
  import { computed } from "vue";
34
+ function getDocsPathFromSchema(schema) {
35
+ if (!schema || typeof schema !== "object" || Array.isArray(schema))
36
+ return null;
37
+ const s = schema;
38
+ const path = s["x-docs-path"];
39
+ if (typeof path === "string" && path.startsWith("/")) return path;
40
+ return null;
41
+ }
42
+ function renderDocsHintSlot(schema, label, docsUrl, resolveComponent10) {
43
+ const path = getDocsPathFromSchema(schema);
44
+ if (!path || !docsUrl) return void 0;
45
+ const ULink = resolveComponent10("ULink");
46
+ const UIcon = resolveComponent10("UIcon");
47
+ if (!ULink || !UIcon) return void 0;
48
+ const href = docsUrl(path);
49
+ return () => h(
50
+ ULink,
51
+ {
52
+ href,
53
+ target: "_blank",
54
+ rel: "noopener noreferrer",
55
+ class: "inline-flex items-center text-muted hover:text-primary",
56
+ "aria-label": `${label} docs`,
57
+ title: `${label} docs`
58
+ },
59
+ () => h(UIcon, { name: "i-heroicons-information-circle" })
60
+ );
61
+ }
33
62
  function trimmedOrUndefined(input) {
34
63
  const v = input?.trim();
35
64
  return v ? v : void 0;
36
65
  }
66
+ function controlDescription(control) {
67
+ const d = control.description?.trim();
68
+ if (d) return d;
69
+ const sd = control.schema?.description;
70
+ return typeof sd === "string" && sd.trim() ? sd.trim() : void 0;
71
+ }
37
72
 
38
73
  // src/renderers/complex/NuxtUiArrayListRenderer.ts
39
74
  function createNuxtUiArrayListRenderer(theme) {
@@ -106,10 +141,10 @@ function createNuxtUiArrayListRenderer(theme) {
106
141
  if (!control.value.visible) return null;
107
142
  const UFormField = resolveComponent("UFormField");
108
143
  const UButton = resolveComponent("UButton");
109
- return h(
144
+ return h2(
110
145
  "div",
111
146
  {},
112
- h(
147
+ h2(
113
148
  UFormField,
114
149
  {
115
150
  label: control.value.label,
@@ -118,14 +153,14 @@ function createNuxtUiArrayListRenderer(theme) {
118
153
  error: errorMessage.value
119
154
  },
120
155
  {
121
- default: () => h("div", { class: theme.layoutVertical }, [
122
- h("div", { class: theme.flexBetween }, [
123
- h(
156
+ default: () => h2("div", { class: theme.layoutVertical }, [
157
+ h2("div", { class: theme.flexBetween }, [
158
+ h2(
124
159
  "div",
125
160
  { class: theme.textMutedXs },
126
161
  `${items.value.length} items`
127
162
  ),
128
- h(
163
+ h2(
129
164
  UButton,
130
165
  {
131
166
  type: "button",
@@ -138,26 +173,26 @@ function createNuxtUiArrayListRenderer(theme) {
138
173
  { default: () => "Add" }
139
174
  )
140
175
  ]),
141
- items.value.length === 0 ? h("div", { class: theme.textMuted }, "No items.") : null,
176
+ items.value.length === 0 ? h2("div", { class: theme.textMuted }, "No items.") : null,
142
177
  ...items.value.map(
143
- (_item, index) => h(
178
+ (_item, index) => h2(
144
179
  "div",
145
180
  {
146
181
  key: `${control.value.path}-${index}`,
147
182
  class: theme.panel
148
183
  },
149
184
  [
150
- h(
185
+ h2(
151
186
  "div",
152
187
  { class: theme.arrayItemToolbar },
153
188
  [
154
- h("div", { class: "jf-min-w-0" }, [
155
- h(
189
+ h2("div", { class: "jf-min-w-0" }, [
190
+ h2(
156
191
  "div",
157
192
  { class: theme.textItemTitle },
158
193
  [
159
194
  `Item ${index + 1}`,
160
- childLabelForIndex(index) ? h(
195
+ childLabelForIndex(index) ? h2(
161
196
  "span",
162
197
  { class: theme.textItemSuffix },
163
198
  ` \u2014 ${childLabelForIndex(index)}`
@@ -165,8 +200,8 @@ function createNuxtUiArrayListRenderer(theme) {
165
200
  ]
166
201
  )
167
202
  ]),
168
- h("div", { class: theme.flexActions }, [
169
- h(
203
+ h2("div", { class: theme.flexActions }, [
204
+ h2(
170
205
  UButton,
171
206
  {
172
207
  type: "button",
@@ -178,7 +213,7 @@ function createNuxtUiArrayListRenderer(theme) {
178
213
  },
179
214
  { default: () => "Up" }
180
215
  ),
181
- h(
216
+ h2(
182
217
  UButton,
183
218
  {
184
219
  type: "button",
@@ -190,7 +225,7 @@ function createNuxtUiArrayListRenderer(theme) {
190
225
  },
191
226
  { default: () => "Down" }
192
227
  ),
193
- h(
228
+ h2(
194
229
  UButton,
195
230
  {
196
231
  type: "button",
@@ -207,7 +242,7 @@ function createNuxtUiArrayListRenderer(theme) {
207
242
  ])
208
243
  ]
209
244
  ),
210
- h(DispatchRenderer, {
245
+ h2(DispatchRenderer, {
211
246
  schema: control.value.schema,
212
247
  uischema: childUiSchema.value,
213
248
  path: composePaths(control.value.path, `${index}`),
@@ -234,7 +269,7 @@ import {
234
269
  rendererProps as rendererProps2,
235
270
  useJsonFormsControlWithDetail
236
271
  } from "@jsonforms/vue";
237
- import { computed as computed3, defineComponent as defineComponent2, h as h2 } from "vue";
272
+ import { computed as computed3, defineComponent as defineComponent2, h as h3 } from "vue";
238
273
  var NuxtUiObjectRenderer = defineComponent2({
239
274
  name: "NuxtUiObjectRenderer",
240
275
  components: { DispatchRenderer: DispatchRenderer2 },
@@ -271,7 +306,7 @@ var NuxtUiObjectRenderer = defineComponent2({
271
306
  });
272
307
  return () => {
273
308
  if (!control.value.visible) return null;
274
- return h2(DispatchRenderer2, {
309
+ return h3(DispatchRenderer2, {
275
310
  visible: control.value.visible,
276
311
  enabled: control.value.enabled,
277
312
  schema: control.value.schema,
@@ -286,7 +321,7 @@ var NuxtUiObjectRenderer = defineComponent2({
286
321
 
287
322
  // src/renderers/controls/NuxtUiBooleanControl.ts
288
323
  import { rendererProps as rendererProps3, useJsonFormsControl } from "@jsonforms/vue";
289
- import { computed as computed4, defineComponent as defineComponent3, h as h3, resolveComponent as resolveComponent2 } from "vue";
324
+ import { computed as computed4, defineComponent as defineComponent3, h as h4, resolveComponent as resolveComponent2 } from "vue";
290
325
  function createNuxtUiBooleanControl(theme) {
291
326
  return defineComponent3({
292
327
  name: "NuxtUiBooleanControl",
@@ -304,22 +339,22 @@ function createNuxtUiBooleanControl(theme) {
304
339
  if (!control.value.visible) return null;
305
340
  const UFormField = resolveComponent2("UFormField");
306
341
  const USwitch = resolveComponent2("USwitch");
307
- return h3(
342
+ return h4(
308
343
  "div",
309
344
  {},
310
- h3(
345
+ h4(
311
346
  UFormField,
312
347
  {
313
348
  label: control.value.label,
314
- description: control.value.description,
349
+ description: controlDescription(control.value),
315
350
  required: control.value.required,
316
351
  error: errorMessage.value
317
352
  },
318
353
  {
319
- default: () => h3(
354
+ default: () => h4(
320
355
  "div",
321
356
  { class: theme.flexBetween },
322
- h3(USwitch, {
357
+ h4(USwitch, {
323
358
  modelValue: modelValue.value,
324
359
  disabled: !control.value.enabled,
325
360
  "aria-invalid": Boolean(errorMessage.value),
@@ -338,7 +373,7 @@ function createNuxtUiBooleanControl(theme) {
338
373
 
339
374
  // src/renderers/controls/NuxtUiEnumControl.ts
340
375
  import { rendererProps as rendererProps4, useJsonFormsControl as useJsonFormsControl2 } from "@jsonforms/vue";
341
- import { computed as computed5, defineComponent as defineComponent4, h as h4, resolveComponent as resolveComponent3 } from "vue";
376
+ import { computed as computed5, defineComponent as defineComponent4, h as h5, resolveComponent as resolveComponent3 } from "vue";
342
377
  function schemaEnumOptions(schema) {
343
378
  if (!schema) return [];
344
379
  if (Array.isArray(schema.enum)) {
@@ -375,19 +410,19 @@ var NuxtUiEnumControl = defineComponent4({
375
410
  if (!control.value.visible) return null;
376
411
  const UFormField = resolveComponent3("UFormField");
377
412
  const USelectMenu = resolveComponent3("USelectMenu");
378
- return h4(
413
+ return h5(
379
414
  "div",
380
415
  {},
381
- h4(
416
+ h5(
382
417
  UFormField,
383
418
  {
384
419
  label: control.value.label,
385
- description: control.value.description,
420
+ description: controlDescription(control.value),
386
421
  required: control.value.required,
387
422
  error: errorMessage.value
388
423
  },
389
424
  {
390
- default: () => h4(USelectMenu, {
425
+ default: () => h5(USelectMenu, {
391
426
  modelValue: selectedValue.value,
392
427
  items: options.value,
393
428
  valueKey: "value",
@@ -409,7 +444,7 @@ var NuxtUiEnumControl = defineComponent4({
409
444
 
410
445
  // src/renderers/controls/NuxtUiIntegerControl.ts
411
446
  import { rendererProps as rendererProps5, useJsonFormsControl as useJsonFormsControl3 } from "@jsonforms/vue";
412
- import { computed as computed6, defineComponent as defineComponent5, h as h5, resolveComponent as resolveComponent4 } from "vue";
447
+ import { computed as computed6, defineComponent as defineComponent5, h as h6, resolveComponent as resolveComponent4 } from "vue";
413
448
  var NuxtUiIntegerControl = defineComponent5({
414
449
  name: "NuxtUiIntegerControl",
415
450
  props: rendererProps5(),
@@ -435,19 +470,19 @@ var NuxtUiIntegerControl = defineComponent5({
435
470
  if (!control.value.visible) return null;
436
471
  const UFormField = resolveComponent4("UFormField");
437
472
  const UInput = resolveComponent4("UInput");
438
- return h5(
473
+ return h6(
439
474
  "div",
440
475
  {},
441
- h5(
476
+ h6(
442
477
  UFormField,
443
478
  {
444
479
  label: control.value.label,
445
- description: control.value.description,
480
+ description: controlDescription(control.value),
446
481
  required: control.value.required,
447
482
  error: errorMessage.value
448
483
  },
449
484
  {
450
- default: () => h5(UInput, {
485
+ default: () => h6(UInput, {
451
486
  type: "number",
452
487
  inputmode: "numeric",
453
488
  step: "1",
@@ -466,7 +501,7 @@ var NuxtUiIntegerControl = defineComponent5({
466
501
 
467
502
  // src/renderers/controls/NuxtUiMultiEnumControl.ts
468
503
  import { rendererProps as rendererProps6, useJsonFormsControl as useJsonFormsControl4 } from "@jsonforms/vue";
469
- import { computed as computed7, defineComponent as defineComponent6, h as h6, resolveComponent as resolveComponent5 } from "vue";
504
+ import { computed as computed7, defineComponent as defineComponent6, h as h7, resolveComponent as resolveComponent5 } from "vue";
470
505
  function schemaEnumOptions2(schema) {
471
506
  if (!schema) return [];
472
507
  if (Array.isArray(schema.enum)) {
@@ -511,19 +546,19 @@ var NuxtUiMultiEnumControl = defineComponent6({
511
546
  if (!control.value.visible) return null;
512
547
  const UFormField = resolveComponent5("UFormField");
513
548
  const USelectMenu = resolveComponent5("USelectMenu");
514
- return h6(
549
+ return h7(
515
550
  "div",
516
551
  {},
517
- h6(
552
+ h7(
518
553
  UFormField,
519
554
  {
520
555
  label: control.value.label,
521
- description: control.value.description,
556
+ description: controlDescription(control.value),
522
557
  required: control.value.required,
523
558
  error: errorMessage.value
524
559
  },
525
560
  {
526
- default: () => h6(USelectMenu, {
561
+ default: () => h7(USelectMenu, {
527
562
  multiple: true,
528
563
  modelValue: selectedValues.value,
529
564
  items: options.value,
@@ -546,7 +581,7 @@ var NuxtUiMultiEnumControl = defineComponent6({
546
581
 
547
582
  // src/renderers/controls/NuxtUiNumberControl.ts
548
583
  import { rendererProps as rendererProps7, useJsonFormsControl as useJsonFormsControl5 } from "@jsonforms/vue";
549
- import { computed as computed8, defineComponent as defineComponent7, h as h7, resolveComponent as resolveComponent6 } from "vue";
584
+ import { computed as computed8, defineComponent as defineComponent7, h as h8, resolveComponent as resolveComponent6 } from "vue";
550
585
  var NuxtUiNumberControl = defineComponent7({
551
586
  name: "NuxtUiNumberControl",
552
587
  props: rendererProps7(),
@@ -572,19 +607,19 @@ var NuxtUiNumberControl = defineComponent7({
572
607
  if (!control.value.visible) return null;
573
608
  const UFormField = resolveComponent6("UFormField");
574
609
  const UInput = resolveComponent6("UInput");
575
- return h7(
610
+ return h8(
576
611
  "div",
577
612
  {},
578
- h7(
613
+ h8(
579
614
  UFormField,
580
615
  {
581
616
  label: control.value.label,
582
- description: control.value.description,
617
+ description: controlDescription(control.value),
583
618
  required: control.value.required,
584
619
  error: errorMessage.value
585
620
  },
586
621
  {
587
- default: () => h7(UInput, {
622
+ default: () => h8(UInput, {
588
623
  type: "number",
589
624
  inputmode: "decimal",
590
625
  modelValue: modelValue.value,
@@ -602,7 +637,7 @@ var NuxtUiNumberControl = defineComponent7({
602
637
 
603
638
  // src/renderers/controls/NuxtUiPasswordControl.ts
604
639
  import { rendererProps as rendererProps8, useJsonFormsControl as useJsonFormsControl6 } from "@jsonforms/vue";
605
- import { computed as computed9, defineComponent as defineComponent8, h as h8, ref, resolveComponent as resolveComponent7 } from "vue";
640
+ import { computed as computed9, defineComponent as defineComponent8, h as h9, ref, resolveComponent as resolveComponent7 } from "vue";
606
641
  var NuxtUiPasswordControl = defineComponent8({
607
642
  name: "NuxtUiPasswordControl",
608
643
  props: rendererProps8(),
@@ -618,19 +653,19 @@ var NuxtUiPasswordControl = defineComponent8({
618
653
  const UFormField = resolveComponent7("UFormField");
619
654
  const UInput = resolveComponent7("UInput");
620
655
  const UButton = resolveComponent7("UButton");
621
- return h8(
656
+ return h9(
622
657
  "div",
623
658
  {},
624
- h8(
659
+ h9(
625
660
  UFormField,
626
661
  {
627
662
  label: control.value.label,
628
- description: control.value.description,
663
+ description: controlDescription(control.value),
629
664
  required: control.value.required,
630
665
  error: errorMessage.value
631
666
  },
632
667
  {
633
- default: () => h8(
668
+ default: () => h9(
634
669
  UInput,
635
670
  {
636
671
  modelValue: control.value.data ?? "",
@@ -643,7 +678,7 @@ var NuxtUiPasswordControl = defineComponent8({
643
678
  "onUpdate:modelValue": (v) => handleChange(control.value.path, v)
644
679
  },
645
680
  {
646
- trailing: () => h8(UButton, {
681
+ trailing: () => h9(UButton, {
647
682
  type: "button",
648
683
  color: "neutral",
649
684
  variant: "ghost",
@@ -670,51 +705,59 @@ import { rendererProps as rendererProps9, useJsonFormsControl as useJsonFormsCon
670
705
  import {
671
706
  computed as computed10,
672
707
  defineComponent as defineComponent9,
673
- h as h9,
708
+ h as h10,
674
709
  resolveComponent as resolveComponent8
675
710
  } from "vue";
676
- var NuxtUiStringControl = defineComponent9({
677
- name: "NuxtUiStringControl",
678
- props: rendererProps9(),
679
- setup(props) {
680
- const { control, handleChange } = useJsonFormsControl7(
681
- props
682
- );
683
- const errorMessage = computed10(() => trimmedOrUndefined(control.value.errors));
684
- return () => {
685
- if (!control.value.visible) return null;
686
- const UFormField = resolveComponent8("UFormField");
687
- const UInput = resolveComponent8("UInput");
688
- return h9(
689
- "div",
690
- {},
691
- h9(
692
- UFormField,
693
- {
711
+ function createNuxtUiStringControl(docsUrl) {
712
+ return defineComponent9({
713
+ name: "NuxtUiStringControl",
714
+ props: rendererProps9(),
715
+ setup(props) {
716
+ const { control, handleChange } = useJsonFormsControl7(
717
+ props
718
+ );
719
+ const errorMessage = computed10(
720
+ () => trimmedOrUndefined(control.value.errors)
721
+ );
722
+ return () => {
723
+ if (!control.value.visible) return null;
724
+ const UFormField = resolveComponent8("UFormField");
725
+ const UInput = resolveComponent8("UInput");
726
+ const slots = {
727
+ default: () => h10(UInput, {
728
+ modelValue: control.value.data ?? "",
729
+ class: "w-full",
730
+ disabled: !control.value.enabled,
731
+ color: errorMessage.value ? "error" : void 0,
732
+ "aria-invalid": Boolean(errorMessage.value),
733
+ "onUpdate:modelValue": (v) => handleChange(control.value.path, v)
734
+ })
735
+ };
736
+ const hintSlot = renderDocsHintSlot(
737
+ control.value.schema,
738
+ control.value.label ?? "",
739
+ docsUrl,
740
+ resolveComponent8
741
+ );
742
+ if (hintSlot) slots.hint = hintSlot;
743
+ return h10(
744
+ "div",
745
+ {},
746
+ h10(UFormField, {
694
747
  label: control.value.label,
695
- description: control.value.description,
748
+ description: controlDescription(control.value),
696
749
  required: control.value.required,
697
750
  error: errorMessage.value
698
- },
699
- {
700
- default: () => h9(UInput, {
701
- modelValue: control.value.data ?? "",
702
- class: "w-full",
703
- disabled: !control.value.enabled,
704
- color: errorMessage.value ? "error" : void 0,
705
- "aria-invalid": Boolean(errorMessage.value),
706
- "onUpdate:modelValue": (v) => handleChange(control.value.path, v)
707
- })
708
- }
709
- )
710
- );
711
- };
712
- }
713
- });
751
+ }, slots)
752
+ );
753
+ };
754
+ }
755
+ });
756
+ }
714
757
 
715
758
  // src/renderers/controls/NuxtUiTextareaControl.ts
716
759
  import { rendererProps as rendererProps10, useJsonFormsControl as useJsonFormsControl8 } from "@jsonforms/vue";
717
- import { computed as computed11, defineComponent as defineComponent10, h as h10, resolveComponent as resolveComponent9 } from "vue";
760
+ import { computed as computed11, defineComponent as defineComponent10, h as h11, resolveComponent as resolveComponent9 } from "vue";
718
761
  var NuxtUiTextareaControl = defineComponent10({
719
762
  name: "NuxtUiTextareaControl",
720
763
  props: rendererProps10(),
@@ -727,19 +770,19 @@ var NuxtUiTextareaControl = defineComponent10({
727
770
  if (!control.value.visible) return null;
728
771
  const UFormField = resolveComponent9("UFormField");
729
772
  const UTextarea = resolveComponent9("UTextarea");
730
- return h10(
773
+ return h11(
731
774
  "div",
732
775
  {},
733
- h10(
776
+ h11(
734
777
  UFormField,
735
778
  {
736
779
  label: control.value.label,
737
- description: control.value.description,
780
+ description: controlDescription(control.value),
738
781
  required: control.value.required,
739
782
  error: errorMessage.value
740
783
  },
741
784
  {
742
- default: () => h10(UTextarea, {
785
+ default: () => h11(UTextarea, {
743
786
  modelValue: control.value.data ?? "",
744
787
  class: "w-full",
745
788
  disabled: !control.value.enabled,
@@ -757,7 +800,7 @@ var NuxtUiTextareaControl = defineComponent10({
757
800
 
758
801
  // src/renderers/layouts/NuxtUiCategorizationRenderer.ts
759
802
  import { DispatchRenderer as DispatchRenderer3, rendererProps as rendererProps11, useJsonFormsCategorization } from "@jsonforms/vue";
760
- import { defineComponent as defineComponent11, h as h11 } from "vue";
803
+ import { defineComponent as defineComponent11, h as h12 } from "vue";
761
804
  function createNuxtUiCategorizationRenderer(theme) {
762
805
  return defineComponent11({
763
806
  name: "NuxtUiCategorizationRenderer",
@@ -769,28 +812,28 @@ function createNuxtUiCategorizationRenderer(theme) {
769
812
  );
770
813
  return () => {
771
814
  if (!layout.value.visible) return null;
772
- return h11(
815
+ return h12(
773
816
  "div",
774
817
  { class: theme.layoutVerticalWide },
775
818
  categories.map((categoryRef, catIndex) => {
776
819
  const category = categoryRef.value;
777
820
  const elements = category.uischema.elements ?? [];
778
- return h11(
821
+ return h12(
779
822
  "div",
780
823
  {
781
824
  key: `${layout.value.path}-cat-${catIndex}`,
782
825
  class: theme.layoutVertical
783
826
  },
784
827
  [
785
- category.label ? h11("div", { class: theme.labelSection }, category.label) : null,
786
- h11(
828
+ category.label ? h12("div", { class: theme.labelSection }, category.label) : null,
829
+ h12(
787
830
  "div",
788
831
  { class: theme.layoutVertical },
789
832
  elements.map(
790
- (element, index) => h11(
833
+ (element, index) => h12(
791
834
  "div",
792
835
  { key: `${category.path}-${index}` },
793
- h11(DispatchRenderer3, {
836
+ h12(DispatchRenderer3, {
794
837
  schema: category.schema,
795
838
  uischema: element,
796
839
  path: category.path,
@@ -812,7 +855,7 @@ function createNuxtUiCategorizationRenderer(theme) {
812
855
 
813
856
  // src/renderers/layouts/NuxtUiCategoryRenderer.ts
814
857
  import { DispatchRenderer as DispatchRenderer4, rendererProps as rendererProps12, useJsonFormsLayout } from "@jsonforms/vue";
815
- import { defineComponent as defineComponent12, h as h12 } from "vue";
858
+ import { defineComponent as defineComponent12, h as h13 } from "vue";
816
859
  function createNuxtUiCategoryRenderer(theme) {
817
860
  return defineComponent12({
818
861
  name: "NuxtUiCategoryRenderer",
@@ -825,16 +868,16 @@ function createNuxtUiCategoryRenderer(theme) {
825
868
  return () => {
826
869
  if (!layout.value.visible) return null;
827
870
  const elements = layout.value.uischema.elements ?? [];
828
- return h12("div", { class: theme.layoutVertical }, [
829
- layout.value.label ? h12("div", { class: theme.labelSection }, layout.value.label) : null,
830
- h12(
871
+ return h13("div", { class: theme.layoutVertical }, [
872
+ layout.value.label ? h13("div", { class: theme.labelSection }, layout.value.label) : null,
873
+ h13(
831
874
  "div",
832
875
  { class: theme.layoutVertical },
833
876
  elements.map(
834
- (element, index) => h12(
877
+ (element, index) => h13(
835
878
  "div",
836
879
  { key: `${layout.value.path}-${index}` },
837
- h12(DispatchRenderer4, {
880
+ h13(DispatchRenderer4, {
838
881
  schema: layout.value.schema,
839
882
  uischema: element,
840
883
  path: layout.value.path,
@@ -853,7 +896,7 @@ function createNuxtUiCategoryRenderer(theme) {
853
896
 
854
897
  // src/renderers/layouts/NuxtUiGroupRenderer.ts
855
898
  import { DispatchRenderer as DispatchRenderer5, rendererProps as rendererProps13, useJsonFormsLayout as useJsonFormsLayout2 } from "@jsonforms/vue";
856
- import { defineComponent as defineComponent13, h as h13 } from "vue";
899
+ import { defineComponent as defineComponent13, h as h14 } from "vue";
857
900
  function createNuxtUiGroupRenderer(theme) {
858
901
  return defineComponent13({
859
902
  name: "NuxtUiGroupRenderer",
@@ -868,19 +911,19 @@ function createNuxtUiGroupRenderer(theme) {
868
911
  const elements = layout.value.uischema.elements ?? [];
869
912
  const isNested = layout.value.path?.includes(".") ?? false;
870
913
  const containerClass = isNested ? theme.groupNested : theme.panel;
871
- return h13(
914
+ return h14(
872
915
  "div",
873
916
  { class: containerClass },
874
917
  [
875
- layout.value.label ? h13("div", { class: theme.labelSectionSpaced }, layout.value.label) : null,
876
- h13(
918
+ layout.value.label ? h14("div", { class: theme.labelSectionSpaced }, layout.value.label) : null,
919
+ h14(
877
920
  "div",
878
921
  { class: theme.layoutVertical },
879
922
  elements.map(
880
- (element, index) => h13(
923
+ (element, index) => h14(
881
924
  "div",
882
925
  { key: `${layout.value.path}-${index}` },
883
- h13(DispatchRenderer5, {
926
+ h14(DispatchRenderer5, {
884
927
  schema: layout.value.schema,
885
928
  uischema: element,
886
929
  path: layout.value.path,
@@ -900,7 +943,7 @@ function createNuxtUiGroupRenderer(theme) {
900
943
 
901
944
  // src/renderers/layouts/NuxtUiHorizontalLayoutRenderer.ts
902
945
  import { DispatchRenderer as DispatchRenderer6, rendererProps as rendererProps14, useJsonFormsLayout as useJsonFormsLayout3 } from "@jsonforms/vue";
903
- import { defineComponent as defineComponent14, h as h14 } from "vue";
946
+ import { defineComponent as defineComponent14, h as h15 } from "vue";
904
947
  function createNuxtUiHorizontalLayoutRenderer(theme) {
905
948
  return defineComponent14({
906
949
  name: "NuxtUiHorizontalLayoutRenderer",
@@ -913,17 +956,17 @@ function createNuxtUiHorizontalLayoutRenderer(theme) {
913
956
  return () => {
914
957
  if (!layout.value.visible) return null;
915
958
  const elements = layout.value.uischema.elements ?? [];
916
- return h14(
959
+ return h15(
917
960
  "div",
918
961
  { class: theme.layoutHorizontal },
919
962
  elements.map(
920
- (element, index) => h14(
963
+ (element, index) => h15(
921
964
  "div",
922
965
  {
923
966
  key: `${layout.value.path}-${index}`,
924
967
  class: theme.layoutHorizontalItem
925
968
  },
926
- h14(DispatchRenderer6, {
969
+ h15(DispatchRenderer6, {
927
970
  schema: layout.value.schema,
928
971
  uischema: element,
929
972
  path: layout.value.path,
@@ -941,7 +984,7 @@ function createNuxtUiHorizontalLayoutRenderer(theme) {
941
984
 
942
985
  // src/renderers/layouts/NuxtUiLabelRenderer.ts
943
986
  import { rendererProps as rendererProps15, useJsonFormsLabel } from "@jsonforms/vue";
944
- import { defineComponent as defineComponent15, h as h15 } from "vue";
987
+ import { defineComponent as defineComponent15, h as h16 } from "vue";
945
988
  function createNuxtUiLabelRenderer(theme) {
946
989
  return defineComponent15({
947
990
  name: "NuxtUiLabelRenderer",
@@ -952,7 +995,7 @@ function createNuxtUiLabelRenderer(theme) {
952
995
  );
953
996
  return () => {
954
997
  if (!label.value.visible) return null;
955
- return h15("div", { class: theme.textLabel }, label.value.text);
998
+ return h16("div", { class: theme.textLabel }, label.value.text);
956
999
  };
957
1000
  }
958
1001
  });
@@ -960,7 +1003,7 @@ function createNuxtUiLabelRenderer(theme) {
960
1003
 
961
1004
  // src/renderers/layouts/NuxtUiVerticalLayoutRenderer.ts
962
1005
  import { DispatchRenderer as DispatchRenderer7, rendererProps as rendererProps16, useJsonFormsLayout as useJsonFormsLayout4 } from "@jsonforms/vue";
963
- import { defineComponent as defineComponent16, h as h16 } from "vue";
1006
+ import { defineComponent as defineComponent16, h as h17 } from "vue";
964
1007
  function createNuxtUiVerticalLayoutRenderer(theme) {
965
1008
  return defineComponent16({
966
1009
  name: "NuxtUiVerticalLayoutRenderer",
@@ -973,14 +1016,14 @@ function createNuxtUiVerticalLayoutRenderer(theme) {
973
1016
  return () => {
974
1017
  if (!layout.value.visible) return null;
975
1018
  const elements = layout.value.uischema.elements ?? [];
976
- return h16(
1019
+ return h17(
977
1020
  "div",
978
1021
  { class: theme.layoutVertical },
979
1022
  elements.map(
980
- (element, index) => h16(
1023
+ (element, index) => h17(
981
1024
  "div",
982
1025
  { key: `${layout.value.path}-${index}` },
983
- h16(DispatchRenderer7, {
1026
+ h17(DispatchRenderer7, {
984
1027
  schema: layout.value.schema,
985
1028
  uischema: element,
986
1029
  path: layout.value.path,
@@ -1068,6 +1111,7 @@ var isOneOfEnumControl = (uischema, schema, context) => {
1068
1111
  };
1069
1112
  function createNuxtUiRenderers(options) {
1070
1113
  const theme = mergeTheme(options?.theme);
1114
+ const docsUrl = options?.docsUrl;
1071
1115
  return [
1072
1116
  // Layouts
1073
1117
  {
@@ -1142,14 +1186,16 @@ function createNuxtUiRenderers(options) {
1142
1186
  },
1143
1187
  {
1144
1188
  tester: rankWith(RANK, isStringControl),
1145
- renderer: markRaw(NuxtUiStringControl)
1189
+ renderer: markRaw(createNuxtUiStringControl(docsUrl))
1146
1190
  }
1147
1191
  ];
1148
1192
  }
1149
1193
  var nuxtUiRenderers = createNuxtUiRenderers();
1150
1194
  export {
1195
+ controlDescription,
1151
1196
  createNuxtUiRenderers,
1152
1197
  defaultTheme,
1198
+ getDocsPathFromSchema,
1153
1199
  mergeTheme,
1154
1200
  nuxtUiRenderers
1155
1201
  };