PageSourceSearch

https://www.tele-blast.com/assets/BlogPage-Cf8jNPlT.js

js tele-blast.com collected 2026-10-07 17:44:57 UTC 17,817 bytes, 411 lines download raw bytes

1import { r as reactExports, j as jsxRuntimeExports } from "./vendor-react-em1ljm69.js";
2import { a as useInternetIdentity } from "./vendor-ic-CYrLubFP.js";
3import { c as useNavigate, L as Link } from "./vendor-router-YtkA8fm7.js";
4import { b as blogPosts, B as BlogCard } from "./blogPosts-Dr5QBf23.js";
5import { d as useSubscription, ab as useSEO, ae as SiteFooter } from "./index-Bp0STQHC.js";
6import { T as TrendingUp, by as Rss, aM as ChevronRight, b8 as BookOpen } from "./vendor-DoRlLPMq.js";
7const blogPageSchema = JSON.stringify({
8  "@context": "https://schema.org",
9  "@type": "Blog",
10  name: "Tele-Blast Blog",
11  description: "Expert guides on SMS automation, lead follow-up, appointment reminders, and business communication tools for small businesses.",
12  url: "https://www.tele-blast.com/blog",
13  publisher: {
14    "@type": "Organization",
15    name: "Tele-Blast",
16    url: "https://www.tele-blast.com",
17    logo: {
18      "@type": "ImageObject",
19      url: "https://www.tele-blast.com/icons/icon-192.svg"
20    }
21  },
22  blogPost: blogPosts.map((p) => ({
23    "@type": "BlogPosting",
24    headline: p.title,
25    url: `https://www.tele-blast.com/blog/${p.slug}`,
26    datePublished: p.datePublished,
27    author: { "@type": "Organization", name: p.author }
28  }))
29});
30const FEATURED_RESOURCES = [
31  {
32    label: "View Pricing — $15/mo",
33    href: "/pricing",
34    accent: true,
35    isLink: true
36  },
37  {
38    label: "Explore Features",
39    href: "/#features",
40    accent: false,
41    isLink: false
42  },
43  { label: "Support Center", href: "/support", accent: false, isLink: true },
44  {
45    label: "Affiliate Program",
46    href: "/affiliate-signup",
47    accent: false,
48    isLink: true
49  }
50];
51function BlogPage() {
52  const navigate = useNavigate();
53  const { login } = useInternetIdentity();
54  const { subscriptionTier, isLoading: subLoading } = useSubscription();
55  const [authInProgress, setAuthInProgress] = reactExports.useState(false);
56  const loginCalledRef = reactExports.useRef(false);
57  async function handleAuth() {
58    if (loginCalledRef.current || authInProgress) return;
59    loginCalledRef.current = true;
60    setAuthInProgress(true);
61    try {
62      await login();
63      try {
64        sessionStorage.setItem("tele_blast_just_logged_in", "true");
65      } catch {
66      }
67      if (!subLoading && subscriptionTier && subscriptionTier !== "none") {
68        navigate({ to: "/dashboard" });
69      } else {
70        navigate({ to: "/pre-signup" });
71      }
72    } catch {
73    } finally {
74      loginCalledRef.current = false;
75      setAuthInProgress(false);
76    }
77  }
78  useSEO({
79    title: "Tele-Blast Blog | Cell Phone CRM, SMS Blast & Power Dialer Tips",
80    description: "Tele-Blast utilizes your cell phone & turns into your own personal business CRM. Expert guides on SMS broadcast, power dialer, and lead management.",
81    canonical: "https://www.tele-blast.com/blog",
82    ogTitle: "Tele-Blast Blog — Business Communication & SMS Automation Tips",
83    ogDescription: "Discover how SMS automation, automated follow-ups, and appointment reminders can save your business time and money.",
84    ogUrl: "https://www.tele-blast.com/blog",
85    ogType: "website",
86    ogImage: "https://www.tele-blast.com/og-image.png",
87    jsonLd: blogPageSchema
88  });
89  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-h-screen bg-background", children: [
90    /* @__PURE__ */ jsxRuntimeExports.jsx(
91      "header",
92      {
93        className: "sticky top-0 z-40 border-b shadow-sm",
94        style: {
95          background: "oklch(0.22 0.12 264)",
96          borderColor: "oklch(0.28 0.12 264)"
97        },
98        children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-6xl mx-auto px-4 sm:px-6 h-14 flex items-center justify-between gap-4", children: [
99          /* @__PURE__ */ jsxRuntimeExports.jsxs(
100            Link,
101            {
102              to: "/",
103              "data-ocid": "blog.nav.home_link",
104              className: "flex items-center gap-2 shrink-0",
105              children: [
106                /* @__PURE__ */ jsxRuntimeExports.jsx(
107                  "div",
108                  {
109                    className: "w-7 h-7 rounded flex items-center justify-center",
110                    style: { background: "oklch(0.56 0.16 44)" },
111                    children: /* @__PURE__ */ jsxRuntimeExports.jsx(TrendingUp, { className: "w-4 h-4 text-white" })
112                  }
113                ),
114                /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-bold text-base tracking-tight", children: "Tele-Blast" })
115              ]
116            }
117          ),
118          /* @__PURE__ */ jsxRuntimeExports.jsxs("nav", { className: "hidden sm:flex items-center gap-6 text-sm font-medium flex-1 ml-8", children: [
119            /* @__PURE__ */ jsxRuntimeExports.jsx(
120              Link,
121              {
122                to: "/",
123                className: "text-white/70 hover:text-white transition-colors duration-200",
124                children: "Home"
125              }
126            ),
127            /* @__PURE__ */ jsxRuntimeExports.jsx(
128              Link,
129              {
130                to: "/blog",
131                className: "text-white font-semibold",
132                style: { color: "oklch(0.75 0.16 44)" },
133                children: "Blog"
134              }
135            ),
136            /* @__PURE__ */ jsxRuntimeExports.jsx(
137              Link,
138              {
139                to: "/pricing",
140                className: "text-white/70 hover:text-white transition-colors duration-200",
141                children: "Pricing"
142              }
143            ),
144            /* @__PURE__ */ jsxRuntimeExports.jsx(
145              Link,
146              {
147                to: "/support",
148                className: "text-white/70 hover:text-white transition-colors duration-200",
149                children: "Support"
150              }
151            ),
152            /* @__PURE__ */ jsxRuntimeExports.jsx(
153              Link,
154              {
155                to: "/affiliate-signup",
156                className: "text-white/70 hover:text-white transition-colors duration-200",
157                children: "Affiliate"
158              }
159            )
160          ] }),
161          /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
162            /* @__PURE__ */ jsxRuntimeExports.jsx(
163              "button",
164              {
165                type: "button",
166                onClick: handleAuth,
167                disabled: authInProgress,
168                "data-ocid": "blog.nav.login_button",
169                className: "text-sm font-medium text-white/70 hover:text-white px-3 py-2 transition-colors duration-200 min-h-[40px] disabled:opacity-60",
170                children: authInProgress ? "Opening…" : "Log In"
171              }
172            ),
173            /* @__PURE__ */ jsxRuntimeExports.jsx(
174              "button",
175              {
176                type: "button",
177                onClick: () => navigate({ to: "/pre-signup" }),
178                "data-ocid": "blog.nav.cta_button",
179                className: "px-4 py-2 rounded-lg text-white text-sm font-semibold min-h-[40px] transition-all duration-200 hover:opacity-90 active:scale-95",
180                style: { background: "oklch(0.56 0.16 44)" },
181                children: "Get Started"
182              }
183            )
184          ] })
185        ] })
186      }
187    ),
188    /* @__PURE__ */ jsxRuntimeExports.jsx(
189      "section",
190      {
191        className: "py-16 sm:py-20 text-white",
192        style: {
193          background: "linear-gradient(160deg, oklch(0.22 0.12 264) 0%, oklch(0.18 0.14 264) 100%)"
194        },
195        children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-6xl mx-auto px-4 sm:px-6 text-center", children: [
196          /* @__PURE__ */ jsxRuntimeExports.jsxs(
197            "div",
198            {
199              className: "inline-flex items-center gap-2 px-3 py-1.5 rounded-full text-xs font-medium mb-6 border",
200              style: {
201                background: "oklch(0.56 0.16 44 / 0.18)",
202                border: "1px solid oklch(0.56 0.16 44 / 0.3)",
203                color: "oklch(0.82 0.14 44)"
204              },
205              children: [
206                /* @__PURE__ */ jsxRuntimeExports.jsx(Rss, { className: "w-3.5 h-3.5" }),
207                "Small Business Resources"
208              ]
209            }
210          ),
211          /* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-4xl sm:text-5xl font-extrabold tracking-tight mb-5 leading-tight", children: "Tele-Blast Blog — Cell Phone CRM & SMS Blast Platform" }),
212          /* @__PURE__ */ jsxRuntimeExports.jsxs(
213            "p",
214            {
215              className: "text-lg sm:text-xl max-w-2xl mx-auto leading-relaxed",
216              style: { color: "oklch(0.98 0 0 / 0.65)" },
217              children: [
218                "Expert guides on",
219                " ",
220                /* @__PURE__ */ jsxRuntimeExports.jsx(
221                  "a",
222                  {
223                    href: "/blog/sms-broadcast-automation",
224                    className: "underline underline-offset-2 hover:opacity-80 transition-opacity",
225                    style: { color: "oklch(0.82 0.14 44)" },
226                    children: "SMS automation"
227                  }
228                ),
229                ", lead follow-ups, and business communication tools that actually work for sales teams."
230              ]
231            }
232          )
233        ] })
234      }
235    ),
236    /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-muted/40 border-b border-border", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-6xl mx-auto px-4 sm:px-6 py-3", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
237      "nav",
238      {
239        className: "flex items-center gap-1 text-sm text-muted-foreground",
240        "aria-label": "Breadcrumb",
241        children: [
242          /* @__PURE__ */ jsxRuntimeExports.jsx(Link, { to: "/", className: "hover:text-foreground transition-colors", children: "Home" }),
243          /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { className: "w-3.5 h-3.5" }),
244          /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-foreground font-medium", children: "Blog" })
245        ]
246      }
247    ) }) }),
248    /* @__PURE__ */ jsxRuntimeExports.jsxs("main", { className: "max-w-6xl mx-auto px-4 sm:px-6 py-12 sm:py-16", children: [
249      /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 mb-10", children: [
250        /* @__PURE__ */ jsxRuntimeExports.jsx(BookOpen, { className: "w-5 h-5 text-accent" }),
251        /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-2xl font-bold text-foreground", children: "Latest Articles" }),
252        /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-auto text-sm text-muted-foreground", children: [
253          blogPosts.length,
254          " articles"
255        ] })
256      ] }),
257      /* @__PURE__ */ jsxRuntimeExports.jsx(
258        "div",
259        {
260          "data-ocid": "blog.list",
261          className: "grid grid-cols-1 sm:grid-cols-2 gap-6",
262          children: blogPosts.map((post, i) => /* @__PURE__ */ jsxRuntimeExports.jsx(
263            BlogCard,
264            {
265              title: post.title,
266              excerpt: post.excerpt,
267              slug: post.slug,
268              date: post.datePublished,
269              readTime: post.readTime,
270              author: post.author,
271              index: i
272            },
273            post.id
274          ))
275        }
276      ),
277      /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-12 grid grid-cols-1 sm:grid-cols-2 gap-6", children: [
278        /* @__PURE__ */ jsxRuntimeExports.jsxs("figure", { className: "rounded-2xl overflow-hidden shadow-md", children: [
279          /* @__PURE__ */ jsxRuntimeExports.jsx(
280            "img",
281            {
282              src: "/assets/generated/sales-agent-cell-phone-crm.dim_800x600.jpg",
283              alt: "Sales agent using cell phone CRM to manage leads and SMS blast campaigns",
284              className: "w-full h-48 object-cover object-center",
285              loading: "lazy",
286              width: "800",
287              height: "300"
288            }
289          ),
290          /* @__PURE__ */ jsxRuntimeExports.jsx("figcaption", { className: "sr-only", children: "Sales agent using Tele-Blast cell phone CRM" })
291        ] }),
292        /* @__PURE__ */ jsxRuntimeExports.jsxs("figure", { className: "rounded-2xl overflow-hidden shadow-md", children: [
293          /* @__PURE__ */ jsxRuntimeExports.jsx(
294            "img",
295            {
296              src: "/assets/generated/sales-rep-mobile-crm-calls.dim_800x600.jpg",
297              alt: "Professional sales representative using mobile CRM on smartphone for power dialer and lead management",
298              className: "w-full h-48 object-cover object-center",
299              loading: "lazy",
300              width: "800",
301              height: "300"
302            }
303          ),
304          /* @__PURE__ */ jsxRuntimeExports.jsx("figcaption", { className: "sr-only", children: "Sales representative using Tele-Blast mobile CRM" })
305        ] })
306      ] }),
307      /* @__PURE__ */ jsxRuntimeExports.jsxs(
308        "div",
309        {
310          className: "mt-8 rounded-2xl p-8 border",
311          style: {
312            background: "oklch(0.22 0.12 264 / 0.04)",
313            borderColor: "oklch(0.22 0.12 264 / 0.1)"
314          },
315          "data-ocid": "blog.featured_resources",
316          children: [
317            /* @__PURE__ */ jsxRuntimeExports.jsx(
318              "h2",
319              {
320                className: "text-lg font-bold mb-2",
321                style: { color: "oklch(0.22 0.12 264)" },
322                children: "Explore Tele-Blast"
323              }
324            ),
325            /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground mb-6", children: "Power Dialer, SMS Blast & CRM for sales teams — starting at $15/mo." }),
326            /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-wrap gap-3", children: FEATURED_RESOURCES.map(
327              ({ label, href, accent, isLink }) => isLink ? /* @__PURE__ */ jsxRuntimeExports.jsx(
328                Link,
329                {
330                  to: href,
331                  className: "inline-flex items-center px-4 py-2 rounded-lg text-sm font-semibold transition-all duration-200 hover:opacity-90 active:scale-95",
332                  style: accent ? { background: "oklch(0.56 0.16 44)", color: "white" } : {
333                    background: "oklch(0.22 0.12 264 / 0.08)",
334                    color: "oklch(0.22 0.12 264)",
335                    border: "1px solid oklch(0.22 0.12 264 / 0.15)"
336                  },
337                  "data-ocid": `blog.resources.${label.toLowerCase().replace(/[^a-z0-9]+/g, "_")}`,
338                  children: label
339                },
340                label
341              ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
342                "a",
343                {
344                  href,
345                  className: "inline-flex items-center px-4 py-2 rounded-lg text-sm font-semibold transition-all duration-200 hover:opacity-90 active:scale-95",
346                  style: {
347                    background: "oklch(0.22 0.12 264 / 0.08)",
348                    color: "oklch(0.22 0.12 264)",
349                    border: "1px solid oklch(0.22 0.12 264 / 0.15)"
350                  },
351                  "data-ocid": `blog.resources.${label.toLowerCase().replace(/[^a-z0-9]+/g, "_")}`,
352                  children: label
353                },
354                label
355              )
356            ) })
357          ]
358        }
359      )
360    ] }),
361    /* @__PURE__ */ jsxRuntimeExports.jsx(
362      "section",
363      {
364        className: "py-14",
365        style: {
366          background: "linear-gradient(160deg, oklch(0.22 0.12 264) 0%, oklch(0.18 0.14 264) 100%)"
367        },
368        children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-2xl mx-auto px-4 sm:px-6 text-center", children: [
369          /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-2xl sm:text-3xl font-bold text-white mb-4", children: "Ready to Automate Your Business Communication?" }),
370          /* @__PURE__ */ jsxRuntimeExports.jsx(
371            "p",
372            {
373              className: "mb-8 leading-relaxed",
374              style: { color: "oklch(0.98 0 0 / 0.65)" },
375              children: "Join sales teams saving 5–10 hours every week with Tele-Blast power dialer, SMS blast, and CRM pipeline."
376            }
377          ),
378          /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col sm:flex-row items-center justify-center gap-3", children: [
379            /* @__PURE__ */ jsxRuntimeExports.jsx(
380              "button",
381              {
382                type: "button",
383                onClick: () => navigate({ to: "/pre-signup" }),
384                "data-ocid": "blog.cta.primary_button",
385                className: "inline-flex items-center gap-2 px-6 py-3 rounded-xl text-white font-semibold hover:opacity-90 transition-colors text-base",
386                style: { background: "oklch(0.56 0.16 44)" },
387                children: "Get Started — $15/mo"
388              }
389            ),
390            /* @__PURE__ */ jsxRuntimeExports.jsx(
391              Link,
392              {
393                to: "/pricing",
394                className: "inline-flex items-center gap-2 px-6 py-3 rounded-xl font-semibold text-base transition-colors hover:bg-white/15",
395                style: {
396                  color: "oklch(0.98 0 0 / 0.8)",
397                  border: "1.5px solid oklch(0.98 0 0 / 0.25)"
398                },
399                children: "View Pricing"
400              }
401            )
402          ] })
403        ] })
404      }
405    ),
406    /* @__PURE__ */ jsxRuntimeExports.jsx(SiteFooter, {})
407  ] });
408}
409export {
410  BlogPage as default
411};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.