PageSourceSearch

https://www.jaaga.ai/assets/FeaturedProducts-ea2e53ef.js

js jaaga.ai collected 2026-09-24 10:55:43 UTC 15,002 bytes, 220 lines download raw bytes

1import{r as o,j as e,g as s,A as n,L as d}from"./index-a9db3765.js";import{S as l}from"./HomePage-e2efe0ff.js";import{C as c}from"./clipboard-check-f8d4e0bc.js";import{S as f}from"./scale-a83c394d.js";import"./index-da0747ee.js";import"./useStates-611fbf30.js";import"./useQuery-6fefbac0.js";import"./PropertyDocumentCard-d04a6a8e.js";import"./sparkles-c7f98271.js";import"./Divider-52c88025.js";import"./dividerClasses-07928e34.js";import"./map-pin-8192f3ac.js";import"./chevron-down-5c01a0da.js";import"./search-96295409.js";import"./users-946abc1b.js";import"./landmark-faad4c98.js";import"./shield-check-e5caee76.js";import"./trending-up-d7642243.js";import"./circle-check-fc7df41c.js";/* empty css                       */const x=[{key:"audit",badge:"JaaGa Audit Report",Icon:c,soon:!1,cardTitle:"Is this property safe to buy?",cardDesc:"40+ government records checked. Every risk flagged. One clear verdict.",chips:["Title Clarity","EC Check","RERA Compliance","Tax Dues"],detailTitle:"Get your property audit report in minutes",detailDesc:"Before you commit to a property, make sure everything checks out. JaaGa verifies 40+ government records (Sale Deed, EC, Property Tax, RERA) and delivers one comprehensive report with every risk flagged and a buy/sell/wait verdict.",ctas:[{label:"Get My Audit Report",to:"/states",primary:!0},{label:"View Sample",sample:!0}]},{key:"maps",badge:"JaaGa Maps",Icon:s,soon:!0,cardTitle:"See every plot",cardDesc:"Precisely locate and measure any land on a live, survey-backed map.",chips:["Boundaries","Area Measurement","EMI Calculator","Registration Cost"],detailTitle:"See every property on the map",detailDesc:"Search any village, survey number, or location to explore property boundaries, parcel details, and land measurements on an interactive map. All the tools you need (measurement, EMI, registration cost) in one place.",ctas:[{label:"Explore Maps",to:"/maps",primary:!0}]},{key:"legal",badge:"Legal Module",Icon:f,soon:!1,cardTitle:"Automated due diligence, bank-ready",cardDesc:"From document fetch to signed report, fully automated, zero manual effort.",chips:["EC Auto-fetch","Prohibitory Check","AI Summary","Bank Template"],detailTitle:"From documents to bank-ready report in minutes",detailDesc:"JaaGa automatically fetches EC and Prohibitory Check, analyses and highlights risks, generates an AI summary of all uploaded and fetched documents, then populates a bank-approved template, ready to sign. No manual steps, no back and forth.",ctas:[{label:"Explore Legal Module",href:"https://partner.jaaga.ai/",primary:!0}]}],h=({Icon:a,children:p})=>e.jsxs("span",{className:"fp-badge",children:[e.jsx(a,{className:"fp-badge-icon",size:15,strokeWidth:2.2,"aria-hidden":"true"}),p]}),m=({cta:a,onSample:p})=>{const r=a.primary?"fp-btn fp-btn--primary":"fp-btn fp-btn--ghost",t=e.jsxs(e.Fragment,{children:[a.label,a.primary&&e.jsx(n,{size:17,strokeWidth:2.4,"aria-hidden":"true"})]});return a.sample?e.jsx("button",{type:"button",onClick:p,className:r,children:t}):a.href?e.jsx("a",{href:a.href,target:"_blank",rel:"noopener noreferrer",className:r,children:t}):e.jsx(d,{to:a.to,onClick:()=>window.scrollTo(0,0),className:r,children:t})},g=({p:a})=>e.jsxs("div",{className:"fp-card jh-feature-card",children:[e.jsx(h,{Icon:a.Icon,children:a.badge}),e.jsx("h3",{className:"fp-card-title",children:a.cardTitle}),e.jsx("p",{className:"fp-card-desc",children:a.cardDesc}),e.jsx("ul",{className:"fp-chips","aria-label":`${a.badge} highlights`,children:a.chips.map(p=>e.jsxs("li",{className:"fp-chip",children:[e.jsx("span",{className:"fp-chip-dot","aria-hidden":"true"}),p]},p))})]}),b=({p:a,onSample:p})=>e.jsxs("div",{className:"fp-detail",children:[e.jsx("p",{className:"fp-detail-eyebrow",children:a.badge}),e.jsx("h3",{className:"fp-detail-title",children:a.detailTitle}),e.jsx("p",{className:"fp-detail-desc",children:a.detailDesc}),e.jsx("div",{className:"fp-detail-cta",children:a.ctas.map(r=>e.jsx(m,{cta:r,onSample:p},r.label))})]}),G=()=>{const[a,p]=o.useState(!1);return e.jsxs("section",{className:"fp-section","aria-labelledby":"fp-heading",children:[e.jsxs("div",{className:"fp-wrap",children:[e.jsxs("header",{className:"fp-header",children:[e.jsxs("p",{className:"fp-eyebrow",children:[e.jsx("span",{className:"fp-eyebrow-rule","aria-hidden":"true"}),"Featured Products",e.jsx("span",{className:"fp-eyebrow-rule","aria-hidden":"true"})]}),e.jsxs("h2",{id:"fp-heading",className:"fp-display",children:["Everything you need for a ",e.jsx("span",{className:"fp-accent",children:"confident property decision"})]}),e.jsx("p",{className:"fp-sub",children:"All your property records, checks, and reports, in one simple place."})]}),e.jsx("div",{className:"fp-rows",children:x.map((r,t)=>{const i=t%2===0;return e.jsxs("div",{className:"fp-row",children:[e.jsx("div",{className:`fp-col ${i?"fp-col--card-l":"fp-col--card-r"}`,children:e.jsx(g,{p:r})}),e.jsx("div",{className:`fp-col ${i?"fp-col--detail-r":"fp-col--detail-l"}`,children:e.jsx(b,{p:r,onSample:()=>p(!0)})})]},r.key)})})]}),e.jsx(l,{open:a,onClose:()=>p(!1)}),e.jsx("style",{children:`
2        .fp-section { padding: 72px 0 84px; background: #fff; }
3        .fp-wrap { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 24px; }
4
5        /* ── Header ── */
6        .fp-header { text-align: center; max-width: 760px; margin: 0 auto 56px; }
7        .fp-eyebrow {
8          display: inline-flex; align-items: center; gap: 14px;
9          font-size: 13px; font-weight: 700; letter-spacing: 0.22em;
10          text-transform: uppercase; color: #8a93a6; margin: 0 0 14px;
11        }
12        .fp-eyebrow-rule { display: block; width: 34px; height: 1px; background: #c7cedb; }
13        .fp-display {
14          font-size: clamp(30px, 4.4vw, 46px); line-height: 1.08;
15          font-weight: 800; letter-spacing: -0.02em; color: #14306b; margin: 0;
16        }
17        .fp-accent { color: #f0a500; }
18        .fp-sub {
19          margin: 18px auto 0; max-width: 560px;
20          font-size: 17px; line-height: 1.6; color: #6b7488;
21        }
22        /* Keep the heading + sub each on a single line from tablet up */
23        @media (min-width: 768px) {
24          .fp-header { max-width: none; }
25          .fp-display, .fp-sub { white-space: nowrap; }
26          .fp-sub { max-width: none; }
27        }
28
29        /* ── Rows ── */
30        .fp-rows { display: flex; flex-direction: column; gap: 56px; }
31        .fp-row {
32          display: grid; grid-template-columns: 1fr 1fr;
33          gap: 56px; align-items: center;
34        }
35        .fp-col { min-width: 0; }
36        /* Desktop ordering, card on left or right per row */
37        .fp-col--card-l   { order: 1; }
38        .fp-col--detail-r { order: 2; }
39        .fp-col--detail-l { order: 1; }
40        .fp-col--card-r   { order: 2; }
41
42        /* ── Teaser card ── */
43        .fp-card {
44          position: relative;
45          background: linear-gradient(150deg, #f3f6fb 0%, #eef2f9 100%);
46          border: 1px solid #e6ebf3;
47          border-radius: 24px;
48          padding: 34px 36px 36px;
49          box-shadow: 0 30px 60px -44px rgba(20, 48, 107, 0.4);
50        }
51        .fp-soon {
52          position: absolute; top: 22px; right: 22px;
53          background: linear-gradient(90deg, #f0a500, #ffc247);
54          color: #4a3000; font-size: 11px; font-weight: 800;
55          letter-spacing: 0.08em; text-transform: uppercase;
56          padding: 5px 12px; border-radius: 999px;
57          box-shadow: 0 6px 16px -6px rgba(240, 165, 0, 0.6);
58        }
59        .fp-badge {
60          display: inline-flex; align-items: center; gap: 8px;
61          background: #fff; border: 1px solid #e3e8f1; border-radius: 999px;
62          padding: 7px 15px 7px 13px;
63          font-size: 12.5px; font-weight: 800; letter-spacing: 0.07em;
64          text-transform: uppercase; color: #b07400;
65          box-shadow: 0 2px 8px -4px rgba(20, 48, 107, 0.25);
66        }
67        .fp-badge-icon { color: #c98a00; }
68        .fp-card-title {
69          margin: 22px 0 0; font-size: clamp(23px, 2.6vw, 29px);
70          font-weight: 800; letter-spacing: -0.015em; line-height: 1.18; color: #14306b;
71        }
72        .fp-card-desc {
73          margin: 14px 0 0; font-size: 16.5px; line-height: 1.6; color: #56607a;
74        }
75        .fp-chips {
76          list-style: none; margin: 24px 0 0; padding: 0;
77          display: flex; flex-wrap: wrap; gap: 10px;
78        }
79        .fp-chip {
80          display: inline-flex; align-items: center; gap: 8px;
81          background: #fff; border: 1px solid #e3e8f1; border-radius: 999px;
82          padding: 8px 15px; font-size: 14px; font-weight: 700; color: #14306b;
83          box-shadow: 0 2px 6px -4px rgba(20, 48, 107, 0.22);
84        }
85        .fp-chip-dot {
86          width: 6px; height: 6px; border-radius: 50%;
87          background: #c98a00; flex-shrink: 0;
88        }
89
90        /* ── Detail block ── */
91        .fp-detail { padding: 4px 8px; }
92        .fp-detail-eyebrow {
93          margin: 0 0 14px; font-size: 13px; font-weight: 800;
94          letter-spacing: 0.14em; text-transform: uppercase; color: #c98a00;
95        }
96        .fp-detail-title {
97          margin: 0; font-size: clamp(28px, 3.4vw, 40px);
98          font-weight: 800; letter-spacing: -0.02em; line-height: 1.12; color: #14306b;
99        }
100        .fp-detail-desc {
101          margin: 22px 0 0; font-size: 17px; line-height: 1.72; color: #5a6379;
102          max-width: 520px;
103        }
104        .fp-detail-cta {
105          margin: 30px 0 0; display: flex; flex-wrap: wrap; gap: 14px;
106        }
107        .fp-btn {
108          display: inline-flex; align-items: center; gap: 9px;
109          padding: 15px 26px; border-radius: 14px;
110          font-size: 16px; font-weight: 700; text-decoration: none;
111          transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
112          cursor: pointer;
113        }
114        .fp-btn--primary {
115          background: #14306b; color: #fff;
116          box-shadow: 0 18px 34px -18px rgba(20, 48, 107, 0.7);
117        }
118        .fp-btn--primary:hover {
119          transform: translateY(-2px); background: #0f2657;
120          box-shadow: 0 22px 40px -16px rgba(20, 48, 107, 0.75);
121        }
122        .fp-btn--ghost {
123          background: #fff; color: #14306b; border: 1.5px solid #d8deea;
124        }
125        .fp-btn--ghost:hover {
126          transform: translateY(-2px); border-color: #14306b;
127        }
128
129        /* ── Tablet / mobile ── */
130        @media (max-width: 880px) {
131          .fp-section { padding: 56px 0 64px; }
132          .fp-header { margin-bottom: 40px; }
133          .fp-rows { gap: 40px; }
134          .fp-row { grid-template-columns: 1fr; gap: 24px; }
135          /* Stack with the detail first, the card beneath it, for every row */
136          .fp-col--card-l, .fp-col--card-r { order: 2; }
137          .fp-col--detail-l, .fp-col--detail-r { order: 1; }
138          .fp-detail { padding: 0; }
139          .fp-detail-desc, .fp-sub { max-width: none; }
140          .fp-card { padding: 28px 24px 30px; }
141        }
142        @media (prefers-reduced-motion: reduce) {
143          .fp-btn { transition: none; }
144        }
145
146        /* ── Mobile header: tighter, and always exactly two lines ── */
147        @media (max-width: 640px) {
148          .fp-header { margin-bottom: 28px; }
149          .fp-eyebrow { gap: 10px; margin-bottom: 10px; font-size: 11.5px; }
150          .fp-display {
151            font-size: clamp(20px, 6.4vw, 26px);
152            letter-spacing: -0.01em;
153          }
154          /* Forces the accent phrase onto its own line, so the heading is
155             always exactly two lines regardless of how it would naturally
156             wrap at a given width. */
157          .fp-accent { display: block; margin-top: 2px; }
158          .fp-sub { margin-top: 12px; font-size: 15px; line-height: 1.55; }
159        }
160
161        /* ── Mobile body: scale + align ───────────────────────────────────
162           Below 640px the body kept its desktop metrics, which produced two
163           visible problems: the CTAs sized to their own labels (a 244px
164           primary above a 153px ghost — a ragged right edge), and the chips
165           wrapped to whatever fitted, so each row ended at a different x
166           (297px vs 334px). Both are pinned to a shared grid here, and the
167           type comes down a step so a product isn't two screens tall. */
168        @media (max-width: 640px) {
169          .fp-section { padding: 44px 0 52px; }
170          .fp-wrap { padding: 0 18px; }
171          .fp-rows { gap: 34px; }
172          .fp-row { gap: 20px; }
173
174          /* Detail column */
175          .fp-detail-eyebrow { margin-bottom: 10px; font-size: 11.5px; letter-spacing: 0.12em; }
176          .fp-detail-title {
177            font-size: clamp(21px, 5.8vw, 26px);
178            line-height: 1.18; letter-spacing: -0.015em;
179          }
180          .fp-detail-desc { margin-top: 12px; font-size: 15px; line-height: 1.62; }
181
182          /* CTAs: one column, both full width → edges line up with the card. */
183          .fp-detail-cta { margin-top: 18px; flex-direction: column; gap: 10px; }
184          .fp-btn {
185            width: 100%; justify-content: center;
186            padding: 13px 20px; font-size: 15px; border-radius: 12px;
187          }
188
189          /* Teaser card */
190          .fp-card { padding: 22px 18px 24px; border-radius: 20px; }
191          .fp-soon { top: 16px; right: 16px; font-size: 10px; padding: 4px 10px; }
192          .fp-badge { padding: 6px 12px 6px 10px; font-size: 11px; letter-spacing: 0.05em; }
193          .fp-card-title { margin-top: 16px; font-size: 19px; line-height: 1.24; }
194          .fp-card-desc { margin-top: 10px; font-size: 14.5px; line-height: 1.55; }
195
196          /* Chips: a real 2-up grid instead of free wrapping, so every chip
197             shares a column edge and the rows end flush with the card. */
198          .fp-chips {
199            margin-top: 18px;
200            display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
201          }
202          .fp-chip {
203            padding: 8px 12px; font-size: 12.5px; gap: 7px;
204            min-width: 0; /* allow the grid cell to shrink below content width */
205            white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
206          }
207          /* An odd final chip spans the full width instead of leaving a hole.
208             (All five products ship 4 chips today, so this is just a guard.) */
209          .fp-chip:last-child:nth-child(odd) { grid-column: 1 / -1; }
210        }
211        /* The longest label ("RERA Compliance") clipped at 360px, so trim the
212           chip's own metrics one more step on the narrowest phones rather than
213           shipping a visible ellipsis. */
214        @media (max-width: 375px) {
215          .fp-chips { gap: 7px; }
216          .fp-chip { padding: 7px 10px; font-size: 11.5px; gap: 6px; }
217          .fp-chip-dot { width: 5px; height: 5px; }
218        }
219      `})]})};export{G as default};
220//# sourceMappingURL=FeaturedProducts-ea2e53ef.js.map

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.