Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | 1x 1x 4x 2x 9x 5x 5x 55x | import type { FAQItem } from "./general";
/**
* Placeholder in an answer that `/faq` fills with the live city names at
* render time (`withLiveCities`). Static content cannot know the live list.
*/
export const LIVE_CITIES_TOKEN = "{liveCities}";
/**
* National FAQ for `/faq`. City prices and neighbourhood answers stay on
* the city hub (Hyderabad keeps its own FAQ set). Nothing here names a city;
* the live list arrives through `LIVE_CITIES_TOKEN`.
*/
export const NATIONAL_FAQS: FAQItem[] = [
{
question: "How does Interioring work?",
answer:
"Browse verified interior designers, compare their portfolios, and send a free inquiry to anyone who fits your home. The designer replies to arrange a conversation. You pay the designer directly. Interioring does not charge you to inquire.",
},
{
question: "Are designers on Interioring verified?",
answer:
"Yes. Every designer is reviewed before their profile is published: portfolio, business details, and identity. Profiles that do not meet that bar stay unpublished.",
},
{
question: "Which cities have designer pages?",
answer:
"A city page is published when that city has a published designer, or when we have pinned it live. {liveCities} If your city is not listed yet, you can still send a request and we store it with the city you chose.",
},
{
question: "Can I request a designer in a city that is not listed yet?",
answer:
"Yes. Choose your city on the get-matched form, or type it under Other city. We accept the request and store the city you named, the same as any other inquiry.",
},
{
question: "How do I contact a designer?",
answer:
"Open their profile and send an inquiry, or use Chat on WhatsApp to message Interioring. The designer’s team replies to you directly.",
},
{
question: "Do I pay Interioring or the designer?",
answer:
"You pay the designer. The contract and the payment schedule are between you and the studio. Interioring does not take a fee on the job.",
},
{
question: "Where do interior cost figures come from?",
answer:
"We publish rupee ranges only for a city after the numbers are approved. The cost calculator offers those cities and labels the result as an estimate based on that city’s rates. It is not an India average.",
},
{
question: "Do designers follow vastu?",
answer:
"Many designers can plan a home with vastu preferences: kitchen and entrance placement, room positions, and colours. Say so in your request. Vastu is a design preference, not a separate city service, and not every studio specialises in it.",
},
{
question: "How long does a home interior project take?",
answer:
"A modular kitchen is often a few weeks after the design is signed. A full home is longer and depends on the size of the flat, the finish, and how much civil work is included. Your designer confirms the timeline in the quote.",
},
{
question: "Is a site visit free?",
answer:
"Many designers offer a first visit at no charge so they can measure the home and hear the brief. Ask when you send your inquiry. A visit is not a promise to hire.",
},
{
question: "Can I see past work before I hire?",
answer:
"Yes. Each published profile shows completed projects photographed on site. Use those photos, not stock images, to judge the work.",
},
];
/** "A", "A and B", "A, B and C". */
function joinNames(names: string[]): string {
if (names.length <= 1) return names.join("");
return `${names.slice(0, -1).join(", ")} and ${names[names.length - 1]}`;
}
/**
* Fills `LIVE_CITIES_TOKEN` with the live city names, so the visible answer
* and the FAQPage JSON-LD (both built from the result) say the same thing.
* With no names (API down and no fallback) the sentence is dropped.
*/
export function withLiveCities(
faqs: FAQItem[],
cityNames: string[],
): FAQItem[] {
const names = cityNames.map((n) => n.trim()).filter(Boolean);
const sentence = names.length ? `Live today: ${joinNames(names)}.` : "";
return faqs.map((faq) =>
faq.answer.includes(LIVE_CITIES_TOKEN)
? {
...faq,
answer: faq.answer
.replaceAll(LIVE_CITIES_TOKEN, sentence)
.replace(/\s{2,}/g, " ")
.trim(),
}
: faq,
);
}
|