marqy 0.0.8 → 1.0.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/.claude/settings.local.json +13 -0
- package/.vscode/settings.json +3 -0
- package/README.md +43 -12
- package/dist/marqy.css +131 -0
- package/dist/marqy.d.ts +4 -3
- package/dist/marqy.esm.js +1 -1
- package/dist/marqy.esm.js.map +1 -1
- package/dist/marqy.js +1 -1
- package/dist/marqy.js.map +1 -1
- package/dist/marqy.umd.js +1 -1
- package/dist/marqy.umd.js.map +1 -1
- package/examples/.astro/content-assets.mjs +1 -0
- package/examples/.astro/content-modules.mjs +1 -0
- package/examples/.astro/content.d.ts +154 -0
- package/examples/.astro/data-store.json +1 -0
- package/examples/.astro/fonts/font-akkurat-mono-500-normal-40f4e0ea0b54adc5.woff2 +0 -0
- package/examples/.astro/fonts/font-akkurat-mono-700-normal-b9f40f1447b587bd.woff +0 -0
- package/examples/.astro/fonts/font-grtsk-300-normal-8ef14ca23be6893c.woff2 +0 -0
- package/examples/.astro/fonts/font-grtsk-400-normal-13ba8954073ee64a.woff2 +0 -0
- package/examples/.astro/fonts/font-grtsk-500-normal-d214468daf16245f.woff2 +0 -0
- package/examples/.astro/fonts/font-grtsk-wide-500-normal-6f8c2658b9c2ba8e.woff2 +0 -0
- package/examples/.astro/fonts/font-grtsk-wide-700-normal-17406f09c7b68ca3.woff2 +0 -0
- package/examples/.astro/fonts.d.ts +4 -0
- package/examples/.astro/settings.json +5 -0
- package/examples/.astro/types.d.ts +3 -0
- package/examples/.yarnrc +1 -0
- package/examples/astro.config.mjs +101 -0
- package/examples/package.json +30 -0
- package/examples/public/apple-touch-icon.png +0 -0
- package/examples/public/favicon.ico +0 -0
- package/examples/public/favicon.svg +4 -0
- package/examples/public/marqy-logo.svg +35 -0
- package/examples/src/assets/baggu.jpg +0 -0
- package/examples/src/assets/bluesky.jpg +0 -0
- package/examples/src/assets/clams-lol.jpg +0 -0
- package/examples/src/assets/coconut-club-2.jpg +0 -0
- package/examples/src/assets/coconut-club.jpg +0 -0
- package/examples/src/assets/lucci.jpg +0 -0
- package/examples/src/assets/phila-museum.jpg +0 -0
- package/examples/src/assets/red-rooster.jpg +0 -0
- package/examples/src/assets/sanity.jpg +0 -0
- package/examples/src/assets/usal.jpg +0 -0
- package/examples/src/assets/vacation.jpg +0 -0
- package/examples/src/components/CopyButton.tsx +26 -0
- package/examples/src/components/Divider.tsx +3 -0
- package/examples/src/components/Footer.astro +7 -0
- package/examples/src/components/InUse.astro +89 -0
- package/examples/src/components/InUseExamples.tsx +60 -0
- package/examples/src/components/MarqyCredits.tsx +33 -0
- package/examples/src/components/MarqyHero.tsx +77 -0
- package/examples/src/components/MarqyInteractiveDemo.tsx +46 -0
- package/examples/src/components/MarqyPlayground.tsx +496 -0
- package/examples/src/components/MarqySpeedDemo.tsx +34 -0
- package/examples/src/components/MarqyVerticalDemo.tsx +44 -0
- package/examples/src/components/Playground.astro +11 -0
- package/examples/src/components/QuickStart.astro +59 -0
- package/examples/src/components/SectionHeadline.tsx +41 -0
- package/examples/src/components/Tile.tsx +32 -0
- package/examples/src/content.config.ts +3 -0
- package/examples/src/fonts/Akkurat-Mono-Bold.woff +0 -0
- package/examples/src/fonts/Akkurat-Mono.woff +0 -0
- package/examples/src/fonts/Akkurat-Mono.woff2 +0 -0
- package/examples/src/fonts/Grtsk-Peta-Light.woff +0 -0
- package/examples/src/fonts/Grtsk-Peta-Light.woff2 +0 -0
- package/examples/src/fonts/Grtsk-Peta-Medium.woff +0 -0
- package/examples/src/fonts/Grtsk-Peta-Medium.woff2 +0 -0
- package/examples/src/fonts/Grtsk-Peta-Regular.woff +0 -0
- package/examples/src/fonts/Grtsk-Peta-Regular.woff2 +0 -0
- package/examples/src/fonts/Grtsk-Tera-Bold.woff +0 -0
- package/examples/src/fonts/Grtsk-Tera-Bold.woff2 +0 -0
- package/examples/src/fonts/Grtsk-Tera-Medium.woff +0 -0
- package/examples/src/fonts/Grtsk-Tera-Medium.woff2 +0 -0
- package/examples/src/layouts/layout.astro +107 -0
- package/examples/src/lib/cn.ts +16 -0
- package/examples/src/lib/helpers.ts +13 -0
- package/examples/src/lib/hooks/useCopyText.ts +47 -0
- package/examples/src/pages/index.astro +56 -0
- package/examples/src/styles/_base.css +155 -0
- package/examples/src/styles/_components.css +123 -0
- package/examples/src/styles/_utilities.css +23 -0
- package/examples/src/styles/app.css +397 -0
- package/examples/tsconfig.json +3 -0
- package/examples/yarn.lock +3316 -0
- package/marqy.css +131 -0
- package/package.json +26 -12
- package/src/marqy.tsx +63 -53
- package/tsconfig.json +5 -2
- package/dist/marqy.modern.js +0 -2
- package/dist/marqy.modern.js.map +0 -1
- package/examples/index.css +0 -96
- package/examples/index.html +0 -15
- package/examples/index.js +0 -62
- package/styles.css +0 -65
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import react from '@astrojs/react'
|
|
2
|
+
import tailwindcss from '@tailwindcss/vite'
|
|
3
|
+
import { defineConfig, fontProviders } from 'astro/config'
|
|
4
|
+
|
|
5
|
+
export default defineConfig({
|
|
6
|
+
integrations: [react()],
|
|
7
|
+
fonts: [
|
|
8
|
+
{
|
|
9
|
+
provider: fontProviders.local(),
|
|
10
|
+
name: 'AkkuratMono',
|
|
11
|
+
cssVariable: '--font-akkurat-mono',
|
|
12
|
+
options: {
|
|
13
|
+
variants: [
|
|
14
|
+
{
|
|
15
|
+
src: [
|
|
16
|
+
'./src/fonts/Akkurat-Mono.woff2',
|
|
17
|
+
'./src/fonts/Akkurat-Mono.woff',
|
|
18
|
+
],
|
|
19
|
+
weight: 500,
|
|
20
|
+
style: 'normal',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
src: [
|
|
24
|
+
'./src/fonts/Akkurat-Mono-Bold.woff',
|
|
25
|
+
],
|
|
26
|
+
weight: 700,
|
|
27
|
+
style: 'normal',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
fallbacks: ['monospace'],
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
provider: fontProviders.local(),
|
|
35
|
+
name: 'GrtskPeta',
|
|
36
|
+
cssVariable: '--font-grtsk',
|
|
37
|
+
options: {
|
|
38
|
+
variants: [
|
|
39
|
+
{
|
|
40
|
+
src: [
|
|
41
|
+
'./src/fonts/Grtsk-Peta-Light.woff2',
|
|
42
|
+
'./src/fonts/Grtsk-Peta-Light.woff',
|
|
43
|
+
],
|
|
44
|
+
weight: 300,
|
|
45
|
+
style: 'normal',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
src: [
|
|
49
|
+
'./src/fonts/Grtsk-Peta-Regular.woff2',
|
|
50
|
+
'./src/fonts/Grtsk-Peta-Regular.woff',
|
|
51
|
+
],
|
|
52
|
+
weight: 400,
|
|
53
|
+
style: 'normal',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
src: [
|
|
57
|
+
'./src/fonts/Grtsk-Peta-Medium.woff2',
|
|
58
|
+
'./src/fonts/Grtsk-Peta-Medium.woff',
|
|
59
|
+
],
|
|
60
|
+
weight: 500,
|
|
61
|
+
style: 'normal',
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
provider: fontProviders.local(),
|
|
68
|
+
name: 'GrtskTera',
|
|
69
|
+
cssVariable: '--font-grtsk-wide',
|
|
70
|
+
options: {
|
|
71
|
+
variants: [
|
|
72
|
+
{
|
|
73
|
+
src: [
|
|
74
|
+
'./src/fonts/Grtsk-Tera-Medium.woff2',
|
|
75
|
+
'./src/fonts/Grtsk-Tera-Medium.woff',
|
|
76
|
+
],
|
|
77
|
+
weight: 500,
|
|
78
|
+
style: 'normal',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
src: [
|
|
82
|
+
'./src/fonts/Grtsk-Tera-Bold.woff2',
|
|
83
|
+
'./src/fonts/Grtsk-Tera-Bold.woff',
|
|
84
|
+
],
|
|
85
|
+
weight: 700,
|
|
86
|
+
style: 'normal',
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
vite: {
|
|
93
|
+
plugins: [tailwindcss()],
|
|
94
|
+
optimizeDeps: {
|
|
95
|
+
include: ['react', 'react-dom', 'react-dom/client', 'react-cool-dimensions'],
|
|
96
|
+
},
|
|
97
|
+
resolve: {
|
|
98
|
+
dedupe: ['react', 'react-dom'],
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
})
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "marqy-examples",
|
|
3
|
+
"private": true,
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "astro dev",
|
|
7
|
+
"build": "astro build",
|
|
8
|
+
"preview": "astro preview"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"@astrojs/react": "^4.0.0",
|
|
12
|
+
"@base-ui-components/react": "^1.0.0-rc.0",
|
|
13
|
+
"@gsap/react": "^2.1.2",
|
|
14
|
+
"@tailwindcss/vite": "^4.2.0",
|
|
15
|
+
"@types/react": "^19.0.0",
|
|
16
|
+
"@types/react-dom": "^19.0.0",
|
|
17
|
+
"astro": "^6.0.0",
|
|
18
|
+
"gsap": "^3.15.0",
|
|
19
|
+
"marqy": "link:..",
|
|
20
|
+
"react": "^19.0.0",
|
|
21
|
+
"react-cool-dimensions": "^3.0.1",
|
|
22
|
+
"react-dom": "^19.0.0",
|
|
23
|
+
"react-resizable": "^3.1.3",
|
|
24
|
+
"tailwind-merge": "^3.0.0",
|
|
25
|
+
"tailwindcss": "^4.2.0"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@types/react-resizable": "^3.0.8"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="32" height="32" fill="black"/>
|
|
3
|
+
<path d="M10.2351 8.83203L16.0696 17.3083L21.8473 8.83203H26.2095V23.168H22.3184V14.1144L17.8127 20.8947H14.2287L9.68211 14.232V23.168H5.79102V8.83203H10.2351Z" fill="#f1f1f1"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<svg width="984" height="200" viewBox="0 0 984 200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_458_171)">
|
|
3
|
+
<rect width="984" height="200" fill="white"/>
|
|
4
|
+
<path d="M0 0H200V200H0V0Z" fill="white"/>
|
|
5
|
+
<path d="M200 0V200H0V0H200ZM4 196H196V4H4V196Z" fill="black"/>
|
|
6
|
+
<path d="M63.9668 55.2002L100.433 108.177L136.543 55.2002H163.807V144.8H139.487V88.2148L111.327 130.592H88.9268L60.5107 88.9502V144.8H36.1914V55.2002H63.9668Z" fill="black"/>
|
|
7
|
+
<path d="M196 -124H396V76H196V-124Z" fill="white"/>
|
|
8
|
+
<path d="M396 -124V76H196V-124H396ZM200 72H392V-120H200V72Z" fill="black"/>
|
|
9
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M356.992 20.7998H328.576L320.111 4.16016H270.864L262.399 20.7998H235.008L282.752 -68.7998H309.248L356.992 20.7998ZM280.698 -15.168H310.277L295.487 -44.2402L280.698 -15.168Z" fill="black"/>
|
|
10
|
+
<path d="M196 72H396V272H196V72Z" fill="white"/>
|
|
11
|
+
<path d="M396 72V272H196V72H396ZM200 268H392V76H200V268Z" fill="black"/>
|
|
12
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M356.992 216.8H328.576L320.111 200.16H270.864L262.399 216.8H235.008L282.752 127.2H309.248L356.992 216.8ZM280.698 180.832H310.277L295.487 151.76L280.698 180.832Z" fill="black"/>
|
|
13
|
+
<path d="M392 -71H592V129H392V-71Z" fill="white"/>
|
|
14
|
+
<path d="M592 -71V129H392V-71H592ZM396 125H588V-67H396V125Z" fill="black"/>
|
|
15
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M504.416 -15.7998C509.792 -15.7998 514.571 -15.1173 518.752 -13.752C522.933 -12.3866 526.432 -10.4242 529.248 -7.86426C532.149 -5.30428 534.326 -2.2324 535.776 1.35156C537.312 4.93554 538.08 8.98908 538.08 13.5117C538.08 19.1435 536.715 24.0928 533.984 28.3594C531.339 32.5407 527.499 35.8265 522.464 38.2158C519.509 39.5914 516.174 40.5561 512.458 41.1104L542.176 73.7998H510.304L483.907 43.8477H467.808V73.7998H441.824V-15.7998H504.416ZM467.808 24.2637H499.808C501.855 24.2637 503.648 24.0506 505.184 23.624C506.72 23.112 508 22.4721 509.024 21.7041C510.048 20.8508 510.816 19.7838 511.328 18.5039C511.84 17.1386 512.096 15.6448 512.096 14.0234C512.096 12.317 511.84 10.8238 511.328 9.54395C510.816 8.26405 510.048 7.23966 509.024 6.47168C508 5.61835 506.72 4.97842 505.184 4.55176C503.648 4.03982 501.855 3.78418 499.808 3.78418H467.808V24.2637Z" fill="black"/>
|
|
16
|
+
<path d="M392 125H592V325H392V125Z" fill="white"/>
|
|
17
|
+
<path d="M592 125V325H392V125H592ZM396 321H588V129H396V321Z" fill="black"/>
|
|
18
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M504.416 180.2C509.792 180.2 514.571 180.883 518.752 182.248C522.933 183.613 526.432 185.576 529.248 188.136C532.149 190.696 534.326 193.768 535.776 197.352C537.312 200.936 538.08 204.989 538.08 209.512C538.08 215.143 536.715 220.093 533.984 224.359C531.339 228.541 527.499 231.826 522.464 234.216C519.509 235.591 516.174 236.556 512.458 237.11L542.176 269.8H510.304L483.907 239.848H467.808V269.8H441.824V180.2H504.416ZM467.808 220.264H499.808C501.855 220.264 503.648 220.051 505.184 219.624C506.72 219.112 508 218.472 509.024 217.704C510.048 216.851 510.816 215.784 511.328 214.504C511.84 213.139 512.096 211.645 512.096 210.023C512.096 208.317 511.84 206.824 511.328 205.544C510.816 204.264 510.048 203.24 509.024 202.472C508 201.618 506.72 200.978 505.184 200.552C503.648 200.04 501.855 199.784 499.808 199.784H467.808V220.264Z" fill="black"/>
|
|
19
|
+
<path d="M588 0H788V200H588V0Z" fill="white"/>
|
|
20
|
+
<path d="M788 0V200H588V0H788ZM592 196H784V4H592V196Z" fill="black"/>
|
|
21
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M688.5 53.376C695.839 53.376 702.537 54.0585 708.596 55.4238C714.276 56.7038 719.356 58.5462 723.836 60.9512L725.611 61.9277C730.001 64.4027 733.716 67.4402 736.756 71.04C740.084 74.7947 742.601 79.0612 744.308 83.8398C746.014 88.6185 746.868 93.9092 746.868 99.7119C746.868 105.429 746.014 110.677 744.308 115.456C742.601 120.235 740.084 124.501 736.756 128.256C734.215 131.197 731.202 133.796 727.719 136.057L743.028 154.624H714.484L705.826 144.309C700.513 145.295 694.738 145.792 688.5 145.792C681.162 145.792 674.42 145.109 668.276 143.744C662.218 142.379 656.798 140.415 652.02 137.855C647.326 135.21 643.359 132.01 640.116 128.256C636.874 124.501 634.356 120.235 632.564 115.456C630.858 110.677 630.004 105.429 630.004 99.7119C630.004 93.9092 630.858 88.6185 632.564 83.8398C634.271 79.0612 636.746 74.7947 639.988 71.04C643.316 67.2001 647.326 63.9994 652.02 61.4395C656.798 58.7941 662.218 56.7892 668.276 55.4238C674.42 54.0585 681.161 53.376 688.5 53.376ZM688.5 73.8555C684.234 73.8555 680.394 74.1973 676.98 74.8799C673.567 75.5626 670.58 76.6294 668.02 78.0801C665.46 79.4454 663.327 81.1523 661.62 83.2002C659.999 85.2482 658.762 87.6376 657.908 90.3682C657.055 93.0988 656.628 96.2134 656.628 99.7119C656.628 103.125 657.055 106.197 657.908 108.928C658.762 111.573 659.999 113.962 661.62 116.096C663.327 118.144 665.46 119.851 668.02 121.216C670.58 122.581 673.567 123.605 676.98 124.288C680.394 124.971 684.234 125.312 688.5 125.312C689.773 125.312 691.01 125.279 692.212 125.216L680.564 110.848H706.932L713.065 118.287C713.819 117.606 714.506 116.876 715.124 116.096C716.831 113.962 718.111 111.573 718.964 108.928C719.817 106.197 720.244 103.125 720.244 99.7119C720.244 96.2134 719.817 93.0988 718.964 90.3682C718.111 87.6376 716.831 85.2481 715.124 83.2002C713.503 81.1522 711.412 79.4454 708.852 78.0801C706.292 76.6295 703.305 75.5625 699.892 74.8799C696.478 74.1973 692.681 73.8555 688.5 73.8555Z" fill="black"/>
|
|
22
|
+
<path d="M784 -120H984V80H784V-120Z" fill="white"/>
|
|
23
|
+
<path d="M984 -120V80H784V-120H984ZM788 76H980V-116H788V76Z" fill="black"/>
|
|
24
|
+
<path d="M884.604 -31.3418L908.769 -64.7998H939.232L896.864 -9.4834V24.7998H870.88V-9.76758L828.768 -64.7998H860.768L884.604 -31.3418Z" fill="black"/>
|
|
25
|
+
<path d="M784 76H984V276H784V76Z" fill="white"/>
|
|
26
|
+
<path d="M984 76V276H784V76H984ZM788 272H980V80H788V272Z" fill="black"/>
|
|
27
|
+
<path d="M884.604 164.658L908.769 131.2H939.232L896.864 186.517V220.8H870.88V186.232L828.768 131.2H860.768L884.604 164.658Z" fill="black"/>
|
|
28
|
+
<path d="M984 0V200H0V0H984ZM4 196H980V4H4V196Z" fill="black"/>
|
|
29
|
+
</g>
|
|
30
|
+
<defs>
|
|
31
|
+
<clipPath id="clip0_458_171">
|
|
32
|
+
<rect width="984" height="200" fill="white"/>
|
|
33
|
+
</clipPath>
|
|
34
|
+
</defs>
|
|
35
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { cn } from '../lib/cn'
|
|
2
|
+
import { useCopyText } from '../lib/hooks/useCopyText'
|
|
3
|
+
|
|
4
|
+
type CopyButtonProps = {
|
|
5
|
+
text: string
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export default function CopyButton({ text }: CopyButtonProps) {
|
|
9
|
+
const [isCopying, copyText] = useCopyText()
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<button
|
|
13
|
+
onClick={() => copyText(text)}
|
|
14
|
+
data-copying={isCopying}
|
|
15
|
+
className="inline-flex clean-btn cursor-pointer p-10"
|
|
16
|
+
>
|
|
17
|
+
<span
|
|
18
|
+
className={cn('text-p0 uppercase tracking-10 py-4 border-b', {
|
|
19
|
+
'animate-flicker-opacity': isCopying,
|
|
20
|
+
})}
|
|
21
|
+
>
|
|
22
|
+
{isCopying ? 'Copied!' : 'Copy'}
|
|
23
|
+
</span>
|
|
24
|
+
</button>
|
|
25
|
+
)
|
|
26
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { getImage } from 'astro:assets'
|
|
3
|
+
|
|
4
|
+
import SectionHeadline from '../components/SectionHeadline'
|
|
5
|
+
import InUseExamples from '../components/InUseExamples'
|
|
6
|
+
|
|
7
|
+
import baggu from '../assets/baggu.jpg'
|
|
8
|
+
import bluesky from '../assets/bluesky.jpg'
|
|
9
|
+
import clams from '../assets/clams-lol.jpg'
|
|
10
|
+
import coconutClub from '../assets/coconut-club.jpg'
|
|
11
|
+
import lucci from '../assets/lucci.jpg'
|
|
12
|
+
import philaMuseum from '../assets/phila-museum.jpg'
|
|
13
|
+
import redRooster from '../assets/red-rooster.jpg'
|
|
14
|
+
import sanity from '../assets/sanity.jpg'
|
|
15
|
+
import usal from '../assets/usal.jpg'
|
|
16
|
+
import vacation from '../assets/vacation.jpg'
|
|
17
|
+
|
|
18
|
+
const examples = [
|
|
19
|
+
{
|
|
20
|
+
title: 'baggu.com',
|
|
21
|
+
url: 'https://baggu.com/',
|
|
22
|
+
img: baggu,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
title: 'vacation.inc',
|
|
26
|
+
url: 'https://www.vacation.inc/',
|
|
27
|
+
img: vacation,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
title: 'clams.lol',
|
|
31
|
+
url: 'https://www.clams.lol/',
|
|
32
|
+
img: clams,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
title: 'sanity.io',
|
|
36
|
+
url: 'https://www.sanity.io/',
|
|
37
|
+
img: sanity,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
title: 'thecoconutclubexuma.com',
|
|
41
|
+
url: 'https://www.thecoconutclubexuma.com/',
|
|
42
|
+
img: coconutClub,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
title: 'luccilambrusco.com',
|
|
46
|
+
url: 'https://www.luccilambrusco.com/',
|
|
47
|
+
img: lucci,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
title: 'bsky.social',
|
|
51
|
+
url: 'https://bsky.social/about',
|
|
52
|
+
img: bluesky,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
title: 'philamuseum.org',
|
|
56
|
+
url: 'https://www.philamuseum.org/',
|
|
57
|
+
img: philaMuseum,
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
title: 'redroostercoffee.com',
|
|
61
|
+
url: 'https://www.redroostercoffee.com/',
|
|
62
|
+
img: redRooster,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
title: 'usalproject.com',
|
|
66
|
+
url: 'https://www.usalproject.com/',
|
|
67
|
+
img: usal,
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
const examplesWithImages = await Promise.all(
|
|
72
|
+
examples.map(async (example) => ({
|
|
73
|
+
...example,
|
|
74
|
+
img: await getImage({
|
|
75
|
+
src: example.img,
|
|
76
|
+
format: 'avif',
|
|
77
|
+
widths: [600, 1200],
|
|
78
|
+
sizes: '(min-width: 768px) 50vw, 75vw',
|
|
79
|
+
}),
|
|
80
|
+
}))
|
|
81
|
+
)
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
<section class="relative overflow-hidden border-t">
|
|
85
|
+
<SectionHeadline text="In Use" client:load />
|
|
86
|
+
<div class="py-20 md:px-80 md:py-40">
|
|
87
|
+
<InUseExamples examples={examplesWithImages} client:load />
|
|
88
|
+
</div>
|
|
89
|
+
</section>
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Marqy } from 'marqy'
|
|
2
|
+
|
|
3
|
+
interface OptimizedImage {
|
|
4
|
+
src: string
|
|
5
|
+
srcSet: { attribute: string }
|
|
6
|
+
attributes: Record<string, string>
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
interface Example {
|
|
10
|
+
title: string
|
|
11
|
+
url: string
|
|
12
|
+
img: OptimizedImage
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default function InUseExamples({ examples }: { examples: Example[] }) {
|
|
16
|
+
return (
|
|
17
|
+
<section>
|
|
18
|
+
<Marqy speed={1.2} pauseOnHover>
|
|
19
|
+
<div className="flex gap-20 pl-20 sm:gap-40 sm:pl-40">
|
|
20
|
+
{examples.map((example, i) => (
|
|
21
|
+
<div
|
|
22
|
+
key={i}
|
|
23
|
+
className="group relative flex flex-col gap-10 w-[50vw] md:w-[25vw]"
|
|
24
|
+
>
|
|
25
|
+
<div className="flex flex-col gap-10">
|
|
26
|
+
<figure className="relative bg-white/10 aspect-16/10 rounded-5 overflow-hidden isolate">
|
|
27
|
+
<Marqy
|
|
28
|
+
direction={i % 2 === 1 ? 'up' : 'down'}
|
|
29
|
+
className="overflow-hidden h-full"
|
|
30
|
+
>
|
|
31
|
+
<img
|
|
32
|
+
src={example.img.src}
|
|
33
|
+
srcSet={example.img.srcSet.attribute}
|
|
34
|
+
sizes="(min-width: 1000px) 25vw, 50vw"
|
|
35
|
+
alt=""
|
|
36
|
+
className="w-full h-full object-cover"
|
|
37
|
+
/>
|
|
38
|
+
</Marqy>
|
|
39
|
+
</figure>
|
|
40
|
+
|
|
41
|
+
<div className="bg-white/10 text-center py-10 rounded-5">
|
|
42
|
+
<a
|
|
43
|
+
href={`${example.url}?ref=marqy`}
|
|
44
|
+
target="_blank"
|
|
45
|
+
rel="noopener noreferrer"
|
|
46
|
+
className="flex justify-center after:absolute after:inset-0 after:z-1"
|
|
47
|
+
>
|
|
48
|
+
<span className="text-p0 group-hover:animate-flicker-opacity group-hover:text-neon">
|
|
49
|
+
{example.title}
|
|
50
|
+
</span>
|
|
51
|
+
</a>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
))}
|
|
56
|
+
</div>
|
|
57
|
+
</Marqy>
|
|
58
|
+
</section>
|
|
59
|
+
)
|
|
60
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Marqy } from 'marqy'
|
|
2
|
+
|
|
3
|
+
import Divider from './Divider'
|
|
4
|
+
|
|
5
|
+
export default function MarqyCredits() {
|
|
6
|
+
return (
|
|
7
|
+
<section>
|
|
8
|
+
<Marqy speed={1} direction="right" pauseOnHover>
|
|
9
|
+
<p className="uppercase py-20 text-p1 whitespace-pre">
|
|
10
|
+
<Divider />
|
|
11
|
+
Built_by{' '}
|
|
12
|
+
<a
|
|
13
|
+
href="https://www.nickdimatteo.com"
|
|
14
|
+
target="_blank"
|
|
15
|
+
rel="noopener noreferrer"
|
|
16
|
+
className="text-neon hover:animate-flicker-opacity"
|
|
17
|
+
>
|
|
18
|
+
Nick DiMatteo
|
|
19
|
+
</a>{' '}
|
|
20
|
+
&{' '}
|
|
21
|
+
<a
|
|
22
|
+
href="https://www.mikewagz.com"
|
|
23
|
+
target="_blank"
|
|
24
|
+
rel="noopener noreferrer"
|
|
25
|
+
className="text-neon hover:animate-flicker-opacity"
|
|
26
|
+
>
|
|
27
|
+
Mike Wagz
|
|
28
|
+
</a>
|
|
29
|
+
</p>
|
|
30
|
+
</Marqy>
|
|
31
|
+
</section>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Marqy } from 'marqy'
|
|
2
|
+
|
|
3
|
+
import Divider from './Divider'
|
|
4
|
+
import Tile from './Tile'
|
|
5
|
+
|
|
6
|
+
export default function MarqyHero() {
|
|
7
|
+
return (
|
|
8
|
+
<div>
|
|
9
|
+
{/* Hero Logo */}
|
|
10
|
+
<header className="flex justify-center overflow-hidden gap-px bg-white cursor-cell">
|
|
11
|
+
<Marqy
|
|
12
|
+
className="h-[clamp(2rem,18vw,40rem)] bg-black"
|
|
13
|
+
direction="up"
|
|
14
|
+
speed={1}
|
|
15
|
+
>
|
|
16
|
+
<Tile value="m" />
|
|
17
|
+
</Marqy>
|
|
18
|
+
<Marqy
|
|
19
|
+
className="h-[clamp(2rem,18vw,40rem)] bg-black"
|
|
20
|
+
direction="down"
|
|
21
|
+
speed={1}
|
|
22
|
+
>
|
|
23
|
+
<Tile value="a" />
|
|
24
|
+
</Marqy>
|
|
25
|
+
<Marqy
|
|
26
|
+
className="h-[clamp(2rem,18vw,40rem)] bg-black"
|
|
27
|
+
direction="up"
|
|
28
|
+
speed={1}
|
|
29
|
+
>
|
|
30
|
+
<Tile value="r" />
|
|
31
|
+
</Marqy>
|
|
32
|
+
<Marqy
|
|
33
|
+
className="h-[clamp(2rem,18vw,40rem)] bg-black"
|
|
34
|
+
direction="down"
|
|
35
|
+
speed={1}
|
|
36
|
+
>
|
|
37
|
+
<Tile value="q" />
|
|
38
|
+
</Marqy>
|
|
39
|
+
<Marqy
|
|
40
|
+
className="h-[clamp(2rem,18vw,40rem)] bg-black"
|
|
41
|
+
direction="up"
|
|
42
|
+
speed={1}
|
|
43
|
+
>
|
|
44
|
+
<Tile value="y" />
|
|
45
|
+
</Marqy>
|
|
46
|
+
</header>
|
|
47
|
+
|
|
48
|
+
{/* Tagline */}
|
|
49
|
+
<Marqy direction="right" className="bg-white text-black">
|
|
50
|
+
<p className="text-p1 py-10 sm:py-20 uppercase whitespace-pre">
|
|
51
|
+
<Divider />
|
|
52
|
+
High-fidelity loops for modern interfaces
|
|
53
|
+
</p>
|
|
54
|
+
</Marqy>
|
|
55
|
+
|
|
56
|
+
<Marqy className="bg-white/70 text-black">
|
|
57
|
+
<p className="text-p1 py-10 sm:py-20 uppercase whitespace-pre">
|
|
58
|
+
<Divider />
|
|
59
|
+
Light as a feather at under 1kB gzipped
|
|
60
|
+
</p>
|
|
61
|
+
</Marqy>
|
|
62
|
+
|
|
63
|
+
<Marqy className="bg-white/50 text-black">
|
|
64
|
+
<div className="flex">
|
|
65
|
+
<p className="text-p1 py-10 sm:py-20 uppercase whitespace-pre">
|
|
66
|
+
<Divider value=" + " />
|
|
67
|
+
Synchronized speeds that perfectly loop
|
|
68
|
+
</p>
|
|
69
|
+
<p className="text-p1 py-10 sm:py-20 uppercase whitespace-pre">
|
|
70
|
+
<Divider value=" + " />
|
|
71
|
+
CSS-based animations
|
|
72
|
+
</p>
|
|
73
|
+
</div>
|
|
74
|
+
</Marqy>
|
|
75
|
+
</div>
|
|
76
|
+
)
|
|
77
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { useReducer } from 'react'
|
|
2
|
+
import { Marqy } from 'marqy'
|
|
3
|
+
|
|
4
|
+
import { zeroPad } from '../lib/helpers'
|
|
5
|
+
|
|
6
|
+
export default function MarqyInteractiveDemo() {
|
|
7
|
+
const [count, increment] = useReducer((x: number) => (x >= 20 ? 0 : x + 1), 1)
|
|
8
|
+
|
|
9
|
+
return (
|
|
10
|
+
<section>
|
|
11
|
+
<Marqy speed={0.7} direction="right" pauseOnHover className="border-b">
|
|
12
|
+
<div className="flex items-center gap-5">
|
|
13
|
+
<p className="text-p1 py-10 uppercase whitespace-pre">{` Interactivity: `}</p>
|
|
14
|
+
<button
|
|
15
|
+
onClick={increment}
|
|
16
|
+
className="clean-btn cursor-pointer bg-white text-black text-p0 uppercase px-20 py-15"
|
|
17
|
+
>
|
|
18
|
+
Count_
|
|
19
|
+
<span
|
|
20
|
+
className="tabular-nums"
|
|
21
|
+
style={{
|
|
22
|
+
minWidth: '2ch',
|
|
23
|
+
display: 'inline-block',
|
|
24
|
+
textAlign: 'end',
|
|
25
|
+
}}
|
|
26
|
+
>
|
|
27
|
+
{zeroPad(count, 2)}
|
|
28
|
+
</span>
|
|
29
|
+
</button>
|
|
30
|
+
</div>
|
|
31
|
+
</Marqy>
|
|
32
|
+
|
|
33
|
+
<Marqy speed={0.4} className="border-b">
|
|
34
|
+
<div className="flex items-center gap-10 pr-10 py-20">
|
|
35
|
+
<p className="text-p1 uppercase">Render Anything</p>
|
|
36
|
+
<figure className="flex aspect-square rounded-5 overflow-hidden isolate bg-white/10 w-100">
|
|
37
|
+
<img
|
|
38
|
+
src="https://is1-ssl.mzstatic.com/image/thumb/Music211/v4/3e/2a/b9/3e2ab937-0ea6-c02b-3c57-afe28f9aa2a2/198704984693_Cover.jpg/632x632bb.webp"
|
|
39
|
+
alt=""
|
|
40
|
+
/>
|
|
41
|
+
</figure>
|
|
42
|
+
</div>
|
|
43
|
+
</Marqy>
|
|
44
|
+
</section>
|
|
45
|
+
)
|
|
46
|
+
}
|