@seed-ship/mcp-ui-solid 2.15.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const web = require("solid-js/web");
4
4
  const solidJs = require("solid-js");
5
5
  const useConditionalField = require("../hooks/useConditionalField.cjs");
6
- var _tmpl$ = /* @__PURE__ */ web.template(`<span class="text-red-500 ml-1"aria-hidden=true>*`), _tmpl$2 = /* @__PURE__ */ web.template(`<span class="ml-2 text-[10px] font-medium bg-orange-100 dark:bg-orange-900/30 text-orange-600 dark:text-orange-400 px-1.5 py-0.5 rounded">Not supported`), _tmpl$3 = /* @__PURE__ */ web.template(`<span class="ml-2 text-[10px] font-medium bg-yellow-100 dark:bg-yellow-900/30 text-yellow-600 dark:text-yellow-400 px-1.5 py-0.5 rounded">?`), _tmpl$4 = /* @__PURE__ */ web.template(`<label><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$5 = /* @__PURE__ */ web.template(`<input>`), _tmpl$6 = /* @__PURE__ */ web.template(`<input type=number>`), _tmpl$7 = /* @__PURE__ */ web.template(`<input type=date>`), _tmpl$8 = /* @__PURE__ */ web.template(`<textarea>`), _tmpl$9 = /* @__PURE__ */ web.template(`<option value disabled>`), _tmpl$0 = /* @__PURE__ */ web.template(`<select><!$><!/><!$><!/>`), _tmpl$1 = /* @__PURE__ */ web.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$10 = /* @__PURE__ */ web.template(`<div class=space-y-2 role=radiogroup>`), _tmpl$11 = /* @__PURE__ */ web.template(`<input type=text>`), _tmpl$12 = /* @__PURE__ */ web.template(`<p class="text-xs text-amber-500 mt-0.5">Unknown field type: <!$><!/>`), _tmpl$13 = /* @__PURE__ */ web.template(`<p>`), _tmpl$14 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400">`), _tmpl$15 = /* @__PURE__ */ web.template(`<p role=alert class="text-xs text-red-600 dark:text-red-400">`), _tmpl$16 = /* @__PURE__ */ web.template(`<div class=space-y-1><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$17 = /* @__PURE__ */ web.template(`<option>`), _tmpl$18 = /* @__PURE__ */ web.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$19 = /* @__PURE__ */ web.template(`<div class="flex flex-wrap gap-1 mb-1">`), _tmpl$20 = /* @__PURE__ */ web.template(`<div class="p-2 border-b border-gray-200 dark:border-gray-600 flex-shrink-0"><input type=text placeholder=Filter... class="w-full px-2 py-1 text-sm border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:border-blue-400 outline-none"autofocus>`), _tmpl$21 = /* @__PURE__ */ web.template(`<p class="px-3 py-2 text-sm text-gray-400">No matches`), _tmpl$22 = /* @__PURE__ */ web.template(`<div class="absolute z-50 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg"style=max-height:320px;display:flex;flex-direction:column><!$><!/><div style=overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch><!$><!/><!$><!/>`), _tmpl$23 = /* @__PURE__ */ web.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$24 = /* @__PURE__ */ web.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$25 = /* @__PURE__ */ web.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$26 = /* @__PURE__ */ web.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-72 overflow-y-auto">`), _tmpl$27 = /* @__PURE__ */ web.template(`<div class=relative><!$><!/><input type=text autocomplete=off><!$><!/>`), _tmpl$28 = /* @__PURE__ */ web.template(`<span class="ml-2 text-xs">&#10003;`), _tmpl$29 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/>`);
6
+ var _tmpl$ = /* @__PURE__ */ web.template(`<span class="text-red-500 ml-1"aria-hidden=true>*`), _tmpl$2 = /* @__PURE__ */ web.template(`<span class="ml-2 text-[10px] font-medium bg-orange-100 dark:bg-orange-900/30 text-orange-600 dark:text-orange-400 px-1.5 py-0.5 rounded">Not supported`), _tmpl$3 = /* @__PURE__ */ web.template(`<span class="ml-2 text-[10px] font-medium bg-yellow-100 dark:bg-yellow-900/30 text-yellow-600 dark:text-yellow-400 px-1.5 py-0.5 rounded">?`), _tmpl$4 = /* @__PURE__ */ web.template(`<label><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$5 = /* @__PURE__ */ web.template(`<input>`), _tmpl$6 = /* @__PURE__ */ web.template(`<input type=number>`), _tmpl$7 = /* @__PURE__ */ web.template(`<input type=date>`), _tmpl$8 = /* @__PURE__ */ web.template(`<textarea>`), _tmpl$9 = /* @__PURE__ */ web.template(`<option value disabled>`), _tmpl$0 = /* @__PURE__ */ web.template(`<select><!$><!/><!$><!/>`), _tmpl$1 = /* @__PURE__ */ web.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$10 = /* @__PURE__ */ web.template(`<div class=space-y-2 role=radiogroup>`), _tmpl$11 = /* @__PURE__ */ web.template(`<div class="flex items-center gap-3"><input type=range class="flex-1 h-2 bg-gray-200 dark:bg-gray-600 rounded-lg appearance-none cursor-pointer accent-blue-600"><span class="text-sm font-mono text-gray-700 dark:text-gray-300 min-w-[3rem] text-right">`), _tmpl$12 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 cursor-pointer"><button type=button role=switch><span></span></button><span class="text-sm text-gray-700 dark:text-gray-300">`), _tmpl$13 = /* @__PURE__ */ web.template(`<fieldset class="border border-gray-200 dark:border-gray-600 rounded-lg p-3"><legend class="text-xs font-medium text-gray-500 dark:text-gray-400 px-1"></legend><p class="text-xs text-gray-400">`), _tmpl$14 = /* @__PURE__ */ web.template(`<input type=text>`), _tmpl$15 = /* @__PURE__ */ web.template(`<p class="text-xs text-amber-500 mt-0.5">Unknown field type: <!$><!/>`), _tmpl$16 = /* @__PURE__ */ web.template(`<p>`), _tmpl$17 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400">`), _tmpl$18 = /* @__PURE__ */ web.template(`<p role=alert class="text-xs text-red-600 dark:text-red-400">`), _tmpl$19 = /* @__PURE__ */ web.template(`<div class=space-y-1><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$20 = /* @__PURE__ */ web.template(`<option>`), _tmpl$21 = /* @__PURE__ */ web.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$22 = /* @__PURE__ */ web.template(`<div class="flex flex-wrap gap-1 mb-1">`), _tmpl$23 = /* @__PURE__ */ web.template(`<div class="p-2 border-b border-gray-200 dark:border-gray-600 flex-shrink-0"><input type=text placeholder=Filter... class="w-full px-2 py-1 text-sm border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:border-blue-400 outline-none"autofocus>`), _tmpl$24 = /* @__PURE__ */ web.template(`<p class="px-3 py-2 text-sm text-gray-400">No matches`), _tmpl$25 = /* @__PURE__ */ web.template(`<div class="absolute z-50 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg"style=max-height:320px;display:flex;flex-direction:column><!$><!/><div style=overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch><!$><!/><!$><!/>`), _tmpl$26 = /* @__PURE__ */ web.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$27 = /* @__PURE__ */ web.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$28 = /* @__PURE__ */ web.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$29 = /* @__PURE__ */ web.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-72 overflow-y-auto">`), _tmpl$30 = /* @__PURE__ */ web.template(`<div class=relative><!$><!/><input type=text autocomplete=off><!$><!/>`), _tmpl$31 = /* @__PURE__ */ web.template(`<span class="ml-2 text-xs">&#10003;`), _tmpl$32 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/>`), _tmpl$33 = /* @__PURE__ */ web.template(`<div><!$><!/><input type=text>`);
7
7
  const FormFieldRenderer = (props) => {
8
8
  const {
9
9
  isVisible
@@ -13,6 +13,7 @@ const FormFieldRenderer = (props) => {
13
13
  });
14
14
  const status = () => props.field.fieldStatus || "optional";
15
15
  const isUnsupported = () => status() === "unsupported";
16
+ const isFieldDisabled = () => props.disabled || isUnsupported();
16
17
  const baseInputClass = () => `
17
18
  w-full px-3 py-2 border rounded-md
18
19
  focus:ring-2 focus:ring-blue-500 focus:border-blue-500
@@ -28,7 +29,7 @@ const FormFieldRenderer = (props) => {
28
29
  return isVisible();
29
30
  },
30
31
  get children() {
31
- var _el$ = web.getNextElement(_tmpl$16), _el$39 = _el$.firstChild, [_el$40, _co$0] = web.getNextMarker(_el$39.nextSibling), _el$41 = _el$40.nextSibling, [_el$42, _co$1] = web.getNextMarker(_el$41.nextSibling), _el$43 = _el$42.nextSibling, [_el$44, _co$10] = web.getNextMarker(_el$43.nextSibling), _el$45 = _el$44.nextSibling, [_el$46, _co$11] = web.getNextMarker(_el$45.nextSibling), _el$47 = _el$46.nextSibling, [_el$48, _co$12] = web.getNextMarker(_el$47.nextSibling);
32
+ var _el$ = web.getNextElement(_tmpl$19), _el$49 = _el$.firstChild, [_el$50, _co$0] = web.getNextMarker(_el$49.nextSibling), _el$51 = _el$50.nextSibling, [_el$52, _co$1] = web.getNextMarker(_el$51.nextSibling), _el$53 = _el$52.nextSibling, [_el$54, _co$10] = web.getNextMarker(_el$53.nextSibling), _el$55 = _el$54.nextSibling, [_el$56, _co$11] = web.getNextMarker(_el$55.nextSibling), _el$57 = _el$56.nextSibling, [_el$58, _co$12] = web.getNextMarker(_el$57.nextSibling);
32
33
  web.insert(_el$, web.createComponent(solidJs.Show, {
33
34
  get when() {
34
35
  return web.memo(() => !!props.field.label)() && props.field.type !== "checkbox";
@@ -71,7 +72,7 @@ const FormFieldRenderer = (props) => {
71
72
  });
72
73
  return _el$2;
73
74
  }
74
- }), _el$40, _co$0);
75
+ }), _el$50, _co$0);
75
76
  web.insert(_el$, web.createComponent(solidJs.Switch, {
76
77
  get children() {
77
78
  return [web.createComponent(solidJs.Match, {
@@ -246,11 +247,11 @@ const FormFieldRenderer = (props) => {
246
247
  return props.field.options;
247
248
  },
248
249
  children: (option) => (() => {
249
- var _el$49 = web.getNextElement(_tmpl$17);
250
- web.insert(_el$49, () => option.label);
251
- web.effect(() => web.setProperty(_el$49, "disabled", option.disabled));
252
- web.effect(() => web.setProperty(_el$49, "value", option.value));
253
- return _el$49;
250
+ var _el$59 = web.getNextElement(_tmpl$20);
251
+ web.insert(_el$59, () => option.label);
252
+ web.effect(() => web.setProperty(_el$59, "disabled", option.disabled));
253
+ web.effect(() => web.setProperty(_el$59, "value", option.value));
254
+ return _el$59;
254
255
  })()
255
256
  }), _el$21, _co$6);
256
257
  web.effect((_p$) => {
@@ -366,23 +367,23 @@ const FormFieldRenderer = (props) => {
366
367
  return props.field.options;
367
368
  },
368
369
  children: (option, index) => (() => {
369
- var _el$50 = web.getNextElement(_tmpl$18), _el$51 = _el$50.firstChild, _el$52 = _el$51.nextSibling;
370
- _el$51.addEventListener("change", () => props.onChange(option.value));
371
- web.insert(_el$52, () => option.label);
370
+ var _el$60 = web.getNextElement(_tmpl$21), _el$61 = _el$60.firstChild, _el$62 = _el$61.nextSibling;
371
+ _el$61.addEventListener("change", () => props.onChange(option.value));
372
+ web.insert(_el$62, () => option.label);
372
373
  web.effect((_p$) => {
373
- var _v$64 = props.field.name, _v$65 = `${fieldId()}-${index()}`, _v$66 = props.disabled || option.disabled;
374
- _v$64 !== _p$.e && web.setAttribute(_el$51, "name", _p$.e = _v$64);
375
- _v$65 !== _p$.t && web.setAttribute(_el$51, "id", _p$.t = _v$65);
376
- _v$66 !== _p$.a && web.setProperty(_el$51, "disabled", _p$.a = _v$66);
374
+ var _v$74 = props.field.name, _v$75 = `${fieldId()}-${index()}`, _v$76 = props.disabled || option.disabled;
375
+ _v$74 !== _p$.e && web.setAttribute(_el$61, "name", _p$.e = _v$74);
376
+ _v$75 !== _p$.t && web.setAttribute(_el$61, "id", _p$.t = _v$75);
377
+ _v$76 !== _p$.a && web.setProperty(_el$61, "disabled", _p$.a = _v$76);
377
378
  return _p$;
378
379
  }, {
379
380
  e: void 0,
380
381
  t: void 0,
381
382
  a: void 0
382
383
  });
383
- web.effect(() => web.setProperty(_el$51, "value", option.value));
384
- web.effect(() => web.setProperty(_el$51, "checked", props.value === option.value));
385
- return _el$50;
384
+ web.effect(() => web.setProperty(_el$61, "value", option.value));
385
+ web.effect(() => web.setProperty(_el$61, "checked", props.value === option.value));
386
+ return _el$60;
386
387
  })()
387
388
  }));
388
389
  web.effect((_p$) => {
@@ -398,19 +399,105 @@ const FormFieldRenderer = (props) => {
398
399
  });
399
400
  return _el$30;
400
401
  }
402
+ }), web.createComponent(solidJs.Match, {
403
+ get when() {
404
+ return props.field.type === "range";
405
+ },
406
+ get children() {
407
+ var _el$31 = web.getNextElement(_tmpl$11), _el$32 = _el$31.firstChild, _el$33 = _el$32.nextSibling;
408
+ _el$32.$$input = (e) => props.onChange(Number(e.currentTarget.value));
409
+ web.insert(_el$33, () => props.value ?? props.field.min ?? 0);
410
+ web.effect((_p$) => {
411
+ var _v$59 = fieldId(), _v$60 = props.field.name, _v$61 = props.field.min, _v$62 = props.field.max, _v$63 = props.field.step || 1, _v$64 = isFieldDisabled();
412
+ _v$59 !== _p$.e && web.setAttribute(_el$32, "id", _p$.e = _v$59);
413
+ _v$60 !== _p$.t && web.setAttribute(_el$32, "name", _p$.t = _v$60);
414
+ _v$61 !== _p$.a && web.setAttribute(_el$32, "min", _p$.a = _v$61);
415
+ _v$62 !== _p$.o && web.setAttribute(_el$32, "max", _p$.o = _v$62);
416
+ _v$63 !== _p$.i && web.setAttribute(_el$32, "step", _p$.i = _v$63);
417
+ _v$64 !== _p$.n && web.setProperty(_el$32, "disabled", _p$.n = _v$64);
418
+ return _p$;
419
+ }, {
420
+ e: void 0,
421
+ t: void 0,
422
+ a: void 0,
423
+ o: void 0,
424
+ i: void 0,
425
+ n: void 0
426
+ });
427
+ web.effect(() => web.setProperty(_el$32, "value", props.value ?? props.field.min ?? 0));
428
+ web.runHydrationEvents();
429
+ return _el$31;
430
+ }
431
+ }), web.createComponent(solidJs.Match, {
432
+ get when() {
433
+ return props.field.type === "tags";
434
+ },
435
+ get children() {
436
+ return web.createComponent(TagsField, {
437
+ get value() {
438
+ return props.value || [];
439
+ },
440
+ get onChange() {
441
+ return props.onChange;
442
+ },
443
+ get placeholder() {
444
+ return props.field.placeholder;
445
+ },
446
+ get disabled() {
447
+ return isFieldDisabled();
448
+ },
449
+ get baseClass() {
450
+ return baseInputClass();
451
+ }
452
+ });
453
+ }
454
+ }), web.createComponent(solidJs.Match, {
455
+ get when() {
456
+ return props.field.type === "toggle";
457
+ },
458
+ get children() {
459
+ var _el$34 = web.getNextElement(_tmpl$12), _el$35 = _el$34.firstChild, _el$36 = _el$35.firstChild, _el$37 = _el$35.nextSibling;
460
+ _el$35.$$click = () => props.onChange(!props.value);
461
+ web.insert(_el$37, () => props.field.checkboxLabel || props.field.label);
462
+ web.effect((_p$) => {
463
+ var _v$65 = !!props.value, _v$66 = isFieldDisabled(), _v$67 = `relative inline-flex h-5 w-9 items-center rounded-full transition-colors ${props.value ? "bg-blue-600" : "bg-gray-300 dark:bg-gray-600"} ${isFieldDisabled() ? "opacity-50 cursor-not-allowed" : ""}`, _v$68 = `inline-block h-3.5 w-3.5 transform rounded-full bg-white transition-transform ${props.value ? "translate-x-4" : "translate-x-0.5"}`;
464
+ _v$65 !== _p$.e && web.setAttribute(_el$35, "aria-checked", _p$.e = _v$65);
465
+ _v$66 !== _p$.t && web.setProperty(_el$35, "disabled", _p$.t = _v$66);
466
+ _v$67 !== _p$.a && web.className(_el$35, _p$.a = _v$67);
467
+ _v$68 !== _p$.o && web.className(_el$36, _p$.o = _v$68);
468
+ return _p$;
469
+ }, {
470
+ e: void 0,
471
+ t: void 0,
472
+ a: void 0,
473
+ o: void 0
474
+ });
475
+ web.runHydrationEvents();
476
+ return _el$34;
477
+ }
478
+ }), web.createComponent(solidJs.Match, {
479
+ get when() {
480
+ return props.field.type === "fieldset";
481
+ },
482
+ get children() {
483
+ var _el$38 = web.getNextElement(_tmpl$13), _el$39 = _el$38.firstChild, _el$40 = _el$39.nextSibling;
484
+ web.insert(_el$39, () => props.field.label);
485
+ web.insert(_el$40, () => props.field.helpText || "Group container");
486
+ return _el$38;
487
+ }
401
488
  }), web.createComponent(solidJs.Match, {
402
489
  when: true,
403
490
  get children() {
404
491
  return [(() => {
405
- var _el$31 = web.getNextElement(_tmpl$11);
406
- _el$31.$$input = (e) => props.onChange(e.currentTarget.value);
492
+ var _el$41 = web.getNextElement(_tmpl$14);
493
+ _el$41.$$input = (e) => props.onChange(e.currentTarget.value);
407
494
  web.effect((_p$) => {
408
- var _v$59 = fieldId(), _v$60 = props.field.name, _v$61 = props.field.placeholder || `(${props.field.type})`, _v$62 = props.disabled, _v$63 = baseInputClass();
409
- _v$59 !== _p$.e && web.setAttribute(_el$31, "id", _p$.e = _v$59);
410
- _v$60 !== _p$.t && web.setAttribute(_el$31, "name", _p$.t = _v$60);
411
- _v$61 !== _p$.a && web.setAttribute(_el$31, "placeholder", _p$.a = _v$61);
412
- _v$62 !== _p$.o && web.setProperty(_el$31, "disabled", _p$.o = _v$62);
413
- _v$63 !== _p$.i && web.className(_el$31, _p$.i = _v$63);
495
+ var _v$69 = fieldId(), _v$70 = props.field.name, _v$71 = props.field.placeholder || `(${props.field.type})`, _v$72 = props.disabled, _v$73 = baseInputClass();
496
+ _v$69 !== _p$.e && web.setAttribute(_el$41, "id", _p$.e = _v$69);
497
+ _v$70 !== _p$.t && web.setAttribute(_el$41, "name", _p$.t = _v$70);
498
+ _v$71 !== _p$.a && web.setAttribute(_el$41, "placeholder", _p$.a = _v$71);
499
+ _v$72 !== _p$.o && web.setProperty(_el$41, "disabled", _p$.o = _v$72);
500
+ _v$73 !== _p$.i && web.className(_el$41, _p$.i = _v$73);
414
501
  return _p$;
415
502
  }, {
416
503
  e: void 0,
@@ -419,50 +506,50 @@ const FormFieldRenderer = (props) => {
419
506
  o: void 0,
420
507
  i: void 0
421
508
  });
422
- web.effect(() => web.setProperty(_el$31, "value", props.value || ""));
509
+ web.effect(() => web.setProperty(_el$41, "value", props.value || ""));
423
510
  web.runHydrationEvents();
424
- return _el$31;
511
+ return _el$41;
425
512
  })(), (() => {
426
- var _el$32 = web.getNextElement(_tmpl$12), _el$33 = _el$32.firstChild, _el$34 = _el$33.nextSibling, [_el$35, _co$9] = web.getNextMarker(_el$34.nextSibling);
427
- web.insert(_el$32, () => props.field.type, _el$35, _co$9);
428
- return _el$32;
513
+ var _el$42 = web.getNextElement(_tmpl$15), _el$43 = _el$42.firstChild, _el$44 = _el$43.nextSibling, [_el$45, _co$9] = web.getNextMarker(_el$44.nextSibling);
514
+ web.insert(_el$42, () => props.field.type, _el$45, _co$9);
515
+ return _el$42;
429
516
  })()];
430
517
  }
431
518
  })];
432
519
  }
433
- }), _el$42, _co$1);
520
+ }), _el$52, _co$1);
434
521
  web.insert(_el$, web.createComponent(solidJs.Show, {
435
522
  get when() {
436
523
  return props.field.statusReason;
437
524
  },
438
525
  get children() {
439
- var _el$36 = web.getNextElement(_tmpl$13);
440
- web.insert(_el$36, () => props.field.statusReason);
441
- web.effect(() => web.className(_el$36, `text-xs ${isUnsupported() ? "text-orange-500 dark:text-orange-400" : status() === "unknown" ? "text-yellow-500 dark:text-yellow-400" : status() === "required" ? "text-blue-500 dark:text-blue-400" : "text-gray-500 dark:text-gray-400"}`));
442
- return _el$36;
526
+ var _el$46 = web.getNextElement(_tmpl$16);
527
+ web.insert(_el$46, () => props.field.statusReason);
528
+ web.effect(() => web.className(_el$46, `text-xs ${isUnsupported() ? "text-orange-500 dark:text-orange-400" : status() === "unknown" ? "text-yellow-500 dark:text-yellow-400" : status() === "required" ? "text-blue-500 dark:text-blue-400" : "text-gray-500 dark:text-gray-400"}`));
529
+ return _el$46;
443
530
  }
444
- }), _el$44, _co$10);
531
+ }), _el$54, _co$10);
445
532
  web.insert(_el$, web.createComponent(solidJs.Show, {
446
533
  get when() {
447
534
  return web.memo(() => !!(props.field.helpText && !props.error))() && !props.field.statusReason;
448
535
  },
449
536
  get children() {
450
- var _el$37 = web.getNextElement(_tmpl$14);
451
- web.insert(_el$37, () => props.field.helpText);
452
- return _el$37;
537
+ var _el$47 = web.getNextElement(_tmpl$17);
538
+ web.insert(_el$47, () => props.field.helpText);
539
+ return _el$47;
453
540
  }
454
- }), _el$46, _co$11);
541
+ }), _el$56, _co$11);
455
542
  web.insert(_el$, web.createComponent(solidJs.Show, {
456
543
  get when() {
457
544
  return props.error;
458
545
  },
459
546
  get children() {
460
- var _el$38 = web.getNextElement(_tmpl$15);
461
- web.insert(_el$38, () => props.error);
462
- web.effect(() => web.setAttribute(_el$38, "id", errorId()));
463
- return _el$38;
547
+ var _el$48 = web.getNextElement(_tmpl$18);
548
+ web.insert(_el$48, () => props.error);
549
+ web.effect(() => web.setAttribute(_el$48, "id", errorId()));
550
+ return _el$48;
464
551
  }
465
- }), _el$48, _co$12);
552
+ }), _el$58, _co$12);
466
553
  return _el$;
467
554
  }
468
555
  });
@@ -491,84 +578,84 @@ const MultiSelectField = (props) => {
491
578
  return (props.field.options || []).filter((o) => o.label.toLowerCase().includes(q) || o.value.toLowerCase().includes(q));
492
579
  };
493
580
  return (() => {
494
- var _el$53 = web.getNextElement(_tmpl$23), _el$68 = _el$53.firstChild, [_el$69, _co$16] = web.getNextMarker(_el$68.nextSibling), _el$55 = _el$69.nextSibling, _el$56 = _el$55.firstChild, _el$70 = _el$55.nextSibling, [_el$71, _co$17] = web.getNextMarker(_el$70.nextSibling);
495
- web.insert(_el$53, web.createComponent(solidJs.Show, {
581
+ var _el$63 = web.getNextElement(_tmpl$26), _el$78 = _el$63.firstChild, [_el$79, _co$16] = web.getNextMarker(_el$78.nextSibling), _el$65 = _el$79.nextSibling, _el$66 = _el$65.firstChild, _el$80 = _el$65.nextSibling, [_el$81, _co$17] = web.getNextMarker(_el$80.nextSibling);
582
+ web.insert(_el$63, web.createComponent(solidJs.Show, {
496
583
  get when() {
497
584
  return props.value.length > 0;
498
585
  },
499
586
  get children() {
500
- var _el$54 = web.getNextElement(_tmpl$19);
501
- web.insert(_el$54, web.createComponent(solidJs.For, {
587
+ var _el$64 = web.getNextElement(_tmpl$22);
588
+ web.insert(_el$64, web.createComponent(solidJs.For, {
502
589
  get each() {
503
590
  return props.value;
504
591
  },
505
592
  children: (val) => (() => {
506
- var _el$72 = web.getNextElement(_tmpl$24), _el$74 = _el$72.firstChild, [_el$75, _co$18] = web.getNextMarker(_el$74.nextSibling), _el$73 = _el$75.nextSibling;
507
- web.insert(_el$72, () => getLabel(val), _el$75, _co$18);
508
- _el$73.$$click = () => removeChip(val);
509
- web.effect(() => web.setAttribute(_el$73, "aria-label", `Remove ${getLabel(val)}`));
593
+ var _el$82 = web.getNextElement(_tmpl$27), _el$84 = _el$82.firstChild, [_el$85, _co$18] = web.getNextMarker(_el$84.nextSibling), _el$83 = _el$85.nextSibling;
594
+ web.insert(_el$82, () => getLabel(val), _el$85, _co$18);
595
+ _el$83.$$click = () => removeChip(val);
596
+ web.effect(() => web.setAttribute(_el$83, "aria-label", `Remove ${getLabel(val)}`));
510
597
  web.runHydrationEvents();
511
- return _el$72;
598
+ return _el$82;
512
599
  })()
513
600
  }));
514
- return _el$54;
601
+ return _el$64;
515
602
  }
516
- }), _el$69, _co$16);
517
- _el$55.$$click = () => {
603
+ }), _el$79, _co$16);
604
+ _el$65.$$click = () => {
518
605
  setOpen(!open());
519
606
  if (!open()) setFilter("");
520
607
  };
521
- web.insert(_el$56, (() => {
608
+ web.insert(_el$66, (() => {
522
609
  var _c$ = web.memo(() => !!props.value.length);
523
610
  return () => _c$() ? `${props.value.length} selected` : props.field.placeholder || "Select...";
524
611
  })());
525
- web.insert(_el$53, web.createComponent(solidJs.Show, {
612
+ web.insert(_el$63, web.createComponent(solidJs.Show, {
526
613
  get when() {
527
614
  return open();
528
615
  },
529
616
  get children() {
530
- var _el$57 = web.getNextElement(_tmpl$22), _el$66 = _el$57.firstChild, [_el$67, _co$15] = web.getNextMarker(_el$66.nextSibling), _el$60 = _el$67.nextSibling, _el$62 = _el$60.firstChild, [_el$63, _co$13] = web.getNextMarker(_el$62.nextSibling), _el$64 = _el$63.nextSibling, [_el$65, _co$14] = web.getNextMarker(_el$64.nextSibling);
531
- web.insert(_el$57, web.createComponent(solidJs.Show, {
617
+ var _el$67 = web.getNextElement(_tmpl$25), _el$76 = _el$67.firstChild, [_el$77, _co$15] = web.getNextMarker(_el$76.nextSibling), _el$70 = _el$77.nextSibling, _el$72 = _el$70.firstChild, [_el$73, _co$13] = web.getNextMarker(_el$72.nextSibling), _el$74 = _el$73.nextSibling, [_el$75, _co$14] = web.getNextMarker(_el$74.nextSibling);
618
+ web.insert(_el$67, web.createComponent(solidJs.Show, {
532
619
  get when() {
533
620
  var _a;
534
621
  return (((_a = props.field.options) == null ? void 0 : _a.length) || 0) > 10;
535
622
  },
536
623
  get children() {
537
- var _el$58 = web.getNextElement(_tmpl$20), _el$59 = _el$58.firstChild;
538
- _el$59.$$input = (e) => setFilter(e.currentTarget.value);
539
- web.effect(() => web.setProperty(_el$59, "value", filter()));
624
+ var _el$68 = web.getNextElement(_tmpl$23), _el$69 = _el$68.firstChild;
625
+ _el$69.$$input = (e) => setFilter(e.currentTarget.value);
626
+ web.effect(() => web.setProperty(_el$69, "value", filter()));
540
627
  web.runHydrationEvents();
541
- return _el$58;
628
+ return _el$68;
542
629
  }
543
- }), _el$67, _co$15);
544
- web.insert(_el$60, web.createComponent(solidJs.For, {
630
+ }), _el$77, _co$15);
631
+ web.insert(_el$70, web.createComponent(solidJs.For, {
545
632
  get each() {
546
633
  return filteredOptions();
547
634
  },
548
635
  children: (option) => (() => {
549
- var _el$76 = web.getNextElement(_tmpl$25), _el$77 = _el$76.firstChild, _el$78 = _el$77.nextSibling;
550
- _el$77.addEventListener("change", () => toggle(option.value));
551
- web.insert(_el$78, () => option.label);
552
- web.effect(() => web.setProperty(_el$77, "checked", (props.value || []).includes(option.value)));
553
- return _el$76;
636
+ var _el$86 = web.getNextElement(_tmpl$28), _el$87 = _el$86.firstChild, _el$88 = _el$87.nextSibling;
637
+ _el$87.addEventListener("change", () => toggle(option.value));
638
+ web.insert(_el$88, () => option.label);
639
+ web.effect(() => web.setProperty(_el$87, "checked", (props.value || []).includes(option.value)));
640
+ return _el$86;
554
641
  })()
555
- }), _el$63, _co$13);
556
- web.insert(_el$60, web.createComponent(solidJs.Show, {
642
+ }), _el$73, _co$13);
643
+ web.insert(_el$70, web.createComponent(solidJs.Show, {
557
644
  get when() {
558
645
  return filteredOptions().length === 0;
559
646
  },
560
647
  get children() {
561
- return web.getNextElement(_tmpl$21);
648
+ return web.getNextElement(_tmpl$24);
562
649
  }
563
- }), _el$65, _co$14);
564
- return _el$57;
650
+ }), _el$75, _co$14);
651
+ return _el$67;
565
652
  }
566
- }), _el$71, _co$17);
653
+ }), _el$81, _co$17);
567
654
  web.effect((_p$) => {
568
- var _v$67 = props.disabled, _v$68 = `${props.baseClass} text-left flex items-center justify-between`, _v$69 = props.value.length ? "text-gray-900 dark:text-white" : "text-gray-400";
569
- _v$67 !== _p$.e && web.setProperty(_el$55, "disabled", _p$.e = _v$67);
570
- _v$68 !== _p$.t && web.className(_el$55, _p$.t = _v$68);
571
- _v$69 !== _p$.a && web.className(_el$56, _p$.a = _v$69);
655
+ var _v$77 = props.disabled, _v$78 = `${props.baseClass} text-left flex items-center justify-between`, _v$79 = props.value.length ? "text-gray-900 dark:text-white" : "text-gray-400";
656
+ _v$77 !== _p$.e && web.setProperty(_el$65, "disabled", _p$.e = _v$77);
657
+ _v$78 !== _p$.t && web.className(_el$65, _p$.t = _v$78);
658
+ _v$79 !== _p$.a && web.className(_el$66, _p$.a = _v$79);
572
659
  return _p$;
573
660
  }, {
574
661
  e: void 0,
@@ -576,7 +663,7 @@ const MultiSelectField = (props) => {
576
663
  a: void 0
577
664
  });
578
665
  web.runHydrationEvents();
579
- return _el$53;
666
+ return _el$63;
580
667
  })();
581
668
  };
582
669
  const AutocompleteField = (props) => {
@@ -659,92 +746,156 @@ const AutocompleteField = (props) => {
659
746
  if (debounceTimer) clearTimeout(debounceTimer);
660
747
  });
661
748
  return (() => {
662
- var _el$79 = web.getNextElement(_tmpl$27), _el$83 = _el$79.firstChild, [_el$84, _co$19] = web.getNextMarker(_el$83.nextSibling), _el$81 = _el$84.nextSibling, _el$85 = _el$81.nextSibling, [_el$86, _co$20] = web.getNextMarker(_el$85.nextSibling);
663
- web.insert(_el$79, web.createComponent(solidJs.Show, {
749
+ var _el$89 = web.getNextElement(_tmpl$30), _el$93 = _el$89.firstChild, [_el$94, _co$19] = web.getNextMarker(_el$93.nextSibling), _el$91 = _el$94.nextSibling, _el$95 = _el$91.nextSibling, [_el$96, _co$20] = web.getNextMarker(_el$95.nextSibling);
750
+ web.insert(_el$89, web.createComponent(solidJs.Show, {
664
751
  get when() {
665
752
  return web.memo(() => !!isMultiple())() && selectedValues().length > 0;
666
753
  },
667
754
  get children() {
668
- var _el$80 = web.getNextElement(_tmpl$19);
669
- web.insert(_el$80, web.createComponent(solidJs.For, {
755
+ var _el$90 = web.getNextElement(_tmpl$22);
756
+ web.insert(_el$90, web.createComponent(solidJs.For, {
670
757
  get each() {
671
758
  return selectedValues();
672
759
  },
673
760
  children: (val) => (() => {
674
- var _el$87 = web.getNextElement(_tmpl$24), _el$89 = _el$87.firstChild, [_el$90, _co$21] = web.getNextMarker(_el$89.nextSibling), _el$88 = _el$90.nextSibling;
675
- web.insert(_el$87, () => getLabel(val), _el$90, _co$21);
676
- _el$88.$$click = () => removeChip(val);
677
- web.effect(() => web.setAttribute(_el$88, "aria-label", `Remove ${getLabel(val)}`));
761
+ var _el$97 = web.getNextElement(_tmpl$27), _el$99 = _el$97.firstChild, [_el$100, _co$21] = web.getNextMarker(_el$99.nextSibling), _el$98 = _el$100.nextSibling;
762
+ web.insert(_el$97, () => getLabel(val), _el$100, _co$21);
763
+ _el$98.$$click = () => removeChip(val);
764
+ web.effect(() => web.setAttribute(_el$98, "aria-label", `Remove ${getLabel(val)}`));
678
765
  web.runHydrationEvents();
679
- return _el$87;
766
+ return _el$97;
680
767
  })()
681
768
  }));
682
- return _el$80;
769
+ return _el$90;
683
770
  }
684
- }), _el$84, _co$19);
685
- _el$81.addEventListener("blur", () => setTimeout(() => setIsOpen(false), 200));
686
- _el$81.addEventListener("focus", () => {
771
+ }), _el$94, _co$19);
772
+ _el$91.addEventListener("blur", () => setTimeout(() => setIsOpen(false), 200));
773
+ _el$91.addEventListener("focus", () => {
687
774
  if (suggestions().length) setIsOpen(true);
688
775
  });
689
- _el$81.$$input = (e) => handleInput(e.currentTarget.value);
690
- web.insert(_el$79, web.createComponent(solidJs.Show, {
776
+ _el$91.$$input = (e) => handleInput(e.currentTarget.value);
777
+ web.insert(_el$89, web.createComponent(solidJs.Show, {
691
778
  get when() {
692
779
  return web.memo(() => !!isOpen())() && suggestions().length > 0;
693
780
  },
694
781
  get children() {
695
- var _el$82 = web.getNextElement(_tmpl$26);
696
- web.insert(_el$82, web.createComponent(solidJs.For, {
782
+ var _el$92 = web.getNextElement(_tmpl$29);
783
+ web.insert(_el$92, web.createComponent(solidJs.For, {
697
784
  get each() {
698
785
  return suggestions();
699
786
  },
700
787
  children: (item) => {
701
788
  const isSelected = () => isMultiple() && selectedValues().includes(item.value);
702
789
  return (() => {
703
- var _el$91 = web.getNextElement(_tmpl$29), _el$93 = _el$91.firstChild, [_el$94, _co$22] = web.getNextMarker(_el$93.nextSibling), _el$95 = _el$94.nextSibling, [_el$96, _co$23] = web.getNextMarker(_el$95.nextSibling);
704
- _el$91.$$click = () => selectSuggestion(item);
705
- _el$91.$$mousedown = (e) => e.preventDefault();
706
- web.insert(_el$91, () => item.label, _el$94, _co$22);
707
- web.insert(_el$91, web.createComponent(solidJs.Show, {
790
+ var _el$101 = web.getNextElement(_tmpl$32), _el$103 = _el$101.firstChild, [_el$104, _co$22] = web.getNextMarker(_el$103.nextSibling), _el$105 = _el$104.nextSibling, [_el$106, _co$23] = web.getNextMarker(_el$105.nextSibling);
791
+ _el$101.$$click = () => selectSuggestion(item);
792
+ _el$101.$$mousedown = (e) => e.preventDefault();
793
+ web.insert(_el$101, () => item.label, _el$104, _co$22);
794
+ web.insert(_el$101, web.createComponent(solidJs.Show, {
708
795
  get when() {
709
796
  return isSelected();
710
797
  },
711
798
  get children() {
712
- return web.getNextElement(_tmpl$28);
799
+ return web.getNextElement(_tmpl$31);
713
800
  }
714
- }), _el$96, _co$23);
801
+ }), _el$106, _co$23);
715
802
  web.effect((_p$) => {
716
- var _v$73 = `w-full text-left px-3 py-2 text-sm hover:bg-blue-50 dark:hover:bg-blue-900/20 ${isSelected() ? "text-blue-600 dark:text-blue-400 bg-blue-50/50 dark:bg-blue-900/10" : "text-gray-900 dark:text-white"}`, _v$74 = isSelected();
717
- _v$73 !== _p$.e && web.className(_el$91, _p$.e = _v$73);
718
- _v$74 !== _p$.t && web.setProperty(_el$91, "disabled", _p$.t = _v$74);
803
+ var _v$83 = `w-full text-left px-3 py-2 text-sm hover:bg-blue-50 dark:hover:bg-blue-900/20 ${isSelected() ? "text-blue-600 dark:text-blue-400 bg-blue-50/50 dark:bg-blue-900/10" : "text-gray-900 dark:text-white"}`, _v$84 = isSelected();
804
+ _v$83 !== _p$.e && web.className(_el$101, _p$.e = _v$83);
805
+ _v$84 !== _p$.t && web.setProperty(_el$101, "disabled", _p$.t = _v$84);
719
806
  return _p$;
720
807
  }, {
721
808
  e: void 0,
722
809
  t: void 0
723
810
  });
724
811
  web.runHydrationEvents();
725
- return _el$91;
812
+ return _el$101;
726
813
  })();
727
814
  }
728
815
  }));
729
- return _el$82;
816
+ return _el$92;
817
+ }
818
+ }), _el$96, _co$20);
819
+ web.effect((_p$) => {
820
+ var _v$80 = isMultiple() && selectedValues().length ? "Add more..." : props.field.placeholder, _v$81 = props.disabled, _v$82 = props.baseClass;
821
+ _v$80 !== _p$.e && web.setAttribute(_el$91, "placeholder", _p$.e = _v$80);
822
+ _v$81 !== _p$.t && web.setProperty(_el$91, "disabled", _p$.t = _v$81);
823
+ _v$82 !== _p$.a && web.className(_el$91, _p$.a = _v$82);
824
+ return _p$;
825
+ }, {
826
+ e: void 0,
827
+ t: void 0,
828
+ a: void 0
829
+ });
830
+ web.effect(() => web.setProperty(_el$91, "value", query()));
831
+ web.runHydrationEvents();
832
+ return _el$89;
833
+ })();
834
+ };
835
+ const TagsField = (props) => {
836
+ const [input, setInput] = solidJs.createSignal("");
837
+ const addTag = () => {
838
+ const val = input().trim();
839
+ if (val && !(props.value || []).includes(val)) {
840
+ props.onChange([...props.value || [], val]);
841
+ }
842
+ setInput("");
843
+ };
844
+ const removeTag = (tag) => {
845
+ props.onChange((props.value || []).filter((t) => t !== tag));
846
+ };
847
+ const handleKeyDown = (e) => {
848
+ if (e.key === "Enter" || e.key === ",") {
849
+ e.preventDefault();
850
+ addTag();
851
+ }
852
+ if (e.key === "Backspace" && !input() && (props.value || []).length > 0) {
853
+ removeTag(props.value[props.value.length - 1]);
854
+ }
855
+ };
856
+ return (() => {
857
+ var _el$107 = web.getNextElement(_tmpl$33), _el$110 = _el$107.firstChild, [_el$111, _co$24] = web.getNextMarker(_el$110.nextSibling), _el$109 = _el$111.nextSibling;
858
+ web.insert(_el$107, web.createComponent(solidJs.Show, {
859
+ get when() {
860
+ return (props.value || []).length > 0;
861
+ },
862
+ get children() {
863
+ var _el$108 = web.getNextElement(_tmpl$22);
864
+ web.insert(_el$108, web.createComponent(solidJs.For, {
865
+ get each() {
866
+ return props.value || [];
867
+ },
868
+ children: (tag) => (() => {
869
+ var _el$112 = web.getNextElement(_tmpl$27), _el$114 = _el$112.firstChild, [_el$115, _co$25] = web.getNextMarker(_el$114.nextSibling), _el$113 = _el$115.nextSibling;
870
+ web.insert(_el$112, tag, _el$115, _co$25);
871
+ _el$113.$$click = () => removeTag(tag);
872
+ web.setAttribute(_el$113, "aria-label", `Remove ${tag}`);
873
+ web.runHydrationEvents();
874
+ return _el$112;
875
+ })()
876
+ }));
877
+ return _el$108;
730
878
  }
731
- }), _el$86, _co$20);
879
+ }), _el$111, _co$24);
880
+ _el$109.addEventListener("blur", addTag);
881
+ _el$109.$$keydown = handleKeyDown;
882
+ _el$109.$$input = (e) => setInput(e.currentTarget.value);
732
883
  web.effect((_p$) => {
733
- var _v$70 = isMultiple() && selectedValues().length ? "Add more..." : props.field.placeholder, _v$71 = props.disabled, _v$72 = props.baseClass;
734
- _v$70 !== _p$.e && web.setAttribute(_el$81, "placeholder", _p$.e = _v$70);
735
- _v$71 !== _p$.t && web.setProperty(_el$81, "disabled", _p$.t = _v$71);
736
- _v$72 !== _p$.a && web.className(_el$81, _p$.a = _v$72);
884
+ var _v$85 = props.placeholder || "Type and press Enter...", _v$86 = props.disabled, _v$87 = props.baseClass;
885
+ _v$85 !== _p$.e && web.setAttribute(_el$109, "placeholder", _p$.e = _v$85);
886
+ _v$86 !== _p$.t && web.setProperty(_el$109, "disabled", _p$.t = _v$86);
887
+ _v$87 !== _p$.a && web.className(_el$109, _p$.a = _v$87);
737
888
  return _p$;
738
889
  }, {
739
890
  e: void 0,
740
891
  t: void 0,
741
892
  a: void 0
742
893
  });
743
- web.effect(() => web.setProperty(_el$81, "value", query()));
894
+ web.effect(() => web.setProperty(_el$109, "value", input()));
744
895
  web.runHydrationEvents();
745
- return _el$79;
896
+ return _el$107;
746
897
  })();
747
898
  };
748
- web.delegateEvents(["input", "click", "mousedown"]);
899
+ web.delegateEvents(["input", "click", "mousedown", "keydown"]);
749
900
  exports.FormFieldRenderer = FormFieldRenderer;
750
901
  //# sourceMappingURL=FormFieldRenderer.cjs.map