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.mjs CHANGED
@@ -8793,9 +8793,12 @@ var FormBuilder = class {
8793
8793
  fields: s.fields.map((f) => ({
8794
8794
  id: f.id,
8795
8795
  type: f.type,
8796
- label: f.label
8797
- // Exclude frequently changing text properties from hash
8798
- // to prevent re-renders on typing
8796
+ label: f.label,
8797
+ layout: f.layout,
8798
+ width: f.width,
8799
+ css: f.css
8800
+ // Include css so style changes (textAlign, backgroundColor, etc.) trigger re-render
8801
+ // Exclude frequently changing text (placeholder, etc.) to prevent re-renders on typing
8799
8802
  }))
8800
8803
  })),
8801
8804
  selectedField: state.selectedFieldId,
@@ -8912,13 +8915,13 @@ var FormBuilder = class {
8912
8915
  main.appendChild(previewContainer2);
8913
8916
  }
8914
8917
  } else {
8915
- 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" });
8918
+ 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" });
8916
8919
  toolboxWrapper.appendChild(this.renderToolbox());
8917
8920
  main.appendChild(toolboxWrapper);
8918
8921
  const canvasWrapper2 = createElement("div", { className: "form-builder-canvas flex-1 overflow-y-auto" });
8919
8922
  canvasWrapper2.appendChild(this.renderCanvas(state));
8920
8923
  main.appendChild(canvasWrapper2);
8921
- 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" });
8924
+ 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" });
8922
8925
  configWrapper.appendChild(this.renderConfigPanel(state, focusState));
8923
8926
  main.appendChild(configWrapper);
8924
8927
  }
@@ -8957,12 +8960,12 @@ var FormBuilder = class {
8957
8960
  }
8958
8961
  }
8959
8962
  renderToolbar(state) {
8960
- 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" });
8963
+ 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" });
8961
8964
  const left = createElement("div", { className: "flex items-center " });
8962
8965
  left.appendChild(createElement("h1", { className: "text-xl font-semibold mb-2 text-primary hidden mr-4", text: "" }));
8963
8966
  if (state.existingForms && state.existingForms.length > 0) {
8964
8967
  const formSelect = createElement("select", {
8965
- className: "px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent text-sm mr-2",
8968
+ className: "px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent text-sm mr-2",
8966
8969
  onchange: (e) => {
8967
8970
  const formId = e.target.value;
8968
8971
  if (formId) {
@@ -9027,7 +9030,7 @@ var FormBuilder = class {
9027
9030
  }, [getIcon("Cog", 20)]);
9028
9031
  right.appendChild(settingsBtn);
9029
9032
  const clearBtn = createElement("button", {
9030
- className: "flex items-center px-3 py-2 text-sm font-medium text-red-600 bg-red-500 text-white rounded-md transition-colors",
9033
+ className: "flex items-center px-3 py-2 text-sm font-medium text-red-600 bg-[#f7a1a14d] text-red-500 rounded-md transition-colors",
9031
9034
  onclick: () => {
9032
9035
  if (confirm("Are you sure?")) {
9033
9036
  formStore.getState().setSchema({ id: "new", title: "New Form", formName: "newForm", sections: [] });
@@ -9035,7 +9038,7 @@ var FormBuilder = class {
9035
9038
  }
9036
9039
  }, [getIcon("Trash2", 16), createElement("span", { className: "", title: "Clear" })]);
9037
9040
  const previewBtn = createElement("button", {
9038
- 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]"}`,
9041
+ 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]"}`,
9039
9042
  onclick: (e) => {
9040
9043
  e.preventDefault();
9041
9044
  e.stopPropagation();
@@ -9044,7 +9047,7 @@ var FormBuilder = class {
9044
9047
  title: state.isPreviewMode ? "Exit Preview" : "Preview Form"
9045
9048
  }, [getIcon(state.isPreviewMode ? "X" : "Eye", 16)]);
9046
9049
  const saveBtn = createElement("button", {
9047
- className: "flex items-center px-3 py-2 text-sm font-medium text-white bg-[#019FA2] rounded-md shadow-sm transition-colors",
9050
+ className: "flex items-center px-3 py-2 text-sm font-medium text-[#635bff] bg-[#e7e7ff] rounded-md shadow-sm transition-colors",
9048
9051
  onclick: () => {
9049
9052
  const schema = formStore.getState().schema;
9050
9053
  console.log("[Form Builder] Schema being sent to app:", JSON.stringify(schema, null, 2));
@@ -9052,7 +9055,7 @@ var FormBuilder = class {
9052
9055
  this.options.onSave(schema);
9053
9056
  }
9054
9057
  }
9055
- }, [getIcon("Save", 16), createElement("span", { className: "", text: "" })]);
9058
+ }, [createElement("span", { className: "", text: "Save" })]);
9056
9059
  right.appendChild(clearBtn);
9057
9060
  right.appendChild(previewBtn);
9058
9061
  right.appendChild(saveBtn);
@@ -9060,24 +9063,29 @@ var FormBuilder = class {
9060
9063
  return toolbar;
9061
9064
  }
9062
9065
  renderToolbox() {
9063
- const toolbox = createElement("div", { className: "bg-[#847dff1a] dark:bg-gray-900 flex flex-col h-full" });
9064
- const tabs = createElement("div", { className: "flex border-b border-gray-200 dark:border-gray-800 p-1" });
9065
- const createTab = (id, label) => {
9066
+ const toolbox = createElement("div", { className: " dark:bg-gray-900 flex flex-col h-full" });
9067
+ const tabs = createElement("div", { className: "flex border-b border-gray-200 dark:border-gray-800 " });
9068
+ const createTab = (id, label, icon, tooltip) => {
9066
9069
  const isActive = this.activeTab === id;
9067
- return createElement("button", {
9068
- 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"}`,
9069
- text: label,
9070
+ const btn = createElement("button", {
9071
+ 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"}`,
9072
+ title: tooltip || label,
9073
+ "aria-label": tooltip || label,
9070
9074
  onclick: () => {
9071
9075
  this.activeTab = id;
9072
9076
  this.render();
9073
9077
  }
9074
- });
9078
+ }, [
9079
+ getIcon(icon || "ListBullet", 16),
9080
+ createElement("span", { className: "hidden sm:inline-block", text: label })
9081
+ ]);
9082
+ return btn;
9075
9083
  };
9076
- tabs.appendChild(createTab("fields", "Fields"));
9077
- tabs.appendChild(createTab("templates", "Templates"));
9078
- tabs.appendChild(createTab("import", "Import"));
9084
+ tabs.appendChild(createTab("fields", "", "ListBullet", "Field types"));
9085
+ tabs.appendChild(createTab("templates", "", "DocumentText", "Saved templates"));
9086
+ tabs.appendChild(createTab("import", "", "Upload", "Import sections"));
9079
9087
  toolbox.appendChild(tabs);
9080
- const content = createElement("div", { className: "flex-1 overflow-y-auto p-4 bg-white" });
9088
+ const content = createElement("div", { className: "flex-1 overflow-y-auto p-4 bg-[#e7e7ff]" });
9081
9089
  if (this.activeTab === "fields") {
9082
9090
  const list = createElement("div", { className: "grid grid-cols-2 gap-3", id: "toolbox-list" });
9083
9091
  FIELD_TYPES.forEach((field) => {
@@ -9159,7 +9167,7 @@ var FormBuilder = class {
9159
9167
  }
9160
9168
  renderCanvas(state) {
9161
9169
  const canvas = createElement("div", {
9162
- className: "flex-1 dark:bg-gray-950 p-4 md:p-8 overflow-y-auto",
9170
+ className: "flex-1 dark:bg-gray-950 p-4 md:p-4 overflow-y-auto",
9163
9171
  onclick: (e) => {
9164
9172
  if (e.target === canvas || e.target === canvas.firstElementChild) {
9165
9173
  formStore.getState().selectField(null);
@@ -9180,7 +9188,7 @@ var FormBuilder = class {
9180
9188
  const sectionList = new SectionList(state.schema, state.selectedFieldId);
9181
9189
  inner.appendChild(sectionList.getElement());
9182
9190
  const addSectionBtn = createElement("button", {
9183
- 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",
9191
+ 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",
9184
9192
  onclick: () => formStore.getState().addSection()
9185
9193
  }, [getIcon("Plus", 20), createElement("span", { className: "ml-2", text: "Add Section" })]);
9186
9194
  inner.appendChild(addSectionBtn);
@@ -9190,7 +9198,7 @@ var FormBuilder = class {
9190
9198
  // Helper method to create a modern checkbox field with better UX
9191
9199
  createCheckboxField(label, checked, onChange, id) {
9192
9200
  const uniqueId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
9193
- 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" });
9201
+ 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" });
9194
9202
  const checkbox = createElement("input", {
9195
9203
  type: "checkbox",
9196
9204
  id: uniqueId,
@@ -9227,11 +9235,11 @@ var FormBuilder = class {
9227
9235
  onclick: () => formStore.getState().selectField(null)
9228
9236
  }, [getIcon("X", 20)]));
9229
9237
  panel.appendChild(header);
9230
- const body = createElement("div", { className: "flex-1 overflow-y-auto p-4 space-y-6", id: "config-panel-body" });
9238
+ const body = createElement("div", { className: "flex-1 overflow-y-auto p-4 px-2 space-y-3", id: "config-panel-body" });
9231
9239
  const labelGroup = createElement("div");
9232
- labelGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Label" }));
9240
+ labelGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Label" }));
9233
9241
  labelGroup.appendChild(createElement("input", {
9234
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9242
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9235
9243
  value: selectedField.label,
9236
9244
  "data-focus-id": `field-label-${selectedField.id}`,
9237
9245
  oninput: (e) => {
@@ -9240,9 +9248,9 @@ var FormBuilder = class {
9240
9248
  }));
9241
9249
  body.appendChild(labelGroup);
9242
9250
  const placeholderGroup = createElement("div");
9243
- placeholderGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Placeholder" }));
9251
+ placeholderGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Placeholder" }));
9244
9252
  placeholderGroup.appendChild(createElement("input", {
9245
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9253
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9246
9254
  value: selectedField.placeholder || "",
9247
9255
  "data-focus-id": `field-placeholder-${selectedField.id}`,
9248
9256
  oninput: (e) => {
@@ -9266,18 +9274,24 @@ var FormBuilder = class {
9266
9274
  layoutLabelRow.appendChild(spanValueDisplay);
9267
9275
  layoutGroup.appendChild(layoutLabelRow);
9268
9276
  const spanButtonsContainer = createElement("div", { className: "grid grid-cols-6 gap-2 mt-2" });
9277
+ const fieldId = selectedField.id;
9269
9278
  for (let span = 1; span <= 12; span++) {
9270
9279
  const isActive = currentSpan === span;
9271
9280
  const spanBtn = createElement("button", {
9272
9281
  type: "button",
9273
- 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"}`,
9282
+ 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"}`,
9274
9283
  text: `${span}`,
9275
- title: `${span} column${span > 1 ? "s" : ""} (${Math.round(span / 12 * 100)}%)`,
9276
- onclick: () => {
9277
- const layout = selectedField.layout || { row: 0, column: 0 };
9278
- formStore.getState().updateField(selectedField.id, {
9284
+ title: `${span} column${span > 1 ? "s" : ""} (${Math.round(span / 12 * 100)}%)`
9285
+ });
9286
+ spanBtn.addEventListener("click", (e) => {
9287
+ e.preventDefault();
9288
+ e.stopPropagation();
9289
+ const state2 = formStore.getState();
9290
+ const field = state2.schema.sections.flatMap((s) => s.fields).find((f) => f.id === fieldId);
9291
+ if (field) {
9292
+ const layout = field.layout || { row: 0, column: 0 };
9293
+ state2.updateField(fieldId, {
9279
9294
  layout: { ...layout, span },
9280
- // Also update width for backward compatibility
9281
9295
  width: Math.round(span / 12 * 100)
9282
9296
  });
9283
9297
  }
@@ -9361,9 +9375,9 @@ var FormBuilder = class {
9361
9375
  };
9362
9376
  if (activeMasterTypes.length > 0) {
9363
9377
  const groupNameGroup = createElement("div", { className: "mb-4" });
9364
- groupNameGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Master List" }));
9378
+ groupNameGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Master List" }));
9365
9379
  const groupNameSelect = createElement("select", {
9366
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9380
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9367
9381
  onchange: (e) => {
9368
9382
  const selectedEnumName = e.target.value;
9369
9383
  if (selectedEnumName) {
@@ -9449,9 +9463,9 @@ var FormBuilder = class {
9449
9463
  const optionSourceHeader = createElement("h3", { className: "text-xs font-semibold text-gray-500 uppercase tracking-wider mb-3 mt-6", text: "Option Source" });
9450
9464
  body.appendChild(optionSourceHeader);
9451
9465
  const optionSourceGroup = createElement("div", { className: "mb-4" });
9452
- optionSourceGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Source Type" }));
9466
+ optionSourceGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Source Type" }));
9453
9467
  const optionSourceSelect = createElement("select", {
9454
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9468
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9455
9469
  value: selectedField.optionSource || "STATIC",
9456
9470
  onchange: (e) => {
9457
9471
  const source = e.target.value;
@@ -9476,9 +9490,9 @@ var FormBuilder = class {
9476
9490
  body.appendChild(optionSourceGroup);
9477
9491
  if (selectedField.type === "select" && selectedField.optionSource === "LOOKUP") {
9478
9492
  const lookupSourceTypeGroup = createElement("div", { className: "mb-4" });
9479
- lookupSourceTypeGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source Type" }));
9493
+ lookupSourceTypeGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source Type" }));
9480
9494
  const lookupSourceTypeSelect = createElement("select", {
9481
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9495
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9482
9496
  value: selectedField.lookupSourceType || "MODULE",
9483
9497
  onchange: (e) => {
9484
9498
  const lookupSourceType = e.target.value;
@@ -9497,9 +9511,9 @@ var FormBuilder = class {
9497
9511
  if (selectedField.lookupSourceType === "MODULE") {
9498
9512
  const moduleList = this.options.moduleList || [];
9499
9513
  const lookupSourceGroup = createElement("div", { className: "mb-4" });
9500
- lookupSourceGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source" }));
9514
+ lookupSourceGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source" }));
9501
9515
  const lookupSourceSelect = createElement("select", {
9502
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9516
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9503
9517
  value: selectedField.lookupSource || "",
9504
9518
  onchange: (e) => {
9505
9519
  const lookupSource = e.target.value;
@@ -9534,9 +9548,9 @@ var FormBuilder = class {
9534
9548
  const masterTypes = formStore.getState().masterTypes;
9535
9549
  const activeMasterTypes = masterTypes.filter((mt) => mt.active === true);
9536
9550
  const lookupSourceGroup = createElement("div", { className: "mb-4" });
9537
- lookupSourceGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source" }));
9551
+ lookupSourceGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source" }));
9538
9552
  const lookupSourceSelect = createElement("select", {
9539
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9553
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9540
9554
  value: selectedField.lookupSource || "",
9541
9555
  onchange: (e) => {
9542
9556
  const lookupSource = e.target.value;
@@ -9570,9 +9584,9 @@ var FormBuilder = class {
9570
9584
  body.appendChild(lookupSourceGroup);
9571
9585
  }
9572
9586
  const lookupValueFieldGroup = createElement("div", { className: "mb-4" });
9573
- lookupValueFieldGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Value Field" }));
9587
+ lookupValueFieldGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Value Field" }));
9574
9588
  const lookupValueFieldSelect = createElement("select", {
9575
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9589
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9576
9590
  value: selectedField.lookupValueField || "",
9577
9591
  disabled: !selectedField.lookupSource,
9578
9592
  onchange: (e) => {
@@ -9595,9 +9609,9 @@ var FormBuilder = class {
9595
9609
  lookupValueFieldGroup.appendChild(lookupValueFieldSelect);
9596
9610
  body.appendChild(lookupValueFieldGroup);
9597
9611
  const lookupLabelFieldGroup = createElement("div", { className: "mb-4" });
9598
- lookupLabelFieldGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Label Field" }));
9612
+ lookupLabelFieldGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Label Field" }));
9599
9613
  const lookupLabelFieldSelect = createElement("select", {
9600
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9614
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9601
9615
  value: selectedField.lookupLabelField || "",
9602
9616
  disabled: !selectedField.lookupSource,
9603
9617
  onchange: (e) => {
@@ -9761,10 +9775,10 @@ var FormBuilder = class {
9761
9775
  const validationElements = [];
9762
9776
  if (["text", "textarea", "email", "password"].includes(selectedField.type)) {
9763
9777
  const minLenGroup = createElement("div", { className: "mb-3" });
9764
- minLenGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Min Length" }));
9778
+ minLenGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Min Length" }));
9765
9779
  minLenGroup.appendChild(createElement("input", {
9766
9780
  type: "number",
9767
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9781
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9768
9782
  value: getRuleValue("minLength") || "",
9769
9783
  placeholder: "e.g. 3",
9770
9784
  onchange: (e) => {
@@ -9774,10 +9788,10 @@ var FormBuilder = class {
9774
9788
  }));
9775
9789
  validationElements.push(minLenGroup);
9776
9790
  const maxLenGroup = createElement("div", { className: "mb-3" });
9777
- maxLenGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Max Length" }));
9791
+ maxLenGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Max Length" }));
9778
9792
  maxLenGroup.appendChild(createElement("input", {
9779
9793
  type: "number",
9780
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9794
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9781
9795
  value: getRuleValue("maxLength") || "",
9782
9796
  placeholder: "e.g. 100",
9783
9797
  onchange: (e) => {
@@ -9787,7 +9801,7 @@ var FormBuilder = class {
9787
9801
  }));
9788
9802
  validationElements.push(maxLenGroup);
9789
9803
  const regexGroup = createElement("div", { className: "mb-3" });
9790
- regexGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Regex Pattern" }));
9804
+ regexGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Regex Pattern" }));
9791
9805
  const updateExamples = (examplesList2, regex, preset) => {
9792
9806
  examplesList2.innerHTML = "";
9793
9807
  let testCases = [];
@@ -9853,7 +9867,7 @@ var FormBuilder = class {
9853
9867
  const presetGroup = createElement("div", { className: "mb-2" });
9854
9868
  presetGroup.appendChild(createElement("label", { className: "block text-xs font-medium text-gray-600 dark:text-gray-400 mb-1", text: "Regex Presets (Optional)" }));
9855
9869
  const presetSelect = createElement("select", {
9856
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent text-sm",
9870
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent text-sm",
9857
9871
  value: selectedPresetId,
9858
9872
  onchange: (e) => {
9859
9873
  const presetId = e.target.value;
@@ -9893,7 +9907,7 @@ var FormBuilder = class {
9893
9907
  }
9894
9908
  regexInput = createElement("input", {
9895
9909
  type: "text",
9896
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9910
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9897
9911
  value: currentRegex,
9898
9912
  placeholder: selectedField.type === "email" ? "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$" : "e.g. ^[A-Z]+$",
9899
9913
  "data-focus-id": `field-regex-${selectedField.id}`,
@@ -9946,10 +9960,10 @@ var FormBuilder = class {
9946
9960
  }
9947
9961
  if (selectedField.type === "checkbox") {
9948
9962
  const minSelectedGroup = createElement("div", { className: "mb-3" });
9949
- minSelectedGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Min Selected" }));
9963
+ minSelectedGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Min Selected" }));
9950
9964
  minSelectedGroup.appendChild(createElement("input", {
9951
9965
  type: "number",
9952
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9966
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9953
9967
  value: getRuleValue("minSelected"),
9954
9968
  placeholder: "e.g. 1",
9955
9969
  min: "0",
@@ -9960,10 +9974,10 @@ var FormBuilder = class {
9960
9974
  }));
9961
9975
  validationElements.push(minSelectedGroup);
9962
9976
  const maxSelectedGroup = createElement("div", { className: "mb-3" });
9963
- maxSelectedGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Max Selected" }));
9977
+ maxSelectedGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Max Selected" }));
9964
9978
  maxSelectedGroup.appendChild(createElement("input", {
9965
9979
  type: "number",
9966
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9980
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9967
9981
  value: getRuleValue("maxSelected"),
9968
9982
  placeholder: "e.g. 2",
9969
9983
  min: "1",
@@ -9976,10 +9990,10 @@ var FormBuilder = class {
9976
9990
  }
9977
9991
  if (selectedField.type === "date") {
9978
9992
  const minDateGroup = createElement("div", { className: "mb-3" });
9979
- minDateGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Minimum Date" }));
9993
+ minDateGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Minimum Date" }));
9980
9994
  minDateGroup.appendChild(createElement("input", {
9981
9995
  type: "date",
9982
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
9996
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9983
9997
  value: validationObj.minDate || "",
9984
9998
  onchange: (e) => {
9985
9999
  const val = e.target.value;
@@ -9988,10 +10002,10 @@ var FormBuilder = class {
9988
10002
  }));
9989
10003
  validationElements.push(minDateGroup);
9990
10004
  const maxDateGroup = createElement("div", { className: "mb-3" });
9991
- maxDateGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Maximum Date" }));
10005
+ maxDateGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Maximum Date" }));
9992
10006
  maxDateGroup.appendChild(createElement("input", {
9993
10007
  type: "date",
9994
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent",
10008
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
9995
10009
  value: validationObj.maxDate || "",
9996
10010
  onchange: (e) => {
9997
10011
  const val = e.target.value;
@@ -10030,9 +10044,9 @@ var FormBuilder = class {
10030
10044
  state2.updateField(selectedField.id, updatePayload);
10031
10045
  };
10032
10046
  const paddingGroup = createElement("div", { className: "mb-3" });
10033
- paddingGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Padding" }));
10047
+ paddingGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Padding" }));
10034
10048
  const paddingSelect = createElement("select", {
10035
- 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",
10049
+ 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",
10036
10050
  onchange: (e) => {
10037
10051
  updateStyleProp("padding", e.target.value);
10038
10052
  }
@@ -10051,7 +10065,7 @@ var FormBuilder = class {
10051
10065
  paddingGroup.appendChild(paddingSelect);
10052
10066
  body.appendChild(paddingGroup);
10053
10067
  const bgColorGroup = createElement("div", { className: "mb-3" });
10054
- bgColorGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Background Color" }));
10068
+ bgColorGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Background Color" }));
10055
10069
  const bgColorRow = createElement("div", { className: "flex items-center gap-2" });
10056
10070
  const bgColorInput = createElement("input", {
10057
10071
  type: "color",
@@ -10076,7 +10090,7 @@ var FormBuilder = class {
10076
10090
  bgColorGroup.appendChild(bgColorRow);
10077
10091
  body.appendChild(bgColorGroup);
10078
10092
  const alignGroup = createElement("div", { className: "mb-3" });
10079
- alignGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Text Alignment" }));
10093
+ alignGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Text Alignment" }));
10080
10094
  const alignButtonsRow = createElement("div", { className: "flex gap-1" });
10081
10095
  const alignments = [
10082
10096
  { value: "left", icon: "AlignLeft" },
@@ -10100,10 +10114,10 @@ var FormBuilder = class {
10100
10114
  alignGroup.appendChild(alignButtonsRow);
10101
10115
  body.appendChild(alignGroup);
10102
10116
  const cssClassGroup = createElement("div", { className: "mb-3" });
10103
- cssClassGroup.appendChild(createElement("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", text: "Custom CSS Class" }));
10117
+ cssClassGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Custom CSS Class" }));
10104
10118
  cssClassGroup.appendChild(createElement("input", {
10105
10119
  type: "text",
10106
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent text-sm",
10120
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent text-sm",
10107
10121
  value: selectedField.css?.class || "",
10108
10122
  placeholder: "e.g. my-custom-class",
10109
10123
  "data-focus-id": `field-css-class-${selectedField.id}`,
@@ -10155,7 +10169,7 @@ var FormBuilder = class {
10155
10169
  initialCssStyleValue = preservedValue;
10156
10170
  }
10157
10171
  const cssStyleTextarea = createElement("textarea", {
10158
- className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-transparent text-xs font-mono",
10172
+ className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent text-xs font-mono",
10159
10173
  rows: 3,
10160
10174
  placeholder: '{"padding": "8px", "backgroundColor": "#f0f0f0"}',
10161
10175
  "data-focus-id": cssStyleId,