marqy 1.0.2 → 1.1.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.
Files changed (117) hide show
  1. package/README.md +1 -1
  2. package/dist/core-COOoOGpB.js +21 -0
  3. package/dist/core-COOoOGpB.js.map +1 -0
  4. package/dist/core-CuZGUfsl.cjs +2 -0
  5. package/dist/core-CuZGUfsl.cjs.map +1 -0
  6. package/dist/index.cjs.js +2 -0
  7. package/dist/index.cjs.js.map +1 -0
  8. package/dist/index.d.ts +15 -0
  9. package/dist/index.esm.js +5 -0
  10. package/dist/index.esm.js.map +1 -0
  11. package/dist/marqy.css +4 -0
  12. package/dist/react.cjs.js +2 -0
  13. package/dist/react.cjs.js.map +1 -0
  14. package/dist/react.d.ts +15 -0
  15. package/dist/react.esm.js +60 -0
  16. package/dist/react.esm.js.map +1 -0
  17. package/dist/svelte.cjs.js +2 -0
  18. package/dist/svelte.cjs.js.map +1 -0
  19. package/dist/svelte.d.ts +7 -0
  20. package/dist/svelte.esm.js +54 -0
  21. package/dist/svelte.esm.js.map +1 -0
  22. package/dist/vanilla.cjs.js +2 -0
  23. package/dist/vanilla.cjs.js.map +1 -0
  24. package/dist/vanilla.d.ts +32 -0
  25. package/dist/vanilla.esm.js +96 -0
  26. package/dist/vanilla.esm.js.map +1 -0
  27. package/dist/vue.cjs.js +2 -0
  28. package/dist/vue.cjs.js.map +1 -0
  29. package/dist/vue.d.ts +45 -0
  30. package/dist/vue.esm.js +70 -0
  31. package/dist/vue.esm.js.map +1 -0
  32. package/package.json +81 -19
  33. package/.claude/settings.local.json +0 -13
  34. package/.prettierrc +0 -6
  35. package/.vscode/settings.json +0 -3
  36. package/dist/marqy.d.ts +0 -9
  37. package/dist/marqy.esm.js +0 -2
  38. package/dist/marqy.esm.js.map +0 -1
  39. package/dist/marqy.js +0 -2
  40. package/dist/marqy.js.map +0 -1
  41. package/dist/marqy.umd.js +0 -2
  42. package/dist/marqy.umd.js.map +0 -1
  43. package/examples/.astro/content-assets.mjs +0 -1
  44. package/examples/.astro/content-modules.mjs +0 -1
  45. package/examples/.astro/content.d.ts +0 -154
  46. package/examples/.astro/data-store.json +0 -1
  47. package/examples/.astro/fonts/font-akkurat-mono-500-normal-40f4e0ea0b54adc5.woff2 +0 -0
  48. package/examples/.astro/fonts/font-akkurat-mono-700-normal-b9f40f1447b587bd.woff +0 -0
  49. package/examples/.astro/fonts/font-grtsk-300-normal-8ef14ca23be6893c.woff2 +0 -0
  50. package/examples/.astro/fonts/font-grtsk-400-normal-13ba8954073ee64a.woff2 +0 -0
  51. package/examples/.astro/fonts/font-grtsk-500-normal-d214468daf16245f.woff2 +0 -0
  52. package/examples/.astro/fonts/font-grtsk-wide-500-normal-6f8c2658b9c2ba8e.woff2 +0 -0
  53. package/examples/.astro/fonts/font-grtsk-wide-700-normal-17406f09c7b68ca3.woff2 +0 -0
  54. package/examples/.astro/fonts.d.ts +0 -4
  55. package/examples/.astro/settings.json +0 -5
  56. package/examples/.astro/types.d.ts +0 -3
  57. package/examples/.yarnrc +0 -1
  58. package/examples/astro.config.mjs +0 -101
  59. package/examples/package.json +0 -30
  60. package/examples/public/apple-touch-icon.png +0 -0
  61. package/examples/public/favicon.ico +0 -0
  62. package/examples/public/favicon.svg +0 -4
  63. package/examples/public/marqy-logo.svg +0 -35
  64. package/examples/src/assets/baggu.jpg +0 -0
  65. package/examples/src/assets/bluesky.jpg +0 -0
  66. package/examples/src/assets/clams-lol.jpg +0 -0
  67. package/examples/src/assets/coconut-club-2.jpg +0 -0
  68. package/examples/src/assets/coconut-club.jpg +0 -0
  69. package/examples/src/assets/lucci.jpg +0 -0
  70. package/examples/src/assets/phila-museum.jpg +0 -0
  71. package/examples/src/assets/red-rooster.jpg +0 -0
  72. package/examples/src/assets/sanity.jpg +0 -0
  73. package/examples/src/assets/usal.jpg +0 -0
  74. package/examples/src/assets/vacation.jpg +0 -0
  75. package/examples/src/components/CopyButton.tsx +0 -26
  76. package/examples/src/components/Divider.tsx +0 -3
  77. package/examples/src/components/Footer.astro +0 -7
  78. package/examples/src/components/InUse.astro +0 -89
  79. package/examples/src/components/InUseExamples.tsx +0 -60
  80. package/examples/src/components/MarqyCredits.tsx +0 -33
  81. package/examples/src/components/MarqyHero.tsx +0 -77
  82. package/examples/src/components/MarqyInteractiveDemo.tsx +0 -46
  83. package/examples/src/components/MarqyPlayground.tsx +0 -496
  84. package/examples/src/components/MarqySpeedDemo.tsx +0 -34
  85. package/examples/src/components/MarqyVerticalDemo.tsx +0 -44
  86. package/examples/src/components/Playground.astro +0 -11
  87. package/examples/src/components/QuickStart.astro +0 -59
  88. package/examples/src/components/SectionHeadline.tsx +0 -41
  89. package/examples/src/components/Tile.tsx +0 -32
  90. package/examples/src/content.config.ts +0 -3
  91. package/examples/src/fonts/Akkurat-Mono-Bold.woff +0 -0
  92. package/examples/src/fonts/Akkurat-Mono.woff +0 -0
  93. package/examples/src/fonts/Akkurat-Mono.woff2 +0 -0
  94. package/examples/src/fonts/Grtsk-Peta-Light.woff +0 -0
  95. package/examples/src/fonts/Grtsk-Peta-Light.woff2 +0 -0
  96. package/examples/src/fonts/Grtsk-Peta-Medium.woff +0 -0
  97. package/examples/src/fonts/Grtsk-Peta-Medium.woff2 +0 -0
  98. package/examples/src/fonts/Grtsk-Peta-Regular.woff +0 -0
  99. package/examples/src/fonts/Grtsk-Peta-Regular.woff2 +0 -0
  100. package/examples/src/fonts/Grtsk-Tera-Bold.woff +0 -0
  101. package/examples/src/fonts/Grtsk-Tera-Bold.woff2 +0 -0
  102. package/examples/src/fonts/Grtsk-Tera-Medium.woff +0 -0
  103. package/examples/src/fonts/Grtsk-Tera-Medium.woff2 +0 -0
  104. package/examples/src/layouts/layout.astro +0 -107
  105. package/examples/src/lib/cn.ts +0 -16
  106. package/examples/src/lib/helpers.ts +0 -13
  107. package/examples/src/lib/hooks/useCopyText.ts +0 -47
  108. package/examples/src/pages/index.astro +0 -56
  109. package/examples/src/styles/_base.css +0 -155
  110. package/examples/src/styles/_components.css +0 -123
  111. package/examples/src/styles/_utilities.css +0 -23
  112. package/examples/src/styles/app.css +0 -397
  113. package/examples/tsconfig.json +0 -3
  114. package/examples/yarn.lock +0 -3316
  115. package/marqy.css +0 -131
  116. package/src/marqy.tsx +0 -97
  117. package/tsconfig.json +0 -9
package/marqy.css DELETED
@@ -1,131 +0,0 @@
1
- [data-marqy] {
2
- position: relative;
3
- width: 100%;
4
- }
5
-
6
- [data-marqy][data-direction='left'],
7
- [data-marqy][data-direction='right'] {
8
- overflow-x: clip;
9
- }
10
-
11
- [data-marqy][data-direction='up'],
12
- [data-marqy][data-direction='down'] {
13
- overflow-y: clip;
14
- }
15
-
16
- [data-marqy-inner] {
17
- display: flex;
18
- -ms-overflow-style: none;
19
- scrollbar-width: none;
20
- }
21
-
22
- [data-marqy][data-direction='up'] [data-marqy-inner],
23
- [data-marqy][data-direction='down'] [data-marqy-inner],
24
- [data-marqy][data-direction='up'] [data-marqy-content],
25
- [data-marqy][data-direction='down'] [data-marqy-content] {
26
- flex-direction: column;
27
- }
28
-
29
- [data-marqy-inner]::-webkit-scrollbar {
30
- display: none;
31
- }
32
-
33
- [data-marqy][data-direction='right'] [data-marqy-inner] {
34
- justify-content: flex-end;
35
- }
36
-
37
- [data-marqy][data-direction='down'] [data-marqy-inner],
38
- [data-marqy][data-direction='down'] [data-marqy-content] {
39
- justify-content: flex-end;
40
- }
41
-
42
- [data-marqy-content] {
43
- display: flex;
44
- flex: 1 0 auto;
45
- animation-timing-function: linear;
46
- animation-iteration-count: infinite;
47
- animation-play-state: running;
48
- will-change: transform;
49
- }
50
-
51
- [data-marqy-static] [data-marqy-content] {
52
- animation: none !important;
53
- }
54
-
55
- [data-marqy][data-direction='left'] [data-marqy-content] {
56
- animation-name: marqyL;
57
- }
58
-
59
- [data-marqy][data-direction='right'] [data-marqy-content] {
60
- animation-name: marqyR;
61
- }
62
-
63
- [data-marqy][data-direction='up'] [data-marqy-content] {
64
- animation-name: marqyU;
65
- }
66
-
67
- [data-marqy][data-direction='down'] [data-marqy-content] {
68
- animation-name: marqyD;
69
- }
70
-
71
- [data-marqy][data-pause-on-hover]:hover
72
- > [data-marqy-inner]
73
- > [data-marqy-content] {
74
- animation-play-state: paused;
75
- }
76
-
77
- [data-marqy-item] {
78
- flex-grow: 0;
79
- }
80
-
81
- @keyframes marqyL {
82
- 0% {
83
- transform: translate3d(0, 0, 0);
84
- }
85
- 100% {
86
- transform: translate3d(-100%, 0, 0);
87
- }
88
- }
89
-
90
- @keyframes marqyR {
91
- 0% {
92
- transform: translate3d(0, 0, 0);
93
- }
94
- 100% {
95
- transform: translate3d(100%, 0, 0);
96
- }
97
- }
98
-
99
- @keyframes marqyU {
100
- 0% {
101
- transform: translate3d(0, 0, 0);
102
- }
103
- 100% {
104
- transform: translate3d(0, -100%, 0);
105
- }
106
- }
107
-
108
- @keyframes marqyD {
109
- 0% {
110
- transform: translate3d(0, -100%, 0);
111
- }
112
- 100% {
113
- transform: translate3d(0, 0, 0);
114
- }
115
- }
116
-
117
- @media (prefers-reduced-motion) {
118
- [data-marqy][data-direction='left'] [data-marqy-inner],
119
- [data-marqy][data-direction='right'] [data-marqy-inner] {
120
- overflow-x: scroll;
121
- }
122
-
123
- [data-marqy][data-direction='up'],
124
- [data-marqy][data-direction='down'] {
125
- overflow-y: scroll;
126
- }
127
-
128
- [data-marqy-content] {
129
- animation: none !important;
130
- }
131
- }
package/src/marqy.tsx DELETED
@@ -1,97 +0,0 @@
1
- import * as React from 'react'
2
-
3
- export interface MarqyProps extends React.ComponentPropsWithoutRef<'div'> {
4
- speed?: number
5
- direction?: 'left' | 'right' | 'up' | 'down'
6
- pauseOnHover?: boolean
7
- manual?: boolean
8
- children: React.ReactNode
9
- }
10
-
11
- export function Marqy({
12
- speed = 0.5,
13
- direction = 'left',
14
- pauseOnHover,
15
- manual = false,
16
- children,
17
- ...rest
18
- }: MarqyProps): React.ReactElement {
19
- const [reps, setReps] = React.useState(1)
20
-
21
- const [container, containerDimensions] = useDimensions()
22
- const [item, itemDimensions] = useDimensions()
23
-
24
- const isVertical = direction === 'up' || direction === 'down'
25
-
26
- const getAnimationDuration = React.useCallback(
27
- (itemDimension: number) => {
28
- return `${((itemDimension ?? 0) * reps) / (100 * speed)}s`
29
- },
30
- [reps, speed]
31
- )
32
-
33
- React.useEffect(() => {
34
- if (!isVertical && containerDimensions.width && itemDimensions.width) {
35
- setReps(Math.ceil(containerDimensions.width / itemDimensions.width))
36
- }
37
- if (isVertical && containerDimensions.height && itemDimensions.height) {
38
- setReps(Math.ceil(containerDimensions.height / itemDimensions.height))
39
- }
40
- }, [isVertical, containerDimensions, itemDimensions])
41
-
42
- return (
43
- <div
44
- ref={container}
45
- data-marqy=""
46
- data-direction={direction}
47
- data-pause-on-hover={pauseOnHover ? '' : null}
48
- {...rest}
49
- >
50
- <div data-marqy-inner="">
51
- {new Array(2).fill(0).map((_, clone) => (
52
- <div
53
- key={clone}
54
- data-marqy-content=""
55
- {...(manual
56
- ? { 'data-marqy-static': getAnimationDuration(isVertical ? itemDimensions.height : itemDimensions.width) }
57
- : { style: { animationDuration: getAnimationDuration(isVertical ? itemDimensions.height : itemDimensions.width) } }
58
- )}
59
- >
60
- {new Array(reps).fill(0).map((_, rep) => {
61
- const isFirstItem = clone === 0 && rep === 0
62
- return (
63
- <div
64
- key={rep}
65
- ref={isFirstItem ? item : null}
66
- aria-hidden={!isFirstItem || null}
67
- data-marqy-item=""
68
- >
69
- {children}
70
- </div>
71
- )
72
- })}
73
- </div>
74
- ))}
75
- </div>
76
- </div>
77
- )
78
- }
79
-
80
- function useDimensions() {
81
- const [dimensions, setDimensions] = React.useState({ width: 0, height: 0 })
82
- const observer = React.useRef<ResizeObserver | null>(null)
83
-
84
- const ref = React.useCallback((node: HTMLElement | null) => {
85
- observer.current?.disconnect()
86
- if (!node) return
87
- observer.current = new ResizeObserver(([entry]) =>
88
- setDimensions({
89
- width: entry.contentRect.width,
90
- height: entry.contentRect.height,
91
- })
92
- )
93
- observer.current.observe(node)
94
- }, [])
95
-
96
- return [ref, dimensions] as const
97
- }
package/tsconfig.json DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "declaration": true,
3
- "compilerOptions": {
4
- "jsx": "react",
5
- "moduleResolution": "node",
6
- "esModuleInterop": true,
7
- "lib": ["dom", "es2015"]
8
- }
9
- }