@01.software/sdk 0.1.9 → 0.2.1

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
@@ -1038,6 +1038,7 @@ var COLLECTIONS = [
1038
1038
  "product-categories",
1039
1039
  "product-tags",
1040
1040
  "product-images",
1041
+ "product-collections",
1041
1042
  "brands",
1042
1043
  "brand-logos",
1043
1044
  "orders",
@@ -1059,6 +1060,7 @@ var COLLECTIONS = [
1059
1060
  "shipping-policies",
1060
1061
  "documents",
1061
1062
  "document-categories",
1063
+ "document-types",
1062
1064
  "document-images",
1063
1065
  "posts",
1064
1066
  "post-categories",
@@ -1067,8 +1069,6 @@ var COLLECTIONS = [
1067
1069
  "playlists",
1068
1070
  "playlist-images",
1069
1071
  "musics",
1070
- "galleries",
1071
- "gallery-images",
1072
1072
  "forms",
1073
1073
  "form-submissions",
1074
1074
  "media"
@@ -1815,6 +1815,72 @@ function createTypedWebhookHandler(collection, handler) {
1815
1815
  });
1816
1816
  }
1817
1817
 
1818
+ // src/utils/image.ts
1819
+ var IMAGE_SIZES = [384, 768, 1536];
1820
+ function getImageUrl(image, displayWidth, dpr = 1) {
1821
+ var _a;
1822
+ const target = displayWidth * dpr;
1823
+ const sizes = image.sizes;
1824
+ if (sizes) {
1825
+ for (const size of IMAGE_SIZES) {
1826
+ if (size >= target) {
1827
+ const entry = sizes[String(size)];
1828
+ if (entry == null ? void 0 : entry.url) return entry.url;
1829
+ }
1830
+ }
1831
+ }
1832
+ return (_a = image.url) != null ? _a : "";
1833
+ }
1834
+ function getImageSrcSet(image) {
1835
+ const parts = [];
1836
+ const sizes = image.sizes;
1837
+ if (sizes) {
1838
+ for (const size of IMAGE_SIZES) {
1839
+ const entry = sizes[String(size)];
1840
+ if ((entry == null ? void 0 : entry.url) && entry.width) {
1841
+ parts.push(`${entry.url} ${entry.width}w`);
1842
+ }
1843
+ }
1844
+ }
1845
+ if (image.url && image.width) {
1846
+ parts.push(`${image.url} ${image.width}w`);
1847
+ }
1848
+ return parts.join(", ");
1849
+ }
1850
+ function getImageLqip(image) {
1851
+ var _a;
1852
+ return (_a = image.lqip) != null ? _a : void 0;
1853
+ }
1854
+ function getImagePalette(image) {
1855
+ var _a;
1856
+ return (_a = image.palette) != null ? _a : void 0;
1857
+ }
1858
+ function getImagePlaceholderStyle(image, options) {
1859
+ var _a, _b, _c;
1860
+ const type = (_a = options == null ? void 0 : options.type) != null ? _a : "blur";
1861
+ const paletteColor = (_b = options == null ? void 0 : options.paletteColor) != null ? _b : "muted";
1862
+ if (type === "none") return {};
1863
+ const color = (_c = image.palette) == null ? void 0 : _c[paletteColor];
1864
+ if (type === "blur") {
1865
+ const lqip = image.lqip;
1866
+ if (lqip) {
1867
+ return {
1868
+ backgroundImage: `url(${lqip})`,
1869
+ backgroundSize: "cover",
1870
+ backgroundPosition: "center"
1871
+ };
1872
+ }
1873
+ if (color) {
1874
+ return { backgroundColor: color };
1875
+ }
1876
+ return {};
1877
+ }
1878
+ if (color) {
1879
+ return { backgroundColor: color };
1880
+ }
1881
+ return {};
1882
+ }
1883
+
1818
1884
  // src/utils/order/generateOrderNumber.ts
1819
1885
  var generateOrderNumber = () => {
1820
1886
  var _a;
@@ -1836,7 +1902,7 @@ var formatOrderName = (options) => {
1836
1902
  };
1837
1903
 
1838
1904
  // src/components/RichTextContent/index.tsx
1839
- import React from "react";
1905
+ import React2 from "react";
1840
1906
  import {
1841
1907
  defaultJSXConverters,
1842
1908
  LinkJSXConverter,
@@ -1848,7 +1914,7 @@ function RichTextContent({
1848
1914
  internalDocToHref,
1849
1915
  blocks
1850
1916
  }) {
1851
- return /* @__PURE__ */ React.createElement(
1917
+ return /* @__PURE__ */ React2.createElement(
1852
1918
  RichText,
1853
1919
  {
1854
1920
  data,
@@ -1861,6 +1927,628 @@ function RichTextContent({
1861
1927
  }
1862
1928
  );
1863
1929
  }
1930
+
1931
+ // src/components/FormRenderer/index.tsx
1932
+ import React3, { useState, useCallback, useEffect, useRef } from "react";
1933
+
1934
+ // src/components/FormRenderer/countries.ts
1935
+ var COUNTRIES = [
1936
+ { value: "AF", label: "Afghanistan" },
1937
+ { value: "AX", label: "\xC5land Islands" },
1938
+ { value: "AL", label: "Albania" },
1939
+ { value: "DZ", label: "Algeria" },
1940
+ { value: "AS", label: "American Samoa" },
1941
+ { value: "AD", label: "Andorra" },
1942
+ { value: "AO", label: "Angola" },
1943
+ { value: "AI", label: "Anguilla" },
1944
+ { value: "AQ", label: "Antarctica" },
1945
+ { value: "AG", label: "Antigua and Barbuda" },
1946
+ { value: "AR", label: "Argentina" },
1947
+ { value: "AM", label: "Armenia" },
1948
+ { value: "AW", label: "Aruba" },
1949
+ { value: "AU", label: "Australia" },
1950
+ { value: "AT", label: "Austria" },
1951
+ { value: "AZ", label: "Azerbaijan" },
1952
+ { value: "BS", label: "Bahamas" },
1953
+ { value: "BH", label: "Bahrain" },
1954
+ { value: "BD", label: "Bangladesh" },
1955
+ { value: "BB", label: "Barbados" },
1956
+ { value: "BY", label: "Belarus" },
1957
+ { value: "BE", label: "Belgium" },
1958
+ { value: "BZ", label: "Belize" },
1959
+ { value: "BJ", label: "Benin" },
1960
+ { value: "BM", label: "Bermuda" },
1961
+ { value: "BT", label: "Bhutan" },
1962
+ { value: "BO", label: "Bolivia" },
1963
+ { value: "BA", label: "Bosnia and Herzegovina" },
1964
+ { value: "BW", label: "Botswana" },
1965
+ { value: "BV", label: "Bouvet Island" },
1966
+ { value: "BR", label: "Brazil" },
1967
+ { value: "IO", label: "British Indian Ocean Territory" },
1968
+ { value: "BN", label: "Brunei Darussalam" },
1969
+ { value: "BG", label: "Bulgaria" },
1970
+ { value: "BF", label: "Burkina Faso" },
1971
+ { value: "BI", label: "Burundi" },
1972
+ { value: "KH", label: "Cambodia" },
1973
+ { value: "CM", label: "Cameroon" },
1974
+ { value: "CA", label: "Canada" },
1975
+ { value: "CV", label: "Cape Verde" },
1976
+ { value: "KY", label: "Cayman Islands" },
1977
+ { value: "CF", label: "Central African Republic" },
1978
+ { value: "TD", label: "Chad" },
1979
+ { value: "CL", label: "Chile" },
1980
+ { value: "CN", label: "China" },
1981
+ { value: "CX", label: "Christmas Island" },
1982
+ { value: "CC", label: "Cocos (Keeling) Islands" },
1983
+ { value: "CO", label: "Colombia" },
1984
+ { value: "KM", label: "Comoros" },
1985
+ { value: "CG", label: "Congo" },
1986
+ { value: "CD", label: "Congo, Democratic Republic" },
1987
+ { value: "CK", label: "Cook Islands" },
1988
+ { value: "CR", label: "Costa Rica" },
1989
+ { value: "CI", label: "C\xF4te d'Ivoire" },
1990
+ { value: "HR", label: "Croatia" },
1991
+ { value: "CU", label: "Cuba" },
1992
+ { value: "CY", label: "Cyprus" },
1993
+ { value: "CZ", label: "Czech Republic" },
1994
+ { value: "DK", label: "Denmark" },
1995
+ { value: "DJ", label: "Djibouti" },
1996
+ { value: "DM", label: "Dominica" },
1997
+ { value: "DO", label: "Dominican Republic" },
1998
+ { value: "EC", label: "Ecuador" },
1999
+ { value: "EG", label: "Egypt" },
2000
+ { value: "SV", label: "El Salvador" },
2001
+ { value: "GQ", label: "Equatorial Guinea" },
2002
+ { value: "ER", label: "Eritrea" },
2003
+ { value: "EE", label: "Estonia" },
2004
+ { value: "ET", label: "Ethiopia" },
2005
+ { value: "FK", label: "Falkland Islands" },
2006
+ { value: "FO", label: "Faroe Islands" },
2007
+ { value: "FJ", label: "Fiji" },
2008
+ { value: "FI", label: "Finland" },
2009
+ { value: "FR", label: "France" },
2010
+ { value: "GF", label: "French Guiana" },
2011
+ { value: "PF", label: "French Polynesia" },
2012
+ { value: "TF", label: "French Southern Territories" },
2013
+ { value: "GA", label: "Gabon" },
2014
+ { value: "GM", label: "Gambia" },
2015
+ { value: "GE", label: "Georgia" },
2016
+ { value: "DE", label: "Germany" },
2017
+ { value: "GH", label: "Ghana" },
2018
+ { value: "GI", label: "Gibraltar" },
2019
+ { value: "GR", label: "Greece" },
2020
+ { value: "GL", label: "Greenland" },
2021
+ { value: "GD", label: "Grenada" },
2022
+ { value: "GP", label: "Guadeloupe" },
2023
+ { value: "GU", label: "Guam" },
2024
+ { value: "GT", label: "Guatemala" },
2025
+ { value: "GG", label: "Guernsey" },
2026
+ { value: "GN", label: "Guinea" },
2027
+ { value: "GW", label: "Guinea-Bissau" },
2028
+ { value: "GY", label: "Guyana" },
2029
+ { value: "HT", label: "Haiti" },
2030
+ { value: "VA", label: "Holy See (Vatican)" },
2031
+ { value: "HN", label: "Honduras" },
2032
+ { value: "HK", label: "Hong Kong" },
2033
+ { value: "HU", label: "Hungary" },
2034
+ { value: "IS", label: "Iceland" },
2035
+ { value: "IN", label: "India" },
2036
+ { value: "ID", label: "Indonesia" },
2037
+ { value: "IR", label: "Iran" },
2038
+ { value: "IQ", label: "Iraq" },
2039
+ { value: "IE", label: "Ireland" },
2040
+ { value: "IM", label: "Isle of Man" },
2041
+ { value: "IL", label: "Israel" },
2042
+ { value: "IT", label: "Italy" },
2043
+ { value: "JM", label: "Jamaica" },
2044
+ { value: "JP", label: "Japan" },
2045
+ { value: "JE", label: "Jersey" },
2046
+ { value: "JO", label: "Jordan" },
2047
+ { value: "KZ", label: "Kazakhstan" },
2048
+ { value: "KE", label: "Kenya" },
2049
+ { value: "KI", label: "Kiribati" },
2050
+ { value: "KP", label: "Korea, North" },
2051
+ { value: "KR", label: "Korea, South" },
2052
+ { value: "KW", label: "Kuwait" },
2053
+ { value: "KG", label: "Kyrgyzstan" },
2054
+ { value: "LA", label: "Laos" },
2055
+ { value: "LV", label: "Latvia" },
2056
+ { value: "LB", label: "Lebanon" },
2057
+ { value: "LS", label: "Lesotho" },
2058
+ { value: "LR", label: "Liberia" },
2059
+ { value: "LY", label: "Libya" },
2060
+ { value: "LI", label: "Liechtenstein" },
2061
+ { value: "LT", label: "Lithuania" },
2062
+ { value: "LU", label: "Luxembourg" },
2063
+ { value: "MO", label: "Macao" },
2064
+ { value: "MK", label: "North Macedonia" },
2065
+ { value: "MG", label: "Madagascar" },
2066
+ { value: "MW", label: "Malawi" },
2067
+ { value: "MY", label: "Malaysia" },
2068
+ { value: "MV", label: "Maldives" },
2069
+ { value: "ML", label: "Mali" },
2070
+ { value: "MT", label: "Malta" },
2071
+ { value: "MH", label: "Marshall Islands" },
2072
+ { value: "MQ", label: "Martinique" },
2073
+ { value: "MR", label: "Mauritania" },
2074
+ { value: "MU", label: "Mauritius" },
2075
+ { value: "YT", label: "Mayotte" },
2076
+ { value: "MX", label: "Mexico" },
2077
+ { value: "FM", label: "Micronesia" },
2078
+ { value: "MD", label: "Moldova" },
2079
+ { value: "MC", label: "Monaco" },
2080
+ { value: "MN", label: "Mongolia" },
2081
+ { value: "ME", label: "Montenegro" },
2082
+ { value: "MS", label: "Montserrat" },
2083
+ { value: "MA", label: "Morocco" },
2084
+ { value: "MZ", label: "Mozambique" },
2085
+ { value: "MM", label: "Myanmar" },
2086
+ { value: "NA", label: "Namibia" },
2087
+ { value: "NR", label: "Nauru" },
2088
+ { value: "NP", label: "Nepal" },
2089
+ { value: "NL", label: "Netherlands" },
2090
+ { value: "NC", label: "New Caledonia" },
2091
+ { value: "NZ", label: "New Zealand" },
2092
+ { value: "NI", label: "Nicaragua" },
2093
+ { value: "NE", label: "Niger" },
2094
+ { value: "NG", label: "Nigeria" },
2095
+ { value: "NU", label: "Niue" },
2096
+ { value: "NF", label: "Norfolk Island" },
2097
+ { value: "MP", label: "Northern Mariana Islands" },
2098
+ { value: "NO", label: "Norway" },
2099
+ { value: "OM", label: "Oman" },
2100
+ { value: "PK", label: "Pakistan" },
2101
+ { value: "PW", label: "Palau" },
2102
+ { value: "PS", label: "Palestine" },
2103
+ { value: "PA", label: "Panama" },
2104
+ { value: "PG", label: "Papua New Guinea" },
2105
+ { value: "PY", label: "Paraguay" },
2106
+ { value: "PE", label: "Peru" },
2107
+ { value: "PH", label: "Philippines" },
2108
+ { value: "PN", label: "Pitcairn" },
2109
+ { value: "PL", label: "Poland" },
2110
+ { value: "PT", label: "Portugal" },
2111
+ { value: "PR", label: "Puerto Rico" },
2112
+ { value: "QA", label: "Qatar" },
2113
+ { value: "RE", label: "R\xE9union" },
2114
+ { value: "RO", label: "Romania" },
2115
+ { value: "RU", label: "Russian Federation" },
2116
+ { value: "RW", label: "Rwanda" },
2117
+ { value: "BL", label: "Saint Barth\xE9lemy" },
2118
+ { value: "SH", label: "Saint Helena" },
2119
+ { value: "KN", label: "Saint Kitts and Nevis" },
2120
+ { value: "LC", label: "Saint Lucia" },
2121
+ { value: "MF", label: "Saint Martin" },
2122
+ { value: "PM", label: "Saint Pierre and Miquelon" },
2123
+ { value: "VC", label: "Saint Vincent and the Grenadines" },
2124
+ { value: "WS", label: "Samoa" },
2125
+ { value: "SM", label: "San Marino" },
2126
+ { value: "ST", label: "Sao Tome and Principe" },
2127
+ { value: "SA", label: "Saudi Arabia" },
2128
+ { value: "SN", label: "Senegal" },
2129
+ { value: "RS", label: "Serbia" },
2130
+ { value: "SC", label: "Seychelles" },
2131
+ { value: "SL", label: "Sierra Leone" },
2132
+ { value: "SG", label: "Singapore" },
2133
+ { value: "SX", label: "Sint Maarten" },
2134
+ { value: "SK", label: "Slovakia" },
2135
+ { value: "SI", label: "Slovenia" },
2136
+ { value: "SB", label: "Solomon Islands" },
2137
+ { value: "SO", label: "Somalia" },
2138
+ { value: "ZA", label: "South Africa" },
2139
+ { value: "GS", label: "South Georgia" },
2140
+ { value: "SS", label: "South Sudan" },
2141
+ { value: "ES", label: "Spain" },
2142
+ { value: "LK", label: "Sri Lanka" },
2143
+ { value: "SD", label: "Sudan" },
2144
+ { value: "SR", label: "Suriname" },
2145
+ { value: "SJ", label: "Svalbard and Jan Mayen" },
2146
+ { value: "SZ", label: "Eswatini" },
2147
+ { value: "SE", label: "Sweden" },
2148
+ { value: "CH", label: "Switzerland" },
2149
+ { value: "SY", label: "Syria" },
2150
+ { value: "TW", label: "Taiwan" },
2151
+ { value: "TJ", label: "Tajikistan" },
2152
+ { value: "TZ", label: "Tanzania" },
2153
+ { value: "TH", label: "Thailand" },
2154
+ { value: "TL", label: "Timor-Leste" },
2155
+ { value: "TG", label: "Togo" },
2156
+ { value: "TK", label: "Tokelau" },
2157
+ { value: "TO", label: "Tonga" },
2158
+ { value: "TT", label: "Trinidad and Tobago" },
2159
+ { value: "TN", label: "Tunisia" },
2160
+ { value: "TR", label: "Turkey" },
2161
+ { value: "TM", label: "Turkmenistan" },
2162
+ { value: "TC", label: "Turks and Caicos Islands" },
2163
+ { value: "TV", label: "Tuvalu" },
2164
+ { value: "UG", label: "Uganda" },
2165
+ { value: "UA", label: "Ukraine" },
2166
+ { value: "AE", label: "United Arab Emirates" },
2167
+ { value: "GB", label: "United Kingdom" },
2168
+ { value: "US", label: "United States" },
2169
+ { value: "UM", label: "U.S. Minor Outlying Islands" },
2170
+ { value: "UY", label: "Uruguay" },
2171
+ { value: "UZ", label: "Uzbekistan" },
2172
+ { value: "VU", label: "Vanuatu" },
2173
+ { value: "VE", label: "Venezuela" },
2174
+ { value: "VN", label: "Vietnam" },
2175
+ { value: "VG", label: "Virgin Islands, British" },
2176
+ { value: "VI", label: "Virgin Islands, U.S." },
2177
+ { value: "WF", label: "Wallis and Futuna" },
2178
+ { value: "EH", label: "Western Sahara" },
2179
+ { value: "YE", label: "Yemen" },
2180
+ { value: "ZM", label: "Zambia" },
2181
+ { value: "ZW", label: "Zimbabwe" }
2182
+ ];
2183
+ var US_STATES = [
2184
+ { value: "AL", label: "Alabama" },
2185
+ { value: "AK", label: "Alaska" },
2186
+ { value: "AZ", label: "Arizona" },
2187
+ { value: "AR", label: "Arkansas" },
2188
+ { value: "CA", label: "California" },
2189
+ { value: "CO", label: "Colorado" },
2190
+ { value: "CT", label: "Connecticut" },
2191
+ { value: "DE", label: "Delaware" },
2192
+ { value: "FL", label: "Florida" },
2193
+ { value: "GA", label: "Georgia" },
2194
+ { value: "HI", label: "Hawaii" },
2195
+ { value: "ID", label: "Idaho" },
2196
+ { value: "IL", label: "Illinois" },
2197
+ { value: "IN", label: "Indiana" },
2198
+ { value: "IA", label: "Iowa" },
2199
+ { value: "KS", label: "Kansas" },
2200
+ { value: "KY", label: "Kentucky" },
2201
+ { value: "LA", label: "Louisiana" },
2202
+ { value: "ME", label: "Maine" },
2203
+ { value: "MD", label: "Maryland" },
2204
+ { value: "MA", label: "Massachusetts" },
2205
+ { value: "MI", label: "Michigan" },
2206
+ { value: "MN", label: "Minnesota" },
2207
+ { value: "MS", label: "Mississippi" },
2208
+ { value: "MO", label: "Missouri" },
2209
+ { value: "MT", label: "Montana" },
2210
+ { value: "NE", label: "Nebraska" },
2211
+ { value: "NV", label: "Nevada" },
2212
+ { value: "NH", label: "New Hampshire" },
2213
+ { value: "NJ", label: "New Jersey" },
2214
+ { value: "NM", label: "New Mexico" },
2215
+ { value: "NY", label: "New York" },
2216
+ { value: "NC", label: "North Carolina" },
2217
+ { value: "ND", label: "North Dakota" },
2218
+ { value: "OH", label: "Ohio" },
2219
+ { value: "OK", label: "Oklahoma" },
2220
+ { value: "OR", label: "Oregon" },
2221
+ { value: "PA", label: "Pennsylvania" },
2222
+ { value: "RI", label: "Rhode Island" },
2223
+ { value: "SC", label: "South Carolina" },
2224
+ { value: "SD", label: "South Dakota" },
2225
+ { value: "TN", label: "Tennessee" },
2226
+ { value: "TX", label: "Texas" },
2227
+ { value: "UT", label: "Utah" },
2228
+ { value: "VT", label: "Vermont" },
2229
+ { value: "VA", label: "Virginia" },
2230
+ { value: "WA", label: "Washington" },
2231
+ { value: "WV", label: "West Virginia" },
2232
+ { value: "WI", label: "Wisconsin" },
2233
+ { value: "WY", label: "Wyoming" },
2234
+ { value: "DC", label: "District of Columbia" }
2235
+ ];
2236
+
2237
+ // src/components/FormRenderer/index.tsx
2238
+ function toSubmissionData(values) {
2239
+ return Object.entries(values).map(([field, value]) => ({
2240
+ field,
2241
+ value: String(value)
2242
+ }));
2243
+ }
2244
+ function getInitialValues(fields) {
2245
+ var _a, _b;
2246
+ const values = {};
2247
+ if (!fields) return values;
2248
+ for (const field of fields) {
2249
+ if (field.blockType === "message") continue;
2250
+ if (field.blockType === "checkbox") {
2251
+ values[field.name] = (_a = field.defaultValue) != null ? _a : false;
2252
+ } else if (field.blockType === "number" || field.blockType === "text" || field.blockType === "textarea" || field.blockType === "select") {
2253
+ values[field.name] = (_b = field.defaultValue) != null ? _b : "";
2254
+ } else {
2255
+ values[field.name] = "";
2256
+ }
2257
+ }
2258
+ return values;
2259
+ }
2260
+ function FormRenderer({
2261
+ form,
2262
+ onSubmit,
2263
+ className,
2264
+ fieldClassName,
2265
+ buttonClassName,
2266
+ renderField,
2267
+ renderMessage,
2268
+ renderButton
2269
+ }) {
2270
+ var _a;
2271
+ const [values, setValues] = useState(
2272
+ () => getInitialValues(form.fields)
2273
+ );
2274
+ const [isSubmitting, setIsSubmitting] = useState(false);
2275
+ const submittingRef = useRef(false);
2276
+ useEffect(() => {
2277
+ setValues(getInitialValues(form.fields));
2278
+ }, [form.id]);
2279
+ const handleChange = useCallback(
2280
+ (name, value) => {
2281
+ setValues((prev) => __spreadProps(__spreadValues({}, prev), { [name]: value }));
2282
+ },
2283
+ []
2284
+ );
2285
+ const handleSubmit = (e) => __async(null, null, function* () {
2286
+ e.preventDefault();
2287
+ if (submittingRef.current) return;
2288
+ submittingRef.current = true;
2289
+ setIsSubmitting(true);
2290
+ try {
2291
+ yield onSubmit(values);
2292
+ } finally {
2293
+ submittingRef.current = false;
2294
+ setIsSubmitting(false);
2295
+ }
2296
+ });
2297
+ const wrapField = (field, style, input) => {
2298
+ var _a2, _b;
2299
+ const context = {
2300
+ value: (_a2 = values[field.name]) != null ? _a2 : "",
2301
+ onChange: (v) => handleChange(field.name, v)
2302
+ };
2303
+ const el = /* @__PURE__ */ React3.createElement(
2304
+ "div",
2305
+ {
2306
+ key: (_b = field.id) != null ? _b : field.name,
2307
+ className: fieldClassName,
2308
+ style
2309
+ },
2310
+ field.label && /* @__PURE__ */ React3.createElement("label", { htmlFor: field.name }, field.label),
2311
+ input
2312
+ );
2313
+ return renderField ? renderField(field, context, el) : el;
2314
+ };
2315
+ const renderSelectField = (field, style, options, placeholder) => {
2316
+ var _a2, _b;
2317
+ return wrapField(
2318
+ field,
2319
+ style,
2320
+ /* @__PURE__ */ React3.createElement(
2321
+ "select",
2322
+ {
2323
+ id: field.name,
2324
+ name: field.name,
2325
+ value: String((_a2 = values[field.name]) != null ? _a2 : ""),
2326
+ required: (_b = field.required) != null ? _b : false,
2327
+ onChange: (e) => handleChange(field.name, e.target.value)
2328
+ },
2329
+ /* @__PURE__ */ React3.createElement("option", { value: "" }, placeholder || "Select\u2026"),
2330
+ options.map((opt) => /* @__PURE__ */ React3.createElement("option", { key: opt.value, value: opt.value }, opt.label))
2331
+ )
2332
+ );
2333
+ };
2334
+ const renderFieldElement = (field) => {
2335
+ var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
2336
+ const style = field.blockType !== "message" && field.width ? { width: `${field.width}%` } : void 0;
2337
+ switch (field.blockType) {
2338
+ case "text":
2339
+ return wrapField(
2340
+ field,
2341
+ style,
2342
+ /* @__PURE__ */ React3.createElement(
2343
+ "input",
2344
+ {
2345
+ type: "text",
2346
+ id: field.name,
2347
+ name: field.name,
2348
+ value: String((_a2 = values[field.name]) != null ? _a2 : ""),
2349
+ placeholder: (_b = field.placeholder) != null ? _b : void 0,
2350
+ required: (_c = field.required) != null ? _c : false,
2351
+ onChange: (e) => handleChange(field.name, e.target.value)
2352
+ }
2353
+ )
2354
+ );
2355
+ case "email":
2356
+ return wrapField(
2357
+ field,
2358
+ style,
2359
+ /* @__PURE__ */ React3.createElement(
2360
+ "input",
2361
+ {
2362
+ type: "email",
2363
+ id: field.name,
2364
+ name: field.name,
2365
+ value: String((_d = values[field.name]) != null ? _d : ""),
2366
+ required: (_e = field.required) != null ? _e : false,
2367
+ onChange: (e) => handleChange(field.name, e.target.value)
2368
+ }
2369
+ )
2370
+ );
2371
+ case "number":
2372
+ return wrapField(
2373
+ field,
2374
+ style,
2375
+ /* @__PURE__ */ React3.createElement(
2376
+ "input",
2377
+ {
2378
+ type: "number",
2379
+ id: field.name,
2380
+ name: field.name,
2381
+ value: String((_f = values[field.name]) != null ? _f : ""),
2382
+ required: (_g = field.required) != null ? _g : false,
2383
+ onChange: (e) => {
2384
+ const v = e.target.value;
2385
+ if (v === "") return handleChange(field.name, "");
2386
+ const n = Number(v);
2387
+ if (Number.isFinite(n)) handleChange(field.name, n);
2388
+ }
2389
+ }
2390
+ )
2391
+ );
2392
+ case "textarea":
2393
+ return wrapField(
2394
+ field,
2395
+ style,
2396
+ /* @__PURE__ */ React3.createElement(
2397
+ "textarea",
2398
+ {
2399
+ id: field.name,
2400
+ name: field.name,
2401
+ value: String((_h = values[field.name]) != null ? _h : ""),
2402
+ required: (_i = field.required) != null ? _i : false,
2403
+ onChange: (e) => handleChange(field.name, e.target.value)
2404
+ }
2405
+ )
2406
+ );
2407
+ case "checkbox": {
2408
+ const context = {
2409
+ value: (_j = values[field.name]) != null ? _j : false,
2410
+ onChange: (v) => handleChange(field.name, v)
2411
+ };
2412
+ const el = /* @__PURE__ */ React3.createElement(
2413
+ "div",
2414
+ {
2415
+ key: (_k = field.id) != null ? _k : field.name,
2416
+ className: fieldClassName,
2417
+ style
2418
+ },
2419
+ /* @__PURE__ */ React3.createElement("label", { htmlFor: field.name }, /* @__PURE__ */ React3.createElement(
2420
+ "input",
2421
+ {
2422
+ type: "checkbox",
2423
+ id: field.name,
2424
+ name: field.name,
2425
+ checked: Boolean(values[field.name]),
2426
+ required: (_l = field.required) != null ? _l : false,
2427
+ onChange: (e) => handleChange(field.name, e.target.checked)
2428
+ }
2429
+ ), field.label && /* @__PURE__ */ React3.createElement("span", null, field.label))
2430
+ );
2431
+ return renderField ? renderField(field, context, el) : el;
2432
+ }
2433
+ case "select":
2434
+ return renderSelectField(
2435
+ field,
2436
+ style,
2437
+ (_m = field.options) != null ? _m : [],
2438
+ (_n = field.placeholder) != null ? _n : void 0
2439
+ );
2440
+ case "country":
2441
+ return renderSelectField(field, style, COUNTRIES);
2442
+ case "state":
2443
+ return renderSelectField(field, style, US_STATES);
2444
+ case "message":
2445
+ if (renderMessage && field.message) {
2446
+ return /* @__PURE__ */ React3.createElement(React3.Fragment, { key: (_p = (_o = field.id) != null ? _o : field.blockName) != null ? _p : "message" }, renderMessage(field.message));
2447
+ }
2448
+ return null;
2449
+ default:
2450
+ return null;
2451
+ }
2452
+ };
2453
+ const buttonLabel = form.submitButtonLabel || "Submit";
2454
+ return /* @__PURE__ */ React3.createElement("form", { onSubmit: handleSubmit, className }, (_a = form.fields) == null ? void 0 : _a.map((field) => renderFieldElement(field)), renderButton ? renderButton({ isSubmitting, label: buttonLabel }) : /* @__PURE__ */ React3.createElement(
2455
+ "button",
2456
+ {
2457
+ type: "submit",
2458
+ disabled: isSubmitting,
2459
+ className: buttonClassName
2460
+ },
2461
+ buttonLabel
2462
+ ));
2463
+ }
2464
+
2465
+ // src/components/Image/index.tsx
2466
+ import { useCallback as useCallback2, useState as useState2 } from "react";
2467
+ function Image({
2468
+ image,
2469
+ width,
2470
+ dpr = 1,
2471
+ placeholder = "blur",
2472
+ className,
2473
+ style,
2474
+ imgClassName,
2475
+ imgStyle,
2476
+ sizes,
2477
+ loading = "lazy",
2478
+ onLoad,
2479
+ objectFit = "cover"
2480
+ }) {
2481
+ var _a, _b;
2482
+ const [loaded, setLoaded] = useState2(false);
2483
+ const aspectRatio = image.width && image.height ? `${image.width} / ${image.height}` : void 0;
2484
+ const srcSet = getImageSrcSet(image);
2485
+ const src = (_a = image.url) != null ? _a : void 0;
2486
+ const placeholderStyle = getImagePlaceholderStyle(image, {
2487
+ type: placeholder
2488
+ });
2489
+ const hasLqip = placeholder === "blur" && !!image.lqip;
2490
+ const hasColorPlaceholder = !hasLqip && Object.keys(placeholderStyle).length > 0;
2491
+ const imgRef = useCallback2(
2492
+ (node) => {
2493
+ if (node && node.complete && node.naturalWidth > 0) {
2494
+ setLoaded(true);
2495
+ onLoad == null ? void 0 : onLoad();
2496
+ }
2497
+ },
2498
+ [onLoad]
2499
+ );
2500
+ const handleLoad = useCallback2(() => {
2501
+ setLoaded(true);
2502
+ onLoad == null ? void 0 : onLoad();
2503
+ }, [onLoad]);
2504
+ const containerStyle = __spreadValues(__spreadValues(__spreadValues({
2505
+ position: "relative",
2506
+ overflow: "hidden"
2507
+ }, aspectRatio ? { aspectRatio } : {}), hasColorPlaceholder ? placeholderStyle : {}), style);
2508
+ const imgBase = {
2509
+ display: "block",
2510
+ width: "100%",
2511
+ height: "100%",
2512
+ objectFit
2513
+ };
2514
+ const mainImgStyle = __spreadValues(__spreadProps(__spreadValues({}, imgBase), {
2515
+ opacity: loaded ? 1 : 0,
2516
+ transition: "opacity 0.3s ease"
2517
+ }), imgStyle);
2518
+ const lqipStyle = __spreadProps(__spreadValues({}, imgBase), {
2519
+ position: "absolute",
2520
+ top: 0,
2521
+ left: 0,
2522
+ filter: "blur(20px)",
2523
+ transform: "scale(1.1)",
2524
+ opacity: loaded ? 0 : 1,
2525
+ transition: "opacity 0.3s ease",
2526
+ pointerEvents: "none"
2527
+ });
2528
+ return /* @__PURE__ */ React.createElement("div", { className, style: containerStyle }, hasLqip && /* @__PURE__ */ React.createElement(
2529
+ "img",
2530
+ {
2531
+ "aria-hidden": true,
2532
+ alt: "",
2533
+ src: image.lqip,
2534
+ style: lqipStyle
2535
+ }
2536
+ ), /* @__PURE__ */ React.createElement(
2537
+ "img",
2538
+ {
2539
+ ref: imgRef,
2540
+ alt: (_b = image.alt) != null ? _b : "",
2541
+ src,
2542
+ srcSet: srcSet || void 0,
2543
+ sizes,
2544
+ width: width ? width * dpr : void 0,
2545
+ loading,
2546
+ onLoad: handleLoad,
2547
+ className: imgClassName,
2548
+ style: mainImgStyle
2549
+ }
2550
+ ));
2551
+ }
1864
2552
  export {
1865
2553
  ApiError,
1866
2554
  BrowserClient,
@@ -1870,6 +2558,9 @@ export {
1870
2558
  CollectionQueryBuilder,
1871
2559
  ConfigError,
1872
2560
  CustomerAuth,
2561
+ FormRenderer,
2562
+ IMAGE_SIZES,
2563
+ Image,
1873
2564
  NetworkError,
1874
2565
  OrderApi,
1875
2566
  ProductApi,
@@ -1889,6 +2580,11 @@ export {
1889
2580
  decodeServerToken,
1890
2581
  formatOrderName,
1891
2582
  generateOrderNumber,
2583
+ getImageLqip,
2584
+ getImagePalette,
2585
+ getImagePlaceholderStyle,
2586
+ getImageSrcSet,
2587
+ getImageUrl,
1892
2588
  getQueryClient,
1893
2589
  handleWebhook,
1894
2590
  isApiError,
@@ -1902,6 +2598,7 @@ export {
1902
2598
  objectFor,
1903
2599
  parseApiKey,
1904
2600
  resolveRelation,
2601
+ toSubmissionData,
1905
2602
  verifyServerToken
1906
2603
  };
1907
2604
  //# sourceMappingURL=index.js.map