forgefy 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/bin/cli.js +425 -0
- package/package.json +22 -0
- package/templates/next/base/components/Containers/Body/index.tsx +8 -0
- package/templates/next/base/components/UI/Button/index.tsx +25 -0
- package/templates/next/base/components/UI/Button/styles.scss +34 -0
- package/templates/next/base/components/UI/Header/index.tsx +37 -0
- package/templates/next/base/components/UI/Header/styles.scss +28 -0
- package/templates/next/base/public/icons/next._icon.svg +1 -0
- package/templates/next/base/scss/_colors.scss +59 -0
- package/templates/next/base/scss/_mixins.scss +141 -0
- package/templates/next/base/scss/_typography.scss +34 -0
- package/templates/next/base/scss/_utilities.scss +145 -0
- package/templates/next/base_landpage/app/globals.scss +126 -0
- package/templates/next/base_landpage/app/layout.tsx +24 -0
- package/templates/next/base_landpage/app/page.tsx +11 -0
- package/templates/next-env.d.ts +2 -0
- package/templates/package-lock.json +1034 -0
- package/templates/package.json +14 -0
- package/templates/tsconfig.base.json +16 -0
- package/templates/tsconfig.json +7 -0
- package/templates/vue/base/.gitkeep +0 -0
- package/templates/vue/base/readme.md +0 -0
- package/templates/vue/base_landpage/index.css +0 -0
- package/templates/vue/base_landpage/index.html +0 -0
- package/templates/vue/base_sistema_robusto/index.html +0 -0
- package/templates/vue/base_sistema_robusto/index.js +0 -0
- package/templates/vue/base_sistema_simples/index.html +0 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
@use 'sass:map';
|
|
2
|
+
|
|
3
|
+
// Mixins de Alinhamentos
|
|
4
|
+
|
|
5
|
+
// alinha conteudo com flexbox
|
|
6
|
+
@mixin flex-aligned {
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// Flex: centraliza conteúdo com flexbox
|
|
12
|
+
@mixin center-flex {
|
|
13
|
+
display: flex;
|
|
14
|
+
justify-content: center;
|
|
15
|
+
align-items: center;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//Flex: Alinha conteudo na direita
|
|
19
|
+
@mixin end-flex {
|
|
20
|
+
display: flex;
|
|
21
|
+
justify-content: flex-end;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Flex: direção coluna
|
|
25
|
+
@mixin column-flex {
|
|
26
|
+
display: flex;
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Flex: direção linha
|
|
31
|
+
@mixin row-flex {
|
|
32
|
+
display: flex;
|
|
33
|
+
flex-direction: row;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Flex: centraliza conteúdo com espaçamento
|
|
37
|
+
@mixin flex-between {
|
|
38
|
+
display: flex;
|
|
39
|
+
justify-content: space-between;
|
|
40
|
+
align-items: center;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Flex: direção coluna com espaçamento
|
|
44
|
+
@mixin column-flex-spacement {
|
|
45
|
+
display: flex;
|
|
46
|
+
align-items: center;
|
|
47
|
+
justify-content: space-between;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
//Flex: Alinha conteudo no meio da tela
|
|
51
|
+
@mixin center-screen-flex {
|
|
52
|
+
display: flex;
|
|
53
|
+
justify-content: center;
|
|
54
|
+
align-items: center;
|
|
55
|
+
height: 90vh;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
//Grid: Dividi em duas colunas iguais
|
|
59
|
+
@mixin column-equal-grid {
|
|
60
|
+
display: grid;
|
|
61
|
+
grid-template-columns: repeat(2, 1fr);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Mixins Responsivos
|
|
65
|
+
|
|
66
|
+
// Breakpoints
|
|
67
|
+
$breakpoints: (
|
|
68
|
+
xs: 696px,
|
|
69
|
+
sm: 837px,
|
|
70
|
+
md: 1008px,
|
|
71
|
+
lg: 1200px,
|
|
72
|
+
exlg: 1700px
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
@mixin respond-to($breakpoint) {
|
|
76
|
+
@media (max-width: map.get($breakpoints, $breakpoint)) {
|
|
77
|
+
@content;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Container responsivo
|
|
82
|
+
@mixin container($max-width: 1200px) {
|
|
83
|
+
width: 100%;
|
|
84
|
+
max-width: $max-width;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Fonte responsiva com clamp
|
|
88
|
+
@mixin responsive-font($min, $max) {
|
|
89
|
+
font-size: clamp(#{$min}, 2vw, #{$max}) !important;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Esconde visualmente
|
|
93
|
+
@mixin hidden {
|
|
94
|
+
display: none;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Esconde visualmente mas mantém acessível
|
|
98
|
+
@mixin visually-hidden {
|
|
99
|
+
position: absolute !important;
|
|
100
|
+
height: 1px; width: 1px;
|
|
101
|
+
overflow: hidden;
|
|
102
|
+
clip: rect(1px, 1px, 1px, 1px);
|
|
103
|
+
white-space: nowrap;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Oculta um elemento baseado na pseudo-classe `:nth-child()` Ex: n+6, 3, even, odd, etc.
|
|
107
|
+
@mixin hidden-number-child($number-child) {
|
|
108
|
+
&:nth-child(#{$number-child}) {
|
|
109
|
+
@include hidden;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Espaçamentos
|
|
114
|
+
|
|
115
|
+
@mixin margin-1 {margin: 0.5rem }
|
|
116
|
+
@mixin margin-2 {margin: 1rem }
|
|
117
|
+
@mixin margin-3 {margin: 2rem }
|
|
118
|
+
|
|
119
|
+
@mixin margin-top-1 { margin-top: 0.5rem }
|
|
120
|
+
@mixin margin-top-2 { margin-top: 1rem }
|
|
121
|
+
@mixin margin-top-3 { margin-top: 2rem }
|
|
122
|
+
|
|
123
|
+
@mixin margin-bottom-1 { margin-bottom: 0.5rem }
|
|
124
|
+
@mixin margin-bottom-2 { margin-bottom: 1rem }
|
|
125
|
+
@mixin margin-bottom-3 { margin-bottom: 2rem }
|
|
126
|
+
|
|
127
|
+
@mixin margin-left-1 { margin-left: 0.5rem }
|
|
128
|
+
@mixin margin-left-2 { margin-left: 1rem }
|
|
129
|
+
@mixin margin-left-3 { margin-left: 2rem }
|
|
130
|
+
|
|
131
|
+
@mixin margin-right-1 { margin-right: 0.5rem }
|
|
132
|
+
@mixin margin-right-2 { margin-right: 1rem }
|
|
133
|
+
@mixin margin-right-3 { margin-right: 2rem }
|
|
134
|
+
|
|
135
|
+
@mixin padding-1 { padding: 0.5rem }
|
|
136
|
+
@mixin padding-2 { padding: 1rem }
|
|
137
|
+
@mixin padding-3 { padding: 2rem }
|
|
138
|
+
|
|
139
|
+
@mixin gap-1 { gap: 0.5rem; }
|
|
140
|
+
@mixin gap-2 { gap: 1rem; }
|
|
141
|
+
@mixin gap-3 { gap: 2rem; }
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
@use '@/scss/_mixins';
|
|
2
|
+
|
|
3
|
+
// importa direto do Google Fonts
|
|
4
|
+
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');
|
|
5
|
+
|
|
6
|
+
// Mixins
|
|
7
|
+
@mixin set-inter-extra-bold { font-family: "Inter", sans-serif; font-weight: 800; }
|
|
8
|
+
@mixin set-inter-bold { font-family: "Inter", sans-serif; font-weight: 700; }
|
|
9
|
+
@mixin set-inter-semibold { font-family: "Inter", sans-serif; font-weight: 600; }
|
|
10
|
+
@mixin set-inter-regular { font-family: "Inter", sans-serif; font-weight: 400; }
|
|
11
|
+
@mixin set-inter-medium { font-family: "Inter", sans-serif; font-weight: 500; }
|
|
12
|
+
|
|
13
|
+
// Classes utilitárias
|
|
14
|
+
.inter-extra-bold { @include set-inter-extra-bold; }
|
|
15
|
+
.inter-bold { @include set-inter-bold; }
|
|
16
|
+
.inter-semibold { @include set-inter-semibold; }
|
|
17
|
+
.inter-regular { @include set-inter-regular; }
|
|
18
|
+
.inter-medium { @include set-inter-medium; }
|
|
19
|
+
|
|
20
|
+
// Pesos genéricos
|
|
21
|
+
.font-wt-0 { font-weight: 100; }
|
|
22
|
+
.font-wt-1 { font-weight: 200; }
|
|
23
|
+
.font-wt-2 { font-weight: 400; }
|
|
24
|
+
.font-wt-3 { font-weight: 600; }
|
|
25
|
+
.font-wt-4 { font-weight: 700; }
|
|
26
|
+
|
|
27
|
+
// Tamanhos
|
|
28
|
+
.font-size-0 { font-size: 0.65rem; }
|
|
29
|
+
.font-size-1 { font-size: 0.875rem; }
|
|
30
|
+
.font-size-2 { font-size: 1rem; }
|
|
31
|
+
.font-size-3 { font-size: 1.25rem; }
|
|
32
|
+
.font-size-4 { font-size: 1.5rem; }
|
|
33
|
+
.font-size-5 { font-size: 2rem; }
|
|
34
|
+
.font-size-6 { font-size: 3rem; }
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
@use '@/scss/_colors' as *;
|
|
2
|
+
|
|
3
|
+
// Alinhamentos
|
|
4
|
+
|
|
5
|
+
// Flex: centraliza conteúdo com flexbox
|
|
6
|
+
.flex-aligned {
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// Flex: centraliza e alinha conteúdo com flexbox
|
|
12
|
+
.flex-center {
|
|
13
|
+
display: flex;
|
|
14
|
+
justify-content: center;
|
|
15
|
+
align-items: center;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Flex: centraliza conteúdo com espaçamento
|
|
19
|
+
.flex-between {
|
|
20
|
+
display: flex;
|
|
21
|
+
justify-content: space-between;
|
|
22
|
+
align-items: center;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//Flex: Alinha conteudo na direita
|
|
26
|
+
.flex-end {
|
|
27
|
+
display: flex;
|
|
28
|
+
justify-content: flex-end;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//Grid: Dividi em duas colunas iguais
|
|
32
|
+
.column-equal-grid {
|
|
33
|
+
display: grid;
|
|
34
|
+
grid-template-columns: repeat(2, 1fr);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
// Alinhamento de texto
|
|
39
|
+
.text-center {
|
|
40
|
+
text-align: center;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Espaçamentos
|
|
44
|
+
|
|
45
|
+
.m-0 { margin: 0; }
|
|
46
|
+
.m-05 { margin: 0.3rem; }
|
|
47
|
+
.m-1 { margin: 0.5rem; }
|
|
48
|
+
.m-2 { margin: 1rem; }
|
|
49
|
+
.m-3 { margin: 2rem; }
|
|
50
|
+
.m-4 { margin: 3rem; }
|
|
51
|
+
|
|
52
|
+
.mt-1 { margin-top: 0.5rem; }
|
|
53
|
+
.mt-2 { margin-top: 1rem; }
|
|
54
|
+
.mt-3 { margin-top: 2rem; }
|
|
55
|
+
.mt-4 { margin-top: 3rem; }
|
|
56
|
+
.mt-5 { margin-top: 4rem; }
|
|
57
|
+
.mt-6 { margin-top: 5rem; }
|
|
58
|
+
.mt-7 { margin-top: 6rem; }
|
|
59
|
+
|
|
60
|
+
.mb-1 { margin-bottom: 0.5rem; }
|
|
61
|
+
.mb-2 { margin-bottom: 1rem; }
|
|
62
|
+
.mb-3 { margin-bottom: 2rem; }
|
|
63
|
+
.mb-4 { margin-bottom: 3rem; }
|
|
64
|
+
.mb-5 { margin-bottom: 4rem; }
|
|
65
|
+
.mb-6 { margin-bottom: 5rem; }
|
|
66
|
+
|
|
67
|
+
.ml-0 { margin-left: 0.2rem; }
|
|
68
|
+
.ml-1 { margin-left: 0.5rem; }
|
|
69
|
+
.ml-2 { margin-left: 1rem; }
|
|
70
|
+
.ml-3 { margin-left: 2rem; }
|
|
71
|
+
.ml-4 { margin-left: 3rem; }
|
|
72
|
+
.ml-5 { margin-left: 4rem; }
|
|
73
|
+
|
|
74
|
+
.mr-1 { margin-right: 0.5rem; }
|
|
75
|
+
.mr-2 { margin-right: 1rem; }
|
|
76
|
+
.mr-3 { margin-right: 2rem; }
|
|
77
|
+
.mr-4 { margin-right: 3rem; }
|
|
78
|
+
.mr-5 { margin-right: 4rem; }
|
|
79
|
+
|
|
80
|
+
.p-1 { padding: 0.5rem; }
|
|
81
|
+
.p-2 { padding: 1rem; }
|
|
82
|
+
.p-3 { padding: 2rem; }
|
|
83
|
+
.p-4 { padding: 3rem; }
|
|
84
|
+
.p-5 { padding: 4rem; }
|
|
85
|
+
|
|
86
|
+
.g-1 { gap: 0.5rem; }
|
|
87
|
+
.g-2 { gap: 1rem; }
|
|
88
|
+
.g-3 { gap: 2rem; }
|
|
89
|
+
.g-4 { gap: 3rem; }
|
|
90
|
+
.g-5 { gap: 4rem; }
|
|
91
|
+
|
|
92
|
+
// transições
|
|
93
|
+
|
|
94
|
+
.fade-in {
|
|
95
|
+
opacity: 0;
|
|
96
|
+
animation: fadeIn 0.5s ease-in-out forwards;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@keyframes fadeIn {
|
|
100
|
+
from { opacity: 0; }
|
|
101
|
+
to { opacity: 1; }
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// estilos
|
|
105
|
+
|
|
106
|
+
.dark-overlay{
|
|
107
|
+
content: "";
|
|
108
|
+
background: #000000fc;
|
|
109
|
+
height: 100%;
|
|
110
|
+
left: 0;
|
|
111
|
+
opacity: .4;
|
|
112
|
+
position: absolute;
|
|
113
|
+
top: 0;
|
|
114
|
+
width: 100%;
|
|
115
|
+
z-index: 1;
|
|
116
|
+
transition: all .35s ease-in-out;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Border Radius
|
|
120
|
+
|
|
121
|
+
.br-1 { border-radius: 10px; }
|
|
122
|
+
.br-2 { border-radius: 15px; }
|
|
123
|
+
.br-3 { border-radius: 20px; }
|
|
124
|
+
|
|
125
|
+
// apaercer
|
|
126
|
+
|
|
127
|
+
.z-index-1 {z-index: 1;}
|
|
128
|
+
.z-index-2 {z-index: 2;}
|
|
129
|
+
|
|
130
|
+
// hover
|
|
131
|
+
|
|
132
|
+
.icon-hover {
|
|
133
|
+
cursor: pointer;
|
|
134
|
+
transition: stroke 0.3s, fill 0.3s;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.icon-hover:hover path {
|
|
138
|
+
stroke: $light-green;
|
|
139
|
+
fill: none;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.icon-hover-interno:hover path {
|
|
143
|
+
stroke: $light-green;
|
|
144
|
+
fill: $light-green;
|
|
145
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
@use '@/scss/colors' as *;
|
|
2
|
+
@use '@/scss/typography' as *;
|
|
3
|
+
@use '@/scss/mixins' as *;
|
|
4
|
+
|
|
5
|
+
body {
|
|
6
|
+
scroll-behavior: smooth;
|
|
7
|
+
height: 100%;
|
|
8
|
+
width: 100%;
|
|
9
|
+
margin: 0px;
|
|
10
|
+
transition: all 0.5s ease;
|
|
11
|
+
|
|
12
|
+
ul, ol {
|
|
13
|
+
margin: 0 ;
|
|
14
|
+
list-style: none;
|
|
15
|
+
padding: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
li {
|
|
19
|
+
list-style-type: none;
|
|
20
|
+
margin: 0;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
a {
|
|
24
|
+
font-size: 1.1rem;
|
|
25
|
+
font-weight: 400;
|
|
26
|
+
text-decoration: none;
|
|
27
|
+
position: relative;
|
|
28
|
+
display: inline-block;
|
|
29
|
+
@include set-inter-regular;
|
|
30
|
+
@include set-color-light-grey;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
a:hover {
|
|
34
|
+
visibility: visible;
|
|
35
|
+
transform: scaleX(1);
|
|
36
|
+
@include set-color-light-green;
|
|
37
|
+
cursor: pointer;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
a::after {
|
|
41
|
+
content: '';
|
|
42
|
+
position: absolute;
|
|
43
|
+
width: 100%;
|
|
44
|
+
height: 2px;
|
|
45
|
+
bottom: 0;
|
|
46
|
+
left: 0;
|
|
47
|
+
visibility: hidden;
|
|
48
|
+
transform: scaleX(0);
|
|
49
|
+
transition: all 0.2s ease-in-out;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
a:hover::after {
|
|
53
|
+
visibility: visible;
|
|
54
|
+
transform: scaleX(1);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
button {
|
|
58
|
+
cursor: pointer;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
img {
|
|
62
|
+
width: 100%;
|
|
63
|
+
height: 100%;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
hr {
|
|
67
|
+
border-color: #8080801a;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
h1 {
|
|
71
|
+
margin: 0.2rem;
|
|
72
|
+
@include responsive-font(2vw, 2.4vw);
|
|
73
|
+
@include set-inter-bold;
|
|
74
|
+
@include set-color-white;
|
|
75
|
+
z-index: 1;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
h4 {
|
|
79
|
+
line-height: 1.5;
|
|
80
|
+
font-weight: 400;
|
|
81
|
+
margin: 0.2rem;
|
|
82
|
+
@include responsive-font(1.3vw, 1.4vw);
|
|
83
|
+
@include set-inter-regular;
|
|
84
|
+
@include set-color-light-green;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
h2, h3, h5 {
|
|
88
|
+
@include set-inter-bold;
|
|
89
|
+
@include set-color-white;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
p {
|
|
93
|
+
@include set-color-grey;
|
|
94
|
+
@include set-inter-medium;
|
|
95
|
+
font-size: 1.5vw;
|
|
96
|
+
line-height: 1.5;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
#ButtonCards {
|
|
100
|
+
width: 12vw;
|
|
101
|
+
border-radius: 1rem;
|
|
102
|
+
border-style: none;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Espaçamento bordas
|
|
107
|
+
|
|
108
|
+
@mixin set-space-body($space-body) {
|
|
109
|
+
padding: 0 $space-body;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.box {
|
|
113
|
+
@include set-space-body(8rem);
|
|
114
|
+
|
|
115
|
+
@include respond-to(lg) {
|
|
116
|
+
@include set-space-body(4rem);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
@include respond-to(md) {
|
|
120
|
+
@include set-space-body(3rem);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@include respond-to(sm) {
|
|
124
|
+
@include set-space-body(1rem);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Metadata } from "next";
|
|
2
|
+
import "./globals.scss";
|
|
3
|
+
|
|
4
|
+
export const metadata: Metadata = {
|
|
5
|
+
title: "projeto",
|
|
6
|
+
description: "new project",
|
|
7
|
+
icons: {
|
|
8
|
+
icon: "/icons/next._icon.svg",
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export default function RootLayout({
|
|
13
|
+
children,
|
|
14
|
+
}: Readonly<{
|
|
15
|
+
children: React.ReactNode;
|
|
16
|
+
}>) {
|
|
17
|
+
return (
|
|
18
|
+
<html lang="en">
|
|
19
|
+
<body>
|
|
20
|
+
{children}
|
|
21
|
+
</body>
|
|
22
|
+
</html>
|
|
23
|
+
);
|
|
24
|
+
}
|