@lobehub/ui 5.48.2 → 5.49.0
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/es/Highlighter/FullFeatured.mjs +1 -1
- package/es/Highlighter/FullFeatured.mjs.map +1 -1
- package/es/Highlighter/LangSelect.mjs +1 -1
- package/es/Highlighter/LangSelect.mjs.map +1 -1
- package/es/Highlighter/style.mjs +14 -11
- package/es/Highlighter/style.mjs.map +1 -1
- package/es/Mermaid/FullFeatured.mjs +1 -1
- package/es/Mermaid/FullFeatured.mjs.map +1 -1
- package/es/ThemeProvider/ThemeProvider.mjs +2 -2
- package/es/ThemeProvider/ThemeProvider.mjs.map +1 -1
- package/es/awesome/AgentSkillCard/AgentSkillCard.d.mts +6 -0
- package/es/awesome/AgentSkillCard/AgentSkillCard.mjs +83 -0
- package/es/awesome/AgentSkillCard/AgentSkillCard.mjs.map +1 -0
- package/es/awesome/AgentSkillCard/agents.d.mts +6 -0
- package/es/awesome/AgentSkillCard/agents.mjs +40 -0
- package/es/awesome/AgentSkillCard/agents.mjs.map +1 -0
- package/es/awesome/AgentSkillCard/index.d.mts +4 -0
- package/es/awesome/AgentSkillCard/style.mjs +85 -0
- package/es/awesome/AgentSkillCard/style.mjs.map +1 -0
- package/es/awesome/AgentSkillCard/type.d.mts +41 -0
- package/es/awesome/BentoGrid/BentoCard.d.mts +6 -0
- package/es/awesome/BentoGrid/BentoCard.mjs +39 -0
- package/es/awesome/BentoGrid/BentoCard.mjs.map +1 -0
- package/es/awesome/BentoGrid/BentoGrid.d.mts +6 -0
- package/es/awesome/BentoGrid/BentoGrid.mjs +20 -0
- package/es/awesome/BentoGrid/BentoGrid.mjs.map +1 -0
- package/es/awesome/BentoGrid/index.d.mts +4 -0
- package/es/awesome/BentoGrid/style.mjs +102 -0
- package/es/awesome/BentoGrid/style.mjs.map +1 -0
- package/es/awesome/BentoGrid/type.d.mts +40 -0
- package/es/awesome/CodeShowcase/CodeShowcase.d.mts +6 -0
- package/es/awesome/CodeShowcase/CodeShowcase.mjs +51 -0
- package/es/awesome/CodeShowcase/CodeShowcase.mjs.map +1 -0
- package/es/awesome/CodeShowcase/index.d.mts +3 -0
- package/es/awesome/CodeShowcase/style.mjs +50 -0
- package/es/awesome/CodeShowcase/style.mjs.map +1 -0
- package/es/awesome/CodeShowcase/type.d.mts +27 -0
- package/es/awesome/FeatureGrid/FeatureGrid.d.mts +6 -0
- package/es/awesome/FeatureGrid/FeatureGrid.mjs +48 -0
- package/es/awesome/FeatureGrid/FeatureGrid.mjs.map +1 -0
- package/es/awesome/FeatureGrid/index.d.mts +3 -0
- package/es/awesome/FeatureGrid/style.mjs +75 -0
- package/es/awesome/FeatureGrid/style.mjs.map +1 -0
- package/es/awesome/FeatureGrid/type.d.mts +25 -0
- package/es/awesome/FluidGradient/FluidGradient.d.mts +6 -0
- package/es/awesome/FluidGradient/FluidGradient.mjs +293 -0
- package/es/awesome/FluidGradient/FluidGradient.mjs.map +1 -0
- package/es/awesome/FluidGradient/index.d.mts +3 -0
- package/es/awesome/FluidGradient/style.mjs +52 -0
- package/es/awesome/FluidGradient/style.mjs.map +1 -0
- package/es/awesome/FluidGradient/type.d.mts +22 -0
- package/es/awesome/InstallBanner/InstallBanner.d.mts +6 -0
- package/es/awesome/InstallBanner/InstallBanner.mjs +35 -0
- package/es/awesome/InstallBanner/InstallBanner.mjs.map +1 -0
- package/es/awesome/InstallBanner/index.d.mts +3 -0
- package/es/awesome/InstallBanner/style.mjs +46 -0
- package/es/awesome/InstallBanner/style.mjs.map +1 -0
- package/es/awesome/InstallBanner/type.d.mts +18 -0
- package/es/awesome/LandingHero/LandingHero.d.mts +6 -0
- package/es/awesome/LandingHero/LandingHero.mjs +55 -0
- package/es/awesome/LandingHero/LandingHero.mjs.map +1 -0
- package/es/awesome/LandingHero/index.d.mts +3 -0
- package/es/awesome/LandingHero/style.mjs +155 -0
- package/es/awesome/LandingHero/style.mjs.map +1 -0
- package/es/awesome/LandingHero/type.d.mts +29 -0
- package/es/awesome/LandingSection/LandingSection.d.mts +6 -0
- package/es/awesome/LandingSection/LandingSection.mjs +61 -0
- package/es/awesome/LandingSection/LandingSection.mjs.map +1 -0
- package/es/awesome/LandingSection/index.d.mts +3 -0
- package/es/awesome/LandingSection/style.mjs +88 -0
- package/es/awesome/LandingSection/style.mjs.map +1 -0
- package/es/awesome/LandingSection/type.d.mts +40 -0
- package/es/awesome/LogoMarquee/LogoMarquee.d.mts +6 -0
- package/es/awesome/LogoMarquee/LogoMarquee.mjs +52 -0
- package/es/awesome/LogoMarquee/LogoMarquee.mjs.map +1 -0
- package/es/awesome/LogoMarquee/index.d.mts +3 -0
- package/es/awesome/LogoMarquee/style.mjs +70 -0
- package/es/awesome/LogoMarquee/style.mjs.map +1 -0
- package/es/awesome/LogoMarquee/type.d.mts +40 -0
- package/es/awesome/index.d.mts +33 -1
- package/es/awesome/index.mjs +13 -1
- package/es/awesome/landingActions.d.mts +20 -0
- package/es/awesome/landingActions.mjs +123 -0
- package/es/awesome/landingActions.mjs.map +1 -0
- package/es/awesome/landingIcon.mjs +13 -0
- package/es/awesome/landingIcon.mjs.map +1 -0
- package/es/awesome/landingLink.d.mts +12 -0
- package/es/awesome/landingLink.mjs +23 -0
- package/es/awesome/landingLink.mjs.map +1 -0
- package/es/awesome/landingTokens.d.mts +10 -0
- package/es/awesome/landingTokens.mjs +19 -0
- package/es/awesome/landingTokens.mjs.map +1 -0
- package/es/base-ui/Input/style.d.mts +1 -1
- package/es/base-ui/Segmented/atoms.mjs +1 -0
- package/es/base-ui/Segmented/atoms.mjs.map +1 -1
- package/es/base-ui/Segmented/style.mjs +127 -125
- package/es/base-ui/Segmented/style.mjs.map +1 -1
- package/es/base-ui/index.mjs +4 -4
- package/es/dashboard/AuthLayout/AuthLayout.d.mts +9 -0
- package/es/dashboard/AuthLayout/AuthLayout.mjs +54 -0
- package/es/dashboard/AuthLayout/AuthLayout.mjs.map +1 -0
- package/es/dashboard/AuthLayout/index.d.mts +3 -0
- package/es/dashboard/AuthLayout/style.mjs +120 -0
- package/es/dashboard/AuthLayout/style.mjs.map +1 -0
- package/es/dashboard/AuthLayout/type.d.mts +16 -0
- package/es/dashboard/Breadcrumb/Breadcrumb.d.mts +9 -0
- package/es/dashboard/Breadcrumb/Breadcrumb.mjs +55 -0
- package/es/dashboard/Breadcrumb/Breadcrumb.mjs.map +1 -0
- package/es/dashboard/Breadcrumb/index.d.mts +3 -0
- package/es/dashboard/Breadcrumb/style.mjs +66 -0
- package/es/dashboard/Breadcrumb/style.mjs.map +1 -0
- package/es/dashboard/Breadcrumb/type.d.mts +25 -0
- package/es/dashboard/ConsoleNav/ConsoleNav.d.mts +9 -0
- package/es/dashboard/ConsoleNav/ConsoleNav.mjs +275 -0
- package/es/dashboard/ConsoleNav/ConsoleNav.mjs.map +1 -0
- package/es/dashboard/ConsoleNav/active.d.mts +7 -0
- package/es/dashboard/ConsoleNav/active.mjs +29 -0
- package/es/dashboard/ConsoleNav/active.mjs.map +1 -0
- package/es/dashboard/ConsoleNav/index.d.mts +4 -0
- package/es/dashboard/ConsoleNav/style.mjs +283 -0
- package/es/dashboard/ConsoleNav/style.mjs.map +1 -0
- package/es/dashboard/ConsoleNav/type.d.mts +71 -0
- package/es/dashboard/ConsoleShell/ConsoleBrand.d.mts +9 -0
- package/es/dashboard/ConsoleShell/ConsoleBrand.mjs +37 -0
- package/es/dashboard/ConsoleShell/ConsoleBrand.mjs.map +1 -0
- package/es/dashboard/ConsoleShell/ConsoleShell.d.mts +9 -0
- package/es/dashboard/ConsoleShell/ConsoleShell.mjs +149 -0
- package/es/dashboard/ConsoleShell/ConsoleShell.mjs.map +1 -0
- package/es/dashboard/ConsoleShell/context.d.mts +6 -0
- package/es/dashboard/ConsoleShell/context.mjs +16 -0
- package/es/dashboard/ConsoleShell/context.mjs.map +1 -0
- package/es/dashboard/ConsoleShell/index.d.mts +5 -0
- package/es/dashboard/ConsoleShell/style.mjs +209 -0
- package/es/dashboard/ConsoleShell/style.mjs.map +1 -0
- package/es/dashboard/ConsoleShell/type.d.mts +67 -0
- package/es/dashboard/FilterSidebar/FilterSidebar.d.mts +17 -0
- package/es/dashboard/FilterSidebar/FilterSidebar.mjs +151 -0
- package/es/dashboard/FilterSidebar/FilterSidebar.mjs.map +1 -0
- package/es/dashboard/FilterSidebar/context.d.mts +7 -0
- package/es/dashboard/FilterSidebar/context.mjs +19 -0
- package/es/dashboard/FilterSidebar/context.mjs.map +1 -0
- package/es/dashboard/FilterSidebar/index.d.mts +4 -0
- package/es/dashboard/FilterSidebar/style.mjs +155 -0
- package/es/dashboard/FilterSidebar/style.mjs.map +1 -0
- package/es/dashboard/FilterSidebar/type.d.mts +44 -0
- package/es/dashboard/FilterSidebar/width.mjs +18 -0
- package/es/dashboard/FilterSidebar/width.mjs.map +1 -0
- package/es/dashboard/PageHeader/PageHeader.d.mts +9 -0
- package/es/dashboard/PageHeader/PageHeader.mjs +37 -0
- package/es/dashboard/PageHeader/PageHeader.mjs.map +1 -0
- package/es/dashboard/PageHeader/index.d.mts +3 -0
- package/es/dashboard/PageHeader/style.mjs +47 -0
- package/es/dashboard/PageHeader/style.mjs.map +1 -0
- package/es/dashboard/PageHeader/type.d.mts +14 -0
- package/es/dashboard/PageSkeleton/PageSkeleton.d.mts +25 -0
- package/es/dashboard/PageSkeleton/PageSkeleton.mjs +136 -0
- package/es/dashboard/PageSkeleton/PageSkeleton.mjs.map +1 -0
- package/es/dashboard/PageSkeleton/style.mjs +122 -0
- package/es/dashboard/PageSkeleton/style.mjs.map +1 -0
- package/es/dashboard/PageSkeleton/type.d.mts +22 -0
- package/es/dashboard/PageTabs/PageTabs.d.mts +9 -0
- package/es/dashboard/PageTabs/PageTabs.mjs +37 -0
- package/es/dashboard/PageTabs/PageTabs.mjs.map +1 -0
- package/es/dashboard/PageTabs/index.d.mts +3 -0
- package/es/dashboard/PageTabs/style.mjs +57 -0
- package/es/dashboard/PageTabs/style.mjs.map +1 -0
- package/es/dashboard/PageTabs/type.d.mts +17 -0
- package/es/dashboard/RouteProgress/RouteProgress.d.mts +9 -0
- package/es/dashboard/RouteProgress/RouteProgress.mjs +44 -0
- package/es/dashboard/RouteProgress/RouteProgress.mjs.map +1 -0
- package/es/dashboard/RouteProgress/style.mjs +19 -0
- package/es/dashboard/RouteProgress/style.mjs.map +1 -0
- package/es/dashboard/RouteProgress/type.d.mts +8 -0
- package/es/dashboard/StatCard/StatCard.d.mts +9 -0
- package/es/dashboard/StatCard/StatCard.mjs +84 -0
- package/es/dashboard/StatCard/StatCard.mjs.map +1 -0
- package/es/dashboard/StatCard/index.d.mts +3 -0
- package/es/dashboard/StatCard/style.mjs +135 -0
- package/es/dashboard/StatCard/style.mjs.map +1 -0
- package/es/dashboard/StatCard/type.d.mts +26 -0
- package/es/dashboard/Surface/Surface.d.mts +13 -0
- package/es/dashboard/Surface/Surface.mjs +20 -0
- package/es/dashboard/Surface/Surface.mjs.map +1 -0
- package/es/dashboard/Surface/index.d.mts +4 -0
- package/es/dashboard/Surface/style.d.mts +14 -0
- package/es/dashboard/Surface/style.mjs +22 -0
- package/es/dashboard/Surface/style.mjs.map +1 -0
- package/es/dashboard/Surface/type.d.mts +8 -0
- package/es/dashboard/hooks.mjs +49 -0
- package/es/dashboard/hooks.mjs.map +1 -0
- package/es/dashboard/index.d.mts +37 -0
- package/es/dashboard/index.d.ts +1 -0
- package/es/dashboard/index.js +1 -0
- package/es/dashboard/index.mjs +17 -0
- package/es/static-css/registry.mjs +2 -2
- package/es/static-css/registry.mjs.map +1 -1
- package/es/storybook/StoryBook/index.mjs +4 -0
- package/es/storybook/StoryBook/index.mjs.map +1 -1
- package/es/storybook/StoryBook/style.mjs +7 -2
- package/es/storybook/StoryBook/style.mjs.map +1 -1
- package/es/styles/theme/token/base.mjs +2 -2
- package/es/styles/theme/token/base.mjs.map +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { accentGradient } from "../landingTokens.mjs";
|
|
2
|
+
import { createStaticStyles } from "antd-style";
|
|
3
|
+
//#region src/awesome/LandingHero/style.ts
|
|
4
|
+
const splitStack = "@media (max-width: 860px)";
|
|
5
|
+
const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
6
|
+
accent: css`
|
|
7
|
+
background: ${accentGradient};
|
|
8
|
+
background-clip: text;
|
|
9
|
+
|
|
10
|
+
-webkit-text-fill-color: transparent;
|
|
11
|
+
`,
|
|
12
|
+
actions: css`
|
|
13
|
+
justify-content: center;
|
|
14
|
+
margin-block-start: 36px;
|
|
15
|
+
|
|
16
|
+
[data-layout='split'] & {
|
|
17
|
+
justify-content: flex-start;
|
|
18
|
+
}
|
|
19
|
+
`,
|
|
20
|
+
aside: css`
|
|
21
|
+
display: flex;
|
|
22
|
+
justify-content: center;
|
|
23
|
+
min-inline-size: 0;
|
|
24
|
+
|
|
25
|
+
> * {
|
|
26
|
+
inline-size: 100%;
|
|
27
|
+
}
|
|
28
|
+
`,
|
|
29
|
+
badge: css`
|
|
30
|
+
display: inline-flex;
|
|
31
|
+
gap: 6px;
|
|
32
|
+
align-items: center;
|
|
33
|
+
|
|
34
|
+
margin-block-end: 24px;
|
|
35
|
+
padding-block: 4px;
|
|
36
|
+
padding-inline: 12px;
|
|
37
|
+
border: 1px solid ${cssVar.colorBorderSecondary};
|
|
38
|
+
border-radius: 999px;
|
|
39
|
+
|
|
40
|
+
font-size: ${cssVar.fontSizeSM};
|
|
41
|
+
color: ${cssVar.colorTextSecondary};
|
|
42
|
+
|
|
43
|
+
background: color-mix(in srgb, ${cssVar.colorBgContainer} 70%, transparent);
|
|
44
|
+
backdrop-filter: blur(8px);
|
|
45
|
+
|
|
46
|
+
a {
|
|
47
|
+
color: inherit;
|
|
48
|
+
text-decoration: none;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
a:hover {
|
|
52
|
+
color: ${cssVar.colorText};
|
|
53
|
+
}
|
|
54
|
+
`,
|
|
55
|
+
content: css`
|
|
56
|
+
position: relative;
|
|
57
|
+
z-index: 1;
|
|
58
|
+
|
|
59
|
+
display: flex;
|
|
60
|
+
flex-direction: column;
|
|
61
|
+
align-items: center;
|
|
62
|
+
|
|
63
|
+
inline-size: 100%;
|
|
64
|
+
`,
|
|
65
|
+
description: css`
|
|
66
|
+
max-inline-size: 36rem;
|
|
67
|
+
margin-block: 20px 0;
|
|
68
|
+
margin-inline: 0;
|
|
69
|
+
|
|
70
|
+
font-size: clamp(16px, 2vw, 19px);
|
|
71
|
+
line-height: 1.6;
|
|
72
|
+
color: ${cssVar.colorTextSecondary};
|
|
73
|
+
text-wrap: balance;
|
|
74
|
+
`,
|
|
75
|
+
intro: css`
|
|
76
|
+
display: flex;
|
|
77
|
+
flex-direction: column;
|
|
78
|
+
align-items: center;
|
|
79
|
+
min-inline-size: 0;
|
|
80
|
+
|
|
81
|
+
[data-layout='split'] & {
|
|
82
|
+
align-items: flex-start;
|
|
83
|
+
text-align: start;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
${splitStack} {
|
|
87
|
+
[data-layout='split'] & {
|
|
88
|
+
align-items: center;
|
|
89
|
+
text-align: center;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
`,
|
|
93
|
+
main: css`
|
|
94
|
+
display: flex;
|
|
95
|
+
flex-direction: column;
|
|
96
|
+
align-items: center;
|
|
97
|
+
inline-size: 100%;
|
|
98
|
+
|
|
99
|
+
[data-layout='split'] & {
|
|
100
|
+
display: grid;
|
|
101
|
+
grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
|
|
102
|
+
gap: clamp(32px, 5vw, 64px);
|
|
103
|
+
align-items: center;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
${splitStack} {
|
|
107
|
+
[data-layout='split'] & {
|
|
108
|
+
grid-template-columns: minmax(0, 1fr);
|
|
109
|
+
gap: 48px;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
`,
|
|
113
|
+
extra: css`
|
|
114
|
+
display: flex;
|
|
115
|
+
flex-direction: column;
|
|
116
|
+
gap: 40px;
|
|
117
|
+
align-items: center;
|
|
118
|
+
|
|
119
|
+
inline-size: 100%;
|
|
120
|
+
margin-block-start: 48px;
|
|
121
|
+
`,
|
|
122
|
+
root: css`
|
|
123
|
+
position: relative;
|
|
124
|
+
|
|
125
|
+
display: flex;
|
|
126
|
+
flex-direction: column;
|
|
127
|
+
align-items: center;
|
|
128
|
+
|
|
129
|
+
padding-block: clamp(72px, 13vh, 128px) clamp(40px, 7vh, 72px);
|
|
130
|
+
|
|
131
|
+
text-align: center;
|
|
132
|
+
|
|
133
|
+
&[data-layout='split'] {
|
|
134
|
+
padding-block-start: clamp(56px, 10vh, 104px);
|
|
135
|
+
}
|
|
136
|
+
`,
|
|
137
|
+
title: css`
|
|
138
|
+
margin: 0;
|
|
139
|
+
|
|
140
|
+
font-size: clamp(44px, 8vw, 84px);
|
|
141
|
+
font-weight: 900;
|
|
142
|
+
line-height: 1.02;
|
|
143
|
+
color: ${cssVar.colorText};
|
|
144
|
+
text-wrap: balance;
|
|
145
|
+
letter-spacing: -0.045em;
|
|
146
|
+
|
|
147
|
+
[data-layout='split'] & {
|
|
148
|
+
font-size: clamp(44px, 6vw, 72px);
|
|
149
|
+
}
|
|
150
|
+
`
|
|
151
|
+
}));
|
|
152
|
+
//#endregion
|
|
153
|
+
export { styles };
|
|
154
|
+
|
|
155
|
+
//# sourceMappingURL=style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/awesome/LandingHero/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nimport { accentGradient } from '@/awesome/landingTokens';\n\nconst splitStack = '@media (max-width: 860px)';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n accent: css`\n background: ${accentGradient};\n background-clip: text;\n\n -webkit-text-fill-color: transparent;\n `,\n actions: css`\n justify-content: center;\n margin-block-start: 36px;\n\n [data-layout='split'] & {\n justify-content: flex-start;\n }\n `,\n aside: css`\n display: flex;\n justify-content: center;\n min-inline-size: 0;\n\n > * {\n inline-size: 100%;\n }\n `,\n badge: css`\n display: inline-flex;\n gap: 6px;\n align-items: center;\n\n margin-block-end: 24px;\n padding-block: 4px;\n padding-inline: 12px;\n border: 1px solid ${cssVar.colorBorderSecondary};\n border-radius: 999px;\n\n font-size: ${cssVar.fontSizeSM};\n color: ${cssVar.colorTextSecondary};\n\n background: color-mix(in srgb, ${cssVar.colorBgContainer} 70%, transparent);\n backdrop-filter: blur(8px);\n\n a {\n color: inherit;\n text-decoration: none;\n }\n\n a:hover {\n color: ${cssVar.colorText};\n }\n `,\n content: css`\n position: relative;\n z-index: 1;\n\n display: flex;\n flex-direction: column;\n align-items: center;\n\n inline-size: 100%;\n `,\n description: css`\n max-inline-size: 36rem;\n margin-block: 20px 0;\n margin-inline: 0;\n\n font-size: clamp(16px, 2vw, 19px);\n line-height: 1.6;\n color: ${cssVar.colorTextSecondary};\n text-wrap: balance;\n `,\n intro: css`\n display: flex;\n flex-direction: column;\n align-items: center;\n min-inline-size: 0;\n\n [data-layout='split'] & {\n align-items: flex-start;\n text-align: start;\n }\n\n ${splitStack} {\n [data-layout='split'] & {\n align-items: center;\n text-align: center;\n }\n }\n `,\n main: css`\n display: flex;\n flex-direction: column;\n align-items: center;\n inline-size: 100%;\n\n [data-layout='split'] & {\n display: grid;\n grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);\n gap: clamp(32px, 5vw, 64px);\n align-items: center;\n }\n\n ${splitStack} {\n [data-layout='split'] & {\n grid-template-columns: minmax(0, 1fr);\n gap: 48px;\n }\n }\n `,\n extra: css`\n display: flex;\n flex-direction: column;\n gap: 40px;\n align-items: center;\n\n inline-size: 100%;\n margin-block-start: 48px;\n `,\n root: css`\n position: relative;\n\n display: flex;\n flex-direction: column;\n align-items: center;\n\n padding-block: clamp(72px, 13vh, 128px) clamp(40px, 7vh, 72px);\n\n text-align: center;\n\n &[data-layout='split'] {\n padding-block-start: clamp(56px, 10vh, 104px);\n }\n `,\n title: css`\n margin: 0;\n\n font-size: clamp(44px, 8vw, 84px);\n font-weight: 900;\n line-height: 1.02;\n color: ${cssVar.colorText};\n text-wrap: balance;\n letter-spacing: -0.045em;\n\n [data-layout='split'] & {\n font-size: clamp(44px, 6vw, 72px);\n }\n `,\n}));\n"],"mappings":";;;AAIA,MAAM,aAAa;AAEnB,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,QAAQ,GAAG;kBACK,eAAe;;;;;CAK/B,SAAS,GAAG;;;;;;;;CAQZ,OAAO,GAAG;;;;;;;;;CASV,OAAO,GAAG;;;;;;;;wBAQY,OAAO,qBAAqB;;;iBAGnC,OAAO,WAAW;aACtB,OAAO,mBAAmB;;qCAEF,OAAO,iBAAiB;;;;;;;;;eAS9C,OAAO,UAAU;;;CAG9B,SAAS,GAAG;;;;;;;;;;CAUZ,aAAa,GAAG;;;;;;;aAOL,OAAO,mBAAmB;;;CAGrC,OAAO,GAAG;;;;;;;;;;;MAWN,WAAW;;;;;;;CAOf,MAAM,GAAG;;;;;;;;;;;;;MAaL,WAAW;;;;;;;CAOf,OAAO,GAAG;;;;;;;;;CASV,MAAM,GAAG;;;;;;;;;;;;;;;CAeT,OAAO,GAAG;;;;;;aAMC,OAAO,UAAU;;;;;;;;AAQ9B,EAAE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { DivProps } from "../../types/index.mjs";
|
|
2
|
+
import { LandingLinkRender } from "../landingLink.mjs";
|
|
3
|
+
import { LandingAction, LandingNavigate } from "../landingActions.mjs";
|
|
4
|
+
import { ReactNode } from "react";
|
|
5
|
+
//#region src/awesome/LandingHero/type.d.ts
|
|
6
|
+
type LandingHeroAction = LandingAction;
|
|
7
|
+
interface LandingHeroProps extends Omit<DivProps, 'title'> {
|
|
8
|
+
/** Rendered after the title with the landing accent gradient. */
|
|
9
|
+
accent?: ReactNode;
|
|
10
|
+
actions?: LandingHeroAction[];
|
|
11
|
+
/**
|
|
12
|
+
* Content beside the text, e.g. an AgentSkillCard or a product preview. Setting it switches the
|
|
13
|
+
* hero to a two-column layout with left-aligned text; it stacks below the text on narrow screens.
|
|
14
|
+
*/
|
|
15
|
+
aside?: ReactNode;
|
|
16
|
+
/** Small pill above the title, e.g. a release note link. */
|
|
17
|
+
badge?: ReactNode;
|
|
18
|
+
/** Full-width content below the hero, e.g. a LogoMarquee. */
|
|
19
|
+
children?: ReactNode;
|
|
20
|
+
description?: ReactNode;
|
|
21
|
+
/** Renders action links, so client-side routers can supply their own Link. */
|
|
22
|
+
/** Client-side navigation for internal non-primary actions (rendered as BottomGradientButton). */
|
|
23
|
+
onNavigate?: LandingNavigate;
|
|
24
|
+
renderLink?: LandingLinkRender;
|
|
25
|
+
title: ReactNode;
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { LandingHeroAction, LandingHeroProps };
|
|
29
|
+
//# sourceMappingURL=type.d.mts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LandingSectionProps } from "./type.mjs";
|
|
2
|
+
//#region src/awesome/LandingSection/LandingSection.d.ts
|
|
3
|
+
declare const LandingSection: import("react").NamedExoticComponent<LandingSectionProps>;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { LandingSection as default };
|
|
6
|
+
//# sourceMappingURL=LandingSection.d.mts.map
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { LandingActions } from "../landingActions.mjs";
|
|
3
|
+
import Tag from "../../base-ui/Tag/Tag.mjs";
|
|
4
|
+
import { styles } from "./style.mjs";
|
|
5
|
+
import { memo } from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { cx } from "antd-style";
|
|
8
|
+
//#region src/awesome/LandingSection/LandingSection.tsx
|
|
9
|
+
const LandingSection = memo(({ actions, align = "start", children, className, description, divider = true, eyebrow, eyebrowColor = "blue", extra, id, onNavigate, renderLink, title, ...rest }) => {
|
|
10
|
+
const headingId = id ? `${id}-title` : void 0;
|
|
11
|
+
const hasActions = Boolean(actions?.length);
|
|
12
|
+
const hasAside = hasActions || Boolean(extra);
|
|
13
|
+
const hasHeader = Boolean(eyebrow || title || description || hasAside);
|
|
14
|
+
return /* @__PURE__ */ jsxs("section", {
|
|
15
|
+
"aria-labelledby": title ? headingId : void 0,
|
|
16
|
+
className: cx(styles.root, className),
|
|
17
|
+
"data-divider": divider,
|
|
18
|
+
id,
|
|
19
|
+
...rest,
|
|
20
|
+
children: [hasHeader && /* @__PURE__ */ jsxs("div", {
|
|
21
|
+
className: styles.header,
|
|
22
|
+
"data-align": align,
|
|
23
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
24
|
+
className: styles.heading,
|
|
25
|
+
children: [
|
|
26
|
+
eyebrow && /* @__PURE__ */ jsx(Tag, {
|
|
27
|
+
className: styles.eyebrow,
|
|
28
|
+
color: eyebrowColor,
|
|
29
|
+
shape: "round",
|
|
30
|
+
children: eyebrow
|
|
31
|
+
}),
|
|
32
|
+
title && /* @__PURE__ */ jsx("h2", {
|
|
33
|
+
className: styles.title,
|
|
34
|
+
id: headingId,
|
|
35
|
+
children: title
|
|
36
|
+
}),
|
|
37
|
+
description && /* @__PURE__ */ jsx("p", {
|
|
38
|
+
className: styles.description,
|
|
39
|
+
children: description
|
|
40
|
+
})
|
|
41
|
+
]
|
|
42
|
+
}), hasAside && /* @__PURE__ */ jsxs("div", {
|
|
43
|
+
className: styles.extra,
|
|
44
|
+
children: [hasActions && /* @__PURE__ */ jsx(LandingActions, {
|
|
45
|
+
actions,
|
|
46
|
+
renderLink,
|
|
47
|
+
size: "small",
|
|
48
|
+
onNavigate
|
|
49
|
+
}), extra]
|
|
50
|
+
})]
|
|
51
|
+
}), children && /* @__PURE__ */ jsx("div", {
|
|
52
|
+
className: hasHeader ? styles.body : void 0,
|
|
53
|
+
children
|
|
54
|
+
})]
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
LandingSection.displayName = "LandingSection";
|
|
58
|
+
//#endregion
|
|
59
|
+
export { LandingSection as default };
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=LandingSection.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LandingSection.mjs","names":[],"sources":["../../../src/awesome/LandingSection/LandingSection.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport { LandingActions } from '@/awesome/landingActions';\nimport Tag from '@/base-ui/Tag';\n\nimport { styles } from './style';\nimport type { LandingSectionProps } from './type';\n\nconst LandingSection = memo<LandingSectionProps>(\n ({\n actions,\n align = 'start',\n children,\n className,\n description,\n divider = true,\n eyebrow,\n eyebrowColor = 'blue',\n extra,\n id,\n onNavigate,\n renderLink,\n title,\n ...rest\n }) => {\n const headingId = id ? `${id}-title` : undefined;\n const hasActions = Boolean(actions?.length);\n const hasAside = hasActions || Boolean(extra);\n const hasHeader = Boolean(eyebrow || title || description || hasAside);\n\n return (\n <section\n aria-labelledby={title ? headingId : undefined}\n className={cx(styles.root, className)}\n data-divider={divider}\n id={id}\n {...rest}\n >\n {hasHeader && (\n <div className={styles.header} data-align={align}>\n <div className={styles.heading}>\n {eyebrow && (\n <Tag className={styles.eyebrow} color={eyebrowColor} shape={'round'}>\n {eyebrow}\n </Tag>\n )}\n {title && (\n <h2 className={styles.title} id={headingId}>\n {title}\n </h2>\n )}\n {description && <p className={styles.description}>{description}</p>}\n </div>\n {hasAside && (\n <div className={styles.extra}>\n {hasActions && (\n <LandingActions\n actions={actions!}\n renderLink={renderLink}\n size={'small'}\n onNavigate={onNavigate}\n />\n )}\n {extra}\n </div>\n )}\n </div>\n )}\n {children && <div className={hasHeader ? styles.body : undefined}>{children}</div>}\n </section>\n );\n },\n);\n\nLandingSection.displayName = 'LandingSection';\n\nexport default LandingSection;\n"],"mappings":";;;;;;;;AAWA,MAAM,iBAAiB,MACpB,EACC,SACA,QAAQ,SACR,UACA,WACA,aACA,UAAU,MACV,SACA,eAAe,QACf,OACA,IACA,YACA,YACA,OACA,GAAG,WACC;CACJ,MAAM,YAAY,KAAK,GAAG,GAAG,UAAU,KAAA;CACvC,MAAM,aAAa,QAAQ,SAAS,MAAM;CAC1C,MAAM,WAAW,cAAc,QAAQ,KAAK;CAC5C,MAAM,YAAY,QAAQ,WAAW,SAAS,eAAe,QAAQ;CAErE,OACE,qBAAC,WAAD;EACE,mBAAiB,QAAQ,YAAY,KAAA;EACrC,WAAW,GAAG,OAAO,MAAM,SAAS;EACpC,gBAAc;EACV;EACJ,GAAI;EALN,UAAA,CAOG,aACC,qBAAC,OAAD;GAAK,WAAW,OAAO;GAAQ,cAAY;GAA3C,UAAA,CACE,qBAAC,OAAD;IAAK,WAAW,OAAO;IAAvB,UAAA;KACG,WACC,oBAAC,KAAD;MAAK,WAAW,OAAO;MAAS,OAAO;MAAc,OAAO;MACzD,UAAA;KACE,CAAA;KAEN,SACC,oBAAC,MAAD;MAAI,WAAW,OAAO;MAAO,IAAI;MAC9B,UAAA;KACC,CAAA;KAEL,eAAe,oBAAC,KAAD;MAAG,WAAW,OAAO;MAAc,UAAA;KAAe,CAAA;IAC/D;GACJ,CAAA,GAAA,YACC,qBAAC,OAAD;IAAK,WAAW,OAAO;IAAvB,UAAA,CACG,cACC,oBAAC,gBAAD;KACW;KACG;KACZ,MAAM;KACM;IACb,CAAA,GAEF,KACE;GAEJ,CAAA,CAAA;EAEN,CAAA,GAAA,YAAY,oBAAC,OAAD;GAAK,WAAW,YAAY,OAAO,OAAO,KAAA;GAAY;EAAc,CAAA,CAC1E;;AAEb,CACF;AAEA,eAAe,cAAc"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { createStaticStyles } from "antd-style";
|
|
2
|
+
//#region src/awesome/LandingSection/style.ts
|
|
3
|
+
const styles = createStaticStyles(({ css, cssVar, responsive }) => ({
|
|
4
|
+
body: css`
|
|
5
|
+
margin-block-start: 32px;
|
|
6
|
+
`,
|
|
7
|
+
description: css`
|
|
8
|
+
max-inline-size: 34rem;
|
|
9
|
+
margin: 0;
|
|
10
|
+
|
|
11
|
+
font-size: 15px;
|
|
12
|
+
line-height: 1.6;
|
|
13
|
+
color: ${cssVar.colorTextSecondary};
|
|
14
|
+
text-wrap: pretty;
|
|
15
|
+
`,
|
|
16
|
+
eyebrow: css`
|
|
17
|
+
margin-block-end: 6px;
|
|
18
|
+
`,
|
|
19
|
+
extra: css`
|
|
20
|
+
display: flex;
|
|
21
|
+
flex: none;
|
|
22
|
+
flex-wrap: wrap;
|
|
23
|
+
gap: 8px;
|
|
24
|
+
align-items: center;
|
|
25
|
+
|
|
26
|
+
${responsive.mobile} {
|
|
27
|
+
[data-align='start'] > & {
|
|
28
|
+
align-self: flex-start;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
`,
|
|
32
|
+
header: css`
|
|
33
|
+
display: flex;
|
|
34
|
+
flex-direction: column;
|
|
35
|
+
gap: 20px;
|
|
36
|
+
align-items: center;
|
|
37
|
+
|
|
38
|
+
text-align: center;
|
|
39
|
+
|
|
40
|
+
&[data-align='start'] {
|
|
41
|
+
flex-direction: row;
|
|
42
|
+
gap: 32px;
|
|
43
|
+
align-items: flex-end;
|
|
44
|
+
justify-content: space-between;
|
|
45
|
+
|
|
46
|
+
text-align: start;
|
|
47
|
+
|
|
48
|
+
${responsive.mobile} {
|
|
49
|
+
flex-direction: column;
|
|
50
|
+
gap: 16px;
|
|
51
|
+
align-items: stretch;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
`,
|
|
55
|
+
heading: css`
|
|
56
|
+
display: flex;
|
|
57
|
+
flex-direction: column;
|
|
58
|
+
gap: 8px;
|
|
59
|
+
align-items: center;
|
|
60
|
+
|
|
61
|
+
min-inline-size: 0;
|
|
62
|
+
|
|
63
|
+
[data-align='start'] > & {
|
|
64
|
+
align-items: flex-start;
|
|
65
|
+
}
|
|
66
|
+
`,
|
|
67
|
+
root: css`
|
|
68
|
+
padding-block: clamp(48px, 8vh, 80px);
|
|
69
|
+
|
|
70
|
+
&[data-divider='true'] {
|
|
71
|
+
border-block-start: 1px solid ${cssVar.colorBorderSecondary};
|
|
72
|
+
}
|
|
73
|
+
`,
|
|
74
|
+
title: css`
|
|
75
|
+
margin: 0;
|
|
76
|
+
|
|
77
|
+
font-size: clamp(24px, 3vw, 32px);
|
|
78
|
+
font-weight: bold;
|
|
79
|
+
line-height: 1.2;
|
|
80
|
+
color: ${cssVar.colorText};
|
|
81
|
+
text-wrap: balance;
|
|
82
|
+
letter-spacing: -0.025em;
|
|
83
|
+
`
|
|
84
|
+
}));
|
|
85
|
+
//#endregion
|
|
86
|
+
export { styles };
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/awesome/LandingSection/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar, responsive }) => ({\n body: css`\n margin-block-start: 32px;\n `,\n description: css`\n max-inline-size: 34rem;\n margin: 0;\n\n font-size: 15px;\n line-height: 1.6;\n color: ${cssVar.colorTextSecondary};\n text-wrap: pretty;\n `,\n eyebrow: css`\n margin-block-end: 6px;\n `,\n extra: css`\n display: flex;\n flex: none;\n flex-wrap: wrap;\n gap: 8px;\n align-items: center;\n\n ${responsive.mobile} {\n [data-align='start'] > & {\n align-self: flex-start;\n }\n }\n `,\n header: css`\n display: flex;\n flex-direction: column;\n gap: 20px;\n align-items: center;\n\n text-align: center;\n\n &[data-align='start'] {\n flex-direction: row;\n gap: 32px;\n align-items: flex-end;\n justify-content: space-between;\n\n text-align: start;\n\n ${responsive.mobile} {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n }\n }\n `,\n heading: css`\n display: flex;\n flex-direction: column;\n gap: 8px;\n align-items: center;\n\n min-inline-size: 0;\n\n [data-align='start'] > & {\n align-items: flex-start;\n }\n `,\n root: css`\n padding-block: clamp(48px, 8vh, 80px);\n\n &[data-divider='true'] {\n border-block-start: 1px solid ${cssVar.colorBorderSecondary};\n }\n `,\n title: css`\n margin: 0;\n\n font-size: clamp(24px, 3vw, 32px);\n font-weight: bold;\n line-height: 1.2;\n color: ${cssVar.colorText};\n text-wrap: balance;\n letter-spacing: -0.025em;\n `,\n}));\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,QAAQ,kBAAkB;CACzE,MAAM,GAAG;;;CAGT,aAAa,GAAG;;;;;;aAML,OAAO,mBAAmB;;;CAGrC,SAAS,GAAG;;;CAGZ,OAAO,GAAG;;;;;;;MAON,WAAW,OAAO;;;;;;CAMtB,QAAQ,GAAG;;;;;;;;;;;;;;;;QAgBL,WAAW,OAAO;;;;;;;CAOxB,SAAS,GAAG;;;;;;;;;;;;CAYZ,MAAM,GAAG;;;;sCAI2B,OAAO,qBAAqB;;;CAGhE,OAAO,GAAG;;;;;;aAMC,OAAO,UAAU;;;;AAI9B,EAAE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { DivProps } from "../../types/index.mjs";
|
|
2
|
+
import { LandingLinkRender } from "../landingLink.mjs";
|
|
3
|
+
import { LandingAction, LandingNavigate } from "../landingActions.mjs";
|
|
4
|
+
import { ReactNode } from "react";
|
|
5
|
+
//#region src/awesome/LandingSection/type.d.ts
|
|
6
|
+
interface LandingSectionProps extends Omit<DivProps, 'title'> {
|
|
7
|
+
/** Small buttons on the right side of the header, e.g. "Browse components". */
|
|
8
|
+
actions?: LandingAction[];
|
|
9
|
+
/**
|
|
10
|
+
* `start` puts the heading on the left and `actions`/`extra` on the right; `center` stacks
|
|
11
|
+
* everything centered.
|
|
12
|
+
* @default 'start'
|
|
13
|
+
*/
|
|
14
|
+
align?: 'center' | 'start';
|
|
15
|
+
children?: ReactNode;
|
|
16
|
+
description?: ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* Draws a hairline above the section to separate it from the previous one.
|
|
19
|
+
* @default true
|
|
20
|
+
*/
|
|
21
|
+
divider?: boolean;
|
|
22
|
+
/** Custom content on the right side of the header, after `actions`. */
|
|
23
|
+
extra?: ReactNode;
|
|
24
|
+
/** Small tag above the title, e.g. "Components". */
|
|
25
|
+
eyebrow?: ReactNode;
|
|
26
|
+
/**
|
|
27
|
+
* Tag color: a preset such as `purple`, `blue`, `cyan`, `green`, `orange` or `magenta`, or any CSS color.
|
|
28
|
+
* @default 'blue'
|
|
29
|
+
*/
|
|
30
|
+
eyebrowColor?: string;
|
|
31
|
+
/** Used for the heading id so the section is labelled for assistive technology. */
|
|
32
|
+
id?: string;
|
|
33
|
+
/** Client-side navigation for internal non-primary actions (rendered as BottomGradientButton). */
|
|
34
|
+
onNavigate?: LandingNavigate;
|
|
35
|
+
renderLink?: LandingLinkRender;
|
|
36
|
+
title?: ReactNode;
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
export { LandingSectionProps };
|
|
40
|
+
//# sourceMappingURL=type.d.mts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LogoMarqueeProps } from "./type.mjs";
|
|
2
|
+
//#region src/awesome/LogoMarquee/LogoMarquee.d.ts
|
|
3
|
+
declare const LogoMarquee: import("react").NamedExoticComponent<LogoMarqueeProps>;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { LogoMarquee as default };
|
|
6
|
+
//# sourceMappingURL=LogoMarquee.d.mts.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { renderLandingIcon } from "../landingIcon.mjs";
|
|
3
|
+
import { styles } from "./style.mjs";
|
|
4
|
+
import { memo } from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { cx } from "antd-style";
|
|
7
|
+
//#region src/awesome/LogoMarquee/LogoMarquee.tsx
|
|
8
|
+
const Track = ({ hidden, iconOnly, iconSize, items }) => /* @__PURE__ */ jsx("div", {
|
|
9
|
+
"aria-hidden": hidden || void 0,
|
|
10
|
+
className: styles.track,
|
|
11
|
+
children: items.map(({ icon, label }) => /* @__PURE__ */ jsxs("span", {
|
|
12
|
+
className: styles.item,
|
|
13
|
+
title: iconOnly ? label : void 0,
|
|
14
|
+
children: [renderLandingIcon(icon, iconSize), !iconOnly && label]
|
|
15
|
+
}, label))
|
|
16
|
+
});
|
|
17
|
+
const LogoMarquee = memo(({ caption, className, duration = 28, gap = 36, iconOnly = false, iconSize = 18, items, maxWidth = 640, style, ...rest }) => {
|
|
18
|
+
const variables = {
|
|
19
|
+
"--logo-marquee-duration": `${duration}s`,
|
|
20
|
+
"--logo-marquee-gap": `${gap}px`,
|
|
21
|
+
"--logo-marquee-max-width": typeof maxWidth === "number" ? `${maxWidth}px` : maxWidth
|
|
22
|
+
};
|
|
23
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
24
|
+
className: cx(styles.root, className),
|
|
25
|
+
style: {
|
|
26
|
+
...variables,
|
|
27
|
+
...style
|
|
28
|
+
},
|
|
29
|
+
...rest,
|
|
30
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
31
|
+
className: styles.viewport,
|
|
32
|
+
children: [/* @__PURE__ */ jsx(Track, {
|
|
33
|
+
iconOnly,
|
|
34
|
+
iconSize,
|
|
35
|
+
items
|
|
36
|
+
}), /* @__PURE__ */ jsx(Track, {
|
|
37
|
+
hidden: true,
|
|
38
|
+
iconOnly,
|
|
39
|
+
iconSize,
|
|
40
|
+
items
|
|
41
|
+
})]
|
|
42
|
+
}), caption && /* @__PURE__ */ jsx("p", {
|
|
43
|
+
className: styles.caption,
|
|
44
|
+
children: caption
|
|
45
|
+
})]
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
LogoMarquee.displayName = "LogoMarquee";
|
|
49
|
+
//#endregion
|
|
50
|
+
export { LogoMarquee as default };
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=LogoMarquee.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogoMarquee.mjs","names":[],"sources":["../../../src/awesome/LogoMarquee/LogoMarquee.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type CSSProperties, memo } from 'react';\n\nimport { renderLandingIcon } from '@/awesome/landingIcon';\n\nimport { styles } from './style';\nimport type { LogoMarqueeProps } from './type';\n\nconst Track = ({\n hidden,\n iconOnly,\n iconSize,\n items,\n}: Pick<LogoMarqueeProps, 'iconOnly' | 'items'> & { hidden?: boolean; iconSize: number }) => (\n <div aria-hidden={hidden || undefined} className={styles.track}>\n {items.map(({ icon, label }) => (\n <span className={styles.item} key={label} title={iconOnly ? label : undefined}>\n {renderLandingIcon(icon, iconSize)}\n {!iconOnly && label}\n </span>\n ))}\n </div>\n);\n\nconst LogoMarquee = memo<LogoMarqueeProps>(\n ({\n caption,\n className,\n duration = 28,\n gap = 36,\n iconOnly = false,\n iconSize = 18,\n items,\n maxWidth = 640,\n style,\n ...rest\n }) => {\n const variables = {\n '--logo-marquee-duration': `${duration}s`,\n '--logo-marquee-gap': `${gap}px`,\n '--logo-marquee-max-width': typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth,\n } as CSSProperties;\n\n return (\n <div className={cx(styles.root, className)} style={{ ...variables, ...style }} {...rest}>\n <div className={styles.viewport}>\n <Track iconOnly={iconOnly} iconSize={iconSize} items={items} />\n <Track hidden iconOnly={iconOnly} iconSize={iconSize} items={items} />\n </div>\n {caption && <p className={styles.caption}>{caption}</p>}\n </div>\n );\n },\n);\n\nLogoMarquee.displayName = 'LogoMarquee';\n\nexport default LogoMarquee;\n"],"mappings":";;;;;;;AAUA,MAAM,SAAS,EACb,QACA,UACA,UACA,YAEA,oBAAC,OAAD;CAAK,eAAa,UAAU,KAAA;CAAW,WAAW,OAAO;CACtD,UAAA,MAAM,KAAK,EAAE,MAAM,YAClB,qBAAC,QAAD;EAAM,WAAW,OAAO;EAAkB,OAAO,WAAW,QAAQ,KAAA;EAApE,UAAA,CACG,kBAAkB,MAAM,QAAQ,GAChC,CAAC,YAAY,KACV;CAH6B,GAAA,KAG7B,CACP;AACE,CAAA;AAGP,MAAM,cAAc,MACjB,EACC,SACA,WACA,WAAW,IACX,MAAM,IACN,WAAW,OACX,WAAW,IACX,OACA,WAAW,KACX,OACA,GAAG,WACC;CACJ,MAAM,YAAY;EAChB,2BAA2B,GAAG,SAAS;EACvC,sBAAsB,GAAG,IAAI;EAC7B,4BAA4B,OAAO,aAAa,WAAW,GAAG,SAAS,MAAM;CAC/E;CAEA,OACE,qBAAC,OAAD;EAAK,WAAW,GAAG,OAAO,MAAM,SAAS;EAAG,OAAO;GAAE,GAAG;GAAW,GAAG;EAAM;EAAG,GAAI;EAAnF,UAAA,CACE,qBAAC,OAAD;GAAK,WAAW,OAAO;GAAvB,UAAA,CACE,oBAAC,OAAD;IAAiB;IAAoB;IAAiB;GAAQ,CAAA,GAC9D,oBAAC,OAAD;IAAO,QAAA;IAAiB;IAAoB;IAAiB;GAAQ,CAAA,CAClE;EACJ,CAAA,GAAA,WAAW,oBAAC,KAAD;GAAG,WAAW,OAAO;GAAU,UAAA;EAAW,CAAA,CACnD;;AAET,CACF;AAEA,YAAY,cAAc"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { createStaticStyles, keyframes } from "antd-style";
|
|
2
|
+
//#region src/awesome/LogoMarquee/style.ts
|
|
3
|
+
const slide = keyframes`
|
|
4
|
+
to {
|
|
5
|
+
transform: translateX(calc(-100% - var(--logo-marquee-gap)));
|
|
6
|
+
}
|
|
7
|
+
`;
|
|
8
|
+
const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
9
|
+
caption: css`
|
|
10
|
+
margin: 0;
|
|
11
|
+
font-size: ${cssVar.fontSizeSM};
|
|
12
|
+
color: ${cssVar.colorTextTertiary};
|
|
13
|
+
|
|
14
|
+
a {
|
|
15
|
+
color: inherit;
|
|
16
|
+
text-decoration: none;
|
|
17
|
+
transition: color 140ms ease;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
a:hover {
|
|
21
|
+
color: ${cssVar.colorText};
|
|
22
|
+
}
|
|
23
|
+
`,
|
|
24
|
+
item: css`
|
|
25
|
+
display: inline-flex;
|
|
26
|
+
gap: 8px;
|
|
27
|
+
align-items: center;
|
|
28
|
+
|
|
29
|
+
font-size: ${cssVar.fontSize};
|
|
30
|
+
color: ${cssVar.colorTextTertiary};
|
|
31
|
+
white-space: nowrap;
|
|
32
|
+
`,
|
|
33
|
+
root: css`
|
|
34
|
+
display: flex;
|
|
35
|
+
flex-direction: column;
|
|
36
|
+
gap: 16px;
|
|
37
|
+
align-items: center;
|
|
38
|
+
|
|
39
|
+
inline-size: 100%;
|
|
40
|
+
`,
|
|
41
|
+
track: css`
|
|
42
|
+
display: flex;
|
|
43
|
+
flex: none;
|
|
44
|
+
gap: var(--logo-marquee-gap);
|
|
45
|
+
align-items: center;
|
|
46
|
+
|
|
47
|
+
animation: ${slide} var(--logo-marquee-duration) linear infinite;
|
|
48
|
+
|
|
49
|
+
@media (prefers-reduced-motion: reduce) {
|
|
50
|
+
animation: none;
|
|
51
|
+
}
|
|
52
|
+
`,
|
|
53
|
+
viewport: css`
|
|
54
|
+
overflow: hidden;
|
|
55
|
+
display: flex;
|
|
56
|
+
gap: var(--logo-marquee-gap);
|
|
57
|
+
|
|
58
|
+
inline-size: min(100%, var(--logo-marquee-max-width));
|
|
59
|
+
|
|
60
|
+
mask-image: linear-gradient(90deg, transparent, #000 18%, #000 82%, transparent);
|
|
61
|
+
|
|
62
|
+
&:hover > * {
|
|
63
|
+
animation-play-state: paused;
|
|
64
|
+
}
|
|
65
|
+
`
|
|
66
|
+
}));
|
|
67
|
+
//#endregion
|
|
68
|
+
export { styles };
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/awesome/LogoMarquee/style.ts"],"sourcesContent":["import { createStaticStyles, keyframes } from 'antd-style';\n\nconst slide = keyframes`\n to {\n transform: translateX(calc(-100% - var(--logo-marquee-gap)));\n }\n`;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n caption: css`\n margin: 0;\n font-size: ${cssVar.fontSizeSM};\n color: ${cssVar.colorTextTertiary};\n\n a {\n color: inherit;\n text-decoration: none;\n transition: color 140ms ease;\n }\n\n a:hover {\n color: ${cssVar.colorText};\n }\n `,\n item: css`\n display: inline-flex;\n gap: 8px;\n align-items: center;\n\n font-size: ${cssVar.fontSize};\n color: ${cssVar.colorTextTertiary};\n white-space: nowrap;\n `,\n root: css`\n display: flex;\n flex-direction: column;\n gap: 16px;\n align-items: center;\n\n inline-size: 100%;\n `,\n track: css`\n display: flex;\n flex: none;\n gap: var(--logo-marquee-gap);\n align-items: center;\n\n animation: ${slide} var(--logo-marquee-duration) linear infinite;\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n `,\n viewport: css`\n overflow: hidden;\n display: flex;\n gap: var(--logo-marquee-gap);\n\n inline-size: min(100%, var(--logo-marquee-max-width));\n\n mask-image: linear-gradient(90deg, transparent, #000 18%, #000 82%, transparent);\n\n &:hover > * {\n animation-play-state: paused;\n }\n `,\n}));\n"],"mappings":";;AAEA,MAAM,QAAQ,SAAS;;;;;AAMvB,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,SAAS,GAAG;;iBAEG,OAAO,WAAW;aACtB,OAAO,kBAAkB;;;;;;;;;eASvB,OAAO,UAAU;;;CAG9B,MAAM,GAAG;;;;;iBAKM,OAAO,SAAS;aACpB,OAAO,kBAAkB;;;CAGpC,MAAM,GAAG;;;;;;;;CAQT,OAAO,GAAG;;;;;;iBAMK,MAAM;;;;;;CAMrB,UAAU,GAAG;;;;;;;;;;;;;AAaf,EAAE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { DivProps } from "../../types/index.mjs";
|
|
2
|
+
import { ElementType, ReactNode } from "react";
|
|
3
|
+
//#region src/awesome/LogoMarquee/type.d.ts
|
|
4
|
+
interface LogoMarqueeItem {
|
|
5
|
+
/** An icon component such as `OpenAI` from `@lobehub/icons`, or a ready-made node. */
|
|
6
|
+
icon: ElementType<{
|
|
7
|
+
size: number;
|
|
8
|
+
}> | ReactNode;
|
|
9
|
+
label: string;
|
|
10
|
+
}
|
|
11
|
+
interface LogoMarqueeProps extends DivProps {
|
|
12
|
+
/** Caption below the track, e.g. a link to the icon catalog. */
|
|
13
|
+
caption?: ReactNode;
|
|
14
|
+
/**
|
|
15
|
+
* Seconds for one full loop.
|
|
16
|
+
* @default 28
|
|
17
|
+
*/
|
|
18
|
+
duration?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Gap between items in pixels.
|
|
21
|
+
* @default 36
|
|
22
|
+
*/
|
|
23
|
+
gap?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Hides the text labels and shows icons only.
|
|
26
|
+
* @default false
|
|
27
|
+
*/
|
|
28
|
+
iconOnly?: boolean;
|
|
29
|
+
/** @default 18 */
|
|
30
|
+
iconSize?: number;
|
|
31
|
+
items: LogoMarqueeItem[];
|
|
32
|
+
/**
|
|
33
|
+
* Max width of the visible track.
|
|
34
|
+
* @default 640
|
|
35
|
+
*/
|
|
36
|
+
maxWidth?: number | string;
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
export { LogoMarqueeItem, LogoMarqueeProps };
|
|
40
|
+
//# sourceMappingURL=type.d.mts.map
|
package/es/awesome/index.d.mts
CHANGED
|
@@ -1,15 +1,34 @@
|
|
|
1
|
+
import { AgentSkillCardAgent, AgentSkillCardMode, AgentSkillCardPanel, AgentSkillCardProps } from "./AgentSkillCard/type.mjs";
|
|
2
|
+
import { DEFAULT_SKILL_AGENTS } from "./AgentSkillCard/agents.mjs";
|
|
3
|
+
import AgentSkillCard from "./AgentSkillCard/AgentSkillCard.mjs";
|
|
4
|
+
import "./AgentSkillCard/index.mjs";
|
|
1
5
|
import { AuroraBackgroundProps } from "./AuroraBackground/type.mjs";
|
|
2
6
|
import AuroraBackground from "./AuroraBackground/AuroraBackground.mjs";
|
|
3
7
|
import "./AuroraBackground/index.mjs";
|
|
8
|
+
import { LandingLinkProps, LandingLinkRender } from "./landingLink.mjs";
|
|
9
|
+
import { BentoCardProps, BentoGridProps } from "./BentoGrid/type.mjs";
|
|
10
|
+
import BentoCard from "./BentoGrid/BentoCard.mjs";
|
|
11
|
+
import BentoGrid from "./BentoGrid/BentoGrid.mjs";
|
|
12
|
+
import "./BentoGrid/index.mjs";
|
|
4
13
|
import BottomGradientButton from "./BottomGradientButton/BottomGradientButton.mjs";
|
|
5
14
|
import { BottomGradientButtonProps } from "./BottomGradientButton/type.mjs";
|
|
6
15
|
import "./BottomGradientButton/index.mjs";
|
|
16
|
+
import { CodeShowcaseItem, CodeShowcaseProps } from "./CodeShowcase/type.mjs";
|
|
17
|
+
import CodeShowcase from "./CodeShowcase/CodeShowcase.mjs";
|
|
18
|
+
import "./CodeShowcase/index.mjs";
|
|
19
|
+
import { FeatureGridItem, FeatureGridProps } from "./FeatureGrid/type.mjs";
|
|
20
|
+
import FeatureGrid from "./FeatureGrid/FeatureGrid.mjs";
|
|
21
|
+
import "./FeatureGrid/index.mjs";
|
|
7
22
|
import { SpotlightCardProps } from "./SpotlightCard/type.mjs";
|
|
8
23
|
import SpotlightCard from "./SpotlightCard/SpotlightCard.mjs";
|
|
9
24
|
import "./SpotlightCard/index.mjs";
|
|
10
25
|
import { FeatureItemType, FeaturesProps } from "./Features/type.mjs";
|
|
11
26
|
import Features from "./Features/Features.mjs";
|
|
12
27
|
import "./Features/index.mjs";
|
|
28
|
+
import { LANDING_GRADIENT_VAR, LANDING_PALETTE_DARK, LANDING_PALETTE_LIGHT, LandingPalette, accentGradient } from "./landingTokens.mjs";
|
|
29
|
+
import { FluidGradientProps } from "./FluidGradient/type.mjs";
|
|
30
|
+
import FluidGradient from "./FluidGradient/FluidGradient.mjs";
|
|
31
|
+
import "./FluidGradient/index.mjs";
|
|
13
32
|
import { GiscusProps } from "./Giscus/type.mjs";
|
|
14
33
|
import Giscus from "./Giscus/Giscus.mjs";
|
|
15
34
|
import "./Giscus/index.mjs";
|
|
@@ -23,6 +42,19 @@ import "./GridBackground/index.mjs";
|
|
|
23
42
|
import { HeroAction, HeroProps } from "./Hero/type.mjs";
|
|
24
43
|
import Hero from "./Hero/Hero.mjs";
|
|
25
44
|
import "./Hero/index.mjs";
|
|
45
|
+
import { InstallBannerProps } from "./InstallBanner/type.mjs";
|
|
46
|
+
import InstallBanner from "./InstallBanner/InstallBanner.mjs";
|
|
47
|
+
import "./InstallBanner/index.mjs";
|
|
48
|
+
import { LandingAction, LandingNavigate } from "./landingActions.mjs";
|
|
49
|
+
import { LandingHeroAction, LandingHeroProps } from "./LandingHero/type.mjs";
|
|
50
|
+
import LandingHero from "./LandingHero/LandingHero.mjs";
|
|
51
|
+
import "./LandingHero/index.mjs";
|
|
52
|
+
import { LandingSectionProps } from "./LandingSection/type.mjs";
|
|
53
|
+
import LandingSection from "./LandingSection/LandingSection.mjs";
|
|
54
|
+
import "./LandingSection/index.mjs";
|
|
55
|
+
import { LogoMarqueeItem, LogoMarqueeProps } from "./LogoMarquee/type.mjs";
|
|
56
|
+
import LogoMarquee from "./LogoMarquee/LogoMarquee.mjs";
|
|
57
|
+
import "./LogoMarquee/index.mjs";
|
|
26
58
|
import { SplineProps } from "./Spline/type.mjs";
|
|
27
59
|
import Spline from "./Spline/Spine.mjs";
|
|
28
60
|
import "./Spline/index.mjs";
|
|
@@ -32,4 +64,4 @@ import "./Spotlight/index.mjs";
|
|
|
32
64
|
import { CursorStyle, SegmentMode, TypewriterEffectProps } from "./TypewriterEffect/type.mjs";
|
|
33
65
|
import TypewriterEffect from "./TypewriterEffect/TypewriterEffect.mjs";
|
|
34
66
|
import "./TypewriterEffect/index.mjs";
|
|
35
|
-
export { AuroraBackground, type AuroraBackgroundProps, BottomGradientButton, type BottomGradientButtonProps, type CursorStyle, type FeatureItemType, Features, type FeaturesProps, Giscus, type GiscusProps, GradientButton, type GradientButtonProps, GridBackground, type GridBackgroundProps, GridShowcase, type GridShowcaseProps, Hero, type HeroAction, type HeroProps, type SegmentMode, Spline, type SplineProps, Spotlight, SpotlightCard, type SpotlightCardProps, type SpotlightProps, TypewriterEffect, type TypewriterEffectProps };
|
|
67
|
+
export { AgentSkillCard, type AgentSkillCardAgent, type AgentSkillCardMode, type AgentSkillCardPanel, type AgentSkillCardProps, AuroraBackground, type AuroraBackgroundProps, BentoCard, type BentoCardProps, BentoGrid, type BentoGridProps, BottomGradientButton, type BottomGradientButtonProps, CodeShowcase, type CodeShowcaseItem, type CodeShowcaseProps, type CursorStyle, DEFAULT_SKILL_AGENTS, FeatureGrid, type FeatureGridItem, type FeatureGridProps, type FeatureItemType, Features, type FeaturesProps, FluidGradient, type FluidGradientProps, Giscus, type GiscusProps, GradientButton, type GradientButtonProps, GridBackground, type GridBackgroundProps, GridShowcase, type GridShowcaseProps, Hero, type HeroAction, type HeroProps, InstallBanner, type InstallBannerProps, LANDING_GRADIENT_VAR, LANDING_PALETTE_DARK, LANDING_PALETTE_LIGHT, type LandingAction, LandingHero, type LandingHeroAction, type LandingHeroProps, type LandingLinkProps, type LandingLinkRender, type LandingNavigate, type LandingPalette, LandingSection, type LandingSectionProps, LogoMarquee, type LogoMarqueeItem, type LogoMarqueeProps, type SegmentMode, Spline, type SplineProps, Spotlight, SpotlightCard, type SpotlightCardProps, type SpotlightProps, TypewriterEffect, type TypewriterEffectProps, accentGradient as landingAccentGradient };
|