@burdenoff/website-sdk 2026.923.1 → 2026.923.3
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/components/explore.js +138 -70
- package/dist/components/explore.js.map +1 -1
- package/dist/components/explore.mjs +138 -70
- package/dist/components/explore.mjs.map +1 -1
- package/dist/index.d.mts +5 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +155 -70
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +152 -71
- package/dist/index.mjs.map +1 -1
- package/dist/utils/index.d.mts +55 -1
- package/dist/utils/index.d.ts +55 -1
- package/dist/utils/index.js +17 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +14 -1
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -30,7 +30,7 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
|
|
|
30
30
|
import { VariantProps } from 'class-variance-authority';
|
|
31
31
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
32
32
|
export { B as BrowseStoreResult, G as GroupedStoreProducts, P as ProductCard, a as ProductCategory, R as RatingDistribution, S as SearchSuggestion, b as StarRating, c as StoreBrowsePage, d as StoreBrowsePageProps, e as StoreFacet, f as StoreFacets, g as StoreHomePage, h as StoreHomePageProps, i as StorePageProps, j as StoreProduct, k as StoreProductDetailPage, l as StoreProductDetailPageProps, m as StoreProductDetails, n as StorePublisher, o as StoreReview, p as StoreTerminology, q as StoreTypeFilter, T as TypeBadge, r as formatDownloads, s as formatPrice } from './product-card-CGxETsFa.mjs';
|
|
33
|
-
export { EXPLORE_RECAPTCHA_ACTION, RecaptchaV3, cn, getRecaptchaV3Token, loadRecaptchaV3 } from './utils/index.mjs';
|
|
33
|
+
export { EXPLORE_RECAPTCHA_ACTION, FOOTERLESS_ROUTES, RecaptchaV3, cn, getRecaptchaV3Token, isFooterlessPath, loadRecaptchaV3, normalizeRoutePath, shouldRenderSiteFooter } from './utils/index.mjs';
|
|
34
34
|
import 'clsx';
|
|
35
35
|
|
|
36
36
|
interface CareersSubmissionFormProps {
|
|
@@ -549,6 +549,9 @@ interface ExploreStrings {
|
|
|
549
549
|
* because two phrasings for the same caveat read as two different caveats.
|
|
550
550
|
*/
|
|
551
551
|
conceptIllustration: string;
|
|
552
|
+
/** Rail arrows on the concept strip — pointer devices only. */
|
|
553
|
+
conceptScrollPrev: string;
|
|
554
|
+
conceptScrollNext: string;
|
|
552
555
|
opensInNewTab: string;
|
|
553
556
|
/** Heading over the concept strip on the welcome screen. */
|
|
554
557
|
conceptStripTitle: string;
|
|
@@ -735,7 +738,7 @@ declare function formatAnswerDate(value: string, locale: ExploreLocale): string;
|
|
|
735
738
|
|
|
736
739
|
declare const buttonVariants: (props?: ({
|
|
737
740
|
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
|
|
738
|
-
size?: "
|
|
741
|
+
size?: "icon" | "default" | "sm" | "lg" | null | undefined;
|
|
739
742
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
740
743
|
interface ButtonProps extends react.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
741
744
|
asChild?: boolean;
|
package/dist/index.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
|
|
|
30
30
|
import { VariantProps } from 'class-variance-authority';
|
|
31
31
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
32
32
|
export { B as BrowseStoreResult, G as GroupedStoreProducts, P as ProductCard, a as ProductCategory, R as RatingDistribution, S as SearchSuggestion, b as StarRating, c as StoreBrowsePage, d as StoreBrowsePageProps, e as StoreFacet, f as StoreFacets, g as StoreHomePage, h as StoreHomePageProps, i as StorePageProps, j as StoreProduct, k as StoreProductDetailPage, l as StoreProductDetailPageProps, m as StoreProductDetails, n as StorePublisher, o as StoreReview, p as StoreTerminology, q as StoreTypeFilter, T as TypeBadge, r as formatDownloads, s as formatPrice } from './product-card-CGxETsFa.js';
|
|
33
|
-
export { EXPLORE_RECAPTCHA_ACTION, RecaptchaV3, cn, getRecaptchaV3Token, loadRecaptchaV3 } from './utils/index.js';
|
|
33
|
+
export { EXPLORE_RECAPTCHA_ACTION, FOOTERLESS_ROUTES, RecaptchaV3, cn, getRecaptchaV3Token, isFooterlessPath, loadRecaptchaV3, normalizeRoutePath, shouldRenderSiteFooter } from './utils/index.js';
|
|
34
34
|
import 'clsx';
|
|
35
35
|
|
|
36
36
|
interface CareersSubmissionFormProps {
|
|
@@ -549,6 +549,9 @@ interface ExploreStrings {
|
|
|
549
549
|
* because two phrasings for the same caveat read as two different caveats.
|
|
550
550
|
*/
|
|
551
551
|
conceptIllustration: string;
|
|
552
|
+
/** Rail arrows on the concept strip — pointer devices only. */
|
|
553
|
+
conceptScrollPrev: string;
|
|
554
|
+
conceptScrollNext: string;
|
|
552
555
|
opensInNewTab: string;
|
|
553
556
|
/** Heading over the concept strip on the welcome screen. */
|
|
554
557
|
conceptStripTitle: string;
|
|
@@ -735,7 +738,7 @@ declare function formatAnswerDate(value: string, locale: ExploreLocale): string;
|
|
|
735
738
|
|
|
736
739
|
declare const buttonVariants: (props?: ({
|
|
737
740
|
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
|
|
738
|
-
size?: "
|
|
741
|
+
size?: "icon" | "default" | "sm" | "lg" | null | undefined;
|
|
739
742
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
740
743
|
interface ButtonProps extends react.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
741
744
|
asChild?: boolean;
|
package/dist/index.js
CHANGED
|
@@ -6017,6 +6017,8 @@ var EN = {
|
|
|
6017
6017
|
prevSuggestion: "Previous suggestion",
|
|
6018
6018
|
nextSuggestion: "Next suggestion",
|
|
6019
6019
|
conceptIllustration: "Concept illustration",
|
|
6020
|
+
conceptScrollPrev: "Scroll concepts left",
|
|
6021
|
+
conceptScrollNext: "Scroll concepts right",
|
|
6020
6022
|
opensInNewTab: "opens in a new tab",
|
|
6021
6023
|
conceptStripTitle: "Or start from a concept",
|
|
6022
6024
|
conceptStripLabel: "Concepts you can ask about",
|
|
@@ -6116,6 +6118,8 @@ var ZH = {
|
|
|
6116
6118
|
prevSuggestion: "\u4E0A\u4E00\u4E2A\u5EFA\u8BAE",
|
|
6117
6119
|
nextSuggestion: "\u4E0B\u4E00\u4E2A\u5EFA\u8BAE",
|
|
6118
6120
|
conceptIllustration: "\u6982\u5FF5\u793A\u610F\u56FE",
|
|
6121
|
+
conceptScrollPrev: "\u5411\u5DE6\u6EDA\u52A8\u6982\u5FF5",
|
|
6122
|
+
conceptScrollNext: "\u5411\u53F3\u6EDA\u52A8\u6982\u5FF5",
|
|
6119
6123
|
opensInNewTab: "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00",
|
|
6120
6124
|
conceptStripTitle: "\u6216\u8005\u4ECE\u4E00\u4E2A\u6982\u5FF5\u5F00\u59CB",
|
|
6121
6125
|
conceptStripLabel: "\u4F60\u53EF\u4EE5\u8BE2\u95EE\u7684\u6982\u5FF5",
|
|
@@ -6211,6 +6215,8 @@ var HI = {
|
|
|
6211
6215
|
prevSuggestion: "\u092A\u093F\u091B\u0932\u093E \u0938\u0941\u091D\u093E\u0935",
|
|
6212
6216
|
nextSuggestion: "\u0905\u0917\u0932\u093E \u0938\u0941\u091D\u093E\u0935",
|
|
6213
6217
|
conceptIllustration: "\u0905\u0935\u0927\u093E\u0930\u0923\u093E \u091A\u093F\u0924\u094D\u0930\u0923",
|
|
6218
|
+
conceptScrollPrev: "\u0915\u0949\u0928\u094D\u0938\u0947\u092A\u094D\u091F \u092C\u093E\u090F\u0901 \u0938\u094D\u0915\u094D\u0930\u0949\u0932 \u0915\u0930\u0947\u0902",
|
|
6219
|
+
conceptScrollNext: "\u0915\u0949\u0928\u094D\u0938\u0947\u092A\u094D\u091F \u0926\u093E\u090F\u0901 \u0938\u094D\u0915\u094D\u0930\u0949\u0932 \u0915\u0930\u0947\u0902",
|
|
6214
6220
|
opensInNewTab: "\u0928\u090F \u091F\u0948\u092C \u092E\u0947\u0902 \u0916\u0941\u0932\u0924\u093E \u0939\u0948",
|
|
6215
6221
|
conceptStripTitle: "\u092F\u093E \u0915\u093F\u0938\u0940 \u0905\u0935\u0927\u093E\u0930\u0923\u093E \u0938\u0947 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902",
|
|
6216
6222
|
conceptStripLabel: "\u091C\u093F\u0928 \u0905\u0935\u0927\u093E\u0930\u0923\u093E\u0913\u0902 \u0915\u0947 \u092C\u093E\u0930\u0947 \u092E\u0947\u0902 \u0906\u092A \u092A\u0942\u091B \u0938\u0915\u0924\u0947 \u0939\u0948\u0902",
|
|
@@ -6310,6 +6316,8 @@ var ES = {
|
|
|
6310
6316
|
prevSuggestion: "Sugerencia anterior",
|
|
6311
6317
|
nextSuggestion: "Sugerencia siguiente",
|
|
6312
6318
|
conceptIllustration: "Ilustraci\xF3n del concepto",
|
|
6319
|
+
conceptScrollPrev: "Desplazar conceptos a la izquierda",
|
|
6320
|
+
conceptScrollNext: "Desplazar conceptos a la derecha",
|
|
6313
6321
|
opensInNewTab: "se abre en una pesta\xF1a nueva",
|
|
6314
6322
|
conceptStripTitle: "O empieza por un concepto",
|
|
6315
6323
|
conceptStripLabel: "Conceptos sobre los que puedes preguntar",
|
|
@@ -6409,6 +6417,8 @@ var AR = {
|
|
|
6409
6417
|
prevSuggestion: "\u0627\u0644\u0627\u0642\u062A\u0631\u0627\u062D \u0627\u0644\u0633\u0627\u0628\u0642",
|
|
6410
6418
|
nextSuggestion: "\u0627\u0644\u0627\u0642\u062A\u0631\u0627\u062D \u0627\u0644\u062A\u0627\u0644\u064A",
|
|
6411
6419
|
conceptIllustration: "\u0631\u0633\u0645 \u062A\u0648\u0636\u064A\u062D\u064A \u0644\u0644\u0645\u0641\u0647\u0648\u0645",
|
|
6420
|
+
conceptScrollPrev: "\u062A\u0645\u0631\u064A\u0631 \u0627\u0644\u0645\u0641\u0627\u0647\u064A\u0645 \u0644\u0644\u064A\u0633\u0627\u0631",
|
|
6421
|
+
conceptScrollNext: "\u062A\u0645\u0631\u064A\u0631 \u0627\u0644\u0645\u0641\u0627\u0647\u064A\u0645 \u0644\u0644\u064A\u0645\u064A\u0646",
|
|
6412
6422
|
opensInNewTab: "\u064A\u064F\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629",
|
|
6413
6423
|
conceptStripTitle: "\u0623\u0648 \u0627\u0628\u062F\u0623 \u0645\u0646 \u0645\u0641\u0647\u0648\u0645",
|
|
6414
6424
|
conceptStripLabel: "\u0645\u0641\u0627\u0647\u064A\u0645 \u064A\u0645\u0643\u0646\u0643 \u0627\u0644\u0633\u0624\u0627\u0644 \u0639\u0646\u0647\u0627",
|
|
@@ -6508,6 +6518,8 @@ var TA = {
|
|
|
6508
6518
|
prevSuggestion: "\u0BAE\u0BC1\u0BA8\u0BCD\u0BA4\u0BC8\u0BAF \u0BAA\u0BB0\u0BBF\u0BA8\u0BCD\u0BA4\u0BC1\u0BB0\u0BC8",
|
|
6509
6519
|
nextSuggestion: "\u0B85\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4 \u0BAA\u0BB0\u0BBF\u0BA8\u0BCD\u0BA4\u0BC1\u0BB0\u0BC8",
|
|
6510
6520
|
conceptIllustration: "\u0B95\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1 \u0BB5\u0BBF\u0BB3\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BAE\u0BCD",
|
|
6521
|
+
conceptScrollPrev: "\u0B95\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BB3\u0BC8 \u0B87\u0B9F\u0BA4\u0BC1\u0BAA\u0BC1\u0BB1\u0BAE\u0BCD \u0BA8\u0B95\u0BB0\u0BCD\u0BA4\u0BCD\u0BA4\u0BC1",
|
|
6522
|
+
conceptScrollNext: "\u0B95\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BB3\u0BC8 \u0BB5\u0BB2\u0BA4\u0BC1\u0BAA\u0BC1\u0BB1\u0BAE\u0BCD \u0BA8\u0B95\u0BB0\u0BCD\u0BA4\u0BCD\u0BA4\u0BC1",
|
|
6511
6523
|
opensInNewTab: "\u0BAA\u0BC1\u0BA4\u0BBF\u0BAF \u0BA4\u0BBE\u0BB5\u0BB2\u0BBF\u0BB2\u0BCD \u0BA4\u0BBF\u0BB1\u0B95\u0BCD\u0B95\u0BC1\u0BAE\u0BCD",
|
|
6512
6524
|
conceptStripTitle: "\u0B85\u0BB2\u0BCD\u0BB2\u0BA4\u0BC1 \u0B92\u0BB0\u0BC1 \u0B95\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BBF\u0BB2\u0BBF\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4\u0BC1 \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD",
|
|
6513
6525
|
conceptStripLabel: "\u0BA8\u0BC0\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B95\u0BC7\u0B9F\u0BCD\u0B95\u0B95\u0BCD\u0B95\u0BC2\u0B9F\u0BBF\u0BAF \u0B95\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BB3\u0BCD",
|
|
@@ -12082,6 +12094,28 @@ function ConceptStrip({
|
|
|
12082
12094
|
(current) => current.has(src) ? current : new Set(current).add(src)
|
|
12083
12095
|
);
|
|
12084
12096
|
}, []);
|
|
12097
|
+
const railRef = React.useRef(null);
|
|
12098
|
+
const [canLeft, setCanLeft] = React.useState(false);
|
|
12099
|
+
const [canRight, setCanRight] = React.useState(false);
|
|
12100
|
+
const measureRail = React.useCallback(() => {
|
|
12101
|
+
const el = railRef.current;
|
|
12102
|
+
if (!el) return;
|
|
12103
|
+
setCanLeft(el.scrollLeft > 1);
|
|
12104
|
+
setCanRight(el.scrollLeft + el.clientWidth < el.scrollWidth - 1);
|
|
12105
|
+
}, []);
|
|
12106
|
+
React.useEffect(() => {
|
|
12107
|
+
const el = railRef.current;
|
|
12108
|
+
if (!el) return;
|
|
12109
|
+
measureRail();
|
|
12110
|
+
const onResize = () => measureRail();
|
|
12111
|
+
window.addEventListener("resize", onResize);
|
|
12112
|
+
return () => window.removeEventListener("resize", onResize);
|
|
12113
|
+
}, [measureRail, highlights.length, failed]);
|
|
12114
|
+
const scrollRail = React.useCallback((direction) => {
|
|
12115
|
+
const el = railRef.current;
|
|
12116
|
+
if (!el) return;
|
|
12117
|
+
el.scrollBy({ left: direction * el.clientWidth * 0.8, behavior: "smooth" });
|
|
12118
|
+
}, []);
|
|
12085
12119
|
const visible = highlights.filter(
|
|
12086
12120
|
(highlight) => highlight.imageUrl !== "" && !failed.has(highlight.imageUrl)
|
|
12087
12121
|
).slice(0, MAX_CONCEPT_CARDS);
|
|
@@ -12090,71 +12124,105 @@ function ConceptStrip({
|
|
|
12090
12124
|
"div",
|
|
12091
12125
|
{
|
|
12092
12126
|
"data-boff-explore": "concept-strip-block",
|
|
12093
|
-
className: "boff-explore-rise boff-explore-rise-3 mt-
|
|
12127
|
+
className: "boff-explore-rise boff-explore-rise-3 mt-5",
|
|
12094
12128
|
children: [
|
|
12095
12129
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.conceptStripTitle }),
|
|
12096
|
-
/* @__PURE__ */ jsxRuntime.
|
|
12097
|
-
|
|
12098
|
-
|
|
12099
|
-
|
|
12100
|
-
|
|
12101
|
-
|
|
12102
|
-
|
|
12103
|
-
|
|
12104
|
-
|
|
12105
|
-
|
|
12106
|
-
|
|
12107
|
-
|
|
12108
|
-
|
|
12109
|
-
|
|
12110
|
-
|
|
12111
|
-
|
|
12112
|
-
|
|
12113
|
-
|
|
12114
|
-
|
|
12115
|
-
|
|
12116
|
-
|
|
12117
|
-
|
|
12118
|
-
|
|
12130
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
12131
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12132
|
+
"button",
|
|
12133
|
+
{
|
|
12134
|
+
type: "button",
|
|
12135
|
+
"data-boff-explore": "concept-prev",
|
|
12136
|
+
"aria-label": T.conceptScrollPrev,
|
|
12137
|
+
tabIndex: -1,
|
|
12138
|
+
onClick: () => scrollRail(-1),
|
|
12139
|
+
className: cn(
|
|
12140
|
+
"absolute left-0 top-1/2 z-10 hidden h-8 w-8 -translate-y-1/2 items-center justify-center rounded-full border border-border bg-background/90 text-muted-foreground shadow-sm backdrop-blur transition-opacity hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring sm:flex",
|
|
12141
|
+
canLeft ? "opacity-100" : "pointer-events-none opacity-0"
|
|
12142
|
+
),
|
|
12143
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "h-4 w-4" })
|
|
12144
|
+
}
|
|
12145
|
+
),
|
|
12146
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12147
|
+
"button",
|
|
12148
|
+
{
|
|
12149
|
+
type: "button",
|
|
12150
|
+
"data-boff-explore": "concept-next",
|
|
12151
|
+
"aria-label": T.conceptScrollNext,
|
|
12152
|
+
tabIndex: -1,
|
|
12153
|
+
onClick: () => scrollRail(1),
|
|
12154
|
+
className: cn(
|
|
12155
|
+
"absolute right-0 top-1/2 z-10 hidden h-8 w-8 -translate-y-1/2 items-center justify-center rounded-full border border-border bg-background/90 text-muted-foreground shadow-sm backdrop-blur transition-opacity hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring sm:flex",
|
|
12156
|
+
canRight ? "opacity-100" : "pointer-events-none opacity-0"
|
|
12157
|
+
),
|
|
12158
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" })
|
|
12159
|
+
}
|
|
12160
|
+
),
|
|
12161
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12162
|
+
"ul",
|
|
12163
|
+
{
|
|
12164
|
+
ref: railRef,
|
|
12165
|
+
onScroll: measureRail,
|
|
12166
|
+
"data-boff-explore": "concept-strip",
|
|
12167
|
+
"aria-label": T.conceptStripLabel,
|
|
12168
|
+
className: "boff-explore-strip flex min-w-0 snap-x gap-3 overflow-x-auto pb-1",
|
|
12169
|
+
children: visible.map((highlight) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
12170
|
+
"li",
|
|
12171
|
+
{
|
|
12172
|
+
className: "shrink-0 snap-start",
|
|
12173
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12174
|
+
"button",
|
|
12175
|
+
{
|
|
12176
|
+
"data-boff-explore": "concept-card",
|
|
12177
|
+
"data-product": highlight.product,
|
|
12178
|
+
type: "button",
|
|
12179
|
+
disabled,
|
|
12180
|
+
"aria-label": fill(T.conceptAsk, {
|
|
12119
12181
|
title: highlight.title,
|
|
12120
12182
|
product: highlight.productName
|
|
12121
|
-
})
|
|
12122
|
-
|
|
12123
|
-
|
|
12124
|
-
|
|
12125
|
-
|
|
12126
|
-
|
|
12127
|
-
|
|
12128
|
-
|
|
12129
|
-
|
|
12130
|
-
|
|
12131
|
-
|
|
12132
|
-
|
|
12133
|
-
|
|
12134
|
-
|
|
12135
|
-
|
|
12136
|
-
|
|
12137
|
-
|
|
12138
|
-
|
|
12139
|
-
|
|
12140
|
-
|
|
12141
|
-
|
|
12142
|
-
|
|
12143
|
-
|
|
12144
|
-
|
|
12145
|
-
|
|
12146
|
-
|
|
12147
|
-
|
|
12148
|
-
|
|
12149
|
-
|
|
12150
|
-
|
|
12151
|
-
|
|
12152
|
-
|
|
12153
|
-
|
|
12154
|
-
|
|
12155
|
-
|
|
12156
|
-
|
|
12157
|
-
|
|
12183
|
+
}),
|
|
12184
|
+
onClick: () => onAsk(
|
|
12185
|
+
fill(T.conceptAskQuestion, {
|
|
12186
|
+
title: highlight.title,
|
|
12187
|
+
product: highlight.productName
|
|
12188
|
+
})
|
|
12189
|
+
),
|
|
12190
|
+
className: "group flex w-40 flex-col overflow-hidden rounded-xl border border-border bg-card text-left shadow-sm transition-colors hover:border-primary/50 hover:bg-accent disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring sm:w-48",
|
|
12191
|
+
children: [
|
|
12192
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative block aspect-[16/9] w-full overflow-hidden bg-muted", children: [
|
|
12193
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12194
|
+
"img",
|
|
12195
|
+
{
|
|
12196
|
+
src: highlight.imageUrl,
|
|
12197
|
+
alt: highlight.alt,
|
|
12198
|
+
loading: "lazy",
|
|
12199
|
+
decoding: "async",
|
|
12200
|
+
onError: () => markFailed(highlight.imageUrl),
|
|
12201
|
+
className: "h-full w-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
12202
|
+
}
|
|
12203
|
+
),
|
|
12204
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12205
|
+
"span",
|
|
12206
|
+
{
|
|
12207
|
+
"aria-hidden": "true",
|
|
12208
|
+
className: "pointer-events-none absolute left-1.5 top-1.5 rounded-full border border-border bg-background/90 px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-foreground",
|
|
12209
|
+
children: T.conceptIllustration
|
|
12210
|
+
}
|
|
12211
|
+
)
|
|
12212
|
+
] }),
|
|
12213
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-col gap-0.5 p-2.5", children: [
|
|
12214
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "line-clamp-2 text-xs font-semibold leading-snug text-card-foreground", children: highlight.title }),
|
|
12215
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-[11px] text-muted-foreground", children: highlight.productName })
|
|
12216
|
+
] })
|
|
12217
|
+
]
|
|
12218
|
+
}
|
|
12219
|
+
)
|
|
12220
|
+
},
|
|
12221
|
+
`${highlight.product}:${highlight.url}`
|
|
12222
|
+
))
|
|
12223
|
+
}
|
|
12224
|
+
)
|
|
12225
|
+
] })
|
|
12158
12226
|
]
|
|
12159
12227
|
}
|
|
12160
12228
|
);
|
|
@@ -12271,28 +12339,28 @@ function WelcomeState({
|
|
|
12271
12339
|
onFocus,
|
|
12272
12340
|
disabled
|
|
12273
12341
|
}) {
|
|
12274
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "boff-explore-aura mx-auto my-auto w-full max-w-3xl px-4 py-
|
|
12342
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "boff-explore-aura mx-auto my-auto w-full max-w-3xl px-4 py-5 sm:py-6", children: [
|
|
12275
12343
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "boff-explore-rise text-center", children: [
|
|
12276
12344
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5 rounded-full border border-border bg-muted px-3 py-1 text-xs font-medium text-muted-foreground", children: [
|
|
12277
12345
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "h-3.5 w-3.5" }),
|
|
12278
12346
|
T.badge
|
|
12279
12347
|
] }),
|
|
12280
|
-
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "mt-
|
|
12281
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mx-auto mt-2
|
|
12348
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "mt-3 text-balance break-words text-2xl font-bold tracking-tight sm:text-3xl", children: title }),
|
|
12349
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mx-auto mt-2 max-w-2xl text-pretty text-sm leading-relaxed text-muted-foreground sm:text-base", children: body })
|
|
12282
12350
|
] }),
|
|
12283
|
-
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "boff-explore-rise boff-explore-rise-1 mt-
|
|
12351
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "boff-explore-rise boff-explore-rise-1 mt-5 grid grid-cols-3 gap-2 sm:gap-2.5", children: CAPABILITIES.map(({ icon: Icon, body: capBody }, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12284
12352
|
"li",
|
|
12285
12353
|
{
|
|
12286
|
-
className: "rounded-xl border border-border/70 bg-card/60 p-2.5 text-center transition-colors hover:border-border sm:p-3
|
|
12354
|
+
className: "rounded-xl border border-border/70 bg-card/60 p-2.5 text-center transition-colors hover:border-border sm:p-3 sm:text-left",
|
|
12287
12355
|
children: [
|
|
12288
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mx-auto mb-1.5 flex h-7 w-7 items-center justify-center rounded-lg bg-primary/10 text-primary sm:mx-0 sm:mb-2
|
|
12356
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mx-auto mb-1.5 flex h-7 w-7 items-center justify-center rounded-lg bg-primary/10 text-primary sm:mx-0 sm:mb-2 sm:h-8 sm:w-8", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-3.5 w-3.5 sm:h-4 sm:w-4" }) }),
|
|
12289
12357
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] font-semibold leading-tight text-card-foreground sm:text-sm sm:leading-normal", children: T.capabilities[i] ?? "" }),
|
|
12290
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 hidden text-xs leading-
|
|
12358
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 hidden text-xs leading-snug text-muted-foreground lg:block", children: capBody })
|
|
12291
12359
|
]
|
|
12292
12360
|
},
|
|
12293
12361
|
i
|
|
12294
12362
|
)) }),
|
|
12295
|
-
prompts.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "boff-explore-rise boff-explore-rise-2 mt-
|
|
12363
|
+
prompts.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "boff-explore-rise boff-explore-rise-2 mt-5", children: [
|
|
12296
12364
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.tryAsking }),
|
|
12297
12365
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12298
12366
|
PromptCarousel,
|
|
@@ -12304,7 +12372,7 @@ function WelcomeState({
|
|
|
12304
12372
|
}
|
|
12305
12373
|
)
|
|
12306
12374
|
] }) : null,
|
|
12307
|
-
products.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "boff-explore-rise boff-explore-rise-3 mt-
|
|
12375
|
+
products.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "boff-explore-rise boff-explore-rise-3 mt-5", children: [
|
|
12308
12376
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.focusProduct }),
|
|
12309
12377
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12310
12378
|
ProductStrip,
|
|
@@ -17963,6 +18031,19 @@ function StoreProductDetailPage({
|
|
|
17963
18031
|
] });
|
|
17964
18032
|
}
|
|
17965
18033
|
|
|
18034
|
+
// src/utils/site-chrome.ts
|
|
18035
|
+
var FOOTERLESS_ROUTES = ["/explore"];
|
|
18036
|
+
function normalizeRoutePath(pathname) {
|
|
18037
|
+
const trimmed = pathname.toLowerCase().replace(/\/+$/, "");
|
|
18038
|
+
return trimmed === "" ? "/" : trimmed;
|
|
18039
|
+
}
|
|
18040
|
+
function isFooterlessPath(pathname) {
|
|
18041
|
+
return FOOTERLESS_ROUTES.includes(normalizeRoutePath(pathname));
|
|
18042
|
+
}
|
|
18043
|
+
function shouldRenderSiteFooter(pathname) {
|
|
18044
|
+
return !isFooterlessPath(pathname);
|
|
18045
|
+
}
|
|
18046
|
+
|
|
17966
18047
|
exports.ANSWERS_PATH = ANSWERS_PATH;
|
|
17967
18048
|
exports.ANSWER_HEADING_SHIFT = ANSWER_HEADING_SHIFT;
|
|
17968
18049
|
exports.ANSWER_PATH_PREFIX = ANSWER_PATH_PREFIX;
|
|
@@ -18000,6 +18081,7 @@ exports.ExploreAnswerStyles = ExploreAnswerStyles;
|
|
|
18000
18081
|
exports.ExploreCta = ExploreCta;
|
|
18001
18082
|
exports.ExplorePage = ExplorePage;
|
|
18002
18083
|
exports.FALLBACK_EXPLORE_LIMITS = FALLBACK_EXPLORE_LIMITS;
|
|
18084
|
+
exports.FOOTERLESS_ROUTES = FOOTERLESS_ROUTES;
|
|
18003
18085
|
exports.Input = Input;
|
|
18004
18086
|
exports.Label = Label;
|
|
18005
18087
|
exports.LaunchCountdown = LaunchCountdown;
|
|
@@ -18052,11 +18134,14 @@ exports.getAnswerBySlug = getAnswerBySlug;
|
|
|
18052
18134
|
exports.getConceptBySlug = getConceptBySlug;
|
|
18053
18135
|
exports.getRecaptchaV3Token = getRecaptchaV3Token;
|
|
18054
18136
|
exports.inlineImageOrigins = inlineImageOrigins;
|
|
18137
|
+
exports.isFooterlessPath = isFooterlessPath;
|
|
18055
18138
|
exports.isInlineImageAllowed = isInlineImageAllowed;
|
|
18056
18139
|
exports.isPublishedSourceUrl = isPublishedSourceUrl;
|
|
18057
18140
|
exports.isValidUrl = isValidUrl;
|
|
18058
18141
|
exports.loadRecaptchaV3 = loadRecaptchaV3;
|
|
18059
18142
|
exports.looksLikeDeliverableEmail = looksLikeDeliverableEmail;
|
|
18143
|
+
exports.normalizeRoutePath = normalizeRoutePath;
|
|
18144
|
+
exports.shouldRenderSiteFooter = shouldRenderSiteFooter;
|
|
18060
18145
|
exports.speechLocaleOf = speechLocaleOf;
|
|
18061
18146
|
exports.stopSpeaking = stopSpeaking;
|
|
18062
18147
|
exports.useContentPage = useContentPage;
|