wagtail-enap-designsystem 1.2.1.148__py3-none-any.whl → 1.2.1.150__py3-none-any.whl

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.

Potentially problematic release.


This version of wagtail-enap-designsystem might be problematic. Click here for more details.

Files changed (21) hide show
  1. enap_designsystem/blocks/__init__.py +11 -1
  2. enap_designsystem/blocks/html_blocks.py +297 -6
  3. enap_designsystem/migrations/0418_alter_areaaluno_body_alter_cursoeadpage_curso_and_more.py +68713 -0
  4. enap_designsystem/migrations/0419_alter_areaaluno_body_alter_enapcomponentes_body_and_more.py +55302 -0
  5. enap_designsystem/migrations/0420_alter_areaaluno_body_alter_enapcomponentes_body_and_more.py +55610 -0
  6. enap_designsystem/migrations/0421_footergenericosnippet.py +111 -0
  7. enap_designsystem/migrations/0422_alter_footergenericosnippet_options.py +20 -0
  8. enap_designsystem/migrations/0423_alter_areaaluno_body_alter_enapcomponentes_body_and_more.py +55647 -0
  9. enap_designsystem/models.py +115 -1
  10. enap_designsystem/static/enap_designsystem/blocks/cards_titles.css +3 -3
  11. enap_designsystem/templates/enap_designsystem/blocks/card_item_variavel.html +54 -0
  12. enap_designsystem/templates/enap_designsystem/blocks/cards_titles.html +58 -64
  13. enap_designsystem/templates/enap_designsystem/blocks/footer_snippet.html +88 -0
  14. enap_designsystem/templates/enap_designsystem/blocks/formulario_dinamico.html +14 -1
  15. enap_designsystem/templates/enap_designsystem/blocks/html_custom_block.html +1 -1
  16. enap_designsystem/templates/enap_designsystem/blocks/wrapper_cards_variavel.html +225 -0
  17. {wagtail_enap_designsystem-1.2.1.148.dist-info → wagtail_enap_designsystem-1.2.1.150.dist-info}/METADATA +1 -1
  18. {wagtail_enap_designsystem-1.2.1.148.dist-info → wagtail_enap_designsystem-1.2.1.150.dist-info}/RECORD +21 -12
  19. {wagtail_enap_designsystem-1.2.1.148.dist-info → wagtail_enap_designsystem-1.2.1.150.dist-info}/WHEEL +0 -0
  20. {wagtail_enap_designsystem-1.2.1.148.dist-info → wagtail_enap_designsystem-1.2.1.150.dist-info}/licenses/LICENSE +0 -0
  21. {wagtail_enap_designsystem-1.2.1.148.dist-info → wagtail_enap_designsystem-1.2.1.150.dist-info}/top_level.txt +0 -0
@@ -5906,4 +5906,118 @@ class ShowcaseComponentesDireto(Page):
5906
5906
  'midia': 'Componentes de vídeo, áudio, podcasts e conteúdo multimídia',
5907
5907
  'especialidades': 'Componentes especializados e funcionalidades específicas da ENAP',
5908
5908
  }
5909
- return descriptions.get(category_name, f'Componentes da categoria {category_name}')
5909
+ return descriptions.get(category_name, f'Componentes da categoria {category_name}')
5910
+
5911
+
5912
+
5913
+
5914
+
5915
+
5916
+
5917
+
5918
+
5919
+
5920
+
5921
+
5922
+
5923
+
5924
+
5925
+ class LinkBlockVariavel(blocks.StructBlock):
5926
+ """Block para links simples"""
5927
+ texto = blocks.CharBlock(max_length=100, label="Texto do link")
5928
+ url = blocks.URLBlock(label="URL")
5929
+
5930
+
5931
+
5932
+ class FooterSectionBlock(blocks.StructBlock):
5933
+ """Block para uma seção do footer com título e links"""
5934
+ titulo = blocks.CharBlock(max_length=200, label="Título da seção")
5935
+ links = blocks.StreamBlock([
5936
+ ('link', LinkBlockVariavel()),
5937
+ ], label="Links da seção")
5938
+
5939
+ class Meta:
5940
+ icon = 'list-ul'
5941
+ label = 'Seção do Footer'
5942
+
5943
+
5944
+ @register_snippet
5945
+ class FooterGenericoSnippet(ClusterableModel):
5946
+ """
5947
+ Footer genérico reutilizável para páginas do site.
5948
+ """
5949
+
5950
+ class Meta:
5951
+ verbose_name = "Footer Genérico"
5952
+ verbose_name_plural = "Footers Genéricos"
5953
+
5954
+ nome = models.CharField(
5955
+ max_length=255,
5956
+ help_text="Nome identificador do footer"
5957
+ )
5958
+
5959
+ # Configurações visuais
5960
+ cor_fundo = models.CharField(
5961
+ max_length=7,
5962
+ default="#525258",
5963
+ help_text="Cor do fundo (ex: #525258)"
5964
+ )
5965
+
5966
+ cor_texto = models.CharField(
5967
+ max_length=7,
5968
+ default="#ffffff",
5969
+ help_text="Cor dos textos (ex: #ffffff)"
5970
+ )
5971
+
5972
+ # Logo e texto
5973
+ logo = StreamField([
5974
+ ("logo", ImageChooserBlock()),
5975
+ ],
5976
+ max_num=1,
5977
+ blank=True,
5978
+ use_json_field=True,
5979
+ help_text="Logo do footer"
5980
+ )
5981
+
5982
+ texto_logo = models.TextField(
5983
+ blank=True,
5984
+ verbose_name="Texto do logo",
5985
+ help_text="Texto que aparece abaixo da logo"
5986
+ )
5987
+
5988
+ # Seções de links
5989
+ secoes = StreamField([
5990
+ ("secao", FooterSectionBlock()),
5991
+ ],
5992
+ blank=True,
5993
+ use_json_field=True,
5994
+ help_text="Seções com títulos e links do footer"
5995
+ )
5996
+
5997
+ panels = [
5998
+ FieldPanel("nome"),
5999
+ FieldPanel("cor_fundo"),
6000
+ FieldPanel("cor_texto"),
6001
+ FieldPanel("logo"),
6002
+ FieldPanel("texto_logo"),
6003
+ FieldPanel("secoes"),
6004
+ ]
6005
+
6006
+ def __str__(self):
6007
+ return self.nome
6008
+
6009
+ @property
6010
+ def get_logo(self):
6011
+ """Retorna a logo se existir"""
6012
+ if self.logo:
6013
+ return self.logo[0].value
6014
+ return None
6015
+
6016
+
6017
+
6018
+
6019
+
6020
+
6021
+
6022
+
6023
+
@@ -90,16 +90,16 @@
90
90
  overflow: hidden;
91
91
  transition: all 0.3s ease;
92
92
  backdrop-filter: blur(10px);
93
- border: 1px solid rgba(255, 255, 255, 0.1);
93
+ border: unset;
94
94
  height: 100%;
95
95
  display: flex;
96
96
  flex-direction: column;
97
- box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
97
+ box-shadow: unset;
98
98
  }
99
99
 
100
100
  .card-apresentacao:hover {
101
101
  transform: translateY(-8px);
102
- border-color: rgba(255, 255, 255, 0.2);
102
+ border-color: unset;
103
103
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
104
104
  }
105
105
 
@@ -0,0 +1,54 @@
1
+ <!-- Template: card_item_variavel.html -->
2
+ {% load wagtailcore_tags %}
3
+
4
+ <div class="card-variavel">
5
+ {% if self.image %}
6
+ <div class="card-image">
7
+ <img src="{{ self.image.url }}" alt="{{ self.title|striptags|default:'Card' }}" loading="lazy">
8
+ </div>
9
+ {% endif %}
10
+
11
+ <div class="card-content">
12
+ {% if self.icone_card %}
13
+ <div class="card-icon">
14
+ <i class="{{ self.icone_card }}"></i>
15
+ </div>
16
+ {% endif %}
17
+
18
+ {% if self.sub_title %}
19
+ <div class="card-sub-title" style="color: {{ self.cor_titulo_cards|default:'#FFFFFF' }};">
20
+ {{ self.sub_title|richtext }}
21
+ </div>
22
+ {% endif %}
23
+
24
+ {% if self.title %}
25
+ <h3 class="card-title" style="color: {{ self.cor_titulo_cards|default:'#FFFFFF' }};">
26
+ {{ self.title|richtext }}
27
+ </h3>
28
+ {% endif %}
29
+
30
+ {% if self.subtitle %}
31
+ <div class="card-subtitle" style="color: {{ self.cor_texto_cards|default:'#FFFFFF' }};">
32
+ {{ self.subtitle|richtext }}
33
+ </div>
34
+ {% endif %}
35
+
36
+ {% if self.description %}
37
+ <div class="card-description" style="color: {{ self.cor_texto_cards|default:'#FFFFFF' }};">
38
+ {{ self.description|richtext }}
39
+ </div>
40
+ {% endif %}
41
+
42
+ {% if self.link_url %}
43
+ <div class="card-actions">
44
+ <a href="{{ self.link_url }}"
45
+ target="{{ self.link_target|default:'_self' }}"
46
+ class="card-link"
47
+ style="color: {{ self.cor_link_text|default:'#FFFFFF' }};">
48
+ {{ self.link_text|default:'Saiba mais' }}
49
+ <i class="fas fa-arrow-right"></i>
50
+ </a>
51
+ </div>
52
+ {% endif %}
53
+ </div>
54
+ </div>
@@ -28,7 +28,7 @@
28
28
  flex: 0 0 268px;
29
29
  display: flex;
30
30
  flex-direction: column;
31
- align-items: flex-start;
31
+ align-items: {{ value.posicao_cards }};
32
32
  justify-content: center;
33
33
  text-align: center;
34
34
  height: auto;
@@ -101,16 +101,16 @@
101
101
  overflow: hidden;
102
102
  transition: all 0.3s ease;
103
103
  backdrop-filter: blur(10px);
104
- border: 1px solid rgba(255, 255, 255, 0.1);
104
+ border: none;
105
105
  height: 100%;
106
106
  display: flex;
107
107
  flex-direction: column;
108
- box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
108
+ box-shadow: unset;
109
109
  }
110
110
 
111
111
  .card-apresentacao:hover {
112
112
  transform: translateY(-8px);
113
- border-color: rgba(255, 255, 255, 0.2);
113
+ border-color: none;
114
114
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
115
115
  }
116
116
 
@@ -272,7 +272,7 @@
272
272
  <!-- Subtítulo centralizado -->
273
273
  {% if value.subtitulo %}
274
274
  <div class="mb-12 lg:mb-16">
275
- <span class="subtitulo-secao" style="color: {{ value.cor_titulo|default:'#FFFFFF' }};">{{ value.subtitulo|richtext }}</span>
275
+ <span class="subtitulo-secao" style="color: {{ value.cor_subtitulo|default:'#FFFFFF' }};">{{ value.subtitulo|richtext }}</span>
276
276
  </div>
277
277
  {% endif %}
278
278
 
@@ -281,74 +281,68 @@
281
281
  <div class="cards-container {{ value.layout_cards|default:'cards-3-colunas' }}">
282
282
  {% for card in value.cards %}
283
283
  {% if card.block_type == 'card' %}
284
- <div class="card-item" style="background: {{ value.cor_fundo }}">
285
- <div class="card-apresentacao" style="background: {{ value.cor_fundo_cards }}">
286
-
287
- <!-- Imagem do card -->
288
- {% if card.value.image %}
289
- <div class="card-imagem">
290
- {% image card.value.image width-400 as card_img %}
291
- <img src="{{ card_img.url }}"
292
- alt="{{ card.value.subtitle|default:'Card' }}"
293
- class="card-img">
294
- </div>
295
- {% endif %}
296
-
297
- <!-- Conteúdo do card -->
298
- <div class="card-conteudo">
299
-
300
- <!-- Subtítulo/Cargo -->
301
- {% if card.value.subtitle %}
302
- <p class="card-subtitulo" style="color: {{ card.value.cor_texto_cards }};">
303
- {{ card.value.subtitle }}
304
- </p>
305
- {% endif %}
306
-
307
- <!-- Título -->
308
- {% if card.value.title %}
309
- <h3 class="card-titulo" style="color: {{ card.value.cor_titulo_cards }};">
310
- {{ card.value.title }}
311
- </h3>
312
- {% endif %}
284
+ {% if card.value.link_url %}
285
+ <a href="{{card.value.link_url}}" class="card-item" style="background: {{ value.cor_fundo }}">
286
+ {% else %}
287
+ <div class="card-item" style="background: {{ value.cor_fundo }}">
288
+ {% endif %}
289
+ <div class="card-apresentacao" style="background: {{ value.cor_fundo_cards }}">
313
290
 
314
- <!-- Descrição -->
315
- {% if card.value.description %}
316
- <div class="card-descricao">
317
- {{ card.value.description }}
291
+ <!-- Imagem do card -->
292
+ {% if card.value.image %}
293
+ <div class="card-imagem">
294
+ {% image card.value.image width-400 as card_img %}
295
+ <img src="{{ card_img.url }}"
296
+ alt="{{ card.value.subtitle|default:'Card' }}"
297
+ class="card-img">
318
298
  </div>
319
299
  {% endif %}
320
300
 
321
- <!-- Link/Botão -->
322
- {% if card.value.link_url %}
323
- <div class="card-acao">
324
- <a href="{{ card.value.link_url }}"
325
- class="card-link" style="color: {{ card.value.cor_link_text }};"
326
- {% if card.value.link_target %}target="{{ card.value.link_target }}"{% endif %}>
327
- {{ card.value.link_text|default:'Saiba mais' }}
328
- {% if card.value.seta %}
329
- <svg class="link-arrow" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
330
- <path d="M5 12h14M12 5l7 7-7 7"/>
331
- </svg>
332
- {% endif %}
333
- </a>
334
- </div>
335
- {% elif card.value.link_text %}
336
- <div class="card-acao">
337
- <p class="card-link" style="color: {{ card.value.cor_link_text }}; margin: 0px;">
338
- {{ card.value.link_text|default:'Saiba mais' }}
339
- {% if card.value.seta %}
340
- <svg class="link-arrow" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
341
- <path d="M5 12h14M12 5l7 7-7 7"/>
342
- </svg>
343
- {% endif %}
301
+ <!-- Conteúdo do card -->
302
+ <div class="card-conteudo">
303
+
304
+ <!-- Subtítulo/Cargo -->
305
+ {% if card.value.subtitle %}
306
+ <p class="card-subtitulo" style="color: {{ card.value.cor_texto_cards }};">
307
+ {{ card.value.subtitle }}
344
308
  </p>
309
+ {% endif %}
310
+
311
+ <!-- Título -->
312
+ {% if card.value.title %}
313
+ <h3 class="card-titulo" style="color: {{ card.value.cor_titulo_cards }};">
314
+ {{ card.value.title }}
315
+ </h3>
316
+ {% endif %}
317
+
318
+ <!-- Descrição -->
319
+ {% if card.value.description %}
320
+ <div class="card-descricao">
321
+ {{ card.value.description }}
322
+ </div>
323
+ {% endif %}
324
+
325
+ {% if card.value.link_text %}
326
+ <div class="card-acao">
327
+ <p class="card-link" style="color: {{ card.value.cor_link_text }}; margin: 0px;">
328
+ {{ card.value.link_text|default:'Saiba mais' }}
329
+ {% if card.value.seta %}
330
+ <svg class="link-arrow" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
331
+ <path d="M5 12h14M12 5l7 7-7 7"/>
332
+ </svg>
333
+ {% endif %}
334
+ </p>
335
+ </div>
336
+ {% endif %}
337
+
345
338
  </div>
346
- {% endif %}
347
339
 
348
340
  </div>
349
-
341
+ {% if card.value.link_url %}
342
+ </a>
343
+ {% else %}
350
344
  </div>
351
- </div>
345
+ {% endif %}
352
346
  {% endif %}
353
347
  {% endfor %}
354
348
  </div>
@@ -0,0 +1,88 @@
1
+ <!-- templates/enap_designsystem/blocks/footer_snippet.html -->
2
+ {% load wagtailimages_tags %}
3
+
4
+ <footer class="footer-generico" style="background-color: {{ value.cor_fundo }}; color: {{ value.cor_texto }};">
5
+ <div class="container">
6
+ <div class="row">
7
+ <!-- Logo -->
8
+ {% if value.get_logo %}
9
+ <div class="col-md-3 footer-logo">
10
+ {% image value.get_logo width-200 %}
11
+ {% if value.texto_logo %}
12
+ <p class="footer-logo-text">{{ value.texto_logo }}</p>
13
+ {% endif %}
14
+ </div>
15
+ {% endif %}
16
+
17
+ <!-- Seções de links -->
18
+ <div class="{% if value.get_logo %}col-md-9{% else %}col-md-12{% endif %}">
19
+ <div class="row">
20
+ {% for secao in value.secoes %}
21
+ <div class="col-md-4 footer-section">
22
+ <h4 class="footer-section-title">{{ secao.value.titulo }}</h4>
23
+ <ul class="footer-links">
24
+ {% for link in secao.value.links %}
25
+ <li>
26
+ <a href="{{ link.value.url }}" style="color: {{ value.cor_texto }};">
27
+ {{ link.value.texto }}
28
+ </a>
29
+ </li>
30
+ {% endfor %}
31
+ </ul>
32
+ </div>
33
+ {% endfor %}
34
+ </div>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </footer>
39
+
40
+ <style>
41
+ .footer-generico {
42
+ padding: 2rem 0;
43
+ margin-top: 2rem;
44
+ }
45
+
46
+ .footer-logo {
47
+ text-align: center;
48
+ }
49
+
50
+ .footer-logo-text {
51
+ margin-top: 1rem;
52
+ font-size: 0.9rem;
53
+ }
54
+
55
+ .footer-section-title {
56
+ font-size: 1.1rem;
57
+ font-weight: bold;
58
+ margin-bottom: 1rem;
59
+ border-bottom: 1px solid rgba(255,255,255,0.2);
60
+ padding-bottom: 0.5rem;
61
+ }
62
+
63
+ .footer-links {
64
+ list-style: none;
65
+ padding: 0;
66
+ margin: 0;
67
+ }
68
+
69
+ .footer-links li {
70
+ margin-bottom: 0.5rem;
71
+ }
72
+
73
+ .footer-links a {
74
+ text-decoration: none;
75
+ transition: opacity 0.3s;
76
+ }
77
+
78
+ .footer-links a:hover {
79
+ opacity: 0.8;
80
+ text-decoration: underline;
81
+ }
82
+
83
+ @media (max-width: 768px) {
84
+ .footer-section {
85
+ margin-bottom: 2rem;
86
+ }
87
+ }
88
+ </style>
@@ -298,7 +298,7 @@
298
298
 
299
299
  <!-- Botão de envio -->
300
300
  <div class="formulario-submit mt-4">
301
- <button type="submit" class="botao-envio btn primary btn-lg" style="background-color: {{value.cor_botao}};">
301
+ <button type="submit" class="botao-envio btn primary btn-lg">
302
302
  {% if value.botao_icone %}
303
303
  <i class="fas fa-paper-plane me-2"></i>
304
304
  {% endif %}
@@ -460,6 +460,19 @@
460
460
 
461
461
  .botao-envio{
462
462
  padding: 12px 50px;
463
+ background-color: {{value.cor_botao}};
464
+ }
465
+
466
+ .botao-envio:hover{
467
+ background-color: {{value.cor_botao_hover}};
468
+ }
469
+
470
+ .botao-envio:active{
471
+ background-color: {{value.cor_botao_active}};
472
+ }
473
+
474
+ .botao-envio:focus{
475
+ box-shadow: none;
463
476
  }
464
477
 
465
478
  .formulario-header {
@@ -1,4 +1,4 @@
1
- <section style="background-color: {{ value.cor_fundo }};">
1
+ <section style="background-color: {{ value.cor_fundo }}; display: inherit;">
2
2
  <div class="container-medium">
3
3
  <div class="padding-global">
4
4
  <div class="html-custom-block">