@opensite/ui 1.9.2 → 1.9.3
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/contact-dark.cjs +103 -87
- package/dist/contact-dark.js +103 -87
- package/dist/contact-faq.cjs +49 -35
- package/dist/contact-faq.js +49 -35
- package/dist/contact-photography.cjs +103 -87
- package/dist/contact-photography.js +103 -87
- package/dist/registry.cjs +147 -48
- package/dist/registry.js +147 -48
- package/package.json +1 -1
package/dist/contact-dark.cjs
CHANGED
|
@@ -773,77 +773,6 @@ function DynamicFormField({
|
|
|
773
773
|
}
|
|
774
774
|
);
|
|
775
775
|
}
|
|
776
|
-
|
|
777
|
-
// lib/form-field-types.ts
|
|
778
|
-
function generateInitialValues(fields) {
|
|
779
|
-
return fields.reduce(
|
|
780
|
-
(acc, field) => {
|
|
781
|
-
if (field.type === "checkbox") {
|
|
782
|
-
acc[field.name] = false;
|
|
783
|
-
} else if (field.type === "checkbox-group" || field.type === "multi-select") {
|
|
784
|
-
acc[field.name] = [];
|
|
785
|
-
} else if (field.type === "file") {
|
|
786
|
-
acc[field.name] = [];
|
|
787
|
-
} else if (field.type === "date-range") {
|
|
788
|
-
acc[field.name] = { start: null, end: null };
|
|
789
|
-
} else {
|
|
790
|
-
acc[field.name] = "";
|
|
791
|
-
}
|
|
792
|
-
return acc;
|
|
793
|
-
},
|
|
794
|
-
{}
|
|
795
|
-
);
|
|
796
|
-
}
|
|
797
|
-
function generateValidationSchema(fields) {
|
|
798
|
-
return fields.reduce(
|
|
799
|
-
(acc, field) => {
|
|
800
|
-
acc[field.name] = (value, allValues) => {
|
|
801
|
-
if (field.required) {
|
|
802
|
-
if (!value || typeof value === "string" && !value.trim()) {
|
|
803
|
-
return `${field.label} is required`;
|
|
804
|
-
}
|
|
805
|
-
}
|
|
806
|
-
if (field.type === "email" && value) {
|
|
807
|
-
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
|
|
808
|
-
return "Please enter a valid email address";
|
|
809
|
-
}
|
|
810
|
-
}
|
|
811
|
-
if (field.type === "url" && value) {
|
|
812
|
-
try {
|
|
813
|
-
new URL(value);
|
|
814
|
-
} catch {
|
|
815
|
-
return "Please enter a valid URL";
|
|
816
|
-
}
|
|
817
|
-
}
|
|
818
|
-
if (field.validator) {
|
|
819
|
-
return field.validator(value, allValues);
|
|
820
|
-
}
|
|
821
|
-
return void 0;
|
|
822
|
-
};
|
|
823
|
-
return acc;
|
|
824
|
-
},
|
|
825
|
-
{}
|
|
826
|
-
);
|
|
827
|
-
}
|
|
828
|
-
var columnSpanClasses = {
|
|
829
|
-
1: "col-span-12 md:col-span-1",
|
|
830
|
-
2: "col-span-12 md:col-span-2",
|
|
831
|
-
3: "col-span-12 md:col-span-3",
|
|
832
|
-
4: "col-span-12 md:col-span-4",
|
|
833
|
-
5: "col-span-12 md:col-span-5",
|
|
834
|
-
6: "col-span-12 md:col-span-6",
|
|
835
|
-
7: "col-span-12 md:col-span-7",
|
|
836
|
-
8: "col-span-12 md:col-span-8",
|
|
837
|
-
9: "col-span-12 md:col-span-9",
|
|
838
|
-
10: "col-span-12 md:col-span-10",
|
|
839
|
-
11: "col-span-12 md:col-span-11",
|
|
840
|
-
12: "col-span-12"
|
|
841
|
-
};
|
|
842
|
-
function getColumnSpanClass(span) {
|
|
843
|
-
if (!span || span === 12) return "col-span-12";
|
|
844
|
-
const clamped = Math.max(1, Math.min(span, 12));
|
|
845
|
-
return columnSpanClasses[clamped] || "col-span-12";
|
|
846
|
-
}
|
|
847
776
|
function useFileUpload(options) {
|
|
848
777
|
const [uploadTokens, setUploadTokens] = React.useState([]);
|
|
849
778
|
const [uploadProgress, setUploadProgress] = React.useState({});
|
|
@@ -908,6 +837,60 @@ function useFileUpload(options) {
|
|
|
908
837
|
resetUpload
|
|
909
838
|
};
|
|
910
839
|
}
|
|
840
|
+
|
|
841
|
+
// lib/form-field-types.ts
|
|
842
|
+
function generateInitialValues(fields) {
|
|
843
|
+
return fields.reduce(
|
|
844
|
+
(acc, field) => {
|
|
845
|
+
if (field.type === "checkbox") {
|
|
846
|
+
acc[field.name] = false;
|
|
847
|
+
} else if (field.type === "checkbox-group" || field.type === "multi-select") {
|
|
848
|
+
acc[field.name] = [];
|
|
849
|
+
} else if (field.type === "file") {
|
|
850
|
+
acc[field.name] = [];
|
|
851
|
+
} else if (field.type === "date-range") {
|
|
852
|
+
acc[field.name] = { start: null, end: null };
|
|
853
|
+
} else {
|
|
854
|
+
acc[field.name] = "";
|
|
855
|
+
}
|
|
856
|
+
return acc;
|
|
857
|
+
},
|
|
858
|
+
{}
|
|
859
|
+
);
|
|
860
|
+
}
|
|
861
|
+
function generateValidationSchema(fields) {
|
|
862
|
+
return fields.reduce(
|
|
863
|
+
(acc, field) => {
|
|
864
|
+
acc[field.name] = (value, allValues) => {
|
|
865
|
+
if (field.required) {
|
|
866
|
+
if (!value || typeof value === "string" && !value.trim()) {
|
|
867
|
+
return `${field.label} is required`;
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
if (field.type === "email" && value) {
|
|
871
|
+
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
|
|
872
|
+
return "Please enter a valid email address";
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
if (field.type === "url" && value) {
|
|
876
|
+
try {
|
|
877
|
+
new URL(value);
|
|
878
|
+
} catch {
|
|
879
|
+
return "Please enter a valid URL";
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
if (field.validator) {
|
|
883
|
+
return field.validator(value, allValues);
|
|
884
|
+
}
|
|
885
|
+
return void 0;
|
|
886
|
+
};
|
|
887
|
+
return acc;
|
|
888
|
+
},
|
|
889
|
+
{}
|
|
890
|
+
);
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
// lib/forms/use-contact-form.ts
|
|
911
894
|
function useContactForm(options) {
|
|
912
895
|
const {
|
|
913
896
|
formFields,
|
|
@@ -1730,23 +1713,56 @@ function ContactDark({
|
|
|
1730
1713
|
},
|
|
1731
1714
|
className: cn("space-y-6", formClassName),
|
|
1732
1715
|
children: [
|
|
1733
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1716
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: formFields.map((field, index) => {
|
|
1717
|
+
const prevField = index > 0 ? formFields[index - 1] : null;
|
|
1718
|
+
const shouldGroup = field.columnSpan && field.columnSpan <= 6 && prevField?.columnSpan && prevField.columnSpan <= 6 && prevField.columnSpan + field.columnSpan <= 12;
|
|
1719
|
+
if (shouldGroup && index > 0) {
|
|
1720
|
+
return null;
|
|
1721
|
+
}
|
|
1722
|
+
const nextField = index < formFields.length - 1 ? formFields[index + 1] : null;
|
|
1723
|
+
const groupWithNext = field.columnSpan && field.columnSpan <= 6 && nextField?.columnSpan && nextField.columnSpan <= 6 && field.columnSpan + nextField.columnSpan <= 12;
|
|
1724
|
+
if (groupWithNext && nextField) {
|
|
1725
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1726
|
+
"div",
|
|
1739
1727
|
{
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1728
|
+
className: "grid grid-cols-1 sm:grid-cols-2 gap-4",
|
|
1729
|
+
children: [
|
|
1730
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-[76px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1731
|
+
DynamicFormField,
|
|
1732
|
+
{
|
|
1733
|
+
field,
|
|
1734
|
+
uploadProgress,
|
|
1735
|
+
onFileUpload: uploadFiles,
|
|
1736
|
+
onFileRemove: removeFile,
|
|
1737
|
+
isUploading
|
|
1738
|
+
}
|
|
1739
|
+
) }),
|
|
1740
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-[76px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1741
|
+
DynamicFormField,
|
|
1742
|
+
{
|
|
1743
|
+
field: nextField,
|
|
1744
|
+
uploadProgress,
|
|
1745
|
+
onFileUpload: uploadFiles,
|
|
1746
|
+
onFileRemove: removeFile,
|
|
1747
|
+
isUploading
|
|
1748
|
+
}
|
|
1749
|
+
) })
|
|
1750
|
+
]
|
|
1751
|
+
},
|
|
1752
|
+
field.name
|
|
1753
|
+
);
|
|
1754
|
+
}
|
|
1755
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-[76px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1756
|
+
DynamicFormField,
|
|
1757
|
+
{
|
|
1758
|
+
field,
|
|
1759
|
+
uploadProgress,
|
|
1760
|
+
onFileUpload: uploadFiles,
|
|
1761
|
+
onFileRemove: removeFile,
|
|
1762
|
+
isUploading
|
|
1763
|
+
}
|
|
1764
|
+
) }, field.name);
|
|
1765
|
+
}) }),
|
|
1750
1766
|
actionsSlot || actions && actions.length > 0 ? actionsContent : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1751
1767
|
Pressable,
|
|
1752
1768
|
{
|
package/dist/contact-dark.js
CHANGED
|
@@ -752,77 +752,6 @@ function DynamicFormField({
|
|
|
752
752
|
}
|
|
753
753
|
);
|
|
754
754
|
}
|
|
755
|
-
|
|
756
|
-
// lib/form-field-types.ts
|
|
757
|
-
function generateInitialValues(fields) {
|
|
758
|
-
return fields.reduce(
|
|
759
|
-
(acc, field) => {
|
|
760
|
-
if (field.type === "checkbox") {
|
|
761
|
-
acc[field.name] = false;
|
|
762
|
-
} else if (field.type === "checkbox-group" || field.type === "multi-select") {
|
|
763
|
-
acc[field.name] = [];
|
|
764
|
-
} else if (field.type === "file") {
|
|
765
|
-
acc[field.name] = [];
|
|
766
|
-
} else if (field.type === "date-range") {
|
|
767
|
-
acc[field.name] = { start: null, end: null };
|
|
768
|
-
} else {
|
|
769
|
-
acc[field.name] = "";
|
|
770
|
-
}
|
|
771
|
-
return acc;
|
|
772
|
-
},
|
|
773
|
-
{}
|
|
774
|
-
);
|
|
775
|
-
}
|
|
776
|
-
function generateValidationSchema(fields) {
|
|
777
|
-
return fields.reduce(
|
|
778
|
-
(acc, field) => {
|
|
779
|
-
acc[field.name] = (value, allValues) => {
|
|
780
|
-
if (field.required) {
|
|
781
|
-
if (!value || typeof value === "string" && !value.trim()) {
|
|
782
|
-
return `${field.label} is required`;
|
|
783
|
-
}
|
|
784
|
-
}
|
|
785
|
-
if (field.type === "email" && value) {
|
|
786
|
-
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
|
|
787
|
-
return "Please enter a valid email address";
|
|
788
|
-
}
|
|
789
|
-
}
|
|
790
|
-
if (field.type === "url" && value) {
|
|
791
|
-
try {
|
|
792
|
-
new URL(value);
|
|
793
|
-
} catch {
|
|
794
|
-
return "Please enter a valid URL";
|
|
795
|
-
}
|
|
796
|
-
}
|
|
797
|
-
if (field.validator) {
|
|
798
|
-
return field.validator(value, allValues);
|
|
799
|
-
}
|
|
800
|
-
return void 0;
|
|
801
|
-
};
|
|
802
|
-
return acc;
|
|
803
|
-
},
|
|
804
|
-
{}
|
|
805
|
-
);
|
|
806
|
-
}
|
|
807
|
-
var columnSpanClasses = {
|
|
808
|
-
1: "col-span-12 md:col-span-1",
|
|
809
|
-
2: "col-span-12 md:col-span-2",
|
|
810
|
-
3: "col-span-12 md:col-span-3",
|
|
811
|
-
4: "col-span-12 md:col-span-4",
|
|
812
|
-
5: "col-span-12 md:col-span-5",
|
|
813
|
-
6: "col-span-12 md:col-span-6",
|
|
814
|
-
7: "col-span-12 md:col-span-7",
|
|
815
|
-
8: "col-span-12 md:col-span-8",
|
|
816
|
-
9: "col-span-12 md:col-span-9",
|
|
817
|
-
10: "col-span-12 md:col-span-10",
|
|
818
|
-
11: "col-span-12 md:col-span-11",
|
|
819
|
-
12: "col-span-12"
|
|
820
|
-
};
|
|
821
|
-
function getColumnSpanClass(span) {
|
|
822
|
-
if (!span || span === 12) return "col-span-12";
|
|
823
|
-
const clamped = Math.max(1, Math.min(span, 12));
|
|
824
|
-
return columnSpanClasses[clamped] || "col-span-12";
|
|
825
|
-
}
|
|
826
755
|
function useFileUpload(options) {
|
|
827
756
|
const [uploadTokens, setUploadTokens] = useState([]);
|
|
828
757
|
const [uploadProgress, setUploadProgress] = useState({});
|
|
@@ -887,6 +816,60 @@ function useFileUpload(options) {
|
|
|
887
816
|
resetUpload
|
|
888
817
|
};
|
|
889
818
|
}
|
|
819
|
+
|
|
820
|
+
// lib/form-field-types.ts
|
|
821
|
+
function generateInitialValues(fields) {
|
|
822
|
+
return fields.reduce(
|
|
823
|
+
(acc, field) => {
|
|
824
|
+
if (field.type === "checkbox") {
|
|
825
|
+
acc[field.name] = false;
|
|
826
|
+
} else if (field.type === "checkbox-group" || field.type === "multi-select") {
|
|
827
|
+
acc[field.name] = [];
|
|
828
|
+
} else if (field.type === "file") {
|
|
829
|
+
acc[field.name] = [];
|
|
830
|
+
} else if (field.type === "date-range") {
|
|
831
|
+
acc[field.name] = { start: null, end: null };
|
|
832
|
+
} else {
|
|
833
|
+
acc[field.name] = "";
|
|
834
|
+
}
|
|
835
|
+
return acc;
|
|
836
|
+
},
|
|
837
|
+
{}
|
|
838
|
+
);
|
|
839
|
+
}
|
|
840
|
+
function generateValidationSchema(fields) {
|
|
841
|
+
return fields.reduce(
|
|
842
|
+
(acc, field) => {
|
|
843
|
+
acc[field.name] = (value, allValues) => {
|
|
844
|
+
if (field.required) {
|
|
845
|
+
if (!value || typeof value === "string" && !value.trim()) {
|
|
846
|
+
return `${field.label} is required`;
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
if (field.type === "email" && value) {
|
|
850
|
+
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
|
|
851
|
+
return "Please enter a valid email address";
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
if (field.type === "url" && value) {
|
|
855
|
+
try {
|
|
856
|
+
new URL(value);
|
|
857
|
+
} catch {
|
|
858
|
+
return "Please enter a valid URL";
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
if (field.validator) {
|
|
862
|
+
return field.validator(value, allValues);
|
|
863
|
+
}
|
|
864
|
+
return void 0;
|
|
865
|
+
};
|
|
866
|
+
return acc;
|
|
867
|
+
},
|
|
868
|
+
{}
|
|
869
|
+
);
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
// lib/forms/use-contact-form.ts
|
|
890
873
|
function useContactForm(options) {
|
|
891
874
|
const {
|
|
892
875
|
formFields,
|
|
@@ -1709,23 +1692,56 @@ function ContactDark({
|
|
|
1709
1692
|
},
|
|
1710
1693
|
className: cn("space-y-6", formClassName),
|
|
1711
1694
|
children: [
|
|
1712
|
-
/* @__PURE__ */ jsx("div", { className: "
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1695
|
+
/* @__PURE__ */ jsx("div", { className: "space-y-4", children: formFields.map((field, index) => {
|
|
1696
|
+
const prevField = index > 0 ? formFields[index - 1] : null;
|
|
1697
|
+
const shouldGroup = field.columnSpan && field.columnSpan <= 6 && prevField?.columnSpan && prevField.columnSpan <= 6 && prevField.columnSpan + field.columnSpan <= 12;
|
|
1698
|
+
if (shouldGroup && index > 0) {
|
|
1699
|
+
return null;
|
|
1700
|
+
}
|
|
1701
|
+
const nextField = index < formFields.length - 1 ? formFields[index + 1] : null;
|
|
1702
|
+
const groupWithNext = field.columnSpan && field.columnSpan <= 6 && nextField?.columnSpan && nextField.columnSpan <= 6 && field.columnSpan + nextField.columnSpan <= 12;
|
|
1703
|
+
if (groupWithNext && nextField) {
|
|
1704
|
+
return /* @__PURE__ */ jsxs(
|
|
1705
|
+
"div",
|
|
1718
1706
|
{
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1707
|
+
className: "grid grid-cols-1 sm:grid-cols-2 gap-4",
|
|
1708
|
+
children: [
|
|
1709
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-[76px]", children: /* @__PURE__ */ jsx(
|
|
1710
|
+
DynamicFormField,
|
|
1711
|
+
{
|
|
1712
|
+
field,
|
|
1713
|
+
uploadProgress,
|
|
1714
|
+
onFileUpload: uploadFiles,
|
|
1715
|
+
onFileRemove: removeFile,
|
|
1716
|
+
isUploading
|
|
1717
|
+
}
|
|
1718
|
+
) }),
|
|
1719
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-[76px]", children: /* @__PURE__ */ jsx(
|
|
1720
|
+
DynamicFormField,
|
|
1721
|
+
{
|
|
1722
|
+
field: nextField,
|
|
1723
|
+
uploadProgress,
|
|
1724
|
+
onFileUpload: uploadFiles,
|
|
1725
|
+
onFileRemove: removeFile,
|
|
1726
|
+
isUploading
|
|
1727
|
+
}
|
|
1728
|
+
) })
|
|
1729
|
+
]
|
|
1730
|
+
},
|
|
1731
|
+
field.name
|
|
1732
|
+
);
|
|
1733
|
+
}
|
|
1734
|
+
return /* @__PURE__ */ jsx("div", { className: "min-h-[76px]", children: /* @__PURE__ */ jsx(
|
|
1735
|
+
DynamicFormField,
|
|
1736
|
+
{
|
|
1737
|
+
field,
|
|
1738
|
+
uploadProgress,
|
|
1739
|
+
onFileUpload: uploadFiles,
|
|
1740
|
+
onFileRemove: removeFile,
|
|
1741
|
+
isUploading
|
|
1742
|
+
}
|
|
1743
|
+
) }, field.name);
|
|
1744
|
+
}) }),
|
|
1729
1745
|
actionsSlot || actions && actions.length > 0 ? actionsContent : /* @__PURE__ */ jsxs(
|
|
1730
1746
|
Pressable,
|
|
1731
1747
|
{
|
package/dist/contact-faq.cjs
CHANGED
|
@@ -961,25 +961,6 @@ function generateValidationSchema(fields) {
|
|
|
961
961
|
{}
|
|
962
962
|
);
|
|
963
963
|
}
|
|
964
|
-
var columnSpanClasses = {
|
|
965
|
-
1: "col-span-12 md:col-span-1",
|
|
966
|
-
2: "col-span-12 md:col-span-2",
|
|
967
|
-
3: "col-span-12 md:col-span-3",
|
|
968
|
-
4: "col-span-12 md:col-span-4",
|
|
969
|
-
5: "col-span-12 md:col-span-5",
|
|
970
|
-
6: "col-span-12 md:col-span-6",
|
|
971
|
-
7: "col-span-12 md:col-span-7",
|
|
972
|
-
8: "col-span-12 md:col-span-8",
|
|
973
|
-
9: "col-span-12 md:col-span-9",
|
|
974
|
-
10: "col-span-12 md:col-span-10",
|
|
975
|
-
11: "col-span-12 md:col-span-11",
|
|
976
|
-
12: "col-span-12"
|
|
977
|
-
};
|
|
978
|
-
function getColumnSpanClass(span) {
|
|
979
|
-
if (!span || span === 12) return "col-span-12";
|
|
980
|
-
const clamped = Math.max(1, Math.min(span, 12));
|
|
981
|
-
return columnSpanClasses[clamped] || "col-span-12";
|
|
982
|
-
}
|
|
983
964
|
|
|
984
965
|
// lib/forms/use-contact-form.ts
|
|
985
966
|
function useContactForm(options) {
|
|
@@ -1816,23 +1797,56 @@ function ContactFaq({
|
|
|
1816
1797
|
},
|
|
1817
1798
|
className: cn("space-y-4", formClassName),
|
|
1818
1799
|
children: [
|
|
1819
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1800
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: formFields.map((field, index) => {
|
|
1801
|
+
const prevField = index > 0 ? formFields[index - 1] : null;
|
|
1802
|
+
const shouldGroup = field.columnSpan && field.columnSpan <= 6 && prevField?.columnSpan && prevField.columnSpan <= 6 && prevField.columnSpan + field.columnSpan <= 12;
|
|
1803
|
+
if (shouldGroup && index > 0) {
|
|
1804
|
+
return null;
|
|
1805
|
+
}
|
|
1806
|
+
const nextField = index < formFields.length - 1 ? formFields[index + 1] : null;
|
|
1807
|
+
const groupWithNext = field.columnSpan && field.columnSpan <= 6 && nextField?.columnSpan && nextField.columnSpan <= 6 && field.columnSpan + nextField.columnSpan <= 12;
|
|
1808
|
+
if (groupWithNext && nextField) {
|
|
1809
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1810
|
+
"div",
|
|
1825
1811
|
{
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1812
|
+
className: "grid grid-cols-1 sm:grid-cols-2 gap-4",
|
|
1813
|
+
children: [
|
|
1814
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-[76px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1815
|
+
DynamicFormField,
|
|
1816
|
+
{
|
|
1817
|
+
field,
|
|
1818
|
+
uploadProgress,
|
|
1819
|
+
onFileUpload: uploadFiles,
|
|
1820
|
+
onFileRemove: removeFile,
|
|
1821
|
+
isUploading
|
|
1822
|
+
}
|
|
1823
|
+
) }),
|
|
1824
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-[76px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1825
|
+
DynamicFormField,
|
|
1826
|
+
{
|
|
1827
|
+
field: nextField,
|
|
1828
|
+
uploadProgress,
|
|
1829
|
+
onFileUpload: uploadFiles,
|
|
1830
|
+
onFileRemove: removeFile,
|
|
1831
|
+
isUploading
|
|
1832
|
+
}
|
|
1833
|
+
) })
|
|
1834
|
+
]
|
|
1835
|
+
},
|
|
1836
|
+
field.name
|
|
1837
|
+
);
|
|
1838
|
+
}
|
|
1839
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-[76px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1840
|
+
DynamicFormField,
|
|
1841
|
+
{
|
|
1842
|
+
field,
|
|
1843
|
+
uploadProgress,
|
|
1844
|
+
onFileUpload: uploadFiles,
|
|
1845
|
+
onFileRemove: removeFile,
|
|
1846
|
+
isUploading
|
|
1847
|
+
}
|
|
1848
|
+
) }, field.name);
|
|
1849
|
+
}) }),
|
|
1836
1850
|
actionsSlot || actions && actions.length > 0 ? actionsContent : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1837
1851
|
Pressable,
|
|
1838
1852
|
{
|
package/dist/contact-faq.js
CHANGED
|
@@ -939,25 +939,6 @@ function generateValidationSchema(fields) {
|
|
|
939
939
|
{}
|
|
940
940
|
);
|
|
941
941
|
}
|
|
942
|
-
var columnSpanClasses = {
|
|
943
|
-
1: "col-span-12 md:col-span-1",
|
|
944
|
-
2: "col-span-12 md:col-span-2",
|
|
945
|
-
3: "col-span-12 md:col-span-3",
|
|
946
|
-
4: "col-span-12 md:col-span-4",
|
|
947
|
-
5: "col-span-12 md:col-span-5",
|
|
948
|
-
6: "col-span-12 md:col-span-6",
|
|
949
|
-
7: "col-span-12 md:col-span-7",
|
|
950
|
-
8: "col-span-12 md:col-span-8",
|
|
951
|
-
9: "col-span-12 md:col-span-9",
|
|
952
|
-
10: "col-span-12 md:col-span-10",
|
|
953
|
-
11: "col-span-12 md:col-span-11",
|
|
954
|
-
12: "col-span-12"
|
|
955
|
-
};
|
|
956
|
-
function getColumnSpanClass(span) {
|
|
957
|
-
if (!span || span === 12) return "col-span-12";
|
|
958
|
-
const clamped = Math.max(1, Math.min(span, 12));
|
|
959
|
-
return columnSpanClasses[clamped] || "col-span-12";
|
|
960
|
-
}
|
|
961
942
|
|
|
962
943
|
// lib/forms/use-contact-form.ts
|
|
963
944
|
function useContactForm(options) {
|
|
@@ -1794,23 +1775,56 @@ function ContactFaq({
|
|
|
1794
1775
|
},
|
|
1795
1776
|
className: cn("space-y-4", formClassName),
|
|
1796
1777
|
children: [
|
|
1797
|
-
/* @__PURE__ */ jsx("div", { className: "
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1778
|
+
/* @__PURE__ */ jsx("div", { className: "space-y-4", children: formFields.map((field, index) => {
|
|
1779
|
+
const prevField = index > 0 ? formFields[index - 1] : null;
|
|
1780
|
+
const shouldGroup = field.columnSpan && field.columnSpan <= 6 && prevField?.columnSpan && prevField.columnSpan <= 6 && prevField.columnSpan + field.columnSpan <= 12;
|
|
1781
|
+
if (shouldGroup && index > 0) {
|
|
1782
|
+
return null;
|
|
1783
|
+
}
|
|
1784
|
+
const nextField = index < formFields.length - 1 ? formFields[index + 1] : null;
|
|
1785
|
+
const groupWithNext = field.columnSpan && field.columnSpan <= 6 && nextField?.columnSpan && nextField.columnSpan <= 6 && field.columnSpan + nextField.columnSpan <= 12;
|
|
1786
|
+
if (groupWithNext && nextField) {
|
|
1787
|
+
return /* @__PURE__ */ jsxs(
|
|
1788
|
+
"div",
|
|
1803
1789
|
{
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1790
|
+
className: "grid grid-cols-1 sm:grid-cols-2 gap-4",
|
|
1791
|
+
children: [
|
|
1792
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-[76px]", children: /* @__PURE__ */ jsx(
|
|
1793
|
+
DynamicFormField,
|
|
1794
|
+
{
|
|
1795
|
+
field,
|
|
1796
|
+
uploadProgress,
|
|
1797
|
+
onFileUpload: uploadFiles,
|
|
1798
|
+
onFileRemove: removeFile,
|
|
1799
|
+
isUploading
|
|
1800
|
+
}
|
|
1801
|
+
) }),
|
|
1802
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-[76px]", children: /* @__PURE__ */ jsx(
|
|
1803
|
+
DynamicFormField,
|
|
1804
|
+
{
|
|
1805
|
+
field: nextField,
|
|
1806
|
+
uploadProgress,
|
|
1807
|
+
onFileUpload: uploadFiles,
|
|
1808
|
+
onFileRemove: removeFile,
|
|
1809
|
+
isUploading
|
|
1810
|
+
}
|
|
1811
|
+
) })
|
|
1812
|
+
]
|
|
1813
|
+
},
|
|
1814
|
+
field.name
|
|
1815
|
+
);
|
|
1816
|
+
}
|
|
1817
|
+
return /* @__PURE__ */ jsx("div", { className: "min-h-[76px]", children: /* @__PURE__ */ jsx(
|
|
1818
|
+
DynamicFormField,
|
|
1819
|
+
{
|
|
1820
|
+
field,
|
|
1821
|
+
uploadProgress,
|
|
1822
|
+
onFileUpload: uploadFiles,
|
|
1823
|
+
onFileRemove: removeFile,
|
|
1824
|
+
isUploading
|
|
1825
|
+
}
|
|
1826
|
+
) }, field.name);
|
|
1827
|
+
}) }),
|
|
1814
1828
|
actionsSlot || actions && actions.length > 0 ? actionsContent : /* @__PURE__ */ jsxs(
|
|
1815
1829
|
Pressable,
|
|
1816
1830
|
{
|