@seed-ship/mcp-ui-solid 2.6.1 → 2.6.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.
@@ -1,7 +1,7 @@
1
1
  import { delegateEvents, createComponent, getNextElement, template, getNextMarker, insert, effect, setAttribute, memo, setProperty, className, runHydrationEvents } from "solid-js/web";
2
2
  import { Show, Switch, Match, For, createSignal, onCleanup } from "solid-js";
3
3
  import { useConditionalField } from "../hooks/useConditionalField.js";
4
- var _tmpl$ = /* @__PURE__ */ template(`<span class="text-red-500 ml-1"aria-hidden=true>*`), _tmpl$2 = /* @__PURE__ */ template(`<label class="block text-sm font-medium text-gray-700 dark:text-gray-300"><!$><!/><!$><!/>`), _tmpl$3 = /* @__PURE__ */ template(`<input>`), _tmpl$4 = /* @__PURE__ */ template(`<input type=number>`), _tmpl$5 = /* @__PURE__ */ template(`<input type=date>`), _tmpl$6 = /* @__PURE__ */ template(`<textarea>`), _tmpl$7 = /* @__PURE__ */ template(`<option value disabled>`), _tmpl$8 = /* @__PURE__ */ template(`<select><!$><!/><!$><!/>`), _tmpl$9 = /* @__PURE__ */ template(`<label class="flex items-center gap-2 cursor-pointer"><input type=checkbox class="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700"><span class="text-sm text-gray-700 dark:text-gray-300"><!$><!/><!$><!/>`), _tmpl$0 = /* @__PURE__ */ template(`<div class=space-y-2 role=radiogroup>`), _tmpl$1 = /* @__PURE__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400">`), _tmpl$10 = /* @__PURE__ */ template(`<p role=alert class="text-xs text-red-600 dark:text-red-400">`), _tmpl$11 = /* @__PURE__ */ template(`<div class=space-y-1><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$12 = /* @__PURE__ */ template(`<option>`), _tmpl$13 = /* @__PURE__ */ template(`<label class="flex items-center gap-2 cursor-pointer"><input type=radio class="w-4 h-4 border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600"><span class="text-sm text-gray-700 dark:text-gray-300">`), _tmpl$14 = /* @__PURE__ */ template(`<div class="flex flex-wrap gap-1 mb-1">`), _tmpl$15 = /* @__PURE__ */ template(`<div class="absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg max-h-48 overflow-auto">`), _tmpl$16 = /* @__PURE__ */ template(`<div class=relative><!$><!/><button type=button><span></span><svg class="w-4 h-4 text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M19 9l-7 7-7-7"></path></svg></button><!$><!/>`), _tmpl$17 = /* @__PURE__ */ template(`<span class="inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded-full"><!$><!/><button type=button class="hover:text-blue-900 dark:hover:text-blue-100">&times;`), _tmpl$18 = /* @__PURE__ */ template(`<label class="flex items-center gap-2 px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer text-sm"><input type=checkbox class="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600"><span class="text-gray-900 dark:text-white">`), _tmpl$19 = /* @__PURE__ */ template(`<div class=relative><input type=text autocomplete=off><!$><!/>`), _tmpl$20 = /* @__PURE__ */ template(`<button type=button class="w-full text-left px-3 py-2 text-sm hover:bg-blue-50 dark:hover:bg-blue-900/20 text-gray-900 dark:text-white">`);
4
+ var _tmpl$ = /* @__PURE__ */ template(`<span class="text-red-500 ml-1"aria-hidden=true>*`), _tmpl$2 = /* @__PURE__ */ template(`<label class="block text-sm font-medium text-gray-700 dark:text-gray-300"><!$><!/><!$><!/>`), _tmpl$3 = /* @__PURE__ */ template(`<input>`), _tmpl$4 = /* @__PURE__ */ template(`<input type=number>`), _tmpl$5 = /* @__PURE__ */ template(`<input type=date>`), _tmpl$6 = /* @__PURE__ */ template(`<textarea>`), _tmpl$7 = /* @__PURE__ */ template(`<option value disabled>`), _tmpl$8 = /* @__PURE__ */ template(`<select><!$><!/><!$><!/>`), _tmpl$9 = /* @__PURE__ */ template(`<label class="flex items-center gap-2 cursor-pointer"><input type=checkbox class="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700"><span class="text-sm text-gray-700 dark:text-gray-300"><!$><!/><!$><!/>`), _tmpl$0 = /* @__PURE__ */ template(`<div class=space-y-2 role=radiogroup>`), _tmpl$1 = /* @__PURE__ */ template(`<input type=text>`), _tmpl$10 = /* @__PURE__ */ template(`<p class="text-xs text-amber-500 mt-0.5">Unknown field type: <!$><!/>`), _tmpl$11 = /* @__PURE__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400">`), _tmpl$12 = /* @__PURE__ */ template(`<p role=alert class="text-xs text-red-600 dark:text-red-400">`), _tmpl$13 = /* @__PURE__ */ template(`<div class=space-y-1><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$14 = /* @__PURE__ */ template(`<option>`), _tmpl$15 = /* @__PURE__ */ template(`<label class="flex items-center gap-2 cursor-pointer"><input type=radio class="w-4 h-4 border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600"><span class="text-sm text-gray-700 dark:text-gray-300">`), _tmpl$16 = /* @__PURE__ */ template(`<div class="flex flex-wrap gap-1 mb-1">`), _tmpl$17 = /* @__PURE__ */ template(`<div class="absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg max-h-48 overflow-auto">`), _tmpl$18 = /* @__PURE__ */ template(`<div class=relative><!$><!/><button type=button><span></span><svg class="w-4 h-4 text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M19 9l-7 7-7-7"></path></svg></button><!$><!/>`), _tmpl$19 = /* @__PURE__ */ template(`<span class="inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded-full"><!$><!/><button type=button class="hover:text-blue-900 dark:hover:text-blue-100">&times;`), _tmpl$20 = /* @__PURE__ */ template(`<label class="flex items-center gap-2 px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer text-sm"><input type=checkbox class="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600"><span class="text-gray-900 dark:text-white">`), _tmpl$21 = /* @__PURE__ */ template(`<div class=relative><input type=text autocomplete=off><!$><!/>`), _tmpl$22 = /* @__PURE__ */ template(`<button type=button class="w-full text-left px-3 py-2 text-sm hover:bg-blue-50 dark:hover:bg-blue-900/20 text-gray-900 dark:text-white">`);
5
5
  const FormFieldRenderer = (props) => {
6
6
  const {
7
7
  isVisible
@@ -23,7 +23,7 @@ const FormFieldRenderer = (props) => {
23
23
  return isVisible();
24
24
  },
25
25
  get children() {
26
- var _el$ = getNextElement(_tmpl$11), _el$27 = _el$.firstChild, [_el$28, _co$7] = getNextMarker(_el$27.nextSibling), _el$29 = _el$28.nextSibling, [_el$30, _co$8] = getNextMarker(_el$29.nextSibling), _el$31 = _el$30.nextSibling, [_el$32, _co$9] = getNextMarker(_el$31.nextSibling), _el$33 = _el$32.nextSibling, [_el$34, _co$0] = getNextMarker(_el$33.nextSibling);
26
+ var _el$ = getNextElement(_tmpl$13), _el$32 = _el$.firstChild, [_el$33, _co$8] = getNextMarker(_el$32.nextSibling), _el$34 = _el$33.nextSibling, [_el$35, _co$9] = getNextMarker(_el$34.nextSibling), _el$36 = _el$35.nextSibling, [_el$37, _co$0] = getNextMarker(_el$36.nextSibling), _el$38 = _el$37.nextSibling, [_el$39, _co$1] = getNextMarker(_el$38.nextSibling);
27
27
  insert(_el$, createComponent(Show, {
28
28
  get when() {
29
29
  return memo(() => !!props.field.label)() && props.field.type !== "checkbox";
@@ -42,7 +42,7 @@ const FormFieldRenderer = (props) => {
42
42
  effect(() => setAttribute(_el$2, "for", fieldId()));
43
43
  return _el$2;
44
44
  }
45
- }), _el$28, _co$7);
45
+ }), _el$33, _co$8);
46
46
  insert(_el$, createComponent(Switch, {
47
47
  get children() {
48
48
  return [createComponent(Match, {
@@ -217,11 +217,11 @@ const FormFieldRenderer = (props) => {
217
217
  return props.field.options;
218
218
  },
219
219
  children: (option) => (() => {
220
- var _el$35 = getNextElement(_tmpl$12);
221
- insert(_el$35, () => option.label);
222
- effect(() => setProperty(_el$35, "disabled", option.disabled));
223
- effect(() => setProperty(_el$35, "value", option.value));
224
- return _el$35;
220
+ var _el$40 = getNextElement(_tmpl$14);
221
+ insert(_el$40, () => option.label);
222
+ effect(() => setProperty(_el$40, "disabled", option.disabled));
223
+ effect(() => setProperty(_el$40, "value", option.value));
224
+ return _el$40;
225
225
  })()
226
226
  }), _el$15, _co$4);
227
227
  effect((_p$) => {
@@ -337,23 +337,23 @@ const FormFieldRenderer = (props) => {
337
337
  return props.field.options;
338
338
  },
339
339
  children: (option, index) => (() => {
340
- var _el$36 = getNextElement(_tmpl$13), _el$37 = _el$36.firstChild, _el$38 = _el$37.nextSibling;
341
- _el$37.addEventListener("change", () => props.onChange(option.value));
342
- insert(_el$38, () => option.label);
340
+ var _el$41 = getNextElement(_tmpl$15), _el$42 = _el$41.firstChild, _el$43 = _el$42.nextSibling;
341
+ _el$42.addEventListener("change", () => props.onChange(option.value));
342
+ insert(_el$43, () => option.label);
343
343
  effect((_p$) => {
344
- var _v$57 = props.field.name, _v$58 = `${fieldId()}-${index()}`, _v$59 = props.disabled || option.disabled;
345
- _v$57 !== _p$.e && setAttribute(_el$37, "name", _p$.e = _v$57);
346
- _v$58 !== _p$.t && setAttribute(_el$37, "id", _p$.t = _v$58);
347
- _v$59 !== _p$.a && setProperty(_el$37, "disabled", _p$.a = _v$59);
344
+ var _v$62 = props.field.name, _v$63 = `${fieldId()}-${index()}`, _v$64 = props.disabled || option.disabled;
345
+ _v$62 !== _p$.e && setAttribute(_el$42, "name", _p$.e = _v$62);
346
+ _v$63 !== _p$.t && setAttribute(_el$42, "id", _p$.t = _v$63);
347
+ _v$64 !== _p$.a && setProperty(_el$42, "disabled", _p$.a = _v$64);
348
348
  return _p$;
349
349
  }, {
350
350
  e: void 0,
351
351
  t: void 0,
352
352
  a: void 0
353
353
  });
354
- effect(() => setProperty(_el$37, "value", option.value));
355
- effect(() => setProperty(_el$37, "checked", props.value === option.value));
356
- return _el$36;
354
+ effect(() => setProperty(_el$42, "value", option.value));
355
+ effect(() => setProperty(_el$42, "checked", props.value === option.value));
356
+ return _el$41;
357
357
  })()
358
358
  }));
359
359
  effect((_p$) => {
@@ -369,30 +369,60 @@ const FormFieldRenderer = (props) => {
369
369
  });
370
370
  return _el$24;
371
371
  }
372
+ }), createComponent(Match, {
373
+ when: true,
374
+ get children() {
375
+ return [(() => {
376
+ var _el$25 = getNextElement(_tmpl$1);
377
+ _el$25.$$input = (e) => props.onChange(e.currentTarget.value);
378
+ effect((_p$) => {
379
+ var _v$57 = fieldId(), _v$58 = props.field.name, _v$59 = props.field.placeholder || `(${props.field.type})`, _v$60 = props.disabled, _v$61 = baseInputClass();
380
+ _v$57 !== _p$.e && setAttribute(_el$25, "id", _p$.e = _v$57);
381
+ _v$58 !== _p$.t && setAttribute(_el$25, "name", _p$.t = _v$58);
382
+ _v$59 !== _p$.a && setAttribute(_el$25, "placeholder", _p$.a = _v$59);
383
+ _v$60 !== _p$.o && setProperty(_el$25, "disabled", _p$.o = _v$60);
384
+ _v$61 !== _p$.i && className(_el$25, _p$.i = _v$61);
385
+ return _p$;
386
+ }, {
387
+ e: void 0,
388
+ t: void 0,
389
+ a: void 0,
390
+ o: void 0,
391
+ i: void 0
392
+ });
393
+ effect(() => setProperty(_el$25, "value", props.value || ""));
394
+ runHydrationEvents();
395
+ return _el$25;
396
+ })(), (() => {
397
+ var _el$26 = getNextElement(_tmpl$10), _el$27 = _el$26.firstChild, _el$28 = _el$27.nextSibling, [_el$29, _co$7] = getNextMarker(_el$28.nextSibling);
398
+ insert(_el$26, () => props.field.type, _el$29, _co$7);
399
+ return _el$26;
400
+ })()];
401
+ }
372
402
  })];
373
403
  }
374
- }), _el$30, _co$8);
404
+ }), _el$35, _co$9);
375
405
  insert(_el$, createComponent(Show, {
376
406
  get when() {
377
407
  return memo(() => !!props.field.helpText)() && !props.error;
378
408
  },
379
409
  get children() {
380
- var _el$25 = getNextElement(_tmpl$1);
381
- insert(_el$25, () => props.field.helpText);
382
- return _el$25;
410
+ var _el$30 = getNextElement(_tmpl$11);
411
+ insert(_el$30, () => props.field.helpText);
412
+ return _el$30;
383
413
  }
384
- }), _el$32, _co$9);
414
+ }), _el$37, _co$0);
385
415
  insert(_el$, createComponent(Show, {
386
416
  get when() {
387
417
  return props.error;
388
418
  },
389
419
  get children() {
390
- var _el$26 = getNextElement(_tmpl$10);
391
- insert(_el$26, () => props.error);
392
- effect(() => setAttribute(_el$26, "id", errorId()));
393
- return _el$26;
420
+ var _el$31 = getNextElement(_tmpl$12);
421
+ insert(_el$31, () => props.error);
422
+ effect(() => setAttribute(_el$31, "id", errorId()));
423
+ return _el$31;
394
424
  }
395
- }), _el$34, _co$0);
425
+ }), _el$39, _co$1);
396
426
  return _el$;
397
427
  }
398
428
  });
@@ -415,60 +445,60 @@ const MultiSelectField = (props) => {
415
445
  return ((_b = (_a = props.field.options) == null ? void 0 : _a.find((o) => o.value === val)) == null ? void 0 : _b.label) || val;
416
446
  };
417
447
  return (() => {
418
- var _el$39 = getNextElement(_tmpl$16), _el$44 = _el$39.firstChild, [_el$45, _co$1] = getNextMarker(_el$44.nextSibling), _el$41 = _el$45.nextSibling, _el$42 = _el$41.firstChild, _el$46 = _el$41.nextSibling, [_el$47, _co$10] = getNextMarker(_el$46.nextSibling);
419
- insert(_el$39, createComponent(Show, {
448
+ var _el$44 = getNextElement(_tmpl$18), _el$49 = _el$44.firstChild, [_el$50, _co$10] = getNextMarker(_el$49.nextSibling), _el$46 = _el$50.nextSibling, _el$47 = _el$46.firstChild, _el$51 = _el$46.nextSibling, [_el$52, _co$11] = getNextMarker(_el$51.nextSibling);
449
+ insert(_el$44, createComponent(Show, {
420
450
  get when() {
421
451
  return props.value.length > 0;
422
452
  },
423
453
  get children() {
424
- var _el$40 = getNextElement(_tmpl$14);
425
- insert(_el$40, createComponent(For, {
454
+ var _el$45 = getNextElement(_tmpl$16);
455
+ insert(_el$45, createComponent(For, {
426
456
  get each() {
427
457
  return props.value;
428
458
  },
429
459
  children: (val) => (() => {
430
- var _el$48 = getNextElement(_tmpl$17), _el$50 = _el$48.firstChild, [_el$51, _co$11] = getNextMarker(_el$50.nextSibling), _el$49 = _el$51.nextSibling;
431
- insert(_el$48, () => getLabel(val), _el$51, _co$11);
432
- _el$49.$$click = () => removeChip(val);
433
- effect(() => setAttribute(_el$49, "aria-label", `Remove ${getLabel(val)}`));
460
+ var _el$53 = getNextElement(_tmpl$19), _el$55 = _el$53.firstChild, [_el$56, _co$12] = getNextMarker(_el$55.nextSibling), _el$54 = _el$56.nextSibling;
461
+ insert(_el$53, () => getLabel(val), _el$56, _co$12);
462
+ _el$54.$$click = () => removeChip(val);
463
+ effect(() => setAttribute(_el$54, "aria-label", `Remove ${getLabel(val)}`));
434
464
  runHydrationEvents();
435
- return _el$48;
465
+ return _el$53;
436
466
  })()
437
467
  }));
438
- return _el$40;
468
+ return _el$45;
439
469
  }
440
- }), _el$45, _co$1);
441
- _el$41.$$click = () => setOpen(!open());
442
- insert(_el$42, (() => {
470
+ }), _el$50, _co$10);
471
+ _el$46.$$click = () => setOpen(!open());
472
+ insert(_el$47, (() => {
443
473
  var _c$ = memo(() => !!props.value.length);
444
474
  return () => _c$() ? `${props.value.length} selected` : props.field.placeholder || "Select...";
445
475
  })());
446
- insert(_el$39, createComponent(Show, {
476
+ insert(_el$44, createComponent(Show, {
447
477
  get when() {
448
478
  return open();
449
479
  },
450
480
  get children() {
451
- var _el$43 = getNextElement(_tmpl$15);
452
- insert(_el$43, createComponent(For, {
481
+ var _el$48 = getNextElement(_tmpl$17);
482
+ insert(_el$48, createComponent(For, {
453
483
  get each() {
454
484
  return props.field.options;
455
485
  },
456
486
  children: (option) => (() => {
457
- var _el$52 = getNextElement(_tmpl$18), _el$53 = _el$52.firstChild, _el$54 = _el$53.nextSibling;
458
- _el$53.addEventListener("change", () => toggle(option.value));
459
- insert(_el$54, () => option.label);
460
- effect(() => setProperty(_el$53, "checked", (props.value || []).includes(option.value)));
461
- return _el$52;
487
+ var _el$57 = getNextElement(_tmpl$20), _el$58 = _el$57.firstChild, _el$59 = _el$58.nextSibling;
488
+ _el$58.addEventListener("change", () => toggle(option.value));
489
+ insert(_el$59, () => option.label);
490
+ effect(() => setProperty(_el$58, "checked", (props.value || []).includes(option.value)));
491
+ return _el$57;
462
492
  })()
463
493
  }));
464
- return _el$43;
494
+ return _el$48;
465
495
  }
466
- }), _el$47, _co$10);
496
+ }), _el$52, _co$11);
467
497
  effect((_p$) => {
468
- var _v$60 = props.disabled, _v$61 = `${props.baseClass} text-left flex items-center justify-between`, _v$62 = props.value.length ? "text-gray-900 dark:text-white" : "text-gray-400";
469
- _v$60 !== _p$.e && setProperty(_el$41, "disabled", _p$.e = _v$60);
470
- _v$61 !== _p$.t && className(_el$41, _p$.t = _v$61);
471
- _v$62 !== _p$.a && className(_el$42, _p$.a = _v$62);
498
+ var _v$65 = props.disabled, _v$66 = `${props.baseClass} text-left flex items-center justify-between`, _v$67 = props.value.length ? "text-gray-900 dark:text-white" : "text-gray-400";
499
+ _v$65 !== _p$.e && setProperty(_el$46, "disabled", _p$.e = _v$65);
500
+ _v$66 !== _p$.t && className(_el$46, _p$.t = _v$66);
501
+ _v$67 !== _p$.a && className(_el$47, _p$.a = _v$67);
472
502
  return _p$;
473
503
  }, {
474
504
  e: void 0,
@@ -476,7 +506,7 @@ const MultiSelectField = (props) => {
476
506
  a: void 0
477
507
  });
478
508
  runHydrationEvents();
479
- return _el$39;
509
+ return _el$44;
480
510
  })();
481
511
  };
482
512
  const AutocompleteField = (props) => {
@@ -536,48 +566,48 @@ const AutocompleteField = (props) => {
536
566
  if (debounceTimer) clearTimeout(debounceTimer);
537
567
  });
538
568
  return (() => {
539
- var _el$55 = getNextElement(_tmpl$19), _el$56 = _el$55.firstChild, _el$58 = _el$56.nextSibling, [_el$59, _co$12] = getNextMarker(_el$58.nextSibling);
540
- _el$56.addEventListener("blur", () => setTimeout(() => setIsOpen(false), 200));
541
- _el$56.addEventListener("focus", () => {
569
+ var _el$60 = getNextElement(_tmpl$21), _el$61 = _el$60.firstChild, _el$63 = _el$61.nextSibling, [_el$64, _co$13] = getNextMarker(_el$63.nextSibling);
570
+ _el$61.addEventListener("blur", () => setTimeout(() => setIsOpen(false), 200));
571
+ _el$61.addEventListener("focus", () => {
542
572
  if (suggestions().length) setIsOpen(true);
543
573
  });
544
- _el$56.$$input = (e) => handleInput(e.currentTarget.value);
545
- insert(_el$55, createComponent(Show, {
574
+ _el$61.$$input = (e) => handleInput(e.currentTarget.value);
575
+ insert(_el$60, createComponent(Show, {
546
576
  get when() {
547
577
  return memo(() => !!isOpen())() && suggestions().length > 0;
548
578
  },
549
579
  get children() {
550
- var _el$57 = getNextElement(_tmpl$15);
551
- insert(_el$57, createComponent(For, {
580
+ var _el$62 = getNextElement(_tmpl$17);
581
+ insert(_el$62, createComponent(For, {
552
582
  get each() {
553
583
  return suggestions();
554
584
  },
555
585
  children: (item) => (() => {
556
- var _el$60 = getNextElement(_tmpl$20);
557
- _el$60.$$click = () => selectSuggestion(item);
558
- _el$60.$$mousedown = (e) => e.preventDefault();
559
- insert(_el$60, () => item.label);
586
+ var _el$65 = getNextElement(_tmpl$22);
587
+ _el$65.$$click = () => selectSuggestion(item);
588
+ _el$65.$$mousedown = (e) => e.preventDefault();
589
+ insert(_el$65, () => item.label);
560
590
  runHydrationEvents();
561
- return _el$60;
591
+ return _el$65;
562
592
  })()
563
593
  }));
564
- return _el$57;
594
+ return _el$62;
565
595
  }
566
- }), _el$59, _co$12);
596
+ }), _el$64, _co$13);
567
597
  effect((_p$) => {
568
- var _v$63 = props.field.placeholder, _v$64 = props.disabled, _v$65 = props.baseClass;
569
- _v$63 !== _p$.e && setAttribute(_el$56, "placeholder", _p$.e = _v$63);
570
- _v$64 !== _p$.t && setProperty(_el$56, "disabled", _p$.t = _v$64);
571
- _v$65 !== _p$.a && className(_el$56, _p$.a = _v$65);
598
+ var _v$68 = props.field.placeholder, _v$69 = props.disabled, _v$70 = props.baseClass;
599
+ _v$68 !== _p$.e && setAttribute(_el$61, "placeholder", _p$.e = _v$68);
600
+ _v$69 !== _p$.t && setProperty(_el$61, "disabled", _p$.t = _v$69);
601
+ _v$70 !== _p$.a && className(_el$61, _p$.a = _v$70);
572
602
  return _p$;
573
603
  }, {
574
604
  e: void 0,
575
605
  t: void 0,
576
606
  a: void 0
577
607
  });
578
- effect(() => setProperty(_el$56, "value", query()));
608
+ effect(() => setProperty(_el$61, "value", query()));
579
609
  runHydrationEvents();
580
- return _el$55;
610
+ return _el$60;
581
611
  })();
582
612
  };
583
613
  delegateEvents(["input", "click", "mousedown"]);
@@ -1 +1 @@
1
- {"version":3,"file":"FormFieldRenderer.js","sources":["../../src/components/FormFieldRenderer.tsx"],"sourcesContent":["/**\n * FormFieldRenderer - Individual form field component\n * Sprint 1: Form Foundation\n * Sprint 2: Conditional field visibility (showWhen)\n */\n\nimport { Component, Show, For, Switch, Match, Accessor, createSignal, createEffect, onCleanup } from 'solid-js'\nimport type { FormFieldParams } from '../types'\nimport { useConditionalField } from '../hooks/useConditionalField'\n\nexport interface FormFieldRendererProps {\n field: FormFieldParams\n value: any\n error?: string\n onChange: (value: any) => void\n disabled?: boolean\n /**\n * Form data accessor for conditional field visibility\n */\n formData?: Accessor<Record<string, any>>\n}\n\nexport const FormFieldRenderer: Component<FormFieldRendererProps> = (props) => {\n // Conditional visibility based on showWhen\n const { isVisible } = useConditionalField({\n condition: props.field.showWhen,\n formData: props.formData || (() => ({})),\n })\n\n const baseInputClass = () => `\n w-full px-3 py-2 border rounded-md\n focus:ring-2 focus:ring-blue-500 focus:border-blue-500\n disabled:bg-gray-100 disabled:cursor-not-allowed\n ${props.error\n ? 'border-red-500 focus:ring-red-500'\n : 'border-gray-300 dark:border-gray-600'}\n dark:bg-gray-700 dark:text-white\n `\n\n const fieldId = () => `field-${props.field.name}`\n const errorId = () => `${props.field.name}-error`\n\n return (\n <Show when={isVisible()}>\n <div class=\"space-y-1\">\n <Show when={props.field.label && props.field.type !== 'checkbox'}>\n <label\n for={fieldId()}\n class=\"block text-sm font-medium text-gray-700 dark:text-gray-300\"\n >\n {props.field.label}\n <Show when={props.field.required}>\n <span class=\"text-red-500 ml-1\" aria-hidden=\"true\">*</span>\n </Show>\n </label>\n </Show>\n\n <Switch>\n {/* Text Input */}\n <Match when={props.field.type === 'text' || props.field.type === 'email' || props.field.type === 'password'}>\n <input\n id={fieldId()}\n type={props.field.type}\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n minLength={props.field.minLength}\n maxLength={props.field.maxLength}\n pattern={props.field.pattern}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Number Input */}\n <Match when={props.field.type === 'number'}>\n <input\n id={fieldId()}\n type=\"number\"\n name={props.field.name}\n value={props.value ?? ''}\n onInput={(e) => props.onChange(e.currentTarget.value === '' ? undefined : Number(e.currentTarget.value))}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n min={props.field.min}\n max={props.field.max}\n step={props.field.step}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Date Input */}\n <Match when={props.field.type === 'date'}>\n <input\n id={fieldId()}\n type=\"date\"\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n disabled={props.disabled}\n required={props.field.required}\n min={props.field.minDate}\n max={props.field.maxDate}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Textarea */}\n <Match when={props.field.type === 'textarea'}>\n <textarea\n id={fieldId()}\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n rows={props.field.rows || 4}\n minLength={props.field.minLength}\n maxLength={props.field.maxLength}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Select (single) */}\n <Match when={props.field.type === 'select' && !props.field.multiple}>\n <select\n id={fieldId()}\n name={props.field.name}\n value={props.value || ''}\n onChange={(e) => props.onChange(e.currentTarget.value)}\n disabled={props.disabled}\n required={props.field.required}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n >\n <Show when={props.field.placeholder}>\n <option value=\"\" disabled>{props.field.placeholder}</option>\n </Show>\n <For each={props.field.options}>\n {(option) => (\n <option value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n )}\n </For>\n </select>\n </Match>\n\n {/* Checkbox */}\n <Match when={props.field.type === 'checkbox'}>\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n id={fieldId()}\n type=\"checkbox\"\n name={props.field.name}\n checked={props.value || false}\n onChange={(e) => props.onChange(e.currentTarget.checked)}\n disabled={props.disabled}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class=\"w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700\"\n />\n <span class=\"text-sm text-gray-700 dark:text-gray-300\">\n {props.field.checkboxLabel || props.field.label}\n <Show when={props.field.required}>\n <span class=\"text-red-500 ml-1\" aria-hidden=\"true\">*</span>\n </Show>\n </span>\n </label>\n </Match>\n\n {/* Multi-Select with chips */}\n <Match when={props.field.type === 'select' && props.field.multiple}>\n <MultiSelectField\n field={props.field}\n value={props.value || []}\n onChange={props.onChange}\n disabled={props.disabled}\n baseClass={baseInputClass()}\n />\n </Match>\n\n {/* Autocomplete with API fetch */}\n <Match when={props.field.type === 'autocomplete'}>\n <AutocompleteField\n field={props.field}\n value={props.value || ''}\n onChange={props.onChange}\n disabled={props.disabled}\n baseClass={baseInputClass()}\n />\n </Match>\n\n {/* Radio Group */}\n <Match when={props.field.type === 'radio'}>\n <div\n class=\"space-y-2\"\n role=\"radiogroup\"\n aria-labelledby={props.field.label ? `${fieldId()}-label` : undefined}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n >\n <For each={props.field.options}>\n {(option, index) => (\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name={props.field.name}\n id={`${fieldId()}-${index()}`}\n value={option.value}\n checked={props.value === option.value}\n onChange={() => props.onChange(option.value)}\n disabled={props.disabled || option.disabled}\n class=\"w-4 h-4 border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600\"\n />\n <span class=\"text-sm text-gray-700 dark:text-gray-300\">\n {option.label}\n </span>\n </label>\n )}\n </For>\n </div>\n </Match>\n </Switch>\n\n <Show when={props.field.helpText && !props.error}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400\">{props.field.helpText}</p>\n </Show>\n\n <Show when={props.error}>\n <p id={errorId()} role=\"alert\" class=\"text-xs text-red-600 dark:text-red-400\">\n {props.error}\n </p>\n </Show>\n </div>\n </Show>\n )\n}\n\n// ─── Multi-Select with Chips ─────────────────────────────────\n\nconst MultiSelectField: Component<{\n field: FormFieldParams\n value: string[]\n onChange: (value: string[]) => void\n disabled?: boolean\n baseClass: string\n}> = (props) => {\n const [open, setOpen] = createSignal(false)\n\n const toggle = (val: string) => {\n const current = props.value || []\n if (current.includes(val)) {\n props.onChange(current.filter((v) => v !== val))\n } else {\n props.onChange([...current, val])\n }\n }\n\n const removeChip = (val: string) => {\n props.onChange((props.value || []).filter((v) => v !== val))\n }\n\n const getLabel = (val: string) =>\n props.field.options?.find((o) => o.value === val)?.label || val\n\n return (\n <div class=\"relative\">\n {/* Selected chips */}\n <Show when={props.value.length > 0}>\n <div class=\"flex flex-wrap gap-1 mb-1\">\n <For each={props.value}>\n {(val) => (\n <span class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded-full\">\n {getLabel(val)}\n <button\n type=\"button\"\n onClick={() => removeChip(val)}\n class=\"hover:text-blue-900 dark:hover:text-blue-100\"\n aria-label={`Remove ${getLabel(val)}`}\n >\n &times;\n </button>\n </span>\n )}\n </For>\n </div>\n </Show>\n\n {/* Trigger button */}\n <button\n type=\"button\"\n onClick={() => setOpen(!open())}\n disabled={props.disabled}\n class={`${props.baseClass} text-left flex items-center justify-between`}\n >\n <span class={props.value.length ? 'text-gray-900 dark:text-white' : 'text-gray-400'}>\n {props.value.length\n ? `${props.value.length} selected`\n : props.field.placeholder || 'Select...'}\n </span>\n <svg class=\"w-4 h-4 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n {/* Dropdown */}\n <Show when={open()}>\n <div class=\"absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg max-h-48 overflow-auto\">\n <For each={props.field.options}>\n {(option) => (\n <label class=\"flex items-center gap-2 px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer text-sm\">\n <input\n type=\"checkbox\"\n checked={(props.value || []).includes(option.value)}\n onChange={() => toggle(option.value)}\n class=\"w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600\"\n />\n <span class=\"text-gray-900 dark:text-white\">{option.label}</span>\n </label>\n )}\n </For>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Autocomplete with API fetch ─────────────────────────────\n\nconst AutocompleteField: Component<{\n field: FormFieldParams\n value: string\n onChange: (value: string) => void\n disabled?: boolean\n baseClass: string\n}> = (props) => {\n const [query, setQuery] = createSignal('')\n const [suggestions, setSuggestions] = createSignal<Array<{ label: string; value: string }>>([])\n const [isOpen, setIsOpen] = createSignal(false)\n const [selectedLabel, setSelectedLabel] = createSignal('')\n let debounceTimer: ReturnType<typeof setTimeout> | null = null\n\n const minChars = () => props.field.minChars ?? 2\n const debounceMs = () => props.field.debounceMs ?? 300\n\n const fetchSuggestions = async (q: string) => {\n if (!props.field.apiUrl || !props.field.searchParam) return\n\n try {\n const params = new URLSearchParams({ [props.field.searchParam]: q })\n if (props.field.extraParams) {\n for (const [k, v] of Object.entries(props.field.extraParams)) {\n params.set(k, v)\n }\n }\n const res = await fetch(`${props.field.apiUrl}?${params}`)\n if (!res.ok) return\n\n const data = await res.json()\n const items = Array.isArray(data) ? data : data.results || data.features || []\n const labelField = props.field.labelField || 'label'\n const valueField = props.field.valueField || 'value'\n\n setSuggestions(items.slice(0, 10).map((item: any) => ({\n label: item[labelField] || String(item),\n value: String(item[valueField] || item[labelField] || item),\n })))\n setIsOpen(true)\n } catch {\n setSuggestions([])\n }\n }\n\n const handleInput = (value: string) => {\n setQuery(value)\n setSelectedLabel('')\n props.onChange('')\n\n if (debounceTimer) clearTimeout(debounceTimer)\n if (value.length < minChars()) {\n setSuggestions([])\n setIsOpen(false)\n return\n }\n debounceTimer = setTimeout(() => fetchSuggestions(value), debounceMs())\n }\n\n const selectSuggestion = (item: { label: string; value: string }) => {\n props.onChange(item.value)\n setSelectedLabel(item.label)\n setQuery(item.label)\n setIsOpen(false)\n setSuggestions([])\n }\n\n onCleanup(() => { if (debounceTimer) clearTimeout(debounceTimer) })\n\n return (\n <div class=\"relative\">\n <input\n type=\"text\"\n value={query()}\n onInput={(e) => handleInput(e.currentTarget.value)}\n onFocus={() => { if (suggestions().length) setIsOpen(true) }}\n onBlur={() => setTimeout(() => setIsOpen(false), 200)}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n class={props.baseClass}\n autocomplete=\"off\"\n />\n\n <Show when={isOpen() && suggestions().length > 0}>\n <div class=\"absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg max-h-48 overflow-auto\">\n <For each={suggestions()}>\n {(item) => (\n <button\n type=\"button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => selectSuggestion(item)}\n class=\"w-full text-left px-3 py-2 text-sm hover:bg-blue-50 dark:hover:bg-blue-900/20 text-gray-900 dark:text-white\"\n >\n {item.label}\n </button>\n )}\n </For>\n </div>\n </Show>\n </div>\n )\n}\n"],"names":["FormFieldRenderer","props","isVisible","useConditionalField","condition","field","showWhen","formData","baseInputClass","error","fieldId","name","errorId","_$createComponent","Show","when","children","_el$","_$getNextElement","_tmpl$11","_el$27","firstChild","_el$28","_co$7","_$getNextMarker","nextSibling","_el$29","_el$30","_co$8","_el$31","_el$32","_co$9","_el$33","_el$34","_co$0","_$insert","_$memo","label","type","_el$2","_tmpl$2","_el$4","_el$5","_co$","_el$6","_el$7","_co$2","required","_tmpl$","_$effect","_$setAttribute","Switch","Match","_el$8","_tmpl$3","$$input","e","onChange","currentTarget","value","_p$","_v$","_v$2","_v$3","_v$4","placeholder","_v$5","disabled","_v$6","_v$7","minLength","_v$8","maxLength","_v$9","pattern","_v$0","_v$1","undefined","_v$10","t","a","o","i","_$setProperty","n","s","h","r","d","l","u","_$className","_$runHydrationEvents","_el$9","_tmpl$4","Number","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","min","_v$17","max","_v$18","step","_v$19","_v$20","_v$21","_el$0","_tmpl$5","_v$22","_v$23","_v$24","_v$25","_v$26","minDate","_v$27","maxDate","_v$28","_v$29","_v$30","_el$1","_tmpl$6","_v$31","_v$32","_v$33","_v$34","_v$35","_v$36","rows","_v$37","_v$38","_v$39","_v$40","_v$41","multiple","_el$10","_tmpl$8","_el$12","_el$13","_co$3","_el$14","_el$15","_co$4","addEventListener","_el$11","_tmpl$7","For","each","options","option","_el$35","_tmpl$12","_v$42","_v$43","_v$44","_v$45","_v$46","_v$47","_v$48","_el$16","_tmpl$9","_el$17","_el$18","_el$20","_el$21","_co$5","_el$22","_el$23","_co$6","checked","checkboxLabel","_v$49","_v$50","_v$51","_v$52","_v$53","MultiSelectField","baseClass","AutocompleteField","_el$24","_tmpl$0","index","_el$36","_tmpl$13","_el$37","_el$38","_v$57","_v$58","_v$59","_v$54","_v$55","_v$56","helpText","_el$25","_tmpl$1","_el$26","_tmpl$10","open","setOpen","createSignal","toggle","val","current","includes","filter","v","removeChip","getLabel","find","_el$39","_tmpl$16","_el$44","_el$45","_co$1","_el$41","_el$42","_el$46","_el$47","_co$10","length","_el$40","_tmpl$14","_el$48","_tmpl$17","_el$50","_el$51","_co$11","_el$49","$$click","_c$","_el$43","_tmpl$15","_el$52","_tmpl$18","_el$53","_el$54","_v$60","_v$61","_v$62","query","setQuery","suggestions","setSuggestions","isOpen","setIsOpen","selectedLabel","setSelectedLabel","debounceTimer","minChars","debounceMs","fetchSuggestions","q","apiUrl","searchParam","params","URLSearchParams","extraParams","k","Object","entries","set","res","fetch","ok","data","json","items","Array","isArray","results","features","labelField","valueField","slice","map","item","String","handleInput","setTimeout","selectSuggestion","onCleanup","_el$55","_tmpl$19","_el$56","_el$58","_el$59","_co$12","_el$57","_el$60","_tmpl$20","$$mousedown","preventDefault","_v$63","_v$64","_v$65","_$delegateEvents"],"mappings":"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"}
1
+ {"version":3,"file":"FormFieldRenderer.js","sources":["../../src/components/FormFieldRenderer.tsx"],"sourcesContent":["/**\n * FormFieldRenderer - Individual form field component\n * Sprint 1: Form Foundation\n * Sprint 2: Conditional field visibility (showWhen)\n */\n\nimport { Component, Show, For, Switch, Match, Accessor, createSignal, createEffect, onCleanup } from 'solid-js'\nimport type { FormFieldParams } from '../types'\nimport { useConditionalField } from '../hooks/useConditionalField'\n\nexport interface FormFieldRendererProps {\n field: FormFieldParams\n value: any\n error?: string\n onChange: (value: any) => void\n disabled?: boolean\n /**\n * Form data accessor for conditional field visibility\n */\n formData?: Accessor<Record<string, any>>\n}\n\nexport const FormFieldRenderer: Component<FormFieldRendererProps> = (props) => {\n // Conditional visibility based on showWhen\n const { isVisible } = useConditionalField({\n condition: props.field.showWhen,\n formData: props.formData || (() => ({})),\n })\n\n const baseInputClass = () => `\n w-full px-3 py-2 border rounded-md\n focus:ring-2 focus:ring-blue-500 focus:border-blue-500\n disabled:bg-gray-100 disabled:cursor-not-allowed\n ${props.error\n ? 'border-red-500 focus:ring-red-500'\n : 'border-gray-300 dark:border-gray-600'}\n dark:bg-gray-700 dark:text-white\n `\n\n const fieldId = () => `field-${props.field.name}`\n const errorId = () => `${props.field.name}-error`\n\n return (\n <Show when={isVisible()}>\n <div class=\"space-y-1\">\n <Show when={props.field.label && props.field.type !== 'checkbox'}>\n <label\n for={fieldId()}\n class=\"block text-sm font-medium text-gray-700 dark:text-gray-300\"\n >\n {props.field.label}\n <Show when={props.field.required}>\n <span class=\"text-red-500 ml-1\" aria-hidden=\"true\">*</span>\n </Show>\n </label>\n </Show>\n\n <Switch>\n {/* Text Input */}\n <Match when={props.field.type === 'text' || props.field.type === 'email' || props.field.type === 'password'}>\n <input\n id={fieldId()}\n type={props.field.type}\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n minLength={props.field.minLength}\n maxLength={props.field.maxLength}\n pattern={props.field.pattern}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Number Input */}\n <Match when={props.field.type === 'number'}>\n <input\n id={fieldId()}\n type=\"number\"\n name={props.field.name}\n value={props.value ?? ''}\n onInput={(e) => props.onChange(e.currentTarget.value === '' ? undefined : Number(e.currentTarget.value))}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n min={props.field.min}\n max={props.field.max}\n step={props.field.step}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Date Input */}\n <Match when={props.field.type === 'date'}>\n <input\n id={fieldId()}\n type=\"date\"\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n disabled={props.disabled}\n required={props.field.required}\n min={props.field.minDate}\n max={props.field.maxDate}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Textarea */}\n <Match when={props.field.type === 'textarea'}>\n <textarea\n id={fieldId()}\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n rows={props.field.rows || 4}\n minLength={props.field.minLength}\n maxLength={props.field.maxLength}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n </Match>\n\n {/* Select (single) */}\n <Match when={props.field.type === 'select' && !props.field.multiple}>\n <select\n id={fieldId()}\n name={props.field.name}\n value={props.value || ''}\n onChange={(e) => props.onChange(e.currentTarget.value)}\n disabled={props.disabled}\n required={props.field.required}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n >\n <Show when={props.field.placeholder}>\n <option value=\"\" disabled>{props.field.placeholder}</option>\n </Show>\n <For each={props.field.options}>\n {(option) => (\n <option value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n )}\n </For>\n </select>\n </Match>\n\n {/* Checkbox */}\n <Match when={props.field.type === 'checkbox'}>\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n id={fieldId()}\n type=\"checkbox\"\n name={props.field.name}\n checked={props.value || false}\n onChange={(e) => props.onChange(e.currentTarget.checked)}\n disabled={props.disabled}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class=\"w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700\"\n />\n <span class=\"text-sm text-gray-700 dark:text-gray-300\">\n {props.field.checkboxLabel || props.field.label}\n <Show when={props.field.required}>\n <span class=\"text-red-500 ml-1\" aria-hidden=\"true\">*</span>\n </Show>\n </span>\n </label>\n </Match>\n\n {/* Multi-Select with chips */}\n <Match when={props.field.type === 'select' && props.field.multiple}>\n <MultiSelectField\n field={props.field}\n value={props.value || []}\n onChange={props.onChange}\n disabled={props.disabled}\n baseClass={baseInputClass()}\n />\n </Match>\n\n {/* Autocomplete with API fetch */}\n <Match when={props.field.type === 'autocomplete'}>\n <AutocompleteField\n field={props.field}\n value={props.value || ''}\n onChange={props.onChange}\n disabled={props.disabled}\n baseClass={baseInputClass()}\n />\n </Match>\n\n {/* Radio Group */}\n <Match when={props.field.type === 'radio'}>\n <div\n class=\"space-y-2\"\n role=\"radiogroup\"\n aria-labelledby={props.field.label ? `${fieldId()}-label` : undefined}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n >\n <For each={props.field.options}>\n {(option, index) => (\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name={props.field.name}\n id={`${fieldId()}-${index()}`}\n value={option.value}\n checked={props.value === option.value}\n onChange={() => props.onChange(option.value)}\n disabled={props.disabled || option.disabled}\n class=\"w-4 h-4 border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600\"\n />\n <span class=\"text-sm text-gray-700 dark:text-gray-300\">\n {option.label}\n </span>\n </label>\n )}\n </For>\n </div>\n </Match>\n\n {/* Fallback for unknown field types — renders as text input with warning */}\n <Match when={true}>\n <input\n id={fieldId()}\n type=\"text\"\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n placeholder={props.field.placeholder || `(${props.field.type})`}\n disabled={props.disabled}\n class={baseInputClass()}\n />\n <p class=\"text-xs text-amber-500 mt-0.5\">Unknown field type: {props.field.type}</p>\n </Match>\n </Switch>\n\n <Show when={props.field.helpText && !props.error}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400\">{props.field.helpText}</p>\n </Show>\n\n <Show when={props.error}>\n <p id={errorId()} role=\"alert\" class=\"text-xs text-red-600 dark:text-red-400\">\n {props.error}\n </p>\n </Show>\n </div>\n </Show>\n )\n}\n\n// ─── Multi-Select with Chips ─────────────────────────────────\n\nconst MultiSelectField: Component<{\n field: FormFieldParams\n value: string[]\n onChange: (value: string[]) => void\n disabled?: boolean\n baseClass: string\n}> = (props) => {\n const [open, setOpen] = createSignal(false)\n\n const toggle = (val: string) => {\n const current = props.value || []\n if (current.includes(val)) {\n props.onChange(current.filter((v) => v !== val))\n } else {\n props.onChange([...current, val])\n }\n }\n\n const removeChip = (val: string) => {\n props.onChange((props.value || []).filter((v) => v !== val))\n }\n\n const getLabel = (val: string) =>\n props.field.options?.find((o) => o.value === val)?.label || val\n\n return (\n <div class=\"relative\">\n {/* Selected chips */}\n <Show when={props.value.length > 0}>\n <div class=\"flex flex-wrap gap-1 mb-1\">\n <For each={props.value}>\n {(val) => (\n <span class=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded-full\">\n {getLabel(val)}\n <button\n type=\"button\"\n onClick={() => removeChip(val)}\n class=\"hover:text-blue-900 dark:hover:text-blue-100\"\n aria-label={`Remove ${getLabel(val)}`}\n >\n &times;\n </button>\n </span>\n )}\n </For>\n </div>\n </Show>\n\n {/* Trigger button */}\n <button\n type=\"button\"\n onClick={() => setOpen(!open())}\n disabled={props.disabled}\n class={`${props.baseClass} text-left flex items-center justify-between`}\n >\n <span class={props.value.length ? 'text-gray-900 dark:text-white' : 'text-gray-400'}>\n {props.value.length\n ? `${props.value.length} selected`\n : props.field.placeholder || 'Select...'}\n </span>\n <svg class=\"w-4 h-4 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n {/* Dropdown */}\n <Show when={open()}>\n <div class=\"absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg max-h-48 overflow-auto\">\n <For each={props.field.options}>\n {(option) => (\n <label class=\"flex items-center gap-2 px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer text-sm\">\n <input\n type=\"checkbox\"\n checked={(props.value || []).includes(option.value)}\n onChange={() => toggle(option.value)}\n class=\"w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600\"\n />\n <span class=\"text-gray-900 dark:text-white\">{option.label}</span>\n </label>\n )}\n </For>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Autocomplete with API fetch ─────────────────────────────\n\nconst AutocompleteField: Component<{\n field: FormFieldParams\n value: string\n onChange: (value: string) => void\n disabled?: boolean\n baseClass: string\n}> = (props) => {\n const [query, setQuery] = createSignal('')\n const [suggestions, setSuggestions] = createSignal<Array<{ label: string; value: string }>>([])\n const [isOpen, setIsOpen] = createSignal(false)\n const [selectedLabel, setSelectedLabel] = createSignal('')\n let debounceTimer: ReturnType<typeof setTimeout> | null = null\n\n const minChars = () => props.field.minChars ?? 2\n const debounceMs = () => props.field.debounceMs ?? 300\n\n const fetchSuggestions = async (q: string) => {\n if (!props.field.apiUrl || !props.field.searchParam) return\n\n try {\n const params = new URLSearchParams({ [props.field.searchParam]: q })\n if (props.field.extraParams) {\n for (const [k, v] of Object.entries(props.field.extraParams)) {\n params.set(k, v)\n }\n }\n const res = await fetch(`${props.field.apiUrl}?${params}`)\n if (!res.ok) return\n\n const data = await res.json()\n const items = Array.isArray(data) ? data : data.results || data.features || []\n const labelField = props.field.labelField || 'label'\n const valueField = props.field.valueField || 'value'\n\n setSuggestions(items.slice(0, 10).map((item: any) => ({\n label: item[labelField] || String(item),\n value: String(item[valueField] || item[labelField] || item),\n })))\n setIsOpen(true)\n } catch {\n setSuggestions([])\n }\n }\n\n const handleInput = (value: string) => {\n setQuery(value)\n setSelectedLabel('')\n props.onChange('')\n\n if (debounceTimer) clearTimeout(debounceTimer)\n if (value.length < minChars()) {\n setSuggestions([])\n setIsOpen(false)\n return\n }\n debounceTimer = setTimeout(() => fetchSuggestions(value), debounceMs())\n }\n\n const selectSuggestion = (item: { label: string; value: string }) => {\n props.onChange(item.value)\n setSelectedLabel(item.label)\n setQuery(item.label)\n setIsOpen(false)\n setSuggestions([])\n }\n\n onCleanup(() => { if (debounceTimer) clearTimeout(debounceTimer) })\n\n return (\n <div class=\"relative\">\n <input\n type=\"text\"\n value={query()}\n onInput={(e) => handleInput(e.currentTarget.value)}\n onFocus={() => { if (suggestions().length) setIsOpen(true) }}\n onBlur={() => setTimeout(() => setIsOpen(false), 200)}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n class={props.baseClass}\n autocomplete=\"off\"\n />\n\n <Show when={isOpen() && suggestions().length > 0}>\n <div class=\"absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg max-h-48 overflow-auto\">\n <For each={suggestions()}>\n {(item) => (\n <button\n type=\"button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => selectSuggestion(item)}\n class=\"w-full text-left px-3 py-2 text-sm hover:bg-blue-50 dark:hover:bg-blue-900/20 text-gray-900 dark:text-white\"\n >\n {item.label}\n </button>\n )}\n </For>\n </div>\n </Show>\n </div>\n )\n}\n"],"names":["FormFieldRenderer","props","isVisible","useConditionalField","condition","field","showWhen","formData","baseInputClass","error","fieldId","name","errorId","_$createComponent","Show","when","children","_el$","_$getNextElement","_tmpl$13","_el$32","firstChild","_el$33","_co$8","_$getNextMarker","nextSibling","_el$34","_el$35","_co$9","_el$36","_el$37","_co$0","_el$38","_el$39","_co$1","_$insert","_$memo","label","type","_el$2","_tmpl$2","_el$4","_el$5","_co$","_el$6","_el$7","_co$2","required","_tmpl$","_$effect","_$setAttribute","Switch","Match","_el$8","_tmpl$3","$$input","e","onChange","currentTarget","value","_p$","_v$","_v$2","_v$3","_v$4","placeholder","_v$5","disabled","_v$6","_v$7","minLength","_v$8","maxLength","_v$9","pattern","_v$0","_v$1","undefined","_v$10","t","a","o","i","_$setProperty","n","s","h","r","d","l","u","_$className","_$runHydrationEvents","_el$9","_tmpl$4","Number","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","min","_v$17","max","_v$18","step","_v$19","_v$20","_v$21","_el$0","_tmpl$5","_v$22","_v$23","_v$24","_v$25","_v$26","minDate","_v$27","maxDate","_v$28","_v$29","_v$30","_el$1","_tmpl$6","_v$31","_v$32","_v$33","_v$34","_v$35","_v$36","rows","_v$37","_v$38","_v$39","_v$40","_v$41","multiple","_el$10","_tmpl$8","_el$12","_el$13","_co$3","_el$14","_el$15","_co$4","addEventListener","_el$11","_tmpl$7","For","each","options","option","_el$40","_tmpl$14","_v$42","_v$43","_v$44","_v$45","_v$46","_v$47","_v$48","_el$16","_tmpl$9","_el$17","_el$18","_el$20","_el$21","_co$5","_el$22","_el$23","_co$6","checked","checkboxLabel","_v$49","_v$50","_v$51","_v$52","_v$53","MultiSelectField","baseClass","AutocompleteField","_el$24","_tmpl$0","index","_el$41","_tmpl$15","_el$42","_el$43","_v$62","_v$63","_v$64","_v$54","_v$55","_v$56","_el$25","_tmpl$1","_v$57","_v$58","_v$59","_v$60","_v$61","_el$26","_tmpl$10","_el$27","_el$28","_el$29","_co$7","helpText","_el$30","_tmpl$11","_el$31","_tmpl$12","open","setOpen","createSignal","toggle","val","current","includes","filter","v","removeChip","getLabel","find","_el$44","_tmpl$18","_el$49","_el$50","_co$10","_el$46","_el$47","_el$51","_el$52","_co$11","length","_el$45","_tmpl$16","_el$53","_tmpl$19","_el$55","_el$56","_co$12","_el$54","$$click","_c$","_el$48","_tmpl$17","_el$57","_tmpl$20","_el$58","_el$59","_v$65","_v$66","_v$67","query","setQuery","suggestions","setSuggestions","isOpen","setIsOpen","selectedLabel","setSelectedLabel","debounceTimer","minChars","debounceMs","fetchSuggestions","q","apiUrl","searchParam","params","URLSearchParams","extraParams","k","Object","entries","set","res","fetch","ok","data","json","items","Array","isArray","results","features","labelField","valueField","slice","map","item","String","handleInput","setTimeout","selectSuggestion","onCleanup","_el$60","_tmpl$21","_el$61","_el$63","_el$64","_co$13","_el$62","_el$65","_tmpl$22","$$mousedown","preventDefault","_v$68","_v$69","_v$70","_$delegateEvents"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seed-ship/mcp-ui-solid",
3
- "version": "2.6.1",
3
+ "version": "2.6.2",
4
4
  "description": "SolidJS components for rendering MCP-generated UI resources",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -234,6 +234,21 @@ export const FormFieldRenderer: Component<FormFieldRendererProps> = (props) => {
234
234
  </For>
235
235
  </div>
236
236
  </Match>
237
+
238
+ {/* Fallback for unknown field types — renders as text input with warning */}
239
+ <Match when={true}>
240
+ <input
241
+ id={fieldId()}
242
+ type="text"
243
+ name={props.field.name}
244
+ value={props.value || ''}
245
+ onInput={(e) => props.onChange(e.currentTarget.value)}
246
+ placeholder={props.field.placeholder || `(${props.field.type})`}
247
+ disabled={props.disabled}
248
+ class={baseInputClass()}
249
+ />
250
+ <p class="text-xs text-amber-500 mt-0.5">Unknown field type: {props.field.type}</p>
251
+ </Match>
237
252
  </Switch>
238
253
 
239
254
  <Show when={props.field.helpText && !props.error}>