@ugurdemirel/landcraft 0.1.23 → 0.1.24
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/README.md +13 -8
- package/dist/cjs/components/Button.cjs +1 -1
- package/dist/cjs/components/Button.cjs.map +1 -1
- package/dist/cjs/components/CTA/CTA.cjs +1 -1
- package/dist/cjs/components/CTA/CTA.cjs.map +1 -1
- package/dist/cjs/components/CTA/parts.cjs +1 -1
- package/dist/cjs/components/CTA/parts.cjs.map +1 -1
- package/dist/cjs/components/CTA/variants/Panel.cjs +1 -1
- package/dist/cjs/components/CTA/variants/Panel.cjs.map +1 -1
- package/dist/cjs/components/CTA/variants/Surface.cjs +1 -1
- package/dist/cjs/components/CTA/variants/Surface.cjs.map +1 -1
- package/dist/cjs/components/Footer/Footer.cjs +1 -1
- package/dist/cjs/components/Footer/Footer.cjs.map +1 -1
- package/dist/cjs/components/Footer/parts.cjs +1 -1
- package/dist/cjs/components/Footer/parts.cjs.map +1 -1
- package/dist/cjs/components/Footer/variants/Columns.cjs +2 -0
- package/dist/cjs/components/Footer/variants/Columns.cjs.map +1 -0
- package/dist/cjs/components/Footer/variants/Editorial.cjs +1 -1
- package/dist/cjs/components/Footer/variants/Editorial.cjs.map +1 -1
- package/dist/cjs/components/Footer/variants/Minimal.cjs +1 -1
- package/dist/cjs/components/Footer/variants/Minimal.cjs.map +1 -1
- package/dist/cjs/components/Hero/parts.cjs +1 -1
- package/dist/cjs/components/Hero/parts.cjs.map +1 -1
- package/dist/cjs/components/Hero/variants/Centered.cjs +1 -1
- package/dist/cjs/components/Hero/variants/Centered.cjs.map +1 -1
- package/dist/cjs/components/Hero/variants/Parallax.cjs +1 -1
- package/dist/cjs/components/Hero/variants/Parallax.cjs.map +1 -1
- package/dist/cjs/components/Hero/variants/Split.cjs +1 -1
- package/dist/cjs/components/Hero/variants/Split.cjs.map +1 -1
- package/dist/cjs/components/Hero/variants/Statement.cjs +1 -1
- package/dist/cjs/components/Hero/variants/Statement.cjs.map +1 -1
- package/dist/cjs/components/LanguageSwitcher/parts.cjs +1 -1
- package/dist/cjs/components/LanguageSwitcher/parts.cjs.map +1 -1
- package/dist/cjs/components/MegaMenu/MegaMenu.cjs +1 -1
- package/dist/cjs/components/MegaMenu/MegaMenu.cjs.map +1 -1
- package/dist/cjs/components/Navbar/Navbar.cjs +1 -1
- package/dist/cjs/components/Navbar/Navbar.cjs.map +1 -1
- package/dist/cjs/components/Stats/Stats.cjs +1 -1
- package/dist/cjs/components/Stats/Stats.cjs.map +1 -1
- package/dist/cjs/components/Stats/variants/{Hairline.cjs → Divided.cjs} +2 -2
- package/dist/cjs/components/Stats/variants/Divided.cjs.map +1 -0
- package/dist/cjs/components/Stats/variants/{Editorial.cjs → Stacked.cjs} +2 -2
- package/dist/cjs/components/Stats/variants/Stacked.cjs.map +1 -0
- package/dist/cjs/utils/surface.cjs +2 -0
- package/dist/cjs/utils/surface.cjs.map +1 -0
- package/dist/es/components/Button.js +41 -31
- package/dist/es/components/Button.js.map +1 -1
- package/dist/es/components/CTA/CTA.js +5 -6
- package/dist/es/components/CTA/CTA.js.map +1 -1
- package/dist/es/components/CTA/parts.js +19 -14
- package/dist/es/components/CTA/parts.js.map +1 -1
- package/dist/es/components/CTA/variants/Panel.js +15 -17
- package/dist/es/components/CTA/variants/Panel.js.map +1 -1
- package/dist/es/components/CTA/variants/Surface.js +21 -11
- package/dist/es/components/CTA/variants/Surface.js.map +1 -1
- package/dist/es/components/Footer/Footer.js +5 -5
- package/dist/es/components/Footer/Footer.js.map +1 -1
- package/dist/es/components/Footer/parts.js +21 -20
- package/dist/es/components/Footer/parts.js.map +1 -1
- package/dist/es/components/Footer/variants/Columns.js +76 -0
- package/dist/es/components/Footer/variants/Columns.js.map +1 -0
- package/dist/es/components/Footer/variants/Editorial.js +68 -35
- package/dist/es/components/Footer/variants/Editorial.js.map +1 -1
- package/dist/es/components/Footer/variants/Minimal.js +50 -16
- package/dist/es/components/Footer/variants/Minimal.js.map +1 -1
- package/dist/es/components/Hero/parts.js +13 -11
- package/dist/es/components/Hero/parts.js.map +1 -1
- package/dist/es/components/Hero/variants/Centered.js +29 -17
- package/dist/es/components/Hero/variants/Centered.js.map +1 -1
- package/dist/es/components/Hero/variants/Parallax.js +23 -23
- package/dist/es/components/Hero/variants/Parallax.js.map +1 -1
- package/dist/es/components/Hero/variants/Split.js +35 -23
- package/dist/es/components/Hero/variants/Split.js.map +1 -1
- package/dist/es/components/Hero/variants/Statement.js +28 -23
- package/dist/es/components/Hero/variants/Statement.js.map +1 -1
- package/dist/es/components/LanguageSwitcher/parts.js +44 -44
- package/dist/es/components/LanguageSwitcher/parts.js.map +1 -1
- package/dist/es/components/MegaMenu/MegaMenu.js +131 -126
- package/dist/es/components/MegaMenu/MegaMenu.js.map +1 -1
- package/dist/es/components/Navbar/Navbar.js +110 -92
- package/dist/es/components/Navbar/Navbar.js.map +1 -1
- package/dist/es/components/Stats/Stats.js +8 -8
- package/dist/es/components/Stats/Stats.js.map +1 -1
- package/dist/es/components/Stats/variants/{Hairline.js → Divided.js} +13 -13
- package/dist/es/components/Stats/variants/Divided.js.map +1 -0
- package/dist/es/components/Stats/variants/{Editorial.js → Stacked.js} +12 -12
- package/dist/es/components/Stats/variants/Stacked.js.map +1 -0
- package/dist/es/utils/surface.js +16 -0
- package/dist/es/utils/surface.js.map +1 -0
- package/dist/index.d.ts +48 -9
- package/dist/styles.css +79 -98
- package/dist/theme.css +27 -0
- package/package.json +1 -1
- package/dist/cjs/components/CTA/variants/Inverse.cjs +0 -2
- package/dist/cjs/components/CTA/variants/Inverse.cjs.map +0 -1
- package/dist/cjs/components/Footer/variants/Classic.cjs +0 -2
- package/dist/cjs/components/Footer/variants/Classic.cjs.map +0 -1
- package/dist/cjs/components/Stats/variants/Editorial.cjs.map +0 -1
- package/dist/cjs/components/Stats/variants/Hairline.cjs.map +0 -1
- package/dist/es/components/CTA/variants/Inverse.js +0 -42
- package/dist/es/components/CTA/variants/Inverse.js.map +0 -1
- package/dist/es/components/Footer/variants/Classic.js +0 -43
- package/dist/es/components/Footer/variants/Classic.js.map +0 -1
- package/dist/es/components/Stats/variants/Editorial.js.map +0 -1
- package/dist/es/components/Stats/variants/Hairline.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -186,7 +186,7 @@ export declare interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElem
|
|
|
186
186
|
|
|
187
187
|
export declare type ButtonSize = "sm" | "md" | "lg";
|
|
188
188
|
|
|
189
|
-
export declare type ButtonVariant = "primary" | "
|
|
189
|
+
export declare type ButtonVariant = "primary" | "outline" | "ghost" | "link";
|
|
190
190
|
|
|
191
191
|
export declare const Card: ForwardRefExoticComponent<CardProps & RefAttributes<HTMLDivElement>>;
|
|
192
192
|
|
|
@@ -251,7 +251,8 @@ export declare const Cpu: (props: IconProps) => JSX_2.Element;
|
|
|
251
251
|
|
|
252
252
|
export declare const CTA: ForwardRefExoticComponent<CTAProps & RefAttributes<HTMLElement>>;
|
|
253
253
|
|
|
254
|
-
|
|
254
|
+
/** Layout options — arrangement only. Emphasis tone is the `background` prop. */
|
|
255
|
+
declare type CTAOption = "panel" | "surface";
|
|
255
256
|
|
|
256
257
|
export declare interface CTAProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
257
258
|
title: ReactNode;
|
|
@@ -260,6 +261,12 @@ export declare interface CTAProps extends Omit<HTMLAttributes<HTMLElement>, "tit
|
|
|
260
261
|
secondaryAction?: ReactNode;
|
|
261
262
|
option?: CTAOption;
|
|
262
263
|
align?: "left" | "center";
|
|
264
|
+
/**
|
|
265
|
+
* Overrides the emphasis (`panel`) surface with any CSS color; the text color
|
|
266
|
+
* is derived for contrast via CSS `contrast-color()`. Ignored by `surface`,
|
|
267
|
+
* which sits on the page background.
|
|
268
|
+
*/
|
|
269
|
+
background?: string;
|
|
263
270
|
}
|
|
264
271
|
|
|
265
272
|
export declare const Database: (props: IconProps) => JSX_2.Element;
|
|
@@ -382,8 +389,15 @@ export declare interface FooterProps extends Omit<HTMLAttributes<HTMLElement>, "
|
|
|
382
389
|
bottom?: ReactNode;
|
|
383
390
|
/** Optional language switcher rendered in the footer's bottom bar. */
|
|
384
391
|
languageSwitcher?: ReactNode;
|
|
385
|
-
|
|
392
|
+
/** Layout options — arrangement only. Tone is the `background` prop. */
|
|
393
|
+
option?: "columns" | "minimal" | "editorial";
|
|
386
394
|
badge?: ReactNode;
|
|
395
|
+
/**
|
|
396
|
+
* Overrides the footer surface with any CSS color; text colors are derived for
|
|
397
|
+
* contrast via CSS `contrast-color()`. Use it to tint the footer to a brand or
|
|
398
|
+
* dark color.
|
|
399
|
+
*/
|
|
400
|
+
background?: string;
|
|
387
401
|
/** Component used to render footer links. Defaults to `<a>`. Pass your router's `<Link>` (Next.js, Remix, React Router…) for framework-aware navigation. */
|
|
388
402
|
LinkComponent?: ElementType;
|
|
389
403
|
}
|
|
@@ -427,6 +441,12 @@ export declare interface HeroProps extends Omit<HTMLAttributes<HTMLElement>, "ti
|
|
|
427
441
|
meta?: HeroMeta[];
|
|
428
442
|
/** Floating logo tiles with a mouse parallax effect (`parallax` variant). */
|
|
429
443
|
logos?: HeroLogo[];
|
|
444
|
+
/**
|
|
445
|
+
* Overrides the emphasis (`statement`) band with any CSS color; the text color
|
|
446
|
+
* is derived for contrast via CSS `contrast-color()`. Layouts on the page
|
|
447
|
+
* background are unaffected.
|
|
448
|
+
*/
|
|
449
|
+
background?: string;
|
|
430
450
|
}
|
|
431
451
|
|
|
432
452
|
declare type HeroVariant = "split" | "centered" | "statement" | "parallax";
|
|
@@ -473,7 +493,11 @@ export declare interface LanguageSwitcherProps extends Omit<HTMLAttributes<HTMLD
|
|
|
473
493
|
modalTitle?: ReactNode;
|
|
474
494
|
/** Replace the globe icon with the selected language's flag emoji (and show flags in options). */
|
|
475
495
|
showFlag?: boolean;
|
|
476
|
-
/**
|
|
496
|
+
/**
|
|
497
|
+
* Adapts the trigger to a custom/emphasis surface (Navbar `background`,
|
|
498
|
+
* Footer `background`): the trigger inherits `currentColor` instead of the
|
|
499
|
+
* page tokens. Dropdown options keep paper-surface colors.
|
|
500
|
+
*/
|
|
477
501
|
inverse?: boolean;
|
|
478
502
|
}
|
|
479
503
|
|
|
@@ -502,7 +526,7 @@ export declare interface LogoItem {
|
|
|
502
526
|
export declare const Mail: (props: IconProps) => JSX_2.Element;
|
|
503
527
|
|
|
504
528
|
export declare const MegaMenu: {
|
|
505
|
-
({ className, variant, brand, logo, logoSrc, logoAlt, logoClassName, brandHref, items, actions, cta, languageSwitcher, sticky, LinkComponent, onKeyDown, ...props }: MegaMenuProps): JSX_2.Element;
|
|
529
|
+
({ className, variant, brand, logo, logoSrc, logoAlt, logoClassName, brandHref, items, actions, cta, languageSwitcher, sticky, background, LinkComponent, onKeyDown, style, ...props }: MegaMenuProps): JSX_2.Element;
|
|
506
530
|
displayName: string;
|
|
507
531
|
};
|
|
508
532
|
|
|
@@ -561,11 +585,18 @@ export declare interface MegaMenuProps extends Omit<HTMLAttributes<HTMLElement>,
|
|
|
561
585
|
/** Optional language switcher rendered on the right (desktop) and beside the menu button (mobile). */
|
|
562
586
|
languageSwitcher?: ReactNode;
|
|
563
587
|
sticky?: boolean;
|
|
588
|
+
/**
|
|
589
|
+
* Overrides the bar's surface with any CSS color; the text color (and the
|
|
590
|
+
* text/border of outline/ghost buttons inside it) is derived for contrast via
|
|
591
|
+
* CSS `contrast-color()`. Use it to tint the bar to a brand or dark color.
|
|
592
|
+
*/
|
|
593
|
+
background?: string;
|
|
564
594
|
/** Component used to render brand, trigger and panel links. Defaults to `<a>`. Pass your router's `<Link>` (Next.js, Remix, React Router…) for framework-aware navigation. */
|
|
565
595
|
LinkComponent?: ElementType;
|
|
566
596
|
}
|
|
567
597
|
|
|
568
|
-
|
|
598
|
+
/** Layout options — arrangement only. Tone is the `background` prop. */
|
|
599
|
+
declare type MegaMenuVariant = "classic" | "floating";
|
|
569
600
|
|
|
570
601
|
export declare const Menu: (props: IconProps) => JSX_2.Element;
|
|
571
602
|
|
|
@@ -592,7 +623,7 @@ export declare interface ModalProps extends Omit<HTMLAttributes<HTMLDivElement>,
|
|
|
592
623
|
}
|
|
593
624
|
|
|
594
625
|
export declare const Navbar: {
|
|
595
|
-
({ className, variant, brand, logo, logoSrc, logoAlt, logoClassName, brandHref, links, actions, cta, languageSwitcher, sticky, LinkComponent, ...props }: NavbarProps): JSX_2.Element;
|
|
626
|
+
({ className, variant, brand, logo, logoSrc, logoAlt, logoClassName, brandHref, links, actions, cta, languageSwitcher, sticky, background, LinkComponent, style, ...props }: NavbarProps): JSX_2.Element;
|
|
596
627
|
displayName: string;
|
|
597
628
|
};
|
|
598
629
|
|
|
@@ -614,11 +645,18 @@ export declare interface NavbarProps extends Omit<HTMLAttributes<HTMLElement>, "
|
|
|
614
645
|
/** Optional language switcher rendered on the right (desktop) and beside the menu button (mobile). */
|
|
615
646
|
languageSwitcher?: ReactNode;
|
|
616
647
|
sticky?: boolean;
|
|
648
|
+
/**
|
|
649
|
+
* Overrides the bar's surface with any CSS color; the text color (and the
|
|
650
|
+
* text/border of outline/ghost buttons inside it) is derived for contrast via
|
|
651
|
+
* CSS `contrast-color()`. Use it to tint the bar to a brand or dark color.
|
|
652
|
+
*/
|
|
653
|
+
background?: string;
|
|
617
654
|
/** Component used to render the brand and nav links. Defaults to `<a>`. Pass your router's `<Link>` (Next.js, Remix, React Router…) for framework-aware navigation. */
|
|
618
655
|
LinkComponent?: ElementType;
|
|
619
656
|
}
|
|
620
657
|
|
|
621
|
-
|
|
658
|
+
/** Layout options — arrangement only. Tone is the `background` prop. */
|
|
659
|
+
declare type NavbarVariant = "classic" | "floating";
|
|
622
660
|
|
|
623
661
|
export declare interface NavLink {
|
|
624
662
|
label: string;
|
|
@@ -776,7 +814,8 @@ export declare interface Stat {
|
|
|
776
814
|
|
|
777
815
|
export declare const Stats: ForwardRefExoticComponent<StatsProps & RefAttributes<HTMLDListElement>>;
|
|
778
816
|
|
|
779
|
-
|
|
817
|
+
/** Layout options — arrangement only. */
|
|
818
|
+
declare type StatsOption = "stacked" | "divided" | "cells" | "ticker";
|
|
780
819
|
|
|
781
820
|
export declare interface StatsProps extends HTMLAttributes<HTMLDListElement> {
|
|
782
821
|
stats: Stat[];
|
package/dist/styles.css
CHANGED
|
@@ -2144,9 +2144,6 @@
|
|
|
2144
2144
|
.overflow-y-auto {
|
|
2145
2145
|
overflow-y: auto;
|
|
2146
2146
|
}
|
|
2147
|
-
.rounded {
|
|
2148
|
-
border-radius: 0.25rem;
|
|
2149
|
-
}
|
|
2150
2147
|
.rounded-2xl {
|
|
2151
2148
|
border-radius: var(--radius-2xl);
|
|
2152
2149
|
}
|
|
@@ -2216,6 +2213,18 @@
|
|
|
2216
2213
|
.border-current {
|
|
2217
2214
|
border-color: currentcolor;
|
|
2218
2215
|
}
|
|
2216
|
+
.border-current\/15 {
|
|
2217
|
+
border-color: currentcolor;
|
|
2218
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2219
|
+
border-color: color-mix(in oklab, currentcolor 15%, transparent);
|
|
2220
|
+
}
|
|
2221
|
+
}
|
|
2222
|
+
.border-current\/20 {
|
|
2223
|
+
border-color: currentcolor;
|
|
2224
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2225
|
+
border-color: color-mix(in oklab, currentcolor 20%, transparent);
|
|
2226
|
+
}
|
|
2227
|
+
}
|
|
2219
2228
|
.border-foreground\/20 {
|
|
2220
2229
|
border-color: color-mix(in srgb, rgb(rgb(var(--color-foreground))) 20%, transparent);
|
|
2221
2230
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -2237,24 +2246,9 @@
|
|
|
2237
2246
|
border-color: color-mix(in oklab, var(--color-red-500) 40%, transparent);
|
|
2238
2247
|
}
|
|
2239
2248
|
}
|
|
2240
|
-
.border-white\/10 {
|
|
2241
|
-
border-color: color-mix(in srgb, #fff 10%, transparent);
|
|
2242
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2243
|
-
border-color: color-mix(in oklab, var(--color-white) 10%, transparent);
|
|
2244
|
-
}
|
|
2245
|
-
}
|
|
2246
2249
|
.border-t-transparent {
|
|
2247
2250
|
border-top-color: transparent;
|
|
2248
2251
|
}
|
|
2249
|
-
.bg-\[\#101010\] {
|
|
2250
|
-
background-color: #101010;
|
|
2251
|
-
}
|
|
2252
|
-
.bg-\[\#101010\]\/85 {
|
|
2253
|
-
background-color: color-mix(in oklab, #101010 85%, transparent);
|
|
2254
|
-
}
|
|
2255
|
-
.bg-\[\#161616\] {
|
|
2256
|
-
background-color: #161616;
|
|
2257
|
-
}
|
|
2258
2252
|
.bg-accent {
|
|
2259
2253
|
background-color: rgb(var(--color-accent));
|
|
2260
2254
|
}
|
|
@@ -2291,6 +2285,18 @@
|
|
|
2291
2285
|
.bg-current {
|
|
2292
2286
|
background-color: currentcolor;
|
|
2293
2287
|
}
|
|
2288
|
+
.bg-current\/15 {
|
|
2289
|
+
background-color: currentcolor;
|
|
2290
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2291
|
+
background-color: color-mix(in oklab, currentcolor 15%, transparent);
|
|
2292
|
+
}
|
|
2293
|
+
}
|
|
2294
|
+
.bg-current\/20 {
|
|
2295
|
+
background-color: currentcolor;
|
|
2296
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2297
|
+
background-color: color-mix(in oklab, currentcolor 20%, transparent);
|
|
2298
|
+
}
|
|
2299
|
+
}
|
|
2294
2300
|
.bg-foreground {
|
|
2295
2301
|
background-color: rgb(var(--color-foreground));
|
|
2296
2302
|
}
|
|
@@ -2315,9 +2321,6 @@
|
|
|
2315
2321
|
.bg-on-primary {
|
|
2316
2322
|
background-color: rgb(var(--color-on-primary));
|
|
2317
2323
|
}
|
|
2318
|
-
.bg-on-secondary {
|
|
2319
|
-
background-color: rgb(var(--color-on-secondary));
|
|
2320
|
-
}
|
|
2321
2324
|
.bg-primary {
|
|
2322
2325
|
background-color: rgb(var(--color-primary));
|
|
2323
2326
|
}
|
|
@@ -2369,12 +2372,6 @@
|
|
|
2369
2372
|
background-color: color-mix(in oklab, var(--color-white) 10%, transparent);
|
|
2370
2373
|
}
|
|
2371
2374
|
}
|
|
2372
|
-
.bg-white\/15 {
|
|
2373
|
-
background-color: color-mix(in srgb, #fff 15%, transparent);
|
|
2374
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2375
|
-
background-color: color-mix(in oklab, var(--color-white) 15%, transparent);
|
|
2376
|
-
}
|
|
2377
|
-
}
|
|
2378
2375
|
.grain {
|
|
2379
2376
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.45'/%3E%3C/svg%3E");
|
|
2380
2377
|
}
|
|
@@ -2663,21 +2660,13 @@
|
|
|
2663
2660
|
--tw-leading: calc(var(--spacing) * 7);
|
|
2664
2661
|
line-height: calc(var(--spacing) * 7);
|
|
2665
2662
|
}
|
|
2666
|
-
.leading-\[1\.02\] {
|
|
2667
|
-
--tw-leading: 1.02;
|
|
2668
|
-
line-height: 1.02;
|
|
2669
|
-
}
|
|
2670
|
-
.leading-\[1\.03\] {
|
|
2671
|
-
--tw-leading: 1.03;
|
|
2672
|
-
line-height: 1.03;
|
|
2673
|
-
}
|
|
2674
2663
|
.leading-\[1\.04\] {
|
|
2675
2664
|
--tw-leading: 1.04;
|
|
2676
2665
|
line-height: 1.04;
|
|
2677
2666
|
}
|
|
2678
|
-
.leading-\[1\.
|
|
2679
|
-
--tw-leading: 1.
|
|
2680
|
-
line-height: 1.
|
|
2667
|
+
.leading-\[1\.05\] {
|
|
2668
|
+
--tw-leading: 1.05;
|
|
2669
|
+
line-height: 1.05;
|
|
2681
2670
|
}
|
|
2682
2671
|
.leading-\[1\.08\] {
|
|
2683
2672
|
--tw-leading: 1.08;
|
|
@@ -2715,10 +2704,6 @@
|
|
|
2715
2704
|
--tw-font-weight: var(--font-weight-semibold);
|
|
2716
2705
|
font-weight: var(--font-weight-semibold);
|
|
2717
2706
|
}
|
|
2718
|
-
.tracking-\[-0\.02em\] {
|
|
2719
|
-
--tw-tracking: -0.02em;
|
|
2720
|
-
letter-spacing: -0.02em;
|
|
2721
|
-
}
|
|
2722
2707
|
.tracking-\[-0\.03em\] {
|
|
2723
2708
|
--tw-tracking: -0.03em;
|
|
2724
2709
|
letter-spacing: -0.03em;
|
|
@@ -2784,6 +2769,30 @@
|
|
|
2784
2769
|
.text-current {
|
|
2785
2770
|
color: currentcolor;
|
|
2786
2771
|
}
|
|
2772
|
+
.text-current\/50 {
|
|
2773
|
+
color: currentcolor;
|
|
2774
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2775
|
+
color: color-mix(in oklab, currentcolor 50%, transparent);
|
|
2776
|
+
}
|
|
2777
|
+
}
|
|
2778
|
+
.text-current\/60 {
|
|
2779
|
+
color: currentcolor;
|
|
2780
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2781
|
+
color: color-mix(in oklab, currentcolor 60%, transparent);
|
|
2782
|
+
}
|
|
2783
|
+
}
|
|
2784
|
+
.text-current\/70 {
|
|
2785
|
+
color: currentcolor;
|
|
2786
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2787
|
+
color: color-mix(in oklab, currentcolor 70%, transparent);
|
|
2788
|
+
}
|
|
2789
|
+
}
|
|
2790
|
+
.text-current\/80 {
|
|
2791
|
+
color: currentcolor;
|
|
2792
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2793
|
+
color: color-mix(in oklab, currentcolor 80%, transparent);
|
|
2794
|
+
}
|
|
2795
|
+
}
|
|
2787
2796
|
.text-danger {
|
|
2788
2797
|
color: rgb(var(--color-danger));
|
|
2789
2798
|
}
|
|
@@ -2853,33 +2862,6 @@
|
|
|
2853
2862
|
.text-on-primary {
|
|
2854
2863
|
color: rgb(var(--color-on-primary));
|
|
2855
2864
|
}
|
|
2856
|
-
.text-on-secondary {
|
|
2857
|
-
color: rgb(var(--color-on-secondary));
|
|
2858
|
-
}
|
|
2859
|
-
.text-on-secondary\/45 {
|
|
2860
|
-
color: color-mix(in srgb, rgb(rgb(var(--color-on-secondary))) 45%, transparent);
|
|
2861
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2862
|
-
color: color-mix(in oklab, rgb(var(--color-on-secondary)) 45%, transparent);
|
|
2863
|
-
}
|
|
2864
|
-
}
|
|
2865
|
-
.text-on-secondary\/50 {
|
|
2866
|
-
color: color-mix(in srgb, rgb(rgb(var(--color-on-secondary))) 50%, transparent);
|
|
2867
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2868
|
-
color: color-mix(in oklab, rgb(var(--color-on-secondary)) 50%, transparent);
|
|
2869
|
-
}
|
|
2870
|
-
}
|
|
2871
|
-
.text-on-secondary\/60 {
|
|
2872
|
-
color: color-mix(in srgb, rgb(rgb(var(--color-on-secondary))) 60%, transparent);
|
|
2873
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2874
|
-
color: color-mix(in oklab, rgb(var(--color-on-secondary)) 60%, transparent);
|
|
2875
|
-
}
|
|
2876
|
-
}
|
|
2877
|
-
.text-on-secondary\/70 {
|
|
2878
|
-
color: color-mix(in srgb, rgb(rgb(var(--color-on-secondary))) 70%, transparent);
|
|
2879
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2880
|
-
color: color-mix(in oklab, rgb(var(--color-on-secondary)) 70%, transparent);
|
|
2881
|
-
}
|
|
2882
|
-
}
|
|
2883
2865
|
.text-primary {
|
|
2884
2866
|
color: rgb(var(--color-primary));
|
|
2885
2867
|
}
|
|
@@ -2941,9 +2923,6 @@
|
|
|
2941
2923
|
.opacity-\[0\.07\] {
|
|
2942
2924
|
opacity: 0.07;
|
|
2943
2925
|
}
|
|
2944
|
-
.opacity-\[0\.09\] {
|
|
2945
|
-
opacity: 0.09;
|
|
2946
|
-
}
|
|
2947
2926
|
.mix-blend-overlay {
|
|
2948
2927
|
mix-blend-mode: overlay;
|
|
2949
2928
|
}
|
|
@@ -3173,6 +3152,14 @@
|
|
|
3173
3152
|
border-color: color-mix(in oklab, rgb(var(--color-foreground)) 30%, transparent);
|
|
3174
3153
|
}
|
|
3175
3154
|
}
|
|
3155
|
+
.hover\:bg-current\/10:hover {
|
|
3156
|
+
background-color: currentcolor;
|
|
3157
|
+
}
|
|
3158
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
3159
|
+
.hover\:bg-current\/10:hover {
|
|
3160
|
+
background-color: color-mix(in oklab, currentcolor 10%, transparent);
|
|
3161
|
+
}
|
|
3162
|
+
}
|
|
3176
3163
|
.hover\:bg-foreground\/50:hover {
|
|
3177
3164
|
background-color: color-mix(in srgb, rgb(rgb(var(--color-foreground))) 50%, transparent);
|
|
3178
3165
|
}
|
|
@@ -3184,9 +3171,6 @@
|
|
|
3184
3171
|
.hover\:bg-primary-hover:hover {
|
|
3185
3172
|
background-color: rgb(var(--color-primary-hover));
|
|
3186
3173
|
}
|
|
3187
|
-
.hover\:bg-secondary-hover:hover {
|
|
3188
|
-
background-color: rgb(var(--color-secondary-hover));
|
|
3189
|
-
}
|
|
3190
3174
|
.hover\:bg-surface:hover {
|
|
3191
3175
|
background-color: rgb(var(--color-surface));
|
|
3192
3176
|
}
|
|
@@ -3201,14 +3185,6 @@
|
|
|
3201
3185
|
background-color: color-mix(in oklab, rgb(var(--color-surface-strong)) 60%, transparent);
|
|
3202
3186
|
}
|
|
3203
3187
|
}
|
|
3204
|
-
.hover\:bg-white\/10:hover {
|
|
3205
|
-
background-color: color-mix(in srgb, #fff 10%, transparent);
|
|
3206
|
-
}
|
|
3207
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
3208
|
-
.hover\:bg-white\/10:hover {
|
|
3209
|
-
background-color: color-mix(in oklab, var(--color-white) 10%, transparent);
|
|
3210
|
-
}
|
|
3211
|
-
}
|
|
3212
3188
|
.hover\:bg-white\/90:hover {
|
|
3213
3189
|
background-color: color-mix(in srgb, #fff 90%, transparent);
|
|
3214
3190
|
}
|
|
@@ -3217,12 +3193,12 @@
|
|
|
3217
3193
|
background-color: color-mix(in oklab, var(--color-white) 90%, transparent);
|
|
3218
3194
|
}
|
|
3219
3195
|
}
|
|
3196
|
+
.hover\:text-current:hover {
|
|
3197
|
+
color: currentcolor;
|
|
3198
|
+
}
|
|
3220
3199
|
.hover\:text-foreground:hover {
|
|
3221
3200
|
color: rgb(var(--color-foreground));
|
|
3222
3201
|
}
|
|
3223
|
-
.hover\:text-on-secondary:hover {
|
|
3224
|
-
color: rgb(var(--color-on-secondary));
|
|
3225
|
-
}
|
|
3226
3202
|
.hover\:text-primary:hover {
|
|
3227
3203
|
color: rgb(var(--color-primary));
|
|
3228
3204
|
}
|
|
@@ -3414,9 +3390,6 @@
|
|
|
3414
3390
|
.sm\:px-14 {
|
|
3415
3391
|
padding-inline: calc(var(--spacing) * 14);
|
|
3416
3392
|
}
|
|
3417
|
-
.sm\:px-16 {
|
|
3418
|
-
padding-inline: calc(var(--spacing) * 16);
|
|
3419
|
-
}
|
|
3420
3393
|
.sm\:py-20 {
|
|
3421
3394
|
padding-block: calc(var(--spacing) * 20);
|
|
3422
3395
|
}
|
|
@@ -3581,18 +3554,9 @@
|
|
|
3581
3554
|
.lg\:grid-cols-\[minmax\(0\,1fr\)_auto\] {
|
|
3582
3555
|
grid-template-columns: minmax(0,1fr) auto;
|
|
3583
3556
|
}
|
|
3584
|
-
.lg\:flex-row {
|
|
3585
|
-
flex-direction: row;
|
|
3586
|
-
}
|
|
3587
3557
|
.lg\:items-center {
|
|
3588
3558
|
align-items: center;
|
|
3589
3559
|
}
|
|
3590
|
-
.lg\:items-end {
|
|
3591
|
-
align-items: flex-end;
|
|
3592
|
-
}
|
|
3593
|
-
.lg\:justify-between {
|
|
3594
|
-
justify-content: space-between;
|
|
3595
|
-
}
|
|
3596
3560
|
.lg\:gap-12 {
|
|
3597
3561
|
gap: calc(var(--spacing) * 12);
|
|
3598
3562
|
}
|
|
@@ -3741,6 +3705,23 @@
|
|
|
3741
3705
|
border-radius: 0;
|
|
3742
3706
|
}
|
|
3743
3707
|
}
|
|
3708
|
+
[data-emphasis] :is(button, a)[data-unfilled] {
|
|
3709
|
+
color: currentColor;
|
|
3710
|
+
border-color: currentColor;
|
|
3711
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
3712
|
+
border-color: color-mix(in srgb, currentColor 30%, transparent);
|
|
3713
|
+
}
|
|
3714
|
+
}
|
|
3715
|
+
[data-emphasis] :is(button, a)[data-unfilled]:hover {
|
|
3716
|
+
border-color: currentColor;
|
|
3717
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
3718
|
+
border-color: color-mix(in srgb, currentColor 55%, transparent);
|
|
3719
|
+
}
|
|
3720
|
+
background-color: currentColor;
|
|
3721
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
3722
|
+
background-color: color-mix(in srgb, currentColor 10%, transparent);
|
|
3723
|
+
}
|
|
3724
|
+
}
|
|
3744
3725
|
@keyframes marquee {
|
|
3745
3726
|
from {
|
|
3746
3727
|
transform: translateX(0);
|
package/dist/theme.css
CHANGED
|
@@ -186,6 +186,33 @@
|
|
|
186
186
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.45'/%3E%3C/svg%3E");
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
+
/*
|
|
190
|
+
* Emphasis bands (CTA panel, Hero statement, custom-background Navbar/MegaMenu/
|
|
191
|
+
* Footer) paint their own background and derive one readable text color with
|
|
192
|
+
* contrast-color(). Buttons inside them must adapt to THAT color, not to the
|
|
193
|
+
* page's --color-foreground/--color-border (which would disappear on a dark
|
|
194
|
+
* custom background).
|
|
195
|
+
*
|
|
196
|
+
* CSS contrast-color() cannot read an ancestor's background, so the band cannot
|
|
197
|
+
* compute a per-button contrast color. Instead the band exposes its resolved
|
|
198
|
+
* color via `currentColor`, and this scope lets unfilled buttons inherit it.
|
|
199
|
+
*
|
|
200
|
+
* Only buttons marked `data-unfilled` (outline/ghost — see Button.tsx) adapt;
|
|
201
|
+
* filled buttons (primary, `bg-surface`, `customColor`) keep their own
|
|
202
|
+
* background and contrast-color() text. The markup hook is exact, avoiding
|
|
203
|
+
* brittle `hover:bg-surface` substring matches.
|
|
204
|
+
*
|
|
205
|
+
* Applied via `data-emphasis` on the band (see CTA/Hero/Navbar/MegaMenu/Footer).
|
|
206
|
+
*/
|
|
207
|
+
[data-emphasis] :is(button, a)[data-unfilled] {
|
|
208
|
+
color: currentColor;
|
|
209
|
+
border-color: color-mix(in srgb, currentColor 30%, transparent);
|
|
210
|
+
}
|
|
211
|
+
[data-emphasis] :is(button, a)[data-unfilled]:hover {
|
|
212
|
+
border-color: color-mix(in srgb, currentColor 55%, transparent);
|
|
213
|
+
background-color: color-mix(in srgb, currentColor 10%, transparent);
|
|
214
|
+
}
|
|
215
|
+
|
|
189
216
|
@utility mask-fade-x {
|
|
190
217
|
mask-image: linear-gradient(to right, transparent, black 12%, black 88%, transparent);
|
|
191
218
|
}
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),m=require("react"),r=require("../../../utils/cn.cjs"),u=require("../../Container.cjs"),v=require("../parts.cjs"),n=m.forwardRef(({className:l,title:a,description:s,action:c,secondaryAction:o,align:t="left",id:i,...x},d)=>e.jsx("section",{ref:d,id:i,className:r.cn("w-full py-6 pb-20",l),...x,children:e.jsx(u.Container,{children:e.jsxs("div",{className:"relative overflow-hidden rounded-[1.75rem] px-7 py-16 sm:px-16 sm:py-20",style:{backgroundColor:"rgb(var(--color-secondary))",color:"contrast-color(rgb(var(--color-secondary)))"},children:[e.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 grain opacity-[0.09] mix-blend-overlay"}),e.jsxs("div",{className:r.cn("relative flex flex-col items-start gap-10",t==="center"&&"items-center text-center","lg:flex-row lg:items-end lg:justify-between"),children:[e.jsxs("div",{className:r.cn("max-w-3xl",t==="center"&&"mx-auto"),children:[e.jsx("h2",{className:"font-display text-balance text-4xl font-semibold leading-[1.02] tracking-[-0.03em] sm:text-6xl",children:a}),s?e.jsx("p",{className:r.cn("mt-5 max-w-xl text-pretty text-base leading-7 sm:text-lg",t==="center"&&"mx-auto"),children:s}):null]}),e.jsx(v.CTAActions,{action:c,secondaryAction:o,align:t})]})]})})}));n.displayName="CTAInverse";exports.CTAInverse=n;
|
|
2
|
-
//# sourceMappingURL=Inverse.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Inverse.cjs","sources":["../../../../../src/components/CTA/variants/Inverse.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport { CTAActions } from \"../parts\";\nimport type { CTAProps } from \"../types\";\n\n/** inverse — ink panel with a wide left-aligned split. */\nexport const CTAInverse = forwardRef<HTMLElement, CTAProps>(\n ({ className, title, description, action, secondaryAction, align = \"left\", id, ...props }, ref) => {\n return (\n <section ref={ref} id={id} className={cn(\"w-full py-6 pb-20\", className)} {...props}>\n <Container>\n <div\n className=\"relative overflow-hidden rounded-[1.75rem] px-7 py-16 sm:px-16 sm:py-20\"\n style={{\n backgroundColor: \"rgb(var(--color-secondary))\",\n color: \"contrast-color(rgb(var(--color-secondary)))\",\n }}\n >\n <div aria-hidden className=\"pointer-events-none absolute inset-0 grain opacity-[0.09] mix-blend-overlay\" />\n <div\n className={cn(\n \"relative flex flex-col items-start gap-10\",\n align === \"center\" && \"items-center text-center\",\n \"lg:flex-row lg:items-end lg:justify-between\",\n )}\n >\n <div className={cn(\"max-w-3xl\", align === \"center\" && \"mx-auto\")}>\n <h2 className=\"font-display text-balance text-4xl font-semibold leading-[1.02] tracking-[-0.03em] sm:text-6xl\">\n {title}\n </h2>\n {description ? (\n <p className={cn(\"mt-5 max-w-xl text-pretty text-base leading-7 sm:text-lg\", align === \"center\" && \"mx-auto\")}>\n {description}\n </p>\n ) : null}\n </div>\n <CTAActions action={action} secondaryAction={secondaryAction} align={align} />\n </div>\n </div>\n </Container>\n </section>\n );\n },\n);\nCTAInverse.displayName = \"CTAInverse\";"],"names":["CTAInverse","forwardRef","className","title","description","action","secondaryAction","align","id","props","ref","jsx","cn","Container","jsxs","CTAActions"],"mappings":"sOAOaA,EAAaC,EAAAA,WACxB,CAAC,CAAE,UAAAC,EAAW,MAAAC,EAAO,YAAAC,EAAa,OAAAC,EAAQ,gBAAAC,EAAiB,MAAAC,EAAQ,OAAQ,GAAAC,EAAI,GAAGC,CAAA,EAASC,IAEvFC,EAAAA,IAAC,UAAA,CAAQ,IAAAD,EAAU,GAAAF,EAAQ,UAAWI,KAAG,oBAAqBV,CAAS,EAAI,GAAGO,EAC5E,SAAAE,EAAAA,IAACE,EAAAA,UAAA,CACC,SAAAC,EAAAA,KAAC,MAAA,CACC,UAAU,0EACV,MAAO,CACL,gBAAiB,8BACjB,MAAO,6CAAA,EAGT,SAAA,CAAAH,EAAAA,IAAC,MAAA,CAAI,cAAW,GAAC,UAAU,8EAA8E,EACzGG,EAAAA,KAAC,MAAA,CACC,UAAWF,EAAAA,GACT,4CACAL,IAAU,UAAY,2BACtB,6CAAA,EAGF,SAAA,CAAAO,OAAC,OAAI,UAAWF,EAAAA,GAAG,YAAaL,IAAU,UAAY,SAAS,EAC7D,SAAA,CAAAI,EAAAA,IAAC,KAAA,CAAG,UAAU,iGACX,SAAAR,EACH,EACCC,EACCO,EAAAA,IAAC,IAAA,CAAE,UAAWC,EAAAA,GAAG,2DAA4DL,IAAU,UAAY,SAAS,EACzG,SAAAH,CAAA,CACH,EACE,IAAA,EACN,EACAO,EAAAA,IAACI,EAAAA,WAAA,CAAW,OAAAV,EAAgB,gBAAAC,EAAkC,MAAAC,CAAA,CAAc,CAAA,CAAA,CAAA,CAC9E,CAAA,CAAA,EAEJ,CAAA,CACF,CAGN,EACAP,EAAW,YAAc"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),v=require("../../../utils/cn.cjs"),b=require("../../Container.cjs"),o=require("../parts.cjs");function c({className:i,brand:s,logo:d,logoSrc:x,logoAlt:m,logoClassName:h,description:a,columns:j,socials:l,bottom:p,languageSwitcher:u,badge:n,LinkComponent:y,...N}){const g=y??"a",f=o.FooterLogoNode({logo:d,logoSrc:x,logoAlt:m,logoClassName:h,brand:s})??e.jsx(o.FooterWordmark,{brand:s});return e.jsx("footer",{className:v.cn("w-full bg-secondary text-on-secondary",i),...N,children:e.jsxs(b.Container,{className:"py-16",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-10 md:grid-cols-4 lg:grid-cols-6",children:[e.jsxs("div",{className:"col-span-2",children:[e.jsx("span",{style:{color:"rgb(var(--color-on-secondary))"},children:f}),a?e.jsx("p",{className:"mt-4 max-w-xs text-sm leading-6 text-on-secondary/60",children:a}):null,l?e.jsx("div",{className:"mt-6 flex items-center gap-3",children:l}):null,n?e.jsx("div",{className:"mt-6",children:n}):null]}),j.map(r=>e.jsxs("div",{children:[e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-[0.16em] text-on-secondary/50",children:r.title}),e.jsx("ul",{className:"mt-4 space-y-2.5",children:r.links.map(t=>e.jsx("li",{children:e.jsx(g,{href:t.href,className:"text-sm text-on-secondary/70 transition-colors duration-150 hover:text-on-secondary",children:t.label})},t.href))})]},r.title))]}),e.jsx(o.FooterBottomBar,{bottom:p,languageSwitcher:u,brand:s,wrapperClassName:"mt-14 flex flex-col items-center justify-between gap-4 border-t border-white/10 pt-8 text-sm text-on-secondary/50 sm:flex-row",textClassName:""})]})})}c.displayName="FooterClassic";exports.FooterClassic=c;
|
|
2
|
-
//# sourceMappingURL=Classic.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Classic.cjs","sources":["../../../../../src/components/Footer/variants/Classic.tsx"],"sourcesContent":["import { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport type { FooterProps } from \"../types\";\nimport {\n FooterWordmark,\n FooterLogoNode,\n FooterBottomBar,\n} from \"../parts\";\n\ninterface ClassicProps extends FooterProps {}\n\nexport function FooterClassic({ className, brand, logo, logoSrc, logoAlt, logoClassName, description, columns, socials, bottom, languageSwitcher, badge, LinkComponent, ...props }: ClassicProps) {\n const Link = LinkComponent ?? \"a\";\n const brandNode = FooterLogoNode({ logo, logoSrc, logoAlt, logoClassName, brand }) ?? <FooterWordmark brand={brand} />;\n\n return (\n <footer className={cn(\"w-full bg-secondary text-on-secondary\", className)} {...props}>\n <Container className=\"py-16\">\n <div className=\"grid grid-cols-2 gap-10 md:grid-cols-4 lg:grid-cols-6\">\n <div className=\"col-span-2\">\n <span style={{ color: \"rgb(var(--color-on-secondary))\" }}>{brandNode}</span>\n {description ? (\n <p className=\"mt-4 max-w-xs text-sm leading-6 text-on-secondary/60\">{description}</p>\n ) : null}\n {socials ? <div className=\"mt-6 flex items-center gap-3\">{socials}</div> : null}\n {badge ? <div className=\"mt-6\">{badge}</div> : null}\n </div>\n {columns.map((column) => (\n <div key={column.title}>\n <h3 className=\"text-xs font-semibold uppercase tracking-[0.16em] text-on-secondary/50\">\n {column.title}\n </h3>\n <ul className=\"mt-4 space-y-2.5\">\n {column.links.map((link) => (\n <li key={link.href}>\n <Link\n href={link.href}\n className=\"text-sm text-on-secondary/70 transition-colors duration-150 hover:text-on-secondary\"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n <FooterBottomBar\n bottom={bottom}\n languageSwitcher={languageSwitcher}\n brand={brand}\n wrapperClassName=\"mt-14 flex flex-col items-center justify-between gap-4 border-t border-white/10 pt-8 text-sm text-on-secondary/50 sm:flex-row\"\n textClassName=\"\"\n />\n </Container>\n </footer>\n );\n}\nFooterClassic.displayName = \"FooterClassic\";"],"names":["FooterClassic","className","brand","logo","logoSrc","logoAlt","logoClassName","description","columns","socials","bottom","languageSwitcher","badge","LinkComponent","props","Link","brandNode","FooterLogoNode","jsx","FooterWordmark","cn","jsxs","Container","column","link","FooterBottomBar"],"mappings":"mNAWO,SAASA,EAAc,CAAE,UAAAC,EAAW,MAAAC,EAAO,KAAAC,EAAM,QAAAC,EAAS,QAAAC,EAAS,cAAAC,EAAe,YAAAC,EAAa,QAAAC,EAAS,QAAAC,EAAS,OAAAC,EAAQ,iBAAAC,EAAkB,MAAAC,EAAO,cAAAC,EAAe,GAAGC,GAAuB,CAChM,MAAMC,EAAOF,GAAiB,IACxBG,EAAYC,EAAAA,eAAe,CAAE,KAAAd,EAAM,QAAAC,EAAS,QAAAC,EAAS,cAAAC,EAAe,MAAAJ,CAAA,CAAO,GAAKgB,EAAAA,IAACC,EAAAA,eAAA,CAAe,MAAAjB,CAAA,CAAc,EAEpH,OACEgB,EAAAA,IAAC,SAAA,CAAO,UAAWE,EAAAA,GAAG,wCAAyCnB,CAAS,EAAI,GAAGa,EAC7E,SAAAO,EAAAA,KAACC,EAAAA,UAAA,CAAU,UAAU,QACnB,SAAA,CAAAD,EAAAA,KAAC,MAAA,CAAI,UAAU,wDACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,aACb,SAAA,CAAAH,MAAC,QAAK,MAAO,CAAE,MAAO,gCAAA,EAAqC,SAAAF,EAAU,EACpET,EACCW,EAAAA,IAAC,IAAA,CAAE,UAAU,uDAAwD,WAAY,EAC/E,KACHT,EAAUS,EAAAA,IAAC,MAAA,CAAI,UAAU,+BAAgC,WAAQ,EAAS,KAC1EN,EAAQM,EAAAA,IAAC,MAAA,CAAI,UAAU,OAAQ,WAAM,EAAS,IAAA,EACjD,EACCV,EAAQ,IAAKe,UACX,MAAA,CACC,SAAA,CAAAL,EAAAA,IAAC,KAAA,CAAG,UAAU,yEACX,SAAAK,EAAO,MACV,EACAL,EAAAA,IAAC,KAAA,CAAG,UAAU,mBACX,SAAAK,EAAO,MAAM,IAAKC,GACjBN,EAAAA,IAAC,KAAA,CACC,SAAAA,EAAAA,IAACH,EAAA,CACC,KAAMS,EAAK,KACX,UAAU,sFAET,SAAAA,EAAK,KAAA,CAAA,GALDA,EAAK,IAOd,CACD,CAAA,CACH,CAAA,CAAA,EAfQD,EAAO,KAgBjB,CACD,CAAA,EACH,EACAL,EAAAA,IAACO,EAAAA,gBAAA,CACC,OAAAf,EACA,iBAAAC,EACA,MAAAT,EACA,iBAAiB,gIACjB,cAAc,EAAA,CAAA,CAChB,CAAA,CACF,CAAA,CACF,CAEJ,CACAF,EAAc,YAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Editorial.cjs","sources":["../../../../../src/components/Stats/variants/Editorial.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { valueBase, suffixBase, gridCols, DeltaMark } from \"../parts\";\nimport type { Stat } from \"../types\";\n\ninterface EditorialProps extends HTMLAttributes<HTMLDListElement> {\n stats: Stat[];\n columns?: 2 | 3 | 4;\n}\n\n/** editorial — a ruled ledger: label on the rule, oversized numeral, typed meta. */\nexport const StatsEditorial = forwardRef<HTMLDListElement, EditorialProps>(\n ({ className, stats, columns = 4, ...props }, ref) => (\n <dl\n ref={ref}\n className={cn(\"grid grid-cols-1 gap-x-10 gap-y-10\", gridCols[columns], className)}\n {...props}\n >\n {stats.map((stat) => (\n <div key={stat.label} className=\"border-t border-border pt-5\">\n <dt className=\"text-sm leading-5 text-muted-foreground\">{stat.label}</dt>\n <dd\n className={cn(\n valueBase,\n \"mt-3 text-5xl sm:text-6xl\",\n stat.accent ? \"text-primary\" : undefined,\n )}\n >\n {stat.value}\n {stat.suffix ? <span className={suffixBase}>{stat.suffix}</span> : null}\n </dd>\n {typeof stat.delta === \"number\" || stat.sub ? (\n <div className=\"mt-4 flex flex-wrap items-baseline gap-x-3 gap-y-1\">\n {typeof stat.delta === \"number\" ? <DeltaMark delta={stat.delta} /> : null}\n {stat.sub ? (\n <p className=\"text-[13px] leading-5 text-muted-foreground\">{stat.sub}</p>\n ) : null}\n </div>\n ) : null}\n </div>\n ))}\n </dl>\n ),\n);\nStatsEditorial.displayName = \"StatsEditorial\";\n"],"names":["StatsEditorial","forwardRef","className","stats","columns","props","ref","jsx","cn","gridCols","stat","jsxs","valueBase","suffixBase","DeltaMark"],"mappings":"qMAWaA,EAAiBC,EAAAA,WAC5B,CAAC,CAAE,UAAAC,EAAW,MAAAC,EAAO,QAAAC,EAAU,EAAG,GAAGC,CAAA,EAASC,IAC5CC,EAAAA,IAAC,KAAA,CACC,IAAAD,EACA,UAAWE,EAAAA,GAAG,qCAAsCC,EAAAA,SAASL,CAAO,EAAGF,CAAS,EAC/E,GAAGG,EAEH,WAAM,IAAKK,GACVC,OAAC,MAAA,CAAqB,UAAU,8BAC9B,SAAA,CAAAJ,EAAAA,IAAC,KAAA,CAAG,UAAU,0CAA2C,SAAAG,EAAK,MAAM,EACpEC,EAAAA,KAAC,KAAA,CACC,UAAWH,EAAAA,GACTI,EAAAA,UACA,4BACAF,EAAK,OAAS,eAAiB,MAAA,EAGhC,SAAA,CAAAA,EAAK,MACLA,EAAK,OAASH,MAAC,OAAA,CAAK,UAAWM,EAAAA,WAAa,SAAAH,EAAK,OAAO,EAAU,IAAA,CAAA,CAAA,EAEpE,OAAOA,EAAK,OAAU,UAAYA,EAAK,IACtCC,EAAAA,KAAC,MAAA,CAAI,UAAU,qDACZ,SAAA,CAAA,OAAOD,EAAK,OAAU,SAAWH,MAACO,EAAAA,WAAU,MAAOJ,EAAK,MAAO,EAAK,KACpEA,EAAK,IACJH,MAAC,IAAA,CAAE,UAAU,8CAA+C,SAAAG,EAAK,IAAI,EACnE,IAAA,CAAA,CACN,EACE,IAAA,CAAA,EAnBIA,EAAK,KAoBf,CACD,CAAA,CAAA,CAGP,EACAV,EAAe,YAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Hairline.cjs","sources":["../../../../../src/components/Stats/variants/Hairline.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { valueBase, suffixBase, gridCols, gridDivider, DeltaMark } from \"../parts\";\nimport type { Stat } from \"../types\";\n\ninterface HairlineProps extends HTMLAttributes<HTMLDListElement> {\n stats: Stat[];\n columns?: 2 | 3 | 4;\n}\n\n/** hairline — centered numerals in a symmetric run, divided by true vertical hairlines. */\nexport const StatsHairline = forwardRef<HTMLDListElement, HairlineProps>(\n ({ className, stats, columns = 4, ...props }, ref) => (\n <dl\n ref={ref}\n className={cn(\"grid grid-cols-1 gap-y-10\", gridCols[columns], gridDivider[columns], className)}\n {...props}\n >\n {stats.map((stat) => (\n <div\n key={stat.label}\n className=\"flex flex-col items-center gap-2.5 border-border text-center sm:px-6\"\n >\n <dd\n className={cn(\n valueBase,\n \"text-4xl sm:text-5xl\",\n stat.accent ? \"text-primary\" : undefined,\n )}\n >\n {stat.value}\n {stat.suffix ? <span className={suffixBase}>{stat.suffix}</span> : null}\n </dd>\n <dt className=\"text-sm leading-5 text-muted-foreground\">{stat.label}</dt>\n {typeof stat.delta === \"number\" ? (\n <DeltaMark delta={stat.delta} className=\"mt-0.5\" />\n ) : null}\n {stat.sub ? (\n <p className=\"mt-1 max-w-[22ch] text-[13px] leading-5 text-muted-foreground\">\n {stat.sub}\n </p>\n ) : null}\n </div>\n ))}\n </dl>\n ),\n);\nStatsHairline.displayName = \"StatsHairline\";\n"],"names":["StatsHairline","forwardRef","className","stats","columns","props","ref","jsx","cn","gridCols","gridDivider","stat","jsxs","valueBase","suffixBase","DeltaMark"],"mappings":"qMAWaA,EAAgBC,EAAAA,WAC3B,CAAC,CAAE,UAAAC,EAAW,MAAAC,EAAO,QAAAC,EAAU,EAAG,GAAGC,CAAA,EAASC,IAC5CC,EAAAA,IAAC,KAAA,CACC,IAAAD,EACA,UAAWE,EAAAA,GAAG,4BAA6BC,EAAAA,SAASL,CAAO,EAAGM,EAAAA,YAAYN,CAAO,EAAGF,CAAS,EAC5F,GAAGG,EAEH,SAAAF,EAAM,IAAKQ,GACVC,EAAAA,KAAC,MAAA,CAEC,UAAU,uEAEV,SAAA,CAAAA,EAAAA,KAAC,KAAA,CACC,UAAWJ,EAAAA,GACTK,EAAAA,UACA,uBACAF,EAAK,OAAS,eAAiB,MAAA,EAGhC,SAAA,CAAAA,EAAK,MACLA,EAAK,OAASJ,MAAC,OAAA,CAAK,UAAWO,EAAAA,WAAa,SAAAH,EAAK,OAAO,EAAU,IAAA,CAAA,CAAA,EAErEJ,EAAAA,IAAC,KAAA,CAAG,UAAU,0CAA2C,WAAK,MAAM,EACnE,OAAOI,EAAK,OAAU,SACrBJ,EAAAA,IAACQ,EAAAA,UAAA,CAAU,MAAOJ,EAAK,MAAO,UAAU,QAAA,CAAS,EAC/C,KACHA,EAAK,IACJJ,MAAC,IAAA,CAAE,UAAU,gEACV,SAAAI,EAAK,IACR,EACE,IAAA,CAAA,EArBCA,EAAK,KAAA,CAuBb,CAAA,CAAA,CAGP,EACAX,EAAc,YAAc"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { jsx as e, jsxs as l } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as x } from "react";
|
|
3
|
-
import { cn as t } from "../../../utils/cn.js";
|
|
4
|
-
import { Container as p } from "../../Container.js";
|
|
5
|
-
import { CTAActions as f } from "../parts.js";
|
|
6
|
-
const v = x(
|
|
7
|
-
({ className: a, title: s, description: o, action: n, secondaryAction: c, align: r = "left", id: i, ...m }, d) => /* @__PURE__ */ e("section", { ref: d, id: i, className: t("w-full py-6 pb-20", a), ...m, children: /* @__PURE__ */ e(p, { children: /* @__PURE__ */ l(
|
|
8
|
-
"div",
|
|
9
|
-
{
|
|
10
|
-
className: "relative overflow-hidden rounded-[1.75rem] px-7 py-16 sm:px-16 sm:py-20",
|
|
11
|
-
style: {
|
|
12
|
-
backgroundColor: "rgb(var(--color-secondary))",
|
|
13
|
-
color: "contrast-color(rgb(var(--color-secondary)))"
|
|
14
|
-
},
|
|
15
|
-
children: [
|
|
16
|
-
/* @__PURE__ */ e("div", { "aria-hidden": !0, className: "pointer-events-none absolute inset-0 grain opacity-[0.09] mix-blend-overlay" }),
|
|
17
|
-
/* @__PURE__ */ l(
|
|
18
|
-
"div",
|
|
19
|
-
{
|
|
20
|
-
className: t(
|
|
21
|
-
"relative flex flex-col items-start gap-10",
|
|
22
|
-
r === "center" && "items-center text-center",
|
|
23
|
-
"lg:flex-row lg:items-end lg:justify-between"
|
|
24
|
-
),
|
|
25
|
-
children: [
|
|
26
|
-
/* @__PURE__ */ l("div", { className: t("max-w-3xl", r === "center" && "mx-auto"), children: [
|
|
27
|
-
/* @__PURE__ */ e("h2", { className: "font-display text-balance text-4xl font-semibold leading-[1.02] tracking-[-0.03em] sm:text-6xl", children: s }),
|
|
28
|
-
o ? /* @__PURE__ */ e("p", { className: t("mt-5 max-w-xl text-pretty text-base leading-7 sm:text-lg", r === "center" && "mx-auto"), children: o }) : null
|
|
29
|
-
] }),
|
|
30
|
-
/* @__PURE__ */ e(f, { action: n, secondaryAction: c, align: r })
|
|
31
|
-
]
|
|
32
|
-
}
|
|
33
|
-
)
|
|
34
|
-
]
|
|
35
|
-
}
|
|
36
|
-
) }) })
|
|
37
|
-
);
|
|
38
|
-
v.displayName = "CTAInverse";
|
|
39
|
-
export {
|
|
40
|
-
v as CTAInverse
|
|
41
|
-
};
|
|
42
|
-
//# sourceMappingURL=Inverse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Inverse.js","sources":["../../../../../src/components/CTA/variants/Inverse.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport { CTAActions } from \"../parts\";\nimport type { CTAProps } from \"../types\";\n\n/** inverse — ink panel with a wide left-aligned split. */\nexport const CTAInverse = forwardRef<HTMLElement, CTAProps>(\n ({ className, title, description, action, secondaryAction, align = \"left\", id, ...props }, ref) => {\n return (\n <section ref={ref} id={id} className={cn(\"w-full py-6 pb-20\", className)} {...props}>\n <Container>\n <div\n className=\"relative overflow-hidden rounded-[1.75rem] px-7 py-16 sm:px-16 sm:py-20\"\n style={{\n backgroundColor: \"rgb(var(--color-secondary))\",\n color: \"contrast-color(rgb(var(--color-secondary)))\",\n }}\n >\n <div aria-hidden className=\"pointer-events-none absolute inset-0 grain opacity-[0.09] mix-blend-overlay\" />\n <div\n className={cn(\n \"relative flex flex-col items-start gap-10\",\n align === \"center\" && \"items-center text-center\",\n \"lg:flex-row lg:items-end lg:justify-between\",\n )}\n >\n <div className={cn(\"max-w-3xl\", align === \"center\" && \"mx-auto\")}>\n <h2 className=\"font-display text-balance text-4xl font-semibold leading-[1.02] tracking-[-0.03em] sm:text-6xl\">\n {title}\n </h2>\n {description ? (\n <p className={cn(\"mt-5 max-w-xl text-pretty text-base leading-7 sm:text-lg\", align === \"center\" && \"mx-auto\")}>\n {description}\n </p>\n ) : null}\n </div>\n <CTAActions action={action} secondaryAction={secondaryAction} align={align} />\n </div>\n </div>\n </Container>\n </section>\n );\n },\n);\nCTAInverse.displayName = \"CTAInverse\";"],"names":["CTAInverse","forwardRef","className","title","description","action","secondaryAction","align","id","props","ref","jsx","cn","Container","jsxs","CTAActions"],"mappings":";;;;;AAOO,MAAMA,IAAaC;AAAA,EACxB,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,aAAAC,GAAa,QAAAC,GAAQ,iBAAAC,GAAiB,OAAAC,IAAQ,QAAQ,IAAAC,GAAI,GAAGC,EAAA,GAASC,MAEvF,gBAAAC,EAAC,WAAA,EAAQ,KAAAD,GAAU,IAAAF,GAAQ,WAAWI,EAAG,qBAAqBV,CAAS,GAAI,GAAGO,GAC5E,UAAA,gBAAAE,EAACE,GAAA,EACC,UAAA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,OAAO;AAAA,MAAA;AAAA,MAGT,UAAA;AAAA,QAAA,gBAAAH,EAAC,OAAA,EAAI,eAAW,IAAC,WAAU,+EAA8E;AAAA,QACzG,gBAAAG;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWF;AAAA,cACT;AAAA,cACAL,MAAU,YAAY;AAAA,cACtB;AAAA,YAAA;AAAA,YAGF,UAAA;AAAA,cAAA,gBAAAO,EAAC,SAAI,WAAWF,EAAG,aAAaL,MAAU,YAAY,SAAS,GAC7D,UAAA;AAAA,gBAAA,gBAAAI,EAAC,MAAA,EAAG,WAAU,kGACX,UAAAR,GACH;AAAA,gBACCC,IACC,gBAAAO,EAAC,KAAA,EAAE,WAAWC,EAAG,4DAA4DL,MAAU,YAAY,SAAS,GACzG,UAAAH,EAAA,CACH,IACE;AAAA,cAAA,GACN;AAAA,cACA,gBAAAO,EAACI,GAAA,EAAW,QAAAV,GAAgB,iBAAAC,GAAkC,OAAAC,EAAA,CAAc;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAC9E;AAAA,IAAA;AAAA,EAAA,GAEJ,EAAA,CACF;AAGN;AACAP,EAAW,cAAc;"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { jsx as e, jsxs as r } from "react/jsx-runtime";
|
|
2
|
-
import { cn as v } from "../../../utils/cn.js";
|
|
3
|
-
import { Container as w } from "../../Container.js";
|
|
4
|
-
import { FooterLogoNode as b, FooterWordmark as C, FooterBottomBar as F } from "../parts.js";
|
|
5
|
-
function j({ className: n, brand: t, logo: i, logoSrc: m, logoAlt: d, logoClassName: x, description: a, columns: p, socials: l, bottom: h, languageSwitcher: f, badge: c, LinkComponent: N, ...y }) {
|
|
6
|
-
const g = N ?? "a", u = b({ logo: i, logoSrc: m, logoAlt: d, logoClassName: x, brand: t }) ?? /* @__PURE__ */ e(C, { brand: t });
|
|
7
|
-
return /* @__PURE__ */ e("footer", { className: v("w-full bg-secondary text-on-secondary", n), ...y, children: /* @__PURE__ */ r(w, { className: "py-16", children: [
|
|
8
|
-
/* @__PURE__ */ r("div", { className: "grid grid-cols-2 gap-10 md:grid-cols-4 lg:grid-cols-6", children: [
|
|
9
|
-
/* @__PURE__ */ r("div", { className: "col-span-2", children: [
|
|
10
|
-
/* @__PURE__ */ e("span", { style: { color: "rgb(var(--color-on-secondary))" }, children: u }),
|
|
11
|
-
a ? /* @__PURE__ */ e("p", { className: "mt-4 max-w-xs text-sm leading-6 text-on-secondary/60", children: a }) : null,
|
|
12
|
-
l ? /* @__PURE__ */ e("div", { className: "mt-6 flex items-center gap-3", children: l }) : null,
|
|
13
|
-
c ? /* @__PURE__ */ e("div", { className: "mt-6", children: c }) : null
|
|
14
|
-
] }),
|
|
15
|
-
p.map((o) => /* @__PURE__ */ r("div", { children: [
|
|
16
|
-
/* @__PURE__ */ e("h3", { className: "text-xs font-semibold uppercase tracking-[0.16em] text-on-secondary/50", children: o.title }),
|
|
17
|
-
/* @__PURE__ */ e("ul", { className: "mt-4 space-y-2.5", children: o.links.map((s) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(
|
|
18
|
-
g,
|
|
19
|
-
{
|
|
20
|
-
href: s.href,
|
|
21
|
-
className: "text-sm text-on-secondary/70 transition-colors duration-150 hover:text-on-secondary",
|
|
22
|
-
children: s.label
|
|
23
|
-
}
|
|
24
|
-
) }, s.href)) })
|
|
25
|
-
] }, o.title))
|
|
26
|
-
] }),
|
|
27
|
-
/* @__PURE__ */ e(
|
|
28
|
-
F,
|
|
29
|
-
{
|
|
30
|
-
bottom: h,
|
|
31
|
-
languageSwitcher: f,
|
|
32
|
-
brand: t,
|
|
33
|
-
wrapperClassName: "mt-14 flex flex-col items-center justify-between gap-4 border-t border-white/10 pt-8 text-sm text-on-secondary/50 sm:flex-row",
|
|
34
|
-
textClassName: ""
|
|
35
|
-
}
|
|
36
|
-
)
|
|
37
|
-
] }) });
|
|
38
|
-
}
|
|
39
|
-
j.displayName = "FooterClassic";
|
|
40
|
-
export {
|
|
41
|
-
j as FooterClassic
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=Classic.js.map
|