form-builder-pro 1.2.2 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -8795,9 +8795,12 @@ var FormBuilder = class {
8795
8795
  fields: s.fields.map((f) => ({
8796
8796
  id: f.id,
8797
8797
  type: f.type,
8798
- label: f.label
8799
- // Exclude frequently changing text properties from hash
8800
- // to prevent re-renders on typing
8798
+ label: f.label,
8799
+ layout: f.layout,
8800
+ width: f.width,
8801
+ css: f.css
8802
+ // Include css so style changes (textAlign, backgroundColor, etc.) trigger re-render
8803
+ // Exclude frequently changing text (placeholder, etc.) to prevent re-renders on typing
8801
8804
  }))
8802
8805
  })),
8803
8806
  selectedField: state.selectedFieldId,
@@ -8914,13 +8917,13 @@ var FormBuilder = class {
8914
8917
  main.appendChild(previewContainer2);
8915
8918
  }
8916
8919
  } else {
8917
- const toolboxWrapper = createElement("div", { className: "form-builder-toolbox-wrapper w-full md:w-80 bg-white dark:bg-gray-900 border-r md:border-r border-b md:border-b-0 border-gray-200 dark:border-gray-800" });
8920
+ const toolboxWrapper = createElement("div", { className: "form-builder-toolbox-wrapper w-full md:w-[14rem] bg-white dark:bg-gray-900 border-r md:border-r border-b md:border-b-0 border-gray-200 dark:border-gray-800" });
8918
8921
  toolboxWrapper.appendChild(this.renderToolbox());
8919
8922
  main.appendChild(toolboxWrapper);
8920
8923
  const canvasWrapper2 = createElement("div", { className: "form-builder-canvas flex-1 overflow-y-auto" });
8921
8924
  canvasWrapper2.appendChild(this.renderCanvas(state));
8922
8925
  main.appendChild(canvasWrapper2);
8923
- const configWrapper = createElement("div", { className: "form-builder-config-wrapper w-full md:w-80 bg-white dark:bg-gray-900 border-l md:border-l border-t md:border-t-0 border-gray-200 dark:border-gray-800 overflow-hidden" });
8926
+ const configWrapper = createElement("div", { className: "form-builder-config-wrapper w-full md:w-[17rem] bg-white dark:bg-gray-900 border-l md:border-l border-t md:border-t-0 border-gray-200 dark:border-gray-800 overflow-hidden" });
8924
8927
  configWrapper.appendChild(this.renderConfigPanel(state, focusState));
8925
8928
  main.appendChild(configWrapper);
8926
8929
  }
@@ -8959,12 +8962,12 @@ var FormBuilder = class {
8959
8962
  }
8960
8963
  }
8961
8964
  renderToolbar(state) {
8962
- const toolbar = createElement("div", { className: "flex items-center justify-between p-4 border-b bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-800" });
8965
+ const toolbar = createElement("div", { className: "flex items-center justify-between p-2 pl-[95px] border-b bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-800" });
8963
8966
  const left = createElement("div", { className: "flex items-center " });
8964
8967
  left.appendChild(createElement("h1", { className: "text-xl font-semibold mb-2 text-primary hidden mr-4", text: "" }));
8965
8968
  if (state.existingForms && state.existingForms.length > 0) {
8966
8969
  const formSelect = createElement("select", {
8967
- className: "px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent text-sm mr-2",
8970
+ className: "px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent text-sm mr-2",
8968
8971
  onchange: (e) => {
8969
8972
  const formId = e.target.value;
8970
8973
  if (formId) {
@@ -9029,7 +9032,7 @@ var FormBuilder = class {
9029
9032
  }, [getIcon("Cog", 20)]);
9030
9033
  right.appendChild(settingsBtn);
9031
9034
  const clearBtn = createElement("button", {
9032
- className: "flex items-center px-3 py-2 text-sm font-medium text-red-600 bg-red-500 text-white rounded-md transition-colors",
9035
+ className: "flex items-center px-3 py-2 text-sm font-medium text-red-600 bg-[#f7a1a14d] text-red-500 rounded-md transition-colors",
9033
9036
  onclick: () => {
9034
9037
  if (confirm("Are you sure?")) {
9035
9038
  formStore.getState().setSchema({ id: "new", title: "New Form", formName: "newForm", sections: [] });
@@ -9037,7 +9040,7 @@ var FormBuilder = class {
9037
9040
  }
9038
9041
  }, [getIcon("Trash2", 16), createElement("span", { className: "", title: "Clear" })]);
9039
9042
  const previewBtn = createElement("button", {
9040
- className: `flex items-center justify-center px-3 py-2 text-sm font-medium rounded-md transition-colors ${state.isPreviewMode ? "bg-[#019FA2] text-white hover:bg-[#018a8d]" : "bg-[#3b497e] text-white hover:bg-[#2d3a62]"}`,
9043
+ className: `flex items-center justify-center px-3 py-2 text-sm font-medium rounded-md transition-colors ${state.isPreviewMode ? "text-[#635bff] bg-[#e7e7ff] " : "text-[#635bff] bg-[#e7e7ff]"}`,
9041
9044
  onclick: (e) => {
9042
9045
  e.preventDefault();
9043
9046
  e.stopPropagation();
@@ -9046,7 +9049,7 @@ var FormBuilder = class {
9046
9049
  title: state.isPreviewMode ? "Exit Preview" : "Preview Form"
9047
9050
  }, [getIcon(state.isPreviewMode ? "X" : "Eye", 16)]);
9048
9051
  const saveBtn = createElement("button", {
9049
- className: "flex items-center px-3 py-2 text-sm font-medium text-white bg-[#019FA2] rounded-md shadow-sm transition-colors",
9052
+ className: "flex items-center px-3 py-2 text-sm font-medium text-[#635bff] bg-[#e7e7ff] rounded-md shadow-sm transition-colors",
9050
9053
  onclick: () => {
9051
9054
  const schema = formStore.getState().schema;
9052
9055
  console.log("[Form Builder] Schema being sent to app:", JSON.stringify(schema, null, 2));
@@ -9054,7 +9057,7 @@ var FormBuilder = class {
9054
9057
  this.options.onSave(schema);
9055
9058
  }
9056
9059
  }
9057
- }, [getIcon("Save", 16), createElement("span", { className: "", text: "" })]);
9060
+ }, [createElement("span", { className: "", text: "Save" })]);
9058
9061
  right.appendChild(clearBtn);
9059
9062
  right.appendChild(previewBtn);
9060
9063
  right.appendChild(saveBtn);
@@ -9062,24 +9065,29 @@ var FormBuilder = class {
9062
9065
  return toolbar;
9063
9066
  }
9064
9067
  renderToolbox() {
9065
- const toolbox = createElement("div", { className: "bg-[#847dff1a] dark:bg-gray-900 flex flex-col h-full" });
9066
- const tabs = createElement("div", { className: "flex border-b border-gray-200 dark:border-gray-800 p-1" });
9067
- const createTab = (id, label) => {
9068
+ const toolbox = createElement("div", { className: " dark:bg-gray-900 flex flex-col h-full" });
9069
+ const tabs = createElement("div", { className: "flex border-b border-gray-200 dark:border-gray-800 " });
9070
+ const createTab = (id, label, icon, tooltip) => {
9068
9071
  const isActive = this.activeTab === id;
9069
- return createElement("button", {
9070
- className: `flex-1 py-3 text-sm font-medium transition-colors ${isActive ? "text-white bg-[#635bff] rounded " : "text-gray-500 hover:text-gray-700 dark:text-gray-400"}`,
9071
- text: label,
9072
+ const btn = createElement("button", {
9073
+ className: `flex-1 flex items-center justify-center py-3 text-base font-bold transition-colors ${isActive ? "text-[#635bff] bg-[#e7e7ff] " : "text-gray-500 hover:text-gray-700 dark:text-gray-400"}`,
9074
+ title: tooltip || label,
9075
+ "aria-label": tooltip || label,
9072
9076
  onclick: () => {
9073
9077
  this.activeTab = id;
9074
9078
  this.render();
9075
9079
  }
9076
- });
9080
+ }, [
9081
+ getIcon(icon || "ListBullet", 16),
9082
+ createElement("span", { className: "hidden sm:inline-block", text: label })
9083
+ ]);
9084
+ return btn;
9077
9085
  };
9078
- tabs.appendChild(createTab("fields", "Fields"));
9079
- tabs.appendChild(createTab("templates", "Templates"));
9080
- tabs.appendChild(createTab("import", "Import"));
9086
+ tabs.appendChild(createTab("fields", "", "ListBullet", "Field types"));
9087
+ tabs.appendChild(createTab("templates", "", "DocumentText", "Saved templates"));
9088
+ tabs.appendChild(createTab("import", "", "Upload", "Import sections"));
9081
9089
  toolbox.appendChild(tabs);
9082
- const content = createElement("div", { className: "flex-1 overflow-y-auto p-4 bg-white" });
9090
+ const content = createElement("div", { className: "flex-1 overflow-y-auto p-4 bg-[#e7e7ff]" });
9083
9091
  if (this.activeTab === "fields") {
9084
9092
  const list = createElement("div", { className: "grid grid-cols-2 gap-3", id: "toolbox-list" });
9085
9093
  FIELD_TYPES.forEach((field) => {
@@ -9161,7 +9169,7 @@ var FormBuilder = class {
9161
9169
  }
9162
9170
  renderCanvas(state) {
9163
9171
  const canvas = createElement("div", {
9164
- className: "flex-1 dark:bg-gray-950 p-4 md:p-8 overflow-y-auto",
9172
+ className: "flex-1 dark:bg-gray-950 p-4 md:p-4 overflow-y-auto",
9165
9173
  onclick: (e) => {
9166
9174
  if (e.target === canvas || e.target === canvas.firstElementChild) {
9167
9175
  formStore.getState().selectField(null);
@@ -9182,7 +9190,7 @@ var FormBuilder = class {
9182
9190
  const sectionList = new SectionList(state.schema, state.selectedFieldId);
9183
9191
  inner.appendChild(sectionList.getElement());
9184
9192
  const addSectionBtn = createElement("button", {
9185
- className: "w-full mt-6 py-3 dark:border-gray-700 rounded-lg text-gray-500 bg-[#635bff] max-w-[180px] shadow-[0_17px_20px_-8px_rgba(77,91,236,0.231372549)] text-white transition-colors flex items-center justify-center font-medium",
9193
+ className: "w-full mt-6 py-3 dark:border-gray-700 rounded-md text-sm text-gray-500 bg-[#635bff] max-w-[180px] text-white transition-colors flex items-center justify-center font-medium",
9186
9194
  onclick: () => formStore.getState().addSection()
9187
9195
  }, [getIcon("Plus", 20), createElement("span", { className: "ml-2", text: "Add Section" })]);
9188
9196
  inner.appendChild(addSectionBtn);
@@ -9192,7 +9200,7 @@ var FormBuilder = class {
9192
9200
  // Helper method to create a modern checkbox field with better UX
9193
9201
  createCheckboxField(label, checked, onChange, id) {
9194
9202
  const uniqueId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
9195
- const container = createElement("div", { className: "flex items-center gap-3 py-2.5 px-3 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-800/50 transition-colors cursor-pointer" });
9203
+ const container = createElement("div", { className: "flex items-center gap-3 py-1 px-1 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-800/50 transition-colors cursor-pointer" });
9196
9204
  const checkbox = createElement("input", {
9197
9205
  type: "checkbox",
9198
9206
  id: uniqueId,
@@ -9229,11 +9237,11 @@ var FormBuilder = class {
9229
9237
  onclick: () => formStore.getState().selectField(null)
9230
9238
  }, [getIcon("X", 20)]));
9231
9239
  panel.appendChild(header);
9232
- const body = createElement("div", { className: "flex-1 overflow-y-auto p-4 space-y-6", id: "config-panel-body" });
9240
+ const body = createElement("div", { className: "flex-1 overflow-y-auto p-4 px-2 space-y-3", id: "config-panel-body" });
9233
9241
  const labelGroup = createElement("div");
9234
- labelGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Label" }));
9242
+ labelGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Label" }));
9235
9243
  labelGroup.appendChild(createElement("input", {
9236
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9244
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9237
9245
  value: selectedField.label,
9238
9246
  "data-focus-id": `field-label-${selectedField.id}`,
9239
9247
  oninput: (e) => {
@@ -9242,9 +9250,9 @@ var FormBuilder = class {
9242
9250
  }));
9243
9251
  body.appendChild(labelGroup);
9244
9252
  const placeholderGroup = createElement("div");
9245
- placeholderGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Placeholder" }));
9253
+ placeholderGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Placeholder" }));
9246
9254
  placeholderGroup.appendChild(createElement("input", {
9247
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9255
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9248
9256
  value: selectedField.placeholder || "",
9249
9257
  "data-focus-id": `field-placeholder-${selectedField.id}`,
9250
9258
  oninput: (e) => {
@@ -9268,18 +9276,24 @@ var FormBuilder = class {
9268
9276
  layoutLabelRow.appendChild(spanValueDisplay);
9269
9277
  layoutGroup.appendChild(layoutLabelRow);
9270
9278
  const spanButtonsContainer = createElement("div", { className: "grid grid-cols-6 gap-2 mt-2" });
9279
+ const fieldId = selectedField.id;
9271
9280
  for (let span = 1; span <= 12; span++) {
9272
9281
  const isActive = currentSpan === span;
9273
9282
  const spanBtn = createElement("button", {
9274
9283
  type: "button",
9275
- className: `span-preset-btn px-2 py-1.5 text-xs rounded transition-colors ${isActive ? "bg-blue-600 text-white" : "bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700"}`,
9284
+ className: `span-preset-btn px-2 py-1.5 text-xs rounded transition-colors cursor-pointer ${isActive ? "bg-[#e7e7ff] text-[#635bff] font-semibold" : "bg-white border-2 border-[#e7e7ff] dark:bg-gray-800 text-gray-600 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700"}`,
9276
9285
  text: `${span}`,
9277
- title: `${span} column${span > 1 ? "s" : ""} (${Math.round(span / 12 * 100)}%)`,
9278
- onclick: () => {
9279
- const layout = selectedField.layout || { row: 0, column: 0 };
9280
- formStore.getState().updateField(selectedField.id, {
9286
+ title: `${span} column${span > 1 ? "s" : ""} (${Math.round(span / 12 * 100)}%)`
9287
+ });
9288
+ spanBtn.addEventListener("click", (e) => {
9289
+ e.preventDefault();
9290
+ e.stopPropagation();
9291
+ const state2 = formStore.getState();
9292
+ const field = state2.schema.sections.flatMap((s) => s.fields).find((f) => f.id === fieldId);
9293
+ if (field) {
9294
+ const layout = field.layout || { row: 0, column: 0 };
9295
+ state2.updateField(fieldId, {
9281
9296
  layout: { ...layout, span },
9282
- // Also update width for backward compatibility
9283
9297
  width: Math.round(span / 12 * 100)
9284
9298
  });
9285
9299
  }
@@ -9363,9 +9377,9 @@ var FormBuilder = class {
9363
9377
  };
9364
9378
  if (activeMasterTypes.length > 0) {
9365
9379
  const groupNameGroup = createElement("div", { className: "mb-4" });
9366
- groupNameGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Master List" }));
9380
+ groupNameGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Master List" }));
9367
9381
  const groupNameSelect = createElement("select", {
9368
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9382
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9369
9383
  onchange: (e) => {
9370
9384
  const selectedEnumName = e.target.value;
9371
9385
  if (selectedEnumName) {
@@ -9451,9 +9465,9 @@ var FormBuilder = class {
9451
9465
  const optionSourceHeader = createElement("h3", { className: "text-xs font-semibold text-gray-500 uppercase tracking-wider mb-3 mt-6", text: "Option Source" });
9452
9466
  body.appendChild(optionSourceHeader);
9453
9467
  const optionSourceGroup = createElement("div", { className: "mb-4" });
9454
- optionSourceGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Source Type" }));
9468
+ optionSourceGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Source Type" }));
9455
9469
  const optionSourceSelect = createElement("select", {
9456
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9470
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9457
9471
  value: selectedField.optionSource || "STATIC",
9458
9472
  onchange: (e) => {
9459
9473
  const source = e.target.value;
@@ -9478,9 +9492,9 @@ var FormBuilder = class {
9478
9492
  body.appendChild(optionSourceGroup);
9479
9493
  if (selectedField.type === "select" && selectedField.optionSource === "LOOKUP") {
9480
9494
  const lookupSourceTypeGroup = createElement("div", { className: "mb-4" });
9481
- lookupSourceTypeGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source Type" }));
9495
+ lookupSourceTypeGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source Type" }));
9482
9496
  const lookupSourceTypeSelect = createElement("select", {
9483
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9497
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9484
9498
  value: selectedField.lookupSourceType || "MODULE",
9485
9499
  onchange: (e) => {
9486
9500
  const lookupSourceType = e.target.value;
@@ -9499,9 +9513,9 @@ var FormBuilder = class {
9499
9513
  if (selectedField.lookupSourceType === "MODULE") {
9500
9514
  const moduleList = this.options.moduleList || [];
9501
9515
  const lookupSourceGroup = createElement("div", { className: "mb-4" });
9502
- lookupSourceGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source" }));
9516
+ lookupSourceGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source" }));
9503
9517
  const lookupSourceSelect = createElement("select", {
9504
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9518
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9505
9519
  value: selectedField.lookupSource || "",
9506
9520
  onchange: (e) => {
9507
9521
  const lookupSource = e.target.value;
@@ -9536,9 +9550,9 @@ var FormBuilder = class {
9536
9550
  const masterTypes = formStore.getState().masterTypes;
9537
9551
  const activeMasterTypes = masterTypes.filter((mt) => mt.active === true);
9538
9552
  const lookupSourceGroup = createElement("div", { className: "mb-4" });
9539
- lookupSourceGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source" }));
9553
+ lookupSourceGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source" }));
9540
9554
  const lookupSourceSelect = createElement("select", {
9541
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9555
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9542
9556
  value: selectedField.lookupSource || "",
9543
9557
  onchange: (e) => {
9544
9558
  const lookupSource = e.target.value;
@@ -9572,9 +9586,9 @@ var FormBuilder = class {
9572
9586
  body.appendChild(lookupSourceGroup);
9573
9587
  }
9574
9588
  const lookupValueFieldGroup = createElement("div", { className: "mb-4" });
9575
- lookupValueFieldGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Value Field" }));
9589
+ lookupValueFieldGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Value Field" }));
9576
9590
  const lookupValueFieldSelect = createElement("select", {
9577
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9591
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9578
9592
  value: selectedField.lookupValueField || "",
9579
9593
  disabled: !selectedField.lookupSource,
9580
9594
  onchange: (e) => {
@@ -9597,9 +9611,9 @@ var FormBuilder = class {
9597
9611
  lookupValueFieldGroup.appendChild(lookupValueFieldSelect);
9598
9612
  body.appendChild(lookupValueFieldGroup);
9599
9613
  const lookupLabelFieldGroup = createElement("div", { className: "mb-4" });
9600
- lookupLabelFieldGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Label Field" }));
9614
+ lookupLabelFieldGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Label Field" }));
9601
9615
  const lookupLabelFieldSelect = createElement("select", {
9602
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9616
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9603
9617
  value: selectedField.lookupLabelField || "",
9604
9618
  disabled: !selectedField.lookupSource,
9605
9619
  onchange: (e) => {
@@ -9763,10 +9777,10 @@ var FormBuilder = class {
9763
9777
  const validationElements = [];
9764
9778
  if (["text", "textarea", "email", "password"].includes(selectedField.type)) {
9765
9779
  const minLenGroup = createElement("div", { className: "mb-3" });
9766
- minLenGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Min Length" }));
9780
+ minLenGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Min Length" }));
9767
9781
  minLenGroup.appendChild(createElement("input", {
9768
9782
  type: "number",
9769
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9783
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9770
9784
  value: getRuleValue("minLength") || "",
9771
9785
  placeholder: "e.g. 3",
9772
9786
  onchange: (e) => {
@@ -9776,10 +9790,10 @@ var FormBuilder = class {
9776
9790
  }));
9777
9791
  validationElements.push(minLenGroup);
9778
9792
  const maxLenGroup = createElement("div", { className: "mb-3" });
9779
- maxLenGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Max Length" }));
9793
+ maxLenGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Max Length" }));
9780
9794
  maxLenGroup.appendChild(createElement("input", {
9781
9795
  type: "number",
9782
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9796
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9783
9797
  value: getRuleValue("maxLength") || "",
9784
9798
  placeholder: "e.g. 100",
9785
9799
  onchange: (e) => {
@@ -9789,7 +9803,7 @@ var FormBuilder = class {
9789
9803
  }));
9790
9804
  validationElements.push(maxLenGroup);
9791
9805
  const regexGroup = createElement("div", { className: "mb-3" });
9792
- regexGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Regex Pattern" }));
9806
+ regexGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Regex Pattern" }));
9793
9807
  const updateExamples = (examplesList2, regex, preset) => {
9794
9808
  examplesList2.innerHTML = "";
9795
9809
  let testCases = [];
@@ -9855,7 +9869,7 @@ var FormBuilder = class {
9855
9869
  const presetGroup = createElement("div", { className: "mb-2" });
9856
9870
  presetGroup.appendChild(createElement("label", { className: "block text-xs font-medium text-gray-600 dark:text-gray-400 mb-1", text: "Regex Presets (Optional)" }));
9857
9871
  const presetSelect = createElement("select", {
9858
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent text-sm",
9872
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent text-sm",
9859
9873
  value: selectedPresetId,
9860
9874
  onchange: (e) => {
9861
9875
  const presetId = e.target.value;
@@ -9895,7 +9909,7 @@ var FormBuilder = class {
9895
9909
  }
9896
9910
  regexInput = createElement("input", {
9897
9911
  type: "text",
9898
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9912
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9899
9913
  value: currentRegex,
9900
9914
  placeholder: selectedField.type === "email" ? "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$" : "e.g. ^[A-Z]+$",
9901
9915
  "data-focus-id": `field-regex-${selectedField.id}`,
@@ -9948,10 +9962,10 @@ var FormBuilder = class {
9948
9962
  }
9949
9963
  if (selectedField.type === "checkbox") {
9950
9964
  const minSelectedGroup = createElement("div", { className: "mb-3" });
9951
- minSelectedGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Min Selected" }));
9965
+ minSelectedGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Min Selected" }));
9952
9966
  minSelectedGroup.appendChild(createElement("input", {
9953
9967
  type: "number",
9954
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9968
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9955
9969
  value: getRuleValue("minSelected"),
9956
9970
  placeholder: "e.g. 1",
9957
9971
  min: "0",
@@ -9962,10 +9976,10 @@ var FormBuilder = class {
9962
9976
  }));
9963
9977
  validationElements.push(minSelectedGroup);
9964
9978
  const maxSelectedGroup = createElement("div", { className: "mb-3" });
9965
- maxSelectedGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Max Selected" }));
9979
+ maxSelectedGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Max Selected" }));
9966
9980
  maxSelectedGroup.appendChild(createElement("input", {
9967
9981
  type: "number",
9968
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9982
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9969
9983
  value: getRuleValue("maxSelected"),
9970
9984
  placeholder: "e.g. 2",
9971
9985
  min: "1",
@@ -9978,10 +9992,10 @@ var FormBuilder = class {
9978
9992
  }
9979
9993
  if (selectedField.type === "date") {
9980
9994
  const minDateGroup = createElement("div", { className: "mb-3" });
9981
- minDateGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Minimum Date" }));
9995
+ minDateGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Minimum Date" }));
9982
9996
  minDateGroup.appendChild(createElement("input", {
9983
9997
  type: "date",
9984
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9998
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9985
9999
  value: validationObj.minDate || "",
9986
10000
  onchange: (e) => {
9987
10001
  const val = e.target.value;
@@ -9990,10 +10004,10 @@ var FormBuilder = class {
9990
10004
  }));
9991
10005
  validationElements.push(minDateGroup);
9992
10006
  const maxDateGroup = createElement("div", { className: "mb-3" });
9993
- maxDateGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Maximum Date" }));
10007
+ maxDateGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Maximum Date" }));
9994
10008
  maxDateGroup.appendChild(createElement("input", {
9995
10009
  type: "date",
9996
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
10010
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9997
10011
  value: validationObj.maxDate || "",
9998
10012
  onchange: (e) => {
9999
10013
  const val = e.target.value;
@@ -10032,9 +10046,9 @@ var FormBuilder = class {
10032
10046
  state2.updateField(selectedField.id, updatePayload);
10033
10047
  };
10034
10048
  const paddingGroup = createElement("div", { className: "mb-3" });
10035
- paddingGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Padding" }));
10049
+ paddingGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Padding" }));
10036
10050
  const paddingSelect = createElement("select", {
10037
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-white dark:bg-gray-800 text-sm",
10051
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-white dark:bg-gray-800 text-sm",
10038
10052
  onchange: (e) => {
10039
10053
  updateStyleProp("padding", e.target.value);
10040
10054
  }
@@ -10053,7 +10067,7 @@ var FormBuilder = class {
10053
10067
  paddingGroup.appendChild(paddingSelect);
10054
10068
  body.appendChild(paddingGroup);
10055
10069
  const bgColorGroup = createElement("div", { className: "mb-3" });
10056
- bgColorGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Background Color" }));
10070
+ bgColorGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Background Color" }));
10057
10071
  const bgColorRow = createElement("div", { className: "flex items-center gap-2" });
10058
10072
  const bgColorInput = createElement("input", {
10059
10073
  type: "color",
@@ -10078,7 +10092,7 @@ var FormBuilder = class {
10078
10092
  bgColorGroup.appendChild(bgColorRow);
10079
10093
  body.appendChild(bgColorGroup);
10080
10094
  const alignGroup = createElement("div", { className: "mb-3" });
10081
- alignGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Text Alignment" }));
10095
+ alignGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Text Alignment" }));
10082
10096
  const alignButtonsRow = createElement("div", { className: "flex gap-1" });
10083
10097
  const alignments = [
10084
10098
  { value: "left", icon: "AlignLeft" },
@@ -10102,10 +10116,10 @@ var FormBuilder = class {
10102
10116
  alignGroup.appendChild(alignButtonsRow);
10103
10117
  body.appendChild(alignGroup);
10104
10118
  const cssClassGroup = createElement("div", { className: "mb-3" });
10105
- cssClassGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Custom CSS Class" }));
10119
+ cssClassGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Custom CSS Class" }));
10106
10120
  cssClassGroup.appendChild(createElement("input", {
10107
10121
  type: "text",
10108
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent text-sm",
10122
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent text-sm",
10109
10123
  value: selectedField.css?.class || "",
10110
10124
  placeholder: "e.g. my-custom-class",
10111
10125
  "data-focus-id": `field-css-class-${selectedField.id}`,
@@ -10157,7 +10171,7 @@ var FormBuilder = class {
10157
10171
  initialCssStyleValue = preservedValue;
10158
10172
  }
10159
10173
  const cssStyleTextarea = createElement("textarea", {
10160
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent text-xs font-mono",
10174
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent text-xs font-mono",
10161
10175
  rows: 3,
10162
10176
  placeholder: '{"padding": "8px", "backgroundColor": "#f0f0f0"}',
10163
10177
  "data-focus-id": cssStyleId,