@kubuild/components 0.7.0 → 0.8.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.
Files changed (53) hide show
  1. package/dist/blocks/index.cjs +601 -12
  2. package/dist/blocks/index.cjs.map +1 -1
  3. package/dist/blocks/index.d.ts +2 -1
  4. package/dist/blocks/index.d.ts.map +1 -1
  5. package/dist/blocks/index.js +3 -1
  6. package/dist/blocks/sales.d.ts +7 -0
  7. package/dist/blocks/sales.d.ts.map +1 -0
  8. package/dist/canonical-props.d.ts +8 -0
  9. package/dist/canonical-props.d.ts.map +1 -0
  10. package/dist/{chunk-3HU2KE2B.js → chunk-CJN5OHHX.js} +596 -9
  11. package/dist/chunk-CJN5OHHX.js.map +1 -0
  12. package/dist/{chunk-JTQ35OQQ.js → chunk-DIZKTXJI.js} +601 -13
  13. package/dist/chunk-DIZKTXJI.js.map +1 -0
  14. package/dist/definitions/constants.d.ts.map +1 -1
  15. package/dist/definitions/conversion/accordion.d.ts +8 -0
  16. package/dist/definitions/conversion/accordion.d.ts.map +1 -0
  17. package/dist/definitions/conversion/carousel.d.ts +7 -0
  18. package/dist/definitions/conversion/carousel.d.ts.map +1 -0
  19. package/dist/definitions/conversion/countdown.d.ts +19 -0
  20. package/dist/definitions/conversion/countdown.d.ts.map +1 -0
  21. package/dist/definitions/conversion/divider.d.ts +9 -0
  22. package/dist/definitions/conversion/divider.d.ts.map +1 -0
  23. package/dist/definitions/conversion/index.d.ts +7 -0
  24. package/dist/definitions/conversion/index.d.ts.map +1 -0
  25. package/dist/definitions/conversion/rating.d.ts +7 -0
  26. package/dist/definitions/conversion/rating.d.ts.map +1 -0
  27. package/dist/definitions/conversion/tabs.d.ts +9 -0
  28. package/dist/definitions/conversion/tabs.d.ts.map +1 -0
  29. package/dist/definitions/form/button.d.ts.map +1 -1
  30. package/dist/definitions/index.cjs +746 -147
  31. package/dist/definitions/index.cjs.map +1 -1
  32. package/dist/definitions/index.d.ts +1 -0
  33. package/dist/definitions/index.d.ts.map +1 -1
  34. package/dist/definitions/index.js +27 -1
  35. package/dist/definitions/types.d.ts +4 -1
  36. package/dist/definitions/types.d.ts.map +1 -1
  37. package/dist/definitions/typography/badge.d.ts.map +1 -1
  38. package/dist/definitions/typography/blockquote.d.ts.map +1 -1
  39. package/dist/definitions/typography/heading.d.ts.map +1 -1
  40. package/dist/definitions/typography/link.d.ts.map +1 -1
  41. package/dist/definitions/typography/paragraph.d.ts.map +1 -1
  42. package/dist/definitions/typography/text.d.ts.map +1 -1
  43. package/dist/index.cjs +1417 -227
  44. package/dist/index.cjs.map +1 -1
  45. package/dist/index.d.ts +1 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +32 -2
  48. package/dist/index.js.map +1 -1
  49. package/dist/registry.d.ts +12 -0
  50. package/dist/registry.d.ts.map +1 -1
  51. package/package.json +3 -3
  52. package/dist/chunk-3HU2KE2B.js.map +0 -1
  53. package/dist/chunk-JTQ35OQQ.js.map +0 -1
@@ -586,7 +586,7 @@ var UI_STARTER_BLOCKS = [
586
586
  id: gen("paragraph"),
587
587
  type: "paragraph",
588
588
  props: {
589
- content: "A visual builder designed for maximum craft, responsiveness, and performance."
589
+ text: "A visual builder designed for maximum craft, responsiveness, and performance."
590
590
  },
591
591
  styles: {
592
592
  base: {
@@ -644,7 +644,7 @@ var UI_STARTER_BLOCKS = [
644
644
  {
645
645
  id: gen("badge"),
646
646
  type: "badge",
647
- props: { label: "PRO FEATURE", variant: "primary" },
647
+ props: { text: "PRO FEATURE", variant: "primary" },
648
648
  styles: { base: { marginBottom: "12px", display: "inline-block" } }
649
649
  },
650
650
  {
@@ -659,7 +659,7 @@ var UI_STARTER_BLOCKS = [
659
659
  id: gen("paragraph"),
660
660
  type: "paragraph",
661
661
  props: {
662
- content: "Engineered for sub-millisecond render updates and zero runtime overhead."
662
+ text: "Engineered for sub-millisecond render updates and zero runtime overhead."
663
663
  },
664
664
  styles: { base: { fontSize: "14px", color: "#64748b", lineHeight: "1.5" } }
665
665
  }
@@ -723,7 +723,7 @@ var UI_STARTER_BLOCKS = [
723
723
  {
724
724
  id: gen("paragraph"),
725
725
  type: "paragraph",
726
- props: { content: "High dynamic range gradients crafted for modern presentations." },
726
+ props: { text: "High dynamic range gradients crafted for modern presentations." },
727
727
  styles: { base: { fontSize: "13px", color: "#64748b", lineHeight: "1.4" } }
728
728
  }
729
729
  ]
@@ -757,7 +757,7 @@ var UI_STARTER_BLOCKS = [
757
757
  {
758
758
  id: gen("badge"),
759
759
  type: "badge",
760
- props: { label: "MOST POPULAR", variant: "primary" },
760
+ props: { text: "MOST POPULAR", variant: "primary" },
761
761
  styles: { base: { marginBottom: "12px", display: "inline-block" } }
762
762
  },
763
763
  {
@@ -777,7 +777,7 @@ var UI_STARTER_BLOCKS = [
777
777
  {
778
778
  id: gen("paragraph"),
779
779
  type: "paragraph",
780
- props: { content: "Includes unlimited pages, custom domains, and team collaboration." },
780
+ props: { text: "Includes unlimited pages, custom domains, and team collaboration." },
781
781
  styles: { base: { fontSize: "14px", color: "#64748b", marginBottom: "24px" } }
782
782
  },
783
783
  {
@@ -834,7 +834,7 @@ var UI_STARTER_BLOCKS = [
834
834
  {
835
835
  id: gen("paragraph"),
836
836
  type: "paragraph",
837
- props: { content: "Start building with zero installation and instant live preview." },
837
+ props: { text: "Start building with zero installation and instant live preview." },
838
838
  styles: {
839
839
  base: { fontSize: "16px", color: "#94a3b8", marginBottom: "24px", maxWidth: "600px", margin: "0 auto 24px auto" }
840
840
  }
@@ -917,7 +917,7 @@ var FORM_STARTER_BLOCKS = [
917
917
  id: gen("paragraph"),
918
918
  type: "paragraph",
919
919
  props: {
920
- content: "Have questions or need assistance? Fill out the form below and we will get back to you shortly."
920
+ text: "Have questions or need assistance? Fill out the form below and we will get back to you shortly."
921
921
  },
922
922
  styles: {
923
923
  base: {
@@ -1175,7 +1175,7 @@ var FORM_STARTER_BLOCKS = [
1175
1175
  id: gen("paragraph"),
1176
1176
  type: "paragraph",
1177
1177
  props: {
1178
- content: "Subscribe to our newsletter for weekly curated insights, updates, and best practices."
1178
+ text: "Subscribe to our newsletter for weekly curated insights, updates, and best practices."
1179
1179
  },
1180
1180
  styles: {
1181
1181
  base: {
@@ -1353,7 +1353,7 @@ var FORM_STARTER_BLOCKS = [
1353
1353
  {
1354
1354
  id: gen("badge"),
1355
1355
  type: "badge",
1356
- props: { label: "FREE CONSULTATION", variant: "primary" },
1356
+ props: { text: "FREE CONSULTATION", variant: "primary" },
1357
1357
  styles: { base: { marginBottom: "12px", display: "inline-block" } }
1358
1358
  },
1359
1359
  {
@@ -1373,7 +1373,7 @@ var FORM_STARTER_BLOCKS = [
1373
1373
  id: gen("paragraph"),
1374
1374
  type: "paragraph",
1375
1375
  props: {
1376
- content: "Share your project details with our solutions team. We will analyze your needs and provide a personalized roadmap."
1376
+ text: "Share your project details with our solutions team. We will analyze your needs and provide a personalized roadmap."
1377
1377
  },
1378
1378
  styles: {
1379
1379
  base: {
@@ -1614,11 +1614,598 @@ var FORM_STARTER_BLOCKS = [
1614
1614
  }
1615
1615
  ];
1616
1616
 
1617
+ // src/blocks/sales.ts
1618
+ var SALES_CATEGORY = "sales";
1619
+ var SALES_CATEGORY_LABEL = "Sales & Conversion";
1620
+ function sectionShell(gen, children, sectionStyles = {}, maxWidth = "960px") {
1621
+ return {
1622
+ id: gen("section"),
1623
+ type: "section",
1624
+ styles: {
1625
+ ...sectionStyles,
1626
+ base: {
1627
+ paddingTop: "64px",
1628
+ paddingBottom: "64px",
1629
+ paddingLeft: "24px",
1630
+ paddingRight: "24px",
1631
+ width: "100%",
1632
+ ...sectionStyles.base ?? {}
1633
+ },
1634
+ mobile: {
1635
+ paddingTop: "40px",
1636
+ paddingBottom: "40px",
1637
+ paddingLeft: "16px",
1638
+ paddingRight: "16px",
1639
+ ...sectionStyles.mobile ?? {}
1640
+ }
1641
+ },
1642
+ children: [
1643
+ {
1644
+ id: gen("container"),
1645
+ type: "container",
1646
+ props: { tag: "div" },
1647
+ styles: {
1648
+ base: {
1649
+ maxWidth,
1650
+ margin: "0 auto",
1651
+ width: "100%",
1652
+ display: "flex",
1653
+ flexDirection: "column",
1654
+ gap: "24px"
1655
+ }
1656
+ },
1657
+ children
1658
+ }
1659
+ ]
1660
+ };
1661
+ }
1662
+ function sectionHeading(gen, text, subtitle, color = "#0f172a") {
1663
+ const nodes = [
1664
+ {
1665
+ id: gen("heading"),
1666
+ type: "heading",
1667
+ props: { text, level: 2 },
1668
+ styles: {
1669
+ base: { fontSize: "32px", fontWeight: "800", color, textAlign: "center", margin: "0" },
1670
+ mobile: { fontSize: "26px" }
1671
+ }
1672
+ }
1673
+ ];
1674
+ if (subtitle) {
1675
+ nodes.push({
1676
+ id: gen("paragraph"),
1677
+ type: "paragraph",
1678
+ props: { text: subtitle },
1679
+ styles: { base: { fontSize: "16px", color: "#64748b", textAlign: "center", margin: "0" } }
1680
+ });
1681
+ }
1682
+ return nodes;
1683
+ }
1684
+ function faqItem(gen, question, answer) {
1685
+ return {
1686
+ id: gen("accordion-item"),
1687
+ type: "accordion-item",
1688
+ props: { title: question },
1689
+ styles: { base: { borderBottom: "1px solid #e2e8f0" } },
1690
+ children: [
1691
+ {
1692
+ id: gen("paragraph"),
1693
+ type: "paragraph",
1694
+ props: { text: answer },
1695
+ styles: { base: { fontSize: "15px", color: "#475569", margin: "0", lineHeight: "1.6" } }
1696
+ }
1697
+ ]
1698
+ };
1699
+ }
1700
+ function testimonialSlide(gen, quote, name, role, rating) {
1701
+ return {
1702
+ id: gen("flex"),
1703
+ type: "flex",
1704
+ styles: {
1705
+ base: {
1706
+ display: "flex",
1707
+ flexDirection: "column",
1708
+ alignItems: "center",
1709
+ gap: "16px",
1710
+ padding: "32px 48px",
1711
+ textAlign: "center"
1712
+ },
1713
+ mobile: { padding: "24px 40px" }
1714
+ },
1715
+ children: [
1716
+ {
1717
+ id: gen("rating"),
1718
+ type: "rating",
1719
+ props: { value: rating, max: 5, size: 20, color: "#f59e0b" }
1720
+ },
1721
+ {
1722
+ id: gen("blockquote"),
1723
+ type: "blockquote",
1724
+ props: { text: quote },
1725
+ styles: {
1726
+ base: {
1727
+ fontSize: "18px",
1728
+ color: "#0f172a",
1729
+ fontStyle: "italic",
1730
+ margin: "0",
1731
+ lineHeight: "1.6"
1732
+ }
1733
+ }
1734
+ },
1735
+ {
1736
+ id: gen("text"),
1737
+ type: "text",
1738
+ props: { text: `${name} \u2014 ${role}` },
1739
+ styles: { base: { fontSize: "14px", fontWeight: "600", color: "#64748b" } }
1740
+ }
1741
+ ]
1742
+ };
1743
+ }
1744
+ function badgeItem(gen, iconName, label) {
1745
+ return {
1746
+ id: gen("flex"),
1747
+ type: "flex",
1748
+ styles: {
1749
+ base: {
1750
+ display: "flex",
1751
+ flexDirection: "column",
1752
+ alignItems: "center",
1753
+ gap: "8px",
1754
+ padding: "16px",
1755
+ textAlign: "center"
1756
+ }
1757
+ },
1758
+ children: [
1759
+ {
1760
+ id: gen("icon"),
1761
+ type: "icon",
1762
+ props: { name: iconName, size: 28, color: "#16a34a", ariaLabel: label }
1763
+ },
1764
+ {
1765
+ id: gen("text"),
1766
+ type: "text",
1767
+ props: { text: label },
1768
+ styles: { base: { fontSize: "14px", fontWeight: "600", color: "#334155" } }
1769
+ }
1770
+ ]
1771
+ };
1772
+ }
1773
+ function planCard(gen, name, price, features, highlighted) {
1774
+ return {
1775
+ id: gen("container"),
1776
+ type: "container",
1777
+ props: { tag: "div" },
1778
+ styles: {
1779
+ base: {
1780
+ display: "flex",
1781
+ flexDirection: "column",
1782
+ gap: "12px",
1783
+ padding: "28px 24px",
1784
+ backgroundColor: "#ffffff",
1785
+ borderRadius: "16px",
1786
+ border: highlighted ? "2px solid #2563eb" : "1px solid #e2e8f0"
1787
+ }
1788
+ },
1789
+ children: [
1790
+ {
1791
+ id: gen("heading"),
1792
+ type: "heading",
1793
+ props: { text: name, level: 3 },
1794
+ styles: { base: { fontSize: "20px", fontWeight: "700", color: "#0f172a", margin: "0" } }
1795
+ },
1796
+ {
1797
+ id: gen("heading"),
1798
+ type: "heading",
1799
+ props: { text: price, level: 4 },
1800
+ styles: { base: { fontSize: "32px", fontWeight: "800", color: "#2563eb", margin: "0" } }
1801
+ },
1802
+ {
1803
+ id: gen("list"),
1804
+ type: "list",
1805
+ props: { tag: "ul", listStyleType: "disc" },
1806
+ styles: { base: { fontSize: "14px", color: "#475569", paddingLeft: "20px", margin: "0" } },
1807
+ children: features.map((feature) => ({
1808
+ id: gen("list-item"),
1809
+ type: "list-item",
1810
+ props: { text: feature }
1811
+ }))
1812
+ },
1813
+ {
1814
+ id: gen("button"),
1815
+ type: "button",
1816
+ props: {
1817
+ label: `Choose ${name}`,
1818
+ href: "#checkout",
1819
+ variant: highlighted ? "primary" : "secondary"
1820
+ },
1821
+ styles: {
1822
+ base: {
1823
+ width: "100%",
1824
+ padding: "12px",
1825
+ borderRadius: "8px",
1826
+ fontWeight: "600",
1827
+ marginTop: "8px"
1828
+ }
1829
+ }
1830
+ }
1831
+ ]
1832
+ };
1833
+ }
1834
+ function planColumns(gen, plans) {
1835
+ return {
1836
+ id: gen("columns"),
1837
+ type: "columns",
1838
+ props: { columns: plans.length, gap: "16px" },
1839
+ styles: {
1840
+ base: {
1841
+ display: "grid",
1842
+ gridTemplateColumns: `repeat(${plans.length}, minmax(0, 1fr))`,
1843
+ gap: "16px"
1844
+ },
1845
+ mobile: { gridTemplateColumns: "repeat(1, minmax(0, 1fr))" }
1846
+ },
1847
+ children: plans.map(
1848
+ ([name, price, features, highlighted]) => planCard(gen, name, price, features, highlighted)
1849
+ )
1850
+ };
1851
+ }
1852
+ var SALES_STARTER_BLOCKS = [
1853
+ {
1854
+ id: "sales-faq",
1855
+ name: "FAQ",
1856
+ category: SALES_CATEGORY,
1857
+ categoryLabel: SALES_CATEGORY_LABEL,
1858
+ description: "Frequently asked questions accordion with FAQPage structured data for SEO",
1859
+ icon: "chevron-down",
1860
+ createNodeTree: (gen = defaultGenId) => sectionShell(
1861
+ gen,
1862
+ [
1863
+ ...sectionHeading(
1864
+ gen,
1865
+ "Frequently Asked Questions",
1866
+ "Everything you need to know before you buy."
1867
+ ),
1868
+ {
1869
+ id: gen("accordion"),
1870
+ type: "accordion",
1871
+ props: { allowMultiple: false, defaultOpenIndex: 0, icon: "chevron", faqSchema: true },
1872
+ styles: {
1873
+ base: {
1874
+ display: "flex",
1875
+ flexDirection: "column",
1876
+ width: "100%",
1877
+ borderTop: "1px solid #e2e8f0"
1878
+ }
1879
+ },
1880
+ children: [
1881
+ faqItem(
1882
+ gen,
1883
+ "What exactly do I get?",
1884
+ "Instant access to the full program, all bonuses, and every future update."
1885
+ ),
1886
+ faqItem(
1887
+ gen,
1888
+ "How long do I have access?",
1889
+ "Lifetime access \u2014 learn at your own pace, on any device."
1890
+ ),
1891
+ faqItem(
1892
+ gen,
1893
+ "Is there a money-back guarantee?",
1894
+ "Yes. If you are not satisfied within 30 days, we refund you in full."
1895
+ ),
1896
+ faqItem(
1897
+ gen,
1898
+ "How do I pay?",
1899
+ "We accept cards, bank transfer, and e-wallets through a secure checkout."
1900
+ )
1901
+ ]
1902
+ }
1903
+ ],
1904
+ {},
1905
+ "760px"
1906
+ )
1907
+ },
1908
+ {
1909
+ id: "sales-testimonials",
1910
+ name: "Testimonials Carousel",
1911
+ category: SALES_CATEGORY,
1912
+ categoryLabel: SALES_CATEGORY_LABEL,
1913
+ description: "Customer testimonial slider with star ratings",
1914
+ icon: "star",
1915
+ createNodeTree: (gen = defaultGenId) => sectionShell(
1916
+ gen,
1917
+ [
1918
+ ...sectionHeading(gen, "What Our Customers Say"),
1919
+ {
1920
+ id: gen("carousel"),
1921
+ type: "carousel",
1922
+ props: {
1923
+ autoplay: true,
1924
+ interval: 6e3,
1925
+ loop: true,
1926
+ showDots: true,
1927
+ showArrows: true,
1928
+ ariaLabel: "Testimonials"
1929
+ },
1930
+ styles: {
1931
+ base: {
1932
+ position: "relative",
1933
+ width: "100%",
1934
+ overflow: "hidden",
1935
+ backgroundColor: "#f8fafc",
1936
+ borderRadius: "16px"
1937
+ }
1938
+ },
1939
+ children: [
1940
+ testimonialSlide(
1941
+ gen,
1942
+ "This completely changed how I run my business. Worth every cent.",
1943
+ "Sarah K.",
1944
+ "Founder",
1945
+ 5
1946
+ ),
1947
+ testimonialSlide(
1948
+ gen,
1949
+ "Clear, practical, and easy to follow. I saw results in the first week.",
1950
+ "Budi S.",
1951
+ "Marketing Lead",
1952
+ 4.5
1953
+ ),
1954
+ testimonialSlide(
1955
+ gen,
1956
+ "The support team is amazing and the material is top-notch.",
1957
+ "Aisha R.",
1958
+ "Freelancer",
1959
+ 5
1960
+ )
1961
+ ]
1962
+ }
1963
+ ],
1964
+ { base: { backgroundColor: "#ffffff" } },
1965
+ "760px"
1966
+ )
1967
+ },
1968
+ {
1969
+ id: "sales-countdown-banner",
1970
+ name: "Countdown Banner",
1971
+ category: SALES_CATEGORY,
1972
+ categoryLabel: SALES_CATEGORY_LABEL,
1973
+ description: "Limited-time offer banner with an evergreen countdown timer and CTA",
1974
+ icon: "clock",
1975
+ createNodeTree: (gen = defaultGenId) => sectionShell(
1976
+ gen,
1977
+ [
1978
+ ...sectionHeading(gen, "Special Launch Price Ends Soon", void 0, "#ffffff"),
1979
+ {
1980
+ id: gen("countdown"),
1981
+ type: "countdown",
1982
+ props: {
1983
+ mode: "evergreen",
1984
+ durationMinutes: 30,
1985
+ format: "d h m s",
1986
+ labelDays: "Days",
1987
+ labelHours: "Hours",
1988
+ labelMinutes: "Minutes",
1989
+ labelSeconds: "Seconds",
1990
+ expireBehavior: "text",
1991
+ expiredText: "The special price has ended.",
1992
+ storage: "session",
1993
+ ariaLabel: "Offer ends in"
1994
+ },
1995
+ styles: {
1996
+ base: {
1997
+ display: "flex",
1998
+ alignItems: "center",
1999
+ justifyContent: "center",
2000
+ gap: "16px",
2001
+ fontSize: "36px",
2002
+ fontWeight: "800",
2003
+ color: "#ffffff",
2004
+ fontVariantNumeric: "tabular-nums"
2005
+ },
2006
+ mobile: { fontSize: "28px", gap: "8px" }
2007
+ }
2008
+ },
2009
+ {
2010
+ id: gen("button"),
2011
+ type: "button",
2012
+ props: { label: "Claim the Offer", href: "#checkout" },
2013
+ styles: {
2014
+ base: {
2015
+ alignSelf: "center",
2016
+ backgroundColor: "#f59e0b",
2017
+ color: "#0f172a",
2018
+ padding: "14px 32px",
2019
+ borderRadius: "9999px",
2020
+ fontSize: "16px",
2021
+ fontWeight: "700"
2022
+ }
2023
+ }
2024
+ }
2025
+ ],
2026
+ { base: { backgroundColor: "#0f172a" } }
2027
+ )
2028
+ },
2029
+ {
2030
+ id: "sales-guarantee",
2031
+ name: "Money-Back Guarantee",
2032
+ category: SALES_CATEGORY,
2033
+ categoryLabel: SALES_CATEGORY_LABEL,
2034
+ description: "Risk-reversal guarantee section with shield icon",
2035
+ icon: "badge",
2036
+ createNodeTree: (gen = defaultGenId) => sectionShell(
2037
+ gen,
2038
+ [
2039
+ {
2040
+ id: gen("flex"),
2041
+ type: "flex",
2042
+ styles: {
2043
+ base: {
2044
+ display: "flex",
2045
+ flexDirection: "row",
2046
+ alignItems: "center",
2047
+ gap: "24px",
2048
+ padding: "32px",
2049
+ backgroundColor: "#f0fdf4",
2050
+ border: "2px dashed #16a34a",
2051
+ borderRadius: "16px"
2052
+ },
2053
+ mobile: { flexDirection: "column", textAlign: "center", padding: "24px" }
2054
+ },
2055
+ children: [
2056
+ {
2057
+ id: gen("icon"),
2058
+ type: "icon",
2059
+ props: { name: "shield-check", size: 64, color: "#16a34a", ariaLabel: "Guarantee" }
2060
+ },
2061
+ {
2062
+ id: gen("flex"),
2063
+ type: "flex",
2064
+ styles: { base: { display: "flex", flexDirection: "column", gap: "8px" } },
2065
+ children: [
2066
+ {
2067
+ id: gen("heading"),
2068
+ type: "heading",
2069
+ props: { text: "30-Day Money-Back Guarantee", level: 3 },
2070
+ styles: {
2071
+ base: { fontSize: "22px", fontWeight: "800", color: "#14532d", margin: "0" }
2072
+ }
2073
+ },
2074
+ {
2075
+ id: gen("paragraph"),
2076
+ type: "paragraph",
2077
+ props: {
2078
+ text: "Try it risk-free. If it is not right for you, email us within 30 days and we will refund every cent \u2014 no questions asked."
2079
+ },
2080
+ styles: {
2081
+ base: { fontSize: "15px", color: "#166534", margin: "0", lineHeight: "1.6" }
2082
+ }
2083
+ }
2084
+ ]
2085
+ }
2086
+ ]
2087
+ }
2088
+ ],
2089
+ {},
2090
+ "760px"
2091
+ )
2092
+ },
2093
+ {
2094
+ id: "sales-trust-badges",
2095
+ name: "Trust Badges",
2096
+ category: SALES_CATEGORY,
2097
+ categoryLabel: SALES_CATEGORY_LABEL,
2098
+ description: "Row of trust signals: secure payment, guarantee, support, and delivery",
2099
+ icon: "grid",
2100
+ createNodeTree: (gen = defaultGenId) => sectionShell(
2101
+ gen,
2102
+ [
2103
+ {
2104
+ id: gen("grid"),
2105
+ type: "grid",
2106
+ styles: {
2107
+ base: {
2108
+ display: "grid",
2109
+ gridTemplateColumns: "repeat(4, minmax(0, 1fr))",
2110
+ gap: "16px"
2111
+ },
2112
+ mobile: { gridTemplateColumns: "repeat(2, minmax(0, 1fr))" }
2113
+ },
2114
+ children: [
2115
+ badgeItem(gen, "lock", "Secure Payment"),
2116
+ badgeItem(gen, "shield-check", "Money-Back Guarantee"),
2117
+ badgeItem(gen, "headphones", "24/7 Support"),
2118
+ badgeItem(gen, "zap", "Instant Access")
2119
+ ]
2120
+ },
2121
+ {
2122
+ id: gen("divider"),
2123
+ type: "divider",
2124
+ props: { lineStyle: "solid", thickness: 1, color: "#e2e8f0", label: "" }
2125
+ },
2126
+ {
2127
+ id: gen("paragraph"),
2128
+ type: "paragraph",
2129
+ props: { text: "Trusted by 10,000+ customers." },
2130
+ styles: {
2131
+ base: { fontSize: "14px", color: "#64748b", textAlign: "center", margin: "0" }
2132
+ }
2133
+ }
2134
+ ],
2135
+ { base: { paddingTop: "32px", paddingBottom: "32px" } }
2136
+ )
2137
+ },
2138
+ {
2139
+ id: "sales-plan-comparison",
2140
+ name: "Plan Comparison",
2141
+ category: SALES_CATEGORY,
2142
+ categoryLabel: SALES_CATEGORY_LABEL,
2143
+ description: "Monthly/yearly tabs comparing pricing plans side by side",
2144
+ icon: "columns",
2145
+ createNodeTree: (gen = defaultGenId) => sectionShell(gen, [
2146
+ ...sectionHeading(gen, "Choose Your Plan", "Switch between monthly and yearly billing."),
2147
+ {
2148
+ id: gen("tabs"),
2149
+ type: "tabs",
2150
+ props: { activeIndex: 0, ariaLabel: "Billing period" },
2151
+ styles: { base: { display: "flex", flexDirection: "column", width: "100%" } },
2152
+ children: [
2153
+ {
2154
+ id: gen("tab-panel"),
2155
+ type: "tab-panel",
2156
+ props: { label: "Monthly" },
2157
+ styles: { base: { paddingTop: "24px" } },
2158
+ children: [
2159
+ planColumns(gen, [
2160
+ ["Basic", "$19 / mo", ["1 project", "Email support", "Core features"], false],
2161
+ [
2162
+ "Pro",
2163
+ "$49 / mo",
2164
+ ["Unlimited projects", "Priority support", "All features"],
2165
+ true
2166
+ ]
2167
+ ])
2168
+ ]
2169
+ },
2170
+ {
2171
+ id: gen("tab-panel"),
2172
+ type: "tab-panel",
2173
+ props: { label: "Yearly" },
2174
+ styles: { base: { paddingTop: "24px" } },
2175
+ children: [
2176
+ planColumns(gen, [
2177
+ [
2178
+ "Basic",
2179
+ "$190 / yr",
2180
+ ["1 project", "Email support", "Core features", "2 months free"],
2181
+ false
2182
+ ],
2183
+ [
2184
+ "Pro",
2185
+ "$490 / yr",
2186
+ ["Unlimited projects", "Priority support", "All features", "2 months free"],
2187
+ true
2188
+ ]
2189
+ ])
2190
+ ]
2191
+ }
2192
+ ]
2193
+ },
2194
+ {
2195
+ id: gen("spacer"),
2196
+ type: "spacer",
2197
+ styles: { base: { width: "100%", height: "16px" }, mobile: { height: "8px" } }
2198
+ }
2199
+ ])
2200
+ }
2201
+ ];
2202
+
1617
2203
  // src/blocks/index.ts
1618
2204
  var STARTER_BLOCKS = [
1619
2205
  ...LAYOUT_STARTER_BLOCKS,
1620
2206
  ...UI_STARTER_BLOCKS,
1621
- ...FORM_STARTER_BLOCKS
2207
+ ...FORM_STARTER_BLOCKS,
2208
+ ...SALES_STARTER_BLOCKS
1622
2209
  ];
1623
2210
 
1624
2211
  export {
@@ -1626,6 +2213,7 @@ export {
1626
2213
  LAYOUT_STARTER_BLOCKS,
1627
2214
  UI_STARTER_BLOCKS,
1628
2215
  FORM_STARTER_BLOCKS,
2216
+ SALES_STARTER_BLOCKS,
1629
2217
  STARTER_BLOCKS
1630
2218
  };
1631
- //# sourceMappingURL=chunk-JTQ35OQQ.js.map
2219
+ //# sourceMappingURL=chunk-DIZKTXJI.js.map