@documental-xyz/core 0.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 (114) hide show
  1. package/README.md +424 -0
  2. package/integration.ts +113 -0
  3. package/package.json +83 -0
  4. package/src/admin/admin.astro +29 -0
  5. package/src/assets/scripts/App.js +70 -0
  6. package/src/assets/scripts/EnteringAnimations.js +34 -0
  7. package/src/assets/scripts/MapBoxHandler.js +680 -0
  8. package/src/assets/scripts/ScrollProgressionBar.js +24 -0
  9. package/src/assets/scripts/utils/ScrollObserver.js +166 -0
  10. package/src/assets/styles/config/_breakpoints.scss +37 -0
  11. package/src/assets/styles/config/_colors.scss +8 -0
  12. package/src/assets/styles/config/_config.scss +5 -0
  13. package/src/assets/styles/config/_functions.scss +90 -0
  14. package/src/assets/styles/config/_grrr.configs.scss +7 -0
  15. package/src/assets/styles/config/_mixins.scss +207 -0
  16. package/src/assets/styles/config/_type.scss +175 -0
  17. package/src/assets/styles/config/_vars.scss +16 -0
  18. package/src/assets/styles/globals/_content.scss +47 -0
  19. package/src/assets/styles/globals/_grrr.scss +18 -0
  20. package/src/assets/styles/globals/_html.scss +25 -0
  21. package/src/assets/styles/globals/_lists.scss +19 -0
  22. package/src/assets/styles/globals/_map-anchors.scss +32 -0
  23. package/src/assets/styles/globals/_reset.scss +240 -0
  24. package/src/assets/styles/globals/_reveal-animations.scss +104 -0
  25. package/src/assets/styles/globals/_root.scss +6 -0
  26. package/src/assets/styles/globals/_scroll-progression-bar.scss +8 -0
  27. package/src/assets/styles/main.scss +17 -0
  28. package/src/assets/styles/utils/.gitkeep +0 -0
  29. package/src/assets/styles/utils/grrr/_grrr.scss +433 -0
  30. package/src/assets/styles/utils/list-styles/_list-styles.scss +190 -0
  31. package/src/components/AnimationToggle.astro +19 -0
  32. package/src/components/BigNumbers.astro +83 -0
  33. package/src/components/Button.astro +49 -0
  34. package/src/components/Caption.astro +15 -0
  35. package/src/components/Card.astro +68 -0
  36. package/src/components/Cards.astro +66 -0
  37. package/src/components/CardsCall.astro +125 -0
  38. package/src/components/ChartBar.astro +217 -0
  39. package/src/components/ChartPercentage.astro +137 -0
  40. package/src/components/Column.astro +54 -0
  41. package/src/components/ColumnSticky.astro +129 -0
  42. package/src/components/Columns.astro +139 -0
  43. package/src/components/Compare.astro +266 -0
  44. package/src/components/Cta.astro +242 -0
  45. package/src/components/Gallery.astro +594 -0
  46. package/src/components/Group.astro +140 -0
  47. package/src/components/HtmlEmbed.astro +98 -0
  48. package/src/components/ImageBlock.astro +134 -0
  49. package/src/components/InnerColumns.astro +54 -0
  50. package/src/components/LogosGroup.astro +102 -0
  51. package/src/components/Map.astro +321 -0
  52. package/src/components/MapBox.astro +96 -0
  53. package/src/components/MapView.astro +30 -0
  54. package/src/components/Menu.astro +278 -0
  55. package/src/components/Pullquote.astro +46 -0
  56. package/src/components/Slider.astro +223 -0
  57. package/src/components/Spacer.astro +25 -0
  58. package/src/components/Text.astro +173 -0
  59. package/src/components/TextPlaceholder.astro +98 -0
  60. package/src/components/Timeline.astro +73 -0
  61. package/src/components/TimelineBullet.astro +67 -0
  62. package/src/components/VideoEmbed.astro +99 -0
  63. package/src/content/loader.ts +29 -0
  64. package/src/content/pages/alter-ameacada.md +80 -0
  65. package/src/content/pages/expulsions.md +1447 -0
  66. package/src/content/pages/home.md +346 -0
  67. package/src/content/pages/nhanderekoa-studio-autonoma.md +3113 -0
  68. package/src/content/pages/nhanderekoa-terra-ind/303/255gena-jaragu/303/241.md +3806 -0
  69. package/src/content/pages/nova-landing-page.md +546 -0
  70. package/src/content/pages/territ/303/263rios-de-exce/303/247/303/243o.md +2199 -0
  71. package/src/content/pages/teste-alter-do-chao.md +955 -0
  72. package/src/content/pages/teste-layout.md +1484 -0
  73. package/src/content/pages/thiago.md +93 -0
  74. package/src/content/schema/blog.ts +11 -0
  75. package/src/content/schema/geostorys.ts +13 -0
  76. package/src/content/schema/index.ts +3 -0
  77. package/src/content/schema/pages.ts +494 -0
  78. package/src/content.config.ts +49 -0
  79. package/src/env.d.ts +1 -0
  80. package/src/integration/override-aliases.ts +67 -0
  81. package/src/layouts/components/ButtonLayout.astro +8 -0
  82. package/src/layouts/components/CardLayout.astro +8 -0
  83. package/src/layouts/components/CardsCallLayout.astro +26 -0
  84. package/src/layouts/components/CardsLayout.astro +14 -0
  85. package/src/layouts/components/ChartBarLayout.astro +21 -0
  86. package/src/layouts/components/ChartPercentageLayout.astro +17 -0
  87. package/src/layouts/components/ColumnLayout.astro +11 -0
  88. package/src/layouts/components/ColumnStickyLayout.astro +10 -0
  89. package/src/layouts/components/ColumnsLayout.astro +13 -0
  90. package/src/layouts/components/CompareLayout.astro +22 -0
  91. package/src/layouts/components/CtaLayout.astro +91 -0
  92. package/src/layouts/components/GalleryLayout.astro +24 -0
  93. package/src/layouts/components/GroupLayout.astro +53 -0
  94. package/src/layouts/components/HtmlEmbedLayout.astro +18 -0
  95. package/src/layouts/components/ImageBlockLayout.astro +20 -0
  96. package/src/layouts/components/InnerColumnsLayout.astro +14 -0
  97. package/src/layouts/components/LogosGroupLayout.astro +22 -0
  98. package/src/layouts/components/MapLayout.astro +41 -0
  99. package/src/layouts/components/MapViewLayout.astro +8 -0
  100. package/src/layouts/components/MapboxLayout.astro +248 -0
  101. package/src/layouts/components/PullquoteLayout.astro +13 -0
  102. package/src/layouts/components/SliderLayout.astro +18 -0
  103. package/src/layouts/components/SpacerLayout.astro +8 -0
  104. package/src/layouts/components/TextLayout.astro +17 -0
  105. package/src/layouts/components/TextPlaceholderLayout.astro +7 -0
  106. package/src/layouts/components/TimelineBulletLayout.astro +14 -0
  107. package/src/layouts/components/TimelineLayout.astro +10 -0
  108. package/src/layouts/components/VideoEmbedLayout.astro +28 -0
  109. package/src/layouts/pages/Layout.astro +90 -0
  110. package/src/layouts/pages/PageLayout.astro +200 -0
  111. package/src/lib/collections.ts +1 -0
  112. package/src/routes/[slug].astro +17 -0
  113. package/src/routes/index.astro +5 -0
  114. package/src/vite/yaml-merge-plugin.ts +234 -0
@@ -0,0 +1,266 @@
1
+ ---
2
+ import { Image } from "astro:assets";
3
+ import Caption from "./Caption.astro";
4
+
5
+ const { caption, imageLeft, imageRight } = Astro.props;
6
+ ---
7
+
8
+ <figure class="compare reveal--fadeInUp">
9
+ <div class="compare__holder">
10
+ <div class="compare-controller">
11
+ <div class="compare-controller__center"></div>
12
+ </div>
13
+ <div class="compare__images">
14
+ <div class="compare__image -left">
15
+ <Image src={imageLeft} alt="" width="100" height="100" />
16
+ </div>
17
+ <div class="compare__image -right">
18
+ <Image src={imageRight} alt="" width="100" height="100" />
19
+ </div>
20
+ </div>
21
+ </div>
22
+ {
23
+ caption && (
24
+ <figcaption class="compare__caption">
25
+ <Caption>{caption}</Caption>
26
+ </figcaption>
27
+ )
28
+ }
29
+ </figure>
30
+
31
+ <style lang="scss">
32
+ @use "../assets/styles/config/config" as *;
33
+ @use "../assets/styles/utils/grrr/grrr" as *;
34
+ @use "../assets/styles/globals/grrr" as *;
35
+
36
+ .compare {
37
+ --compare-width: 50%;
38
+ $self: &;
39
+ position: relative;
40
+
41
+ &:not(:first-child),
42
+ :global(+ *:not(.column)),
43
+ :global(.animation-disabled:not(:first-child) >) & {
44
+ margin-top: var(--mt-m);
45
+ }
46
+
47
+ :global(.group__content) > &,
48
+ :global(.group__content > .animation-disabled >) & {
49
+ @extend %grrr--board;
50
+ }
51
+
52
+ &__holder {
53
+ position: relative;
54
+ overflow: hidden;
55
+
56
+ :global(.group__content) > #{$self} &,
57
+ :global(.group__content > .animation-disabled) > #{$self} & {
58
+ grid-column: board-start 2 / board-end 11;
59
+
60
+ @include media-break-down(x) {
61
+ grid-column: board-start 1 / board-end 12;
62
+ }
63
+
64
+ @include media-break-down(m) {
65
+ grid-column: full;
66
+ }
67
+ }
68
+ }
69
+
70
+ &__images {
71
+ position: relative;
72
+ cursor: pointer;
73
+ }
74
+
75
+ &__image {
76
+ overflow: hidden;
77
+ height: 100%;
78
+
79
+ img {
80
+ width: 100%;
81
+ height: 100%;
82
+ object-fit: cover;
83
+ object-position: 0 center;
84
+ pointer-events: none;
85
+ user-select: none;
86
+ }
87
+
88
+ &.-left {
89
+ width: var(--compare-width, 50%);
90
+ position: absolute;
91
+ top: 0;
92
+ left: 0;
93
+ transition: .3s ease;
94
+
95
+ .-dragging & {
96
+ transition: none;
97
+ }
98
+ }
99
+ }
100
+
101
+ &__caption {
102
+ :global(.group__content) > #{$self} &,
103
+ :global(.group__content > .animation-disabled) > #{$self} & {
104
+ grid-column: board-start 2 / board-end 11;
105
+
106
+ @include media-break-down(x) {
107
+ grid-column: board-start 1 / board-end 12;
108
+ }
109
+
110
+ @include media-break-down(m) {
111
+ grid-column: board-full;
112
+ }
113
+ }
114
+ }
115
+ }
116
+
117
+ .compare-controller {
118
+ width: 20px;
119
+ height: 100%;
120
+ position: absolute;
121
+ top: 0;
122
+ left: var(--compare-width, 50%);
123
+ z-index: 2;
124
+ transform: translateX(-50%);
125
+ pointer-events: all;
126
+ will-change: left;
127
+ transition: .3s ease;
128
+ cursor: pointer;
129
+
130
+ .-dragging & {
131
+ transition: none;
132
+ }
133
+
134
+ &::after {
135
+ content: "";
136
+ width: 4px;
137
+ height: 100%;
138
+ display: block;
139
+ background-color: #fff;
140
+ position: absolute;
141
+ top: 0;
142
+ left: 50%;
143
+ transform: translateX(-50%);
144
+ }
145
+
146
+ &:hover {
147
+ .compare-controller__center::before {
148
+ transform: translate(-5px, -50%);
149
+ }
150
+
151
+ .compare-controller__center::after {
152
+ transform: translate(5px, -50%);
153
+ }
154
+ }
155
+
156
+ &__center {
157
+ width: 20px;
158
+ height: 90px;
159
+ border-radius: 1px;
160
+ background-image: url("data:image/svg+xml,%3Csvg width='16' height='86' viewBox='0 0 16 86' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='4' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='8' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='12' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='16' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='20' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='24' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='28' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='32' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='36' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='40' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='44' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='48' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='52' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='56' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='60' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='64' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='68' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='72' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='76' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='80' width='16' height='2' fill='%23D9D9D9'/%3E%3Crect y='84' width='16' height='2' fill='%23D9D9D9'/%3E%3C/svg%3E%0A");
161
+ background-color: #fff;
162
+ background-repeat: no-repeat;
163
+ background-position: center;
164
+ position: absolute;
165
+ top: 50%;
166
+ left: 50%;
167
+ transform: translate(-50%, -50%);
168
+ z-index: 2;
169
+
170
+ &::before,
171
+ &::after {
172
+ content: "";
173
+ width: 36px;
174
+ height: 100%;
175
+ display: block;
176
+ background-image: url("data:image/svg+xml,%3Csvg width='16' height='19' viewBox='0 0 16 19' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 9.23761L16 0V18.4752L0 9.23761Z' fill='white'/%3E%3C/svg%3E%0A");
177
+ background-position: 0 center;
178
+ background-repeat: no-repeat;
179
+ position: absolute;
180
+ top: 50%;
181
+ right: 12px;
182
+ transform: translate(0, -50%);
183
+ transition: 0.3s ease;
184
+ }
185
+
186
+ &::after {
187
+ left: 12px;
188
+ transform: translate(0, -50%);
189
+ background-image: url("data:image/svg+xml,%3Csvg width='16' height='19' viewBox='0 0 16 19' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 9.23749L0 18.4751L-1.61515e-06 -0.000111135L16 9.23749Z' fill='white'/%3E%3C/svg%3E%0A");
190
+ background-position: 100% center;
191
+ }
192
+ }
193
+ }
194
+ </style>
195
+
196
+ <script>
197
+ function initImageComparison(containerElement) {
198
+ const resizeHandle = containerElement.querySelector(".compare-controller");
199
+ const compareContainer = containerElement;
200
+
201
+ function handleMove(event) {
202
+ event.preventDefault();
203
+
204
+ const containerRect = compareContainer.getBoundingClientRect();
205
+ let x;
206
+
207
+ if (event.touches) {
208
+ x = event.touches[0].clientX - containerRect.left;
209
+ } else {
210
+ x = event.clientX - containerRect.left;
211
+ }
212
+
213
+ toggleDraggableActive(true);
214
+ setXPosition(x, containerRect);
215
+ }
216
+
217
+ function setXPosition(x, containerRect) {
218
+ const percentage = (x / containerRect.width) * 100;
219
+ const clampedPercentage = Math.min(Math.max(percentage, 0), 100);
220
+
221
+ compareContainer.style.setProperty('--compare-width', `${clampedPercentage}%`);
222
+ }
223
+
224
+ function handleClick(event) {
225
+ event.preventDefault();
226
+
227
+ const containerRect = compareContainer.getBoundingClientRect();
228
+ const x = event.clientX - containerRect.left;
229
+
230
+ setXPosition(x, containerRect);
231
+ }
232
+
233
+ function toggleDraggableActive(add = false) {
234
+ compareContainer.classList.toggle('-dragging', add);
235
+ }
236
+
237
+ function addEventListeners() {
238
+ resizeHandle.addEventListener("mousedown", (e) => {
239
+ e.preventDefault();
240
+ document.addEventListener("mousemove", handleMove);
241
+ document.addEventListener("mouseup", removeEventListeners);
242
+ });
243
+
244
+ compareContainer.addEventListener("click", handleClick);
245
+
246
+ resizeHandle.addEventListener("touchstart", (e) => {
247
+ e.preventDefault();
248
+ document.addEventListener("touchmove", handleMove);
249
+ document.addEventListener("touchend", removeEventListeners);
250
+ });
251
+ }
252
+
253
+ function removeEventListeners() {
254
+ document.removeEventListener("mousemove", handleMove);
255
+ document.removeEventListener("mouseup", removeEventListeners);
256
+ document.removeEventListener("touchmove", handleMove);
257
+ document.removeEventListener("click", handleClick);
258
+ document.removeEventListener("touchend", removeEventListeners);
259
+ toggleDraggableActive();
260
+ }
261
+
262
+ addEventListeners();
263
+ }
264
+
265
+ document.querySelectorAll(".compare__holder").forEach(initImageComparison);
266
+ </script>
@@ -0,0 +1,242 @@
1
+ ---
2
+ import Text from "./Text.astro";
3
+ import Button from "./Button.astro";
4
+ import Group from "./Group.astro";
5
+
6
+ const {
7
+ layout,
8
+ media,
9
+ mediaType,
10
+ highlightedText,
11
+ text,
12
+ link,
13
+ imgBg,
14
+ videoBg,
15
+ overlay,
16
+ txtColor,
17
+ bgColor,
18
+ } = Astro.props;
19
+
20
+ // layout revebe 'media' ou 'text'
21
+ // mediaType recebe 'image' ou 'video'
22
+ // media recebe url da imagem ou vídeo
23
+ // overlay deve ser: dark ou none
24
+ // imgBg e videoBg recebem a url direta (deve ser possível apenas um dos dois)
25
+ ---
26
+
27
+ <div
28
+ class:list={[
29
+ "cta",
30
+ {
31
+ "cta--media": layout === "media",
32
+ },
33
+ ]}
34
+ >
35
+ <div class="cta__holder">
36
+ <Group
37
+ txtColor={txtColor}
38
+ bgColor={bgColor}
39
+ imgBg={imgBg}
40
+ videoBg={videoBg}
41
+ overlay={overlay}
42
+ >
43
+ <div class="cta__feat reveal--fadeInDown">
44
+ {
45
+ layout === "media" ? (
46
+ mediaType === "image" ? (
47
+ <img src={media} alt="" />
48
+ ) : mediaType === "video" ? (
49
+ <video autoplay muted loop>
50
+ <source src={media} />
51
+ </video>
52
+ ) : null
53
+ ) : layout === "text" && highlightedText ? (
54
+ <span class="cta__feat__text">{highlightedText}</span>
55
+ ) : null
56
+ }
57
+ </div>
58
+ <div class="cta__text reveal--fadeInLeft" style="animation-delay: .3s">
59
+ {
60
+ text && (
61
+ <Text>
62
+ <Fragment set:html={text} />
63
+ </Text>
64
+ )
65
+ }
66
+ {link && <Button link={{ url: link.url, text: link.text, target: link.target }} />}
67
+ </div>
68
+ </Group>
69
+ </div>
70
+ </div>
71
+
72
+ <style lang="scss">
73
+ @use "../assets/styles/config/config" as *;
74
+ @use "../assets/styles/globals/grrr" as *;
75
+ @use "../assets/styles/utils/grrr/grrr" as *;
76
+
77
+ .cta {
78
+ $self: &;
79
+ width: 100%;
80
+ @extend %grrr--board;
81
+ background-color: inherit;
82
+ position: relative;
83
+
84
+ &:not(:first-child),
85
+ :global(+ *:not(.column)),
86
+ :global(.animation-disabled:not(:first-child) >) & {
87
+ margin-top: var(--mt-m);
88
+ }
89
+
90
+ @include media-break-down(m) {
91
+ padding-top: 20px;
92
+ }
93
+
94
+ &--media {
95
+ padding-bottom: 40px;
96
+ }
97
+
98
+ &:not(#{$self}--media) {
99
+ :global(.group__content) {
100
+ @include media-break-up(m) {
101
+ padding-block: 80px 60px;
102
+ }
103
+
104
+ @include media-break-up(l) {
105
+ padding-block: 190px 140px;
106
+ }
107
+ }
108
+ }
109
+
110
+ &__holder {
111
+ grid-column: full;
112
+ z-index: 3;
113
+
114
+ @include media-break-up(l) {
115
+ grid-column: board-full;
116
+
117
+ #{$self}--media & {
118
+ grid-column: full;
119
+ }
120
+ }
121
+ }
122
+
123
+ &__feat {
124
+ position: relative;
125
+ grid-column: board-full;
126
+
127
+ @include media-break-down(m) {
128
+ img,
129
+ video {
130
+ width: 100%;
131
+ height: auto;
132
+ aspect-ratio: 1 / 0.73;
133
+ object-fit: cover;
134
+ transform: translateY(-60px);
135
+ margin-bottom: -20px;
136
+ }
137
+
138
+ #{$self}:not(#{$self}--media) & {
139
+ margin-bottom: 40px;
140
+ }
141
+ }
142
+
143
+ @include media-break-up(m) {
144
+ grid-column: board-start 1 / board-end 6;
145
+
146
+ img,
147
+ video {
148
+ width: 100%;
149
+ height: 100%;
150
+ object-fit: cover;
151
+ transform: translateY(40px);
152
+ }
153
+ }
154
+
155
+ @include media-break-up(l) {
156
+ grid-column: board-start 2 / board-end 6;
157
+ }
158
+
159
+ @include media-break-up(x) {
160
+ #{$self}--media & {
161
+ grid-column: board-start 2 / board-end 7;
162
+ }
163
+ }
164
+
165
+ &__text {
166
+ @include type('h-xl');
167
+
168
+ @include media-break-up(l) {
169
+ @include type('d-l');
170
+ }
171
+
172
+ @include media-break-up(x) {
173
+ @include type('d-xl');
174
+ }
175
+ }
176
+ }
177
+
178
+ &__text {
179
+ --mt-s: 20px;
180
+ grid-column: board-full;
181
+
182
+ @include media-break-up(m) {
183
+ grid-column: board-start 7 / board-end 11;
184
+
185
+ #{$self}--media & {
186
+ padding-block: 60px;
187
+ }
188
+ }
189
+
190
+ @include media-break-up(x) {
191
+ grid-column: board-start 8 / board-end 11;
192
+
193
+ #{$self}--media & {
194
+ padding-block: 90px;
195
+ }
196
+ }
197
+
198
+ :global(.button) {
199
+ margin-top: 40px;
200
+
201
+ @include media-break-down(m) {
202
+ width: 100%;
203
+ }
204
+ }
205
+ }
206
+
207
+ :global(.group) {
208
+ @include media-break-down(m) {
209
+ padding-block: 40px 60px;
210
+ }
211
+
212
+ @include media-break-down(l) {
213
+ padding-inline: var(--atnl-margin);
214
+ }
215
+
216
+ @include media-break-up(m) {
217
+ grid-column: board-full;
218
+ }
219
+
220
+ }
221
+
222
+ :global(.group__content) {
223
+ @include media-break-up(m) {
224
+ @include grrr("board", 1, 12, false);
225
+ }
226
+ }
227
+
228
+ &--media {
229
+ :global(.group) {
230
+ @include media-break-up(m) {
231
+ @include grrr();
232
+ }
233
+ }
234
+
235
+ :global(.group__content) {
236
+ @include media-break-up(m) {
237
+ grid-column: board-full;
238
+ }
239
+ }
240
+ }
241
+ }
242
+ </style>