form-builder-pro 0.0.3 → 0.0.5

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
@@ -4053,6 +4053,7 @@ var NEVER = INVALID;
4053
4053
  var FormSchemaValidation = external_exports.object({
4054
4054
  id: external_exports.string(),
4055
4055
  title: external_exports.string(),
4056
+ formName: external_exports.string(),
4056
4057
  sections: external_exports.array(external_exports.object({
4057
4058
  id: external_exports.string(),
4058
4059
  title: external_exports.string(),
@@ -4127,6 +4128,7 @@ var DEFAULT_FIELD_CONFIG = {
4127
4128
  var INITIAL_SCHEMA = {
4128
4129
  id: "form_1",
4129
4130
  title: "My New Form",
4131
+ formName: "myNewForm",
4130
4132
  sections: [
4131
4133
  {
4132
4134
  id: generateId(),
@@ -25181,7 +25183,7 @@ var FormBuilder = class {
25181
25183
  }
25182
25184
  }
25183
25185
  this.container.innerHTML = "";
25184
- const wrapper = createElement("div", { className: "flex flex-col h-screen bg-gray-100 dark:bg-gray-950" });
25186
+ const wrapper = createElement("div", { className: "flex flex-col h-screen " });
25185
25187
  wrapper.appendChild(this.renderToolbar(state));
25186
25188
  const main = createElement("div", { className: "flex flex-1 overflow-hidden" });
25187
25189
  if (state.isPreviewMode) {
@@ -25216,7 +25218,7 @@ var FormBuilder = class {
25216
25218
  renderToolbar(state) {
25217
25219
  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" });
25218
25220
  const left = createElement("div", { className: "flex items-center space-x-2" });
25219
- left.appendChild(createElement("h1", { className: "text-xl font-bold bg-gradient-to-r from-blue-600 to-indigo-600 bg-clip-text text-transparent mr-4", text: "FormBuilder Pro" }));
25221
+ left.appendChild(createElement("h1", { className: "text-xl font-semibold mb-2 text-primary mr-4", text: "FormBuilder Pro" }));
25220
25222
  const undoBtn = createElement("button", {
25221
25223
  className: "p-2 rounded hover:bg-gray-100 dark:hover:bg-gray-800 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",
25222
25224
  title: "Undo",
@@ -25237,7 +25239,7 @@ var FormBuilder = class {
25237
25239
  className: "flex items-center px-3 py-2 text-sm font-medium text-red-600 hover:bg-red-50 rounded-md transition-colors",
25238
25240
  onclick: () => {
25239
25241
  if (confirm("Are you sure?")) {
25240
- formStore.getState().setSchema({ id: "new", title: "New Form", sections: [] });
25242
+ formStore.getState().setSchema({ id: "new", title: "New Form", formName: "newForm", sections: [] });
25241
25243
  }
25242
25244
  }
25243
25245
  }, [getIcon("Trash2", 16), createElement("span", { className: "ml-2", text: "Clear" })]);
@@ -25246,7 +25248,7 @@ var FormBuilder = class {
25246
25248
  onclick: () => formStore.getState().togglePreview()
25247
25249
  }, [getIcon("Eye", 16), createElement("span", { className: "ml-2", text: state.isPreviewMode ? "Edit" : "Preview" })]);
25248
25250
  const saveBtn = createElement("button", {
25249
- className: "flex items-center px-4 py-2 text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 rounded-md shadow-sm transition-colors",
25251
+ className: "flex items-center px-4 py-2 text-sm font-medium text-white bg-[#019FA2] hover:bg-[#3B497E] rounded-md shadow-sm transition-colors",
25250
25252
  onclick: () => {
25251
25253
  const schema = formStore.getState().schema;
25252
25254
  console.log("Schema saved:", schema);
@@ -25262,16 +25264,16 @@ var FormBuilder = class {
25262
25264
  return toolbar;
25263
25265
  }
25264
25266
  renderToolbox() {
25265
- const toolbox = createElement("div", { className: "w-64 bg-gray-50 dark:bg-gray-900 border-r border-gray-200 dark:border-gray-800 p-4 overflow-y-auto h-full" });
25267
+ const toolbox = createElement("div", { className: "w-64 bg-white dark:bg-gray-900 border-r border-gray-200 dark:border-gray-800 p-4 overflow-y-auto h-full" });
25266
25268
  toolbox.appendChild(createElement("h2", { className: "text-xs font-semibold text-gray-500 uppercase tracking-wider mb-4", text: "Form Fields" }));
25267
- const list = createElement("div", { className: "space-y-1", id: "toolbox-list" });
25269
+ const list = createElement("div", { className: " grid grid-cols-2 gap-3", id: "toolbox-list" });
25268
25270
  FIELD_TYPES.forEach((field) => {
25269
25271
  const item = createElement("div", {
25270
- className: "flex items-center p-3 mb-2 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-md cursor-move hover:border-blue-500 hover:shadow-sm transition-all toolbox-item",
25272
+ className: "grid justify-center items-center p-3 bg-[#f2f3f7] dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-md cursor-move hover:border-secondary hover:shadow-sm transition-all toolbox-item mt-0",
25271
25273
  "data-type": field.type
25272
25274
  });
25273
- item.appendChild(createElement("span", { className: "mr-3 text-gray-500 dark:text-gray-400" }, [getIcon(field.icon, 16)]));
25274
- item.appendChild(createElement("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-200", text: field.label }));
25275
+ item.appendChild(createElement("span", { className: " text-gray-500 mb-1 dark:text-gray-400 inline-flex mx-auto bg-[#019FA2] text-white w-9 h-9 rounded-sm p-1 justify-center items-center" }, [getIcon(field.icon, 16)]));
25276
+ item.appendChild(createElement("span", { className: "text-xs font-semibold text-gray-700 dark:text-gray-200", text: field.label }));
25275
25277
  list.appendChild(item);
25276
25278
  });
25277
25279
  toolbox.appendChild(list);
@@ -25279,29 +25281,29 @@ var FormBuilder = class {
25279
25281
  }
25280
25282
  renderCanvas(state) {
25281
25283
  const canvas = createElement("div", {
25282
- className: "flex-1 bg-gray-100 dark:bg-gray-950 p-8 overflow-y-auto h-full",
25284
+ className: "flex-1 bg-white dark:bg-gray-950 p-8 overflow-y-auto h-full",
25283
25285
  onclick: (e) => {
25284
25286
  if (e.target === canvas || e.target === canvas.firstElementChild) {
25285
25287
  formStore.getState().selectField(null);
25286
25288
  }
25287
25289
  }
25288
25290
  });
25289
- const inner = createElement("div", { className: "max-w-3xl mx-auto" });
25290
- const titleInput = createElement("input", {
25291
- className: "text-3xl font-bold text-center bg-transparent border-none focus:outline-none focus:ring-0 w-full text-gray-900 dark:text-white mb-8",
25292
- value: state.schema.title,
25293
- placeholder: "Form Title",
25294
- "data-focus-id": "form-title",
25295
- oninput: (e) => formStore.getState().setSchema({ ...state.schema, title: e.target.value })
25291
+ const inner = createElement("div", { className: "mx-auto" });
25292
+ const formNameInput = createElement("input", {
25293
+ className: "text-lg border border-gray-200 dark:border-gray-700 rounded-md border-gray-200 p-2 bg-[#f2f3f7] focus:outline-none focus:ring-0 w-full text-gray-600 dark:text-gray-400 mb-8",
25294
+ value: state.schema.formName,
25295
+ placeholder: "formName (e.g., contactForm)",
25296
+ "data-focus-id": "form-name",
25297
+ oninput: (e) => formStore.getState().setSchema({ ...state.schema, formName: e.target.value })
25296
25298
  });
25297
- inner.appendChild(titleInput);
25299
+ inner.appendChild(formNameInput);
25298
25300
  const sectionsContainer = createElement("div", { className: "space-y-6 min-h-[200px]", id: "sections-list" });
25299
25301
  state.schema.sections.forEach((section) => {
25300
25302
  const sectionEl = createElement("div", {
25301
25303
  className: "mb-6 rounded-lg border bg-white dark:bg-gray-900 shadow-sm transition-all border-gray-200 dark:border-gray-800",
25302
25304
  "data-id": section.id
25303
25305
  });
25304
- const header = createElement("div", { className: "flex items-center justify-between p-4 border-b border-gray-100 dark:border-gray-800 bg-gray-50 dark:bg-gray-800/50 rounded-t-lg" });
25306
+ const header = createElement("div", { className: "flex items-center justify-between p-2 border-b border-gray-100 dark:border-gray-800 bg-gray-50 dark:bg-gray-800/50 rounded-t-lg" });
25305
25307
  const headerLeft = createElement("div", { className: "flex items-center flex-1" });
25306
25308
  headerLeft.appendChild(createElement("div", { className: "cursor-move mr-3 text-gray-400 hover:text-gray-600 section-handle" }, [getIcon("GripVertical", 20)]));
25307
25309
  headerLeft.appendChild(createElement("input", {
@@ -25312,7 +25314,7 @@ var FormBuilder = class {
25312
25314
  }));
25313
25315
  header.appendChild(headerLeft);
25314
25316
  header.appendChild(createElement("button", {
25315
- className: "text-gray-400 hover:text-red-500 transition-colors p-1",
25317
+ className: "text-gray-600 hover:text-red-500 transition-colors p-1",
25316
25318
  onclick: () => formStore.getState().removeSection(section.id)
25317
25319
  }, [getIcon("Trash2", 18)]));
25318
25320
  sectionEl.appendChild(header);