@mohasinac/appkit 4.63.5 ā 4.64.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.
- package/dist/.build-stamp.json +3 -3
- package/dist/_internal/server/features/categories/adapters.d.ts +1 -1
- package/dist/_internal/server/features/categories/adapters.js +13 -0
- package/dist/_internal/server/features/events/like-actions.d.ts +25 -0
- package/dist/_internal/server/features/events/like-actions.js +67 -0
- package/dist/_internal/server/features/events/likes.d.ts +65 -0
- package/dist/_internal/server/features/events/likes.js +146 -0
- package/dist/_internal/server/features/seo/index.d.ts +3 -0
- package/dist/_internal/server/features/seo/index.js +2 -0
- package/dist/_internal/server/features/seo/product-detail-types.d.ts +1 -0
- package/dist/_internal/server/features/seo/product-detail-types.js +26 -0
- package/dist/_internal/server/features/seo/robots.js +20 -1
- package/dist/_internal/server/features/seo/sitemap.js +125 -27
- package/dist/_internal/server/features/seo/static-params.d.ts +107 -0
- package/dist/_internal/server/features/seo/static-params.js +228 -0
- package/dist/_internal/server/features/seo/taxonomy-links.d.ts +44 -0
- package/dist/_internal/server/features/seo/taxonomy-links.js +85 -0
- package/dist/_internal/server/features/stores/adapters.d.ts +2 -2
- package/dist/_internal/server/features/stores/adapters.js +87 -1
- package/dist/_internal/server/functions/scheduled.d.ts +16 -1
- package/dist/_internal/server/functions/scheduled.js +23 -1
- package/dist/_internal/server/jobs/core/sellerStandingRollup.d.ts +63 -0
- package/dist/_internal/server/jobs/core/sellerStandingRollup.js +412 -0
- package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
- package/dist/_internal/server/jobs/handlers/index.js +1 -0
- package/dist/_internal/server/jobs/handlers/sellerStandingRollup.d.ts +12 -0
- package/dist/_internal/server/jobs/handlers/sellerStandingRollup.js +14 -0
- package/dist/_internal/shared/actions/action-registry.js +61 -0
- package/dist/_internal/shared/features/seller-standing/config.d.ts +130 -0
- package/dist/_internal/shared/features/seller-standing/config.js +153 -0
- package/dist/constants/api-endpoints.d.ts +24 -0
- package/dist/constants/api-endpoints.js +8 -0
- package/dist/features/about/components/HelpPageView.js +9 -1
- package/dist/features/account/components/BecomeSellerView.d.ts +15 -3
- package/dist/features/account/components/BecomeSellerView.js +2 -2
- package/dist/features/admin/components/AdminStoreEditorView.d.ts +12 -1
- package/dist/features/admin/components/AdminStoreEditorView.js +30 -2
- package/dist/features/admin/components/AdminStoresGuideView.js +1 -1
- package/dist/features/admin/components/AdminStoresView.js +59 -2
- package/dist/features/admin/components/AdminTrustGuideView.js +10 -0
- package/dist/features/admin/schemas/admin-editor-forms.d.ts +10 -0
- package/dist/features/admin/schemas/admin-editor-forms.js +34 -0
- package/dist/features/blog/components/BlogIndexPageView.js +2 -2
- package/dist/features/blog/components/BlogListView.js +2 -1
- package/dist/features/blog/components/BlogPostView.js +2 -1
- package/dist/features/blog/constants/category-badge.d.ts +33 -0
- package/dist/features/blog/constants/category-badge.js +40 -0
- package/dist/features/categories/components/TaxonomyLinkIndex.d.ts +39 -0
- package/dist/features/categories/components/TaxonomyLinkIndex.js +11 -0
- package/dist/features/categories/schemas/firestore.d.ts +25 -0
- package/dist/features/categories/utils/load-category-options.d.ts +33 -0
- package/dist/features/categories/utils/load-category-options.js +50 -0
- package/dist/features/events/components/EventCard.js +4 -12
- package/dist/features/events/components/EventInsights.d.ts +27 -0
- package/dist/features/events/components/EventInsights.js +10 -0
- package/dist/features/events/components/EventLikeButton.d.ts +21 -0
- package/dist/features/events/components/EventLikeButton.js +59 -0
- package/dist/features/events/components/EventLikersRail.d.ts +23 -0
- package/dist/features/events/components/EventLikersRail.js +54 -0
- package/dist/features/events/components/EventTypeBadge.d.ts +26 -0
- package/dist/features/events/components/EventTypeBadge.js +7 -0
- package/dist/features/events/components/EventsListPageView.js +2 -2
- package/dist/features/events/components/SpinWheel.d.ts +41 -0
- package/dist/features/events/components/SpinWheel.js +128 -0
- package/dist/features/events/components/SpinWheelView.js +36 -15
- package/dist/features/events/constants/event-type-meta.d.ts +54 -0
- package/dist/features/events/constants/event-type-meta.js +109 -0
- package/dist/features/events/repository/event-likes.repository.d.ts +57 -0
- package/dist/features/events/repository/event-likes.repository.js +151 -0
- package/dist/features/events/schemas/firestore.d.ts +111 -0
- package/dist/features/events/schemas/likes.d.ts +81 -0
- package/dist/features/events/schemas/likes.js +59 -0
- package/dist/features/events/types/index.d.ts +7 -0
- package/dist/features/events/utils/carousel-slide.d.ts +42 -0
- package/dist/features/events/utils/carousel-slide.js +174 -0
- package/dist/features/events/utils/event-charts.d.ts +65 -0
- package/dist/features/events/utils/event-charts.js +172 -0
- package/dist/features/faq/constants/help-guides.js +9 -0
- package/dist/features/faq/schemas/firestore.js +1 -0
- package/dist/features/faq/types/index.d.ts +19 -0
- package/dist/features/homepage/components/BrandsSection.js +25 -1
- package/dist/features/homepage/components/HeroCarousel.js +47 -10
- package/dist/features/homepage/types/index.d.ts +7 -0
- package/dist/features/stores/components/InteractiveStoreCard.js +2 -1
- package/dist/features/stores/components/SellerStandingPanel.d.ts +31 -0
- package/dist/features/stores/components/SellerStandingPanel.js +25 -0
- package/dist/features/stores/components/SellerTierBadge.d.ts +57 -0
- package/dist/features/stores/components/SellerTierBadge.js +19 -0
- package/dist/features/stores/components/StoreCapabilitiesGuideView.js +32 -2
- package/dist/features/stores/components/StoreCreateForm.d.ts +46 -0
- package/dist/features/stores/components/StoreCreateForm.js +107 -0
- package/dist/features/stores/components/StoreGuideHubView.js +17 -4
- package/dist/features/stores/components/StoreHeader.js +2 -1
- package/dist/features/stores/repository/store.repository.js +23 -0
- package/dist/features/stores/schemas/firestore.d.ts +60 -1
- package/dist/features/stores/schemas/firestore.js +18 -0
- package/dist/features/stores/schemas/index.d.ts +2 -2
- package/dist/features/stores/schemas/store-create.d.ts +47 -0
- package/dist/features/stores/schemas/store-create.js +86 -0
- package/dist/features/stores/types/index.d.ts +42 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +21 -0
- package/dist/next/routing/route-map.d.ts +3 -1
- package/dist/next/routing/route-map.js +13 -0
- package/dist/schemas/registry.d.ts +10 -0
- package/dist/server.d.ts +5 -0
- package/dist/server.js +10 -0
- package/dist/styles.css +36 -1
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/HorizontalScroller.js +15 -2
- package/dist/ui/components/PageHeroHeading.d.ts +40 -0
- package/dist/ui/components/PageHeroHeading.js +15 -0
- package/dist/ui/components/Typography.d.ts +3 -3
- package/dist/ui/components/Typography.js +59 -31
- package/dist/ui/components/Typography.style.css +35 -0
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.js +1 -0
- package/package.json +1 -1
- package/scripts/seed-cli.mjs +4 -2
|
@@ -158,7 +158,20 @@ export function HorizontalScroller({ children, className = "", gap = 16, snapToI
|
|
|
158
158
|
return;
|
|
159
159
|
const observer = new ResizeObserver(([entry]) => {
|
|
160
160
|
const w = entry.contentRect.width;
|
|
161
|
-
|
|
161
|
+
/*
|
|
162
|
+
* š Clamp the column count to how many items there actually ARE.
|
|
163
|
+
*
|
|
164
|
+
* `perView` says "four across at lg", and the width was divided by that
|
|
165
|
+
* unconditionally ā so a rail holding ONE item pinned it to 25% of the
|
|
166
|
+
* row and left three empty columns. The nav also hides itself at
|
|
167
|
+
* `pageCount <= 1`, so nothing filled or explained the gap: the live
|
|
168
|
+
* "Events & Offers" section rendered one card against ~75% whitespace.
|
|
169
|
+
*
|
|
170
|
+
* Clamping makes a short rail lay its items out across the full width,
|
|
171
|
+
* which is what every other grid in the app already does. A full rail is
|
|
172
|
+
* unaffected ā `min` is a no-op once itemCount >= perView.
|
|
173
|
+
*/
|
|
174
|
+
const count = Math.min(resolvePerView(perView, w), Math.max(itemCount, 1));
|
|
162
175
|
if (count > 0) {
|
|
163
176
|
setColCount(count);
|
|
164
177
|
setItemWidth((w - (count - 1) * gap) / count);
|
|
@@ -167,7 +180,7 @@ export function HorizontalScroller({ children, className = "", gap = 16, snapToI
|
|
|
167
180
|
});
|
|
168
181
|
observer.observe(el);
|
|
169
182
|
return () => observer.disconnect();
|
|
170
|
-
}, [perView, gap, containerRef, updateExtents]);
|
|
183
|
+
}, [perView, gap, containerRef, updateExtents, itemCount]);
|
|
171
184
|
// Recompute extents when content size changes (itemWidth resolved, items count changes).
|
|
172
185
|
useEffect(() => {
|
|
173
186
|
updateExtents();
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The editorial page header ā pill, display heading, rule, subtitle.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this is a component rather than markup in two pages
|
|
5
|
+
*
|
|
6
|
+
* This treatment already existed and was UNREACHABLE. It lived inlined inside
|
|
7
|
+
* `SectionCarousel`, gated on `headingVariant === "editorial"`, so the only
|
|
8
|
+
* surfaces that could use it were homepage rails. `/blog` and `/events` are
|
|
9
|
+
* the two pages the treatment was designed for and they got
|
|
10
|
+
* `<Heading level={1} size="3xl">Blog</Heading>` ā one word, no description,
|
|
11
|
+
* no count, no rule ā because they had no way to reach it.
|
|
12
|
+
*
|
|
13
|
+
* š The ornament is `justify="center"` INSIDE a left-aligned parent in the
|
|
14
|
+
* carousel, so the rule floats mid-column away from the heading it belongs to.
|
|
15
|
+
* Here it is aligned with the heading, which is what it was for.
|
|
16
|
+
*
|
|
17
|
+
* Server-safe: no hooks, no DOM, no `"use client"`. A Server Component page
|
|
18
|
+
* can render it directly.
|
|
19
|
+
*
|
|
20
|
+
* @tag layer:ui
|
|
21
|
+
*/
|
|
22
|
+
import React from "react";
|
|
23
|
+
export interface PageHeroHeadingProps {
|
|
24
|
+
/** Small uppercase label above the heading. */
|
|
25
|
+
pill?: string;
|
|
26
|
+
title: string;
|
|
27
|
+
/** One line under the rule. Say what the page is for. */
|
|
28
|
+
description?: string;
|
|
29
|
+
/**
|
|
30
|
+
* A live figure ā "4 running now", "25 guides". Rendered beside the pill.
|
|
31
|
+
*
|
|
32
|
+
* š Pass a real count or nothing. A hardcoded "Hundreds of articles" on a
|
|
33
|
+
* page showing 25 is the kind of claim nobody re-checks when the number
|
|
34
|
+
* moves.
|
|
35
|
+
*/
|
|
36
|
+
meta?: string;
|
|
37
|
+
align?: "start" | "center";
|
|
38
|
+
className?: string;
|
|
39
|
+
}
|
|
40
|
+
export declare function PageHeroHeading({ pill, title, description, meta, align, className, }: PageHeroHeadingProps): React.JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// Each from its DEFINING module, never the `ui` barrel ā a barrel import from
|
|
3
|
+
// inside `ui/components` is a cycle waiting to happen, and Root Cause #18 is
|
|
4
|
+
// the standing rule against convenience re-exports.
|
|
5
|
+
import { Div } from "./Div.js";
|
|
6
|
+
import { Row, Stack } from "./Layout.js";
|
|
7
|
+
import { Heading, Span, Text } from "./Typography.js";
|
|
8
|
+
const PILL_CLASS = "inline-flex items-center gap-[var(--appkit-space-2)] rounded-full " +
|
|
9
|
+
"border border-primary-500/30 bg-primary-500/10 px-[var(--appkit-space-5)] " +
|
|
10
|
+
"py-[var(--appkit-space-1-5)] text-[length:var(--appkit-text-xs)] font-medium " +
|
|
11
|
+
"tracking-[0.2em] uppercase text-primary-700 dark:text-primary-400 backdrop-blur-sm";
|
|
12
|
+
export function PageHeroHeading({ pill, title, description, meta, align = "start", className = "", }) {
|
|
13
|
+
const alignClass = align === "center" ? "text-center" : "text-left";
|
|
14
|
+
return (_jsxs(Stack, { gap: "xs", className: `${alignClass} ${className}`, children: [(pill || meta) && (_jsxs(Row, { align: "center", justify: align === "center" ? "center" : "start", gap: "sm", wrap: true, className: "mb-3", children: [pill && (_jsxs(Span, { className: PILL_CLASS, children: [_jsx(Span, { className: "w-1.5 h-1.5 bg-primary-500 inline-block", rounded: "full", "aria-hidden": "true" }), pill, _jsx(Span, { className: "w-1.5 h-1.5 bg-primary-500 inline-block", rounded: "full", "aria-hidden": "true" })] })), meta && (_jsx(Text, { size: "xs", color: "muted", transform: "uppercase", className: "tracking-widest", children: meta }))] })), _jsx(Heading, { level: 1, size: "3xl", mdSize: "4xl", weight: "bold", family: "display", className: "mb-1", children: title }), _jsxs(Row, { align: "center", justify: align === "center" ? "center" : "start", gap: "sm", textSize: "xs", color: "faint", className: "mt-1 select-none", "aria-hidden": "true", children: [_jsx(Span, { className: "h-px w-6 bg-current" }), _jsx(Span, { size: "xs", children: "\u2736" }), _jsx(Span, { className: "h-px w-6 bg-current" })] }), description && (_jsx(Div, { className: "mt-3 max-w-2xl", children: _jsx(Text, { size: "base", color: "muted", children: description }) }))] }));
|
|
15
|
+
}
|
|
@@ -19,9 +19,9 @@ declare const TYPOGRAPHY: {
|
|
|
19
19
|
readonly "3xl": "appkit-text--3xl";
|
|
20
20
|
readonly "4xl": "appkit-text--4xl";
|
|
21
21
|
readonly "5xl": "appkit-text--5xl";
|
|
22
|
-
readonly "6xl": "
|
|
23
|
-
readonly "7xl": "
|
|
24
|
-
readonly "8xl": "
|
|
22
|
+
readonly "6xl": "appkit-text--6xl";
|
|
23
|
+
readonly "7xl": "appkit-text--7xl";
|
|
24
|
+
readonly "8xl": "appkit-text--8xl";
|
|
25
25
|
};
|
|
26
26
|
readonly textWeight: {
|
|
27
27
|
readonly light: "appkit-font--light";
|
|
@@ -21,9 +21,15 @@ const TYPOGRAPHY = {
|
|
|
21
21
|
"3xl": "appkit-text--3xl",
|
|
22
22
|
"4xl": "appkit-text--4xl",
|
|
23
23
|
"5xl": "appkit-text--5xl",
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
/*
|
|
25
|
+
* š Real classes, not `text-[length:ā¦]` arbitrary utilities. An arbitrary
|
|
26
|
+
* utility carries only the property its bracket names, so these three set
|
|
27
|
+
* font-size and left line-height to whatever the BASE size class had ā
|
|
28
|
+
* 40px under 96px glyphs on the hero carousel. See Typography.style.css.
|
|
29
|
+
*/
|
|
30
|
+
"6xl": "appkit-text--6xl",
|
|
31
|
+
"7xl": "appkit-text--7xl",
|
|
32
|
+
"8xl": "appkit-text--8xl",
|
|
27
33
|
},
|
|
28
34
|
textWeight: {
|
|
29
35
|
light: "appkit-font--light",
|
|
@@ -91,6 +97,28 @@ function shapingClasses(opts) {
|
|
|
91
97
|
* candidate to the scanner, which copies it verbatim into the generated CSS
|
|
92
98
|
* and produces an unparsable declaration. Every combination below appears as
|
|
93
99
|
* a complete literal so the scanner only ever sees real, generatable classes.
|
|
100
|
+
*
|
|
101
|
+
* āā š EACH ENTRY CARRIES ITS LINE-HEIGHT TOO āāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
102
|
+
*
|
|
103
|
+
* `text-[length:ā¦]` sets FONT-SIZE AND NOTHING ELSE. So before this, a
|
|
104
|
+
* responsive size changed the glyph size at the breakpoint and left
|
|
105
|
+
* line-height at whatever the BASE size class had declared ā the two
|
|
106
|
+
* properties came from different breakpoints and nothing reconciled them.
|
|
107
|
+
*
|
|
108
|
+
* Measured on the live hero carousel (`size="4xl" mdSize="6xl" lgSize="8xl"`):
|
|
109
|
+
* at >=1024px the title drew 96px glyphs inside `.appkit-text--4xl`'s 40px
|
|
110
|
+
* line box. Two lines overlapped each other and spilled ~28px into the eyebrow
|
|
111
|
+
* above and the description below ā the reported unreadable Diwali headline.
|
|
112
|
+
*
|
|
113
|
+
* The paired value is the SAME line-height that size's base class declares in
|
|
114
|
+
* Typography.style.css, so the responsive path now behaves exactly like the
|
|
115
|
+
* base path at that size. That is the invariant that should always have held.
|
|
116
|
+
*
|
|
117
|
+
* š `xs`ā`xl` deliberately carry NO leading. Those sizes declare none in the
|
|
118
|
+
* base CSS either, so the element keeps its component default ā 1.15 under
|
|
119
|
+
* `.appkit-heading`, 1.65 under `.appkit-text`. Pinning one value here would
|
|
120
|
+
* have to pick a winner and would silently retune every small responsive
|
|
121
|
+
* `<Text>` in the app.
|
|
94
122
|
*/
|
|
95
123
|
const RESPONSIVE_TEXT_SIZE_CLASS = {
|
|
96
124
|
"sm:": {
|
|
@@ -99,13 +127,13 @@ const RESPONSIVE_TEXT_SIZE_CLASS = {
|
|
|
99
127
|
base: "sm:text-[length:var(--appkit-text-base)]",
|
|
100
128
|
lg: "sm:text-[length:var(--appkit-text-lg)]",
|
|
101
129
|
xl: "sm:text-[length:var(--appkit-text-xl)]",
|
|
102
|
-
"2xl": "sm:text-[length:var(--appkit-text-2xl)]",
|
|
103
|
-
"3xl": "sm:text-[length:var(--appkit-text-3xl)]",
|
|
104
|
-
"4xl": "sm:text-[length:var(--appkit-text-4xl)]",
|
|
105
|
-
"5xl": "sm:text-[length:var(--appkit-text-5xl)]",
|
|
106
|
-
"6xl": "sm:text-[length:var(--appkit-text-6xl)]",
|
|
107
|
-
"7xl": "sm:text-[length:var(--appkit-text-7xl)]",
|
|
108
|
-
"8xl": "sm:text-[length:var(--appkit-text-8xl)]",
|
|
130
|
+
"2xl": "sm:text-[length:var(--appkit-text-2xl)] sm:leading-[2rem]",
|
|
131
|
+
"3xl": "sm:text-[length:var(--appkit-text-3xl)] sm:leading-[2.25rem]",
|
|
132
|
+
"4xl": "sm:text-[length:var(--appkit-text-4xl)] sm:leading-[2.5rem]",
|
|
133
|
+
"5xl": "sm:text-[length:var(--appkit-text-5xl)] sm:leading-[1]",
|
|
134
|
+
"6xl": "sm:text-[length:var(--appkit-text-6xl)] sm:leading-[1.15]",
|
|
135
|
+
"7xl": "sm:text-[length:var(--appkit-text-7xl)] sm:leading-[1.15]",
|
|
136
|
+
"8xl": "sm:text-[length:var(--appkit-text-8xl)] sm:leading-[1.15]",
|
|
109
137
|
},
|
|
110
138
|
"md:": {
|
|
111
139
|
xs: "md:text-[length:var(--appkit-text-xs)]",
|
|
@@ -113,13 +141,13 @@ const RESPONSIVE_TEXT_SIZE_CLASS = {
|
|
|
113
141
|
base: "md:text-[length:var(--appkit-text-base)]",
|
|
114
142
|
lg: "md:text-[length:var(--appkit-text-lg)]",
|
|
115
143
|
xl: "md:text-[length:var(--appkit-text-xl)]",
|
|
116
|
-
"2xl": "md:text-[length:var(--appkit-text-2xl)]",
|
|
117
|
-
"3xl": "md:text-[length:var(--appkit-text-3xl)]",
|
|
118
|
-
"4xl": "md:text-[length:var(--appkit-text-4xl)]",
|
|
119
|
-
"5xl": "md:text-[length:var(--appkit-text-5xl)]",
|
|
120
|
-
"6xl": "md:text-[length:var(--appkit-text-6xl)]",
|
|
121
|
-
"7xl": "md:text-[length:var(--appkit-text-7xl)]",
|
|
122
|
-
"8xl": "md:text-[length:var(--appkit-text-8xl)]",
|
|
144
|
+
"2xl": "md:text-[length:var(--appkit-text-2xl)] md:leading-[2rem]",
|
|
145
|
+
"3xl": "md:text-[length:var(--appkit-text-3xl)] md:leading-[2.25rem]",
|
|
146
|
+
"4xl": "md:text-[length:var(--appkit-text-4xl)] md:leading-[2.5rem]",
|
|
147
|
+
"5xl": "md:text-[length:var(--appkit-text-5xl)] md:leading-[1]",
|
|
148
|
+
"6xl": "md:text-[length:var(--appkit-text-6xl)] md:leading-[1.15]",
|
|
149
|
+
"7xl": "md:text-[length:var(--appkit-text-7xl)] md:leading-[1.15]",
|
|
150
|
+
"8xl": "md:text-[length:var(--appkit-text-8xl)] md:leading-[1.15]",
|
|
123
151
|
},
|
|
124
152
|
"lg:": {
|
|
125
153
|
xs: "lg:text-[length:var(--appkit-text-xs)]",
|
|
@@ -127,13 +155,13 @@ const RESPONSIVE_TEXT_SIZE_CLASS = {
|
|
|
127
155
|
base: "lg:text-[length:var(--appkit-text-base)]",
|
|
128
156
|
lg: "lg:text-[length:var(--appkit-text-lg)]",
|
|
129
157
|
xl: "lg:text-[length:var(--appkit-text-xl)]",
|
|
130
|
-
"2xl": "lg:text-[length:var(--appkit-text-2xl)]",
|
|
131
|
-
"3xl": "lg:text-[length:var(--appkit-text-3xl)]",
|
|
132
|
-
"4xl": "lg:text-[length:var(--appkit-text-4xl)]",
|
|
133
|
-
"5xl": "lg:text-[length:var(--appkit-text-5xl)]",
|
|
134
|
-
"6xl": "lg:text-[length:var(--appkit-text-6xl)]",
|
|
135
|
-
"7xl": "lg:text-[length:var(--appkit-text-7xl)]",
|
|
136
|
-
"8xl": "lg:text-[length:var(--appkit-text-8xl)]",
|
|
158
|
+
"2xl": "lg:text-[length:var(--appkit-text-2xl)] lg:leading-[2rem]",
|
|
159
|
+
"3xl": "lg:text-[length:var(--appkit-text-3xl)] lg:leading-[2.25rem]",
|
|
160
|
+
"4xl": "lg:text-[length:var(--appkit-text-4xl)] lg:leading-[2.5rem]",
|
|
161
|
+
"5xl": "lg:text-[length:var(--appkit-text-5xl)] lg:leading-[1]",
|
|
162
|
+
"6xl": "lg:text-[length:var(--appkit-text-6xl)] lg:leading-[1.15]",
|
|
163
|
+
"7xl": "lg:text-[length:var(--appkit-text-7xl)] lg:leading-[1.15]",
|
|
164
|
+
"8xl": "lg:text-[length:var(--appkit-text-8xl)] lg:leading-[1.15]",
|
|
137
165
|
},
|
|
138
166
|
"xl:": {
|
|
139
167
|
xs: "xl:text-[length:var(--appkit-text-xs)]",
|
|
@@ -141,13 +169,13 @@ const RESPONSIVE_TEXT_SIZE_CLASS = {
|
|
|
141
169
|
base: "xl:text-[length:var(--appkit-text-base)]",
|
|
142
170
|
lg: "xl:text-[length:var(--appkit-text-lg)]",
|
|
143
171
|
xl: "xl:text-[length:var(--appkit-text-xl)]",
|
|
144
|
-
"2xl": "xl:text-[length:var(--appkit-text-2xl)]",
|
|
145
|
-
"3xl": "xl:text-[length:var(--appkit-text-3xl)]",
|
|
146
|
-
"4xl": "xl:text-[length:var(--appkit-text-4xl)]",
|
|
147
|
-
"5xl": "xl:text-[length:var(--appkit-text-5xl)]",
|
|
148
|
-
"6xl": "xl:text-[length:var(--appkit-text-6xl)]",
|
|
149
|
-
"7xl": "xl:text-[length:var(--appkit-text-7xl)]",
|
|
150
|
-
"8xl": "xl:text-[length:var(--appkit-text-8xl)]",
|
|
172
|
+
"2xl": "xl:text-[length:var(--appkit-text-2xl)] xl:leading-[2rem]",
|
|
173
|
+
"3xl": "xl:text-[length:var(--appkit-text-3xl)] xl:leading-[2.25rem]",
|
|
174
|
+
"4xl": "xl:text-[length:var(--appkit-text-4xl)] xl:leading-[2.5rem]",
|
|
175
|
+
"5xl": "xl:text-[length:var(--appkit-text-5xl)] xl:leading-[1]",
|
|
176
|
+
"6xl": "xl:text-[length:var(--appkit-text-6xl)] xl:leading-[1.15]",
|
|
177
|
+
"7xl": "xl:text-[length:var(--appkit-text-7xl)] xl:leading-[1.15]",
|
|
178
|
+
"8xl": "xl:text-[length:var(--appkit-text-8xl)] xl:leading-[1.15]",
|
|
151
179
|
},
|
|
152
180
|
};
|
|
153
181
|
function responsiveSizeClass(prefix, size) {
|
|
@@ -87,6 +87,41 @@
|
|
|
87
87
|
line-height: 1;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
/*
|
|
91
|
+
* š 6xlā8xl MUST declare a line-height, and the reason is a live bug.
|
|
92
|
+
*
|
|
93
|
+
* These three tiers used to exist only as Tailwind arbitrary utilities in
|
|
94
|
+
* `TYPOGRAPHY.textSize` (`text-[length:var(--appkit-text-6xl)]`), which set
|
|
95
|
+
* FONT-SIZE ONLY ā and with `important: true` in both configs, at that.
|
|
96
|
+
* `.appkit-heading`'s `line-height: var(--appkit-leading-tight)` is then
|
|
97
|
+
* overridden by whichever size class the element also carries: a
|
|
98
|
+
* `size="4xl" lgSize="8xl"` heading resolved to `.appkit-text--4xl`'s
|
|
99
|
+
* `line-height: 2.5rem` at EVERY breakpoint, because no `lg:` rule ever
|
|
100
|
+
* touched line-height.
|
|
101
|
+
*
|
|
102
|
+
* Measured on the live hero carousel: 96px glyphs in a 40px line box. A
|
|
103
|
+
* two-line title overlapped itself and spilled ~28px above and below into the
|
|
104
|
+
* eyebrow and the description ā the reported "Diwali title is unreadable".
|
|
105
|
+
*
|
|
106
|
+
* So each tier carries BOTH properties, exactly like 2xlā5xl above. Keep them
|
|
107
|
+
* as real classes rather than arbitrary utilities: an arbitrary utility can
|
|
108
|
+
* only carry the one property its bracket names.
|
|
109
|
+
*/
|
|
110
|
+
.appkit-text--6xl {
|
|
111
|
+
font-size: var(--appkit-text-6xl, 3.75rem);
|
|
112
|
+
line-height: var(--appkit-leading-tight, 1.15);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.appkit-text--7xl {
|
|
116
|
+
font-size: var(--appkit-text-7xl, 4.5rem);
|
|
117
|
+
line-height: var(--appkit-leading-tight, 1.15);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.appkit-text--8xl {
|
|
121
|
+
font-size: var(--appkit-text-8xl, 6rem);
|
|
122
|
+
line-height: var(--appkit-leading-tight, 1.15);
|
|
123
|
+
}
|
|
124
|
+
|
|
90
125
|
.appkit-font--light {
|
|
91
126
|
font-weight: 300;
|
|
92
127
|
}
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export type { SectionProps, SectionBackgroundConfig, ArticleProps, MainProps, As
|
|
|
16
16
|
export { Section, sectionBackgroundStyle, Article, Main, Aside, Nav, BlockHeader, BlockFooter, Ul, Ol, Li, Table, Thead, Tbody, Tr, Th, Td, Code, Pre, Blockquote, Figure, Figcaption, Dl, Dt, Dd, } from "./components/Semantic";
|
|
17
17
|
export type { DivProps } from "./components/Div";
|
|
18
18
|
export { Div } from "./components/Div";
|
|
19
|
+
export type { PageHeroHeadingProps } from "./components/PageHeroHeading";
|
|
20
|
+
export { PageHeroHeading } from "./components/PageHeroHeading";
|
|
19
21
|
export { Disclaimer } from "./components/Disclaimer";
|
|
20
22
|
export type { DisclaimerProps } from "./components/Disclaimer";
|
|
21
23
|
export type { SpecTableProps, SpecTableRow } from "./components/SpecTable";
|
package/dist/ui/index.js
CHANGED
|
@@ -30,6 +30,7 @@ export { FormErrorSummary } from "./forms/index.js";
|
|
|
30
30
|
export { buildColumns, createColumnBuilder, renderBoolean, renderCurrency, renderCurrencyCompact, renderCount, renderNullable, renderRating, getStatusTone, getResourceIcon, } from "./columns/index.js";
|
|
31
31
|
export { Section, sectionBackgroundStyle, Article, Main, Aside, Nav, BlockHeader, BlockFooter, Ul, Ol, Li, Table, Thead, Tbody, Tr, Th, Td, Code, Pre, Blockquote, Figure, Figcaption, Dl, Dt, Dd, } from "./components/Semantic.js";
|
|
32
32
|
export { Div } from "./components/Div.js";
|
|
33
|
+
export { PageHeroHeading } from "./components/PageHeroHeading.js";
|
|
33
34
|
/*
|
|
34
35
|
* Phase 12 ā the one way to render a disclaimer. `id` only: there is no `text`
|
|
35
36
|
* prop, because an escape hatch would make it a styled box and the legally
|
package/package.json
CHANGED
package/scripts/seed-cli.mjs
CHANGED
|
@@ -267,7 +267,7 @@ const {
|
|
|
267
267
|
FRANCHISE_BY_CATEGORY_ROOT,
|
|
268
268
|
ordersSeedData, reviewsSeedData, cartsSeedData, bidsSeedData,
|
|
269
269
|
couponsSeedData, couponUsageSeedData,
|
|
270
|
-
eventsSeedData, eventEntriesSeedData, payoutsSeedData, offersSeedData,
|
|
270
|
+
eventsSeedData, eventEntriesSeedData, eventLikesSeedData, payoutsSeedData, offersSeedData,
|
|
271
271
|
notificationsSeedData, blogPostsSeedData,
|
|
272
272
|
carouselsSeedData, carouselSlidesSeedData, homepageSectionsSeedData,
|
|
273
273
|
siteSettingsSeedData, faqSeedData,
|
|
@@ -290,7 +290,7 @@ const {
|
|
|
290
290
|
COUPONS_COLLECTION, CAROUSELS_COLLECTION, CAROUSEL_SLIDES_COLLECTION,
|
|
291
291
|
HOMEPAGE_SECTIONS_COLLECTION, SITE_SETTINGS_COLLECTION, FAQS_COLLECTION,
|
|
292
292
|
NOTIFICATIONS_COLLECTION, PAYOUT_COLLECTION, OFFER_COLLECTION, BLOG_POSTS_COLLECTION,
|
|
293
|
-
EVENTS_COLLECTION, EVENT_ENTRIES_COLLECTION, SESSION_COLLECTION,
|
|
293
|
+
EVENTS_COLLECTION, EVENT_ENTRIES_COLLECTION, EVENT_LIKES_COLLECTION, SESSION_COLLECTION,
|
|
294
294
|
CART_COLLECTION,
|
|
295
295
|
GROUPED_LISTINGS_COLLECTION, SCAMMER_COLLECTION,
|
|
296
296
|
WISHLIST_COLLECTION, HISTORY_COLLECTION, PRODUCT_FEATURES_COLLECTION,
|
|
@@ -376,6 +376,7 @@ const COLLECTION_MAP = {
|
|
|
376
376
|
blogPosts: BLOG_POSTS_COLLECTION,
|
|
377
377
|
events: EVENTS_COLLECTION,
|
|
378
378
|
eventEntries: EVENT_ENTRIES_COLLECTION,
|
|
379
|
+
eventLikes: EVENT_LIKES_COLLECTION,
|
|
379
380
|
sessions: SESSION_COLLECTION,
|
|
380
381
|
carts: CART_COLLECTION,
|
|
381
382
|
wishlists: WISHLIST_COLLECTION,
|
|
@@ -760,6 +761,7 @@ const SEED_DATA_MAP = {
|
|
|
760
761
|
blogPosts: blogPostsSeedData,
|
|
761
762
|
events: eventsSeedData,
|
|
762
763
|
eventEntries: eventEntriesSeedData,
|
|
764
|
+
eventLikes: eventLikesSeedData,
|
|
763
765
|
sessions: sessionsSeedData,
|
|
764
766
|
carts: cartsSeedData,
|
|
765
767
|
wishlists: wishlistsSeedData,
|