@sankhyalabs/sankhyablocks 10.1.0-dev.56 → 10.1.0-dev.58

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 (131) hide show
  1. package/dist/cjs/{ConfigStorage-a28eceb2.js → ConfigStorage-156bfcac.js} +2 -2
  2. package/dist/cjs/{DataFetcher-98d95e8f.js → DataFetcher-d13b4637.js} +12 -0
  3. package/dist/cjs/{ISave-a9815bb3.js → ISave-55d9dcc3.js} +1 -1
  4. package/dist/cjs/{SnkFormConfigManager-af47ba2f.js → SnkFormConfigManager-5cb9a39c.js} +2 -2
  5. package/dist/cjs/{SnkMultiSelectionListDataSource-2691125d.js → SnkMultiSelectionListDataSource-8d426f44.js} +15 -7
  6. package/dist/cjs/{auth-fetcher-9c257a1f.js → auth-fetcher-d1715459.js} +1 -1
  7. package/dist/cjs/{dataunit-fetcher-afc246d8.js → dataunit-fetcher-fae710c5.js} +1 -1
  8. package/dist/cjs/{form-config-fetcher-1ce4125c.js → form-config-fetcher-bbebdcb8.js} +1 -1
  9. package/dist/cjs/loader.cjs.js +1 -1
  10. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +4 -4
  11. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  12. package/dist/cjs/snk-actions-button_9.cjs.entry.js +8 -8
  13. package/dist/cjs/snk-application.cjs.entry.js +6 -6
  14. package/dist/cjs/snk-attach_11.cjs.entry.js +12 -10
  15. package/dist/cjs/snk-crud.cjs.entry.js +12 -8
  16. package/dist/cjs/snk-data-exporter.cjs.entry.js +5 -5
  17. package/dist/cjs/{snk-data-unit-ab570f87.js → snk-data-unit-32237a2d.js} +2 -2
  18. package/dist/cjs/snk-data-unit.cjs.entry.js +3 -3
  19. package/dist/cjs/snk-detail-view.cjs.entry.js +7 -7
  20. package/dist/cjs/snk-dynaform-detail-view_2.cjs.entry.js +31 -8
  21. package/dist/cjs/{snk-dynaform-guides-view-30ce5a8c.js → snk-dynaform-guides-view-c956fdd4.js} +388 -41
  22. package/dist/cjs/snk-dynaform-guides-view.cjs.entry.js +4 -4
  23. package/dist/cjs/snk-dynaform.cjs.entry.js +12 -8
  24. package/dist/cjs/snk-filter-bar_4.cjs.entry.js +4 -4
  25. package/dist/cjs/snk-form_2.cjs.entry.js +4 -4
  26. package/dist/cjs/snk-grid.cjs.entry.js +6 -6
  27. package/dist/cjs/{snk-guides-viewer-2a55fa3a.js → snk-guides-viewer-727cc1b6.js} +1 -1
  28. package/dist/cjs/snk-guides-viewer.cjs.entry.js +5 -5
  29. package/dist/cjs/snk-layout-form-config.cjs.entry.js +4 -4
  30. package/dist/cjs/snk-pesquisa.cjs.entry.js +4 -4
  31. package/dist/cjs/{taskbarUtils-4ca4235e.js → taskbarUtils-be0fb299.js} +9 -4
  32. package/dist/collection/components/snk-actions-button/snk-actions-button.js +3 -3
  33. package/dist/collection/components/snk-crud/snk-crud.css +9 -4
  34. package/dist/collection/components/snk-crud/snk-crud.js +5 -1
  35. package/dist/collection/components/snk-crud/utils/taskbarUtils.js +5 -0
  36. package/dist/collection/components/snk-data-exporter/interfaces/IExporterProvider.js +11 -3
  37. package/dist/collection/components/snk-dynaform/snk-dynaform.css +9 -4
  38. package/dist/collection/components/snk-dynaform/snk-dynaform.js +5 -1
  39. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-detail-view/snk-dynaform-detail-view.css +71 -1
  40. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-detail-view/snk-dynaform-detail-view.js +23 -0
  41. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-form-view/snk-dynaform-form-view.css +35 -1
  42. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-form-view/snk-dynaform-form-view.js +3 -1
  43. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-guides-view/snk-dynaform-guides-view.css +229 -6
  44. package/dist/collection/components/snk-dynaform/subcomponents/snk-dynaform-guides-view/snk-dynaform-guides-view.js +458 -38
  45. package/dist/collection/components/snk-dynaform-form-config/SnkFormConfigManager.js +8 -1
  46. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +1 -1
  47. package/dist/collection/lib/message/resources/en-us/snk-crud.msg.js +4 -0
  48. package/dist/collection/lib/message/resources/es-es/snk-crud.msg.js +4 -0
  49. package/dist/collection/lib/message/resources/pt-br/snk-crud.msg.js +4 -0
  50. package/dist/components/ContinuousInsertUtils.js +11 -3
  51. package/dist/components/SnkMessageBuilder.js +12 -0
  52. package/dist/components/snk-actions-button2.js +3 -3
  53. package/dist/components/snk-crud.js +6 -2
  54. package/dist/components/snk-dynaform-detail-view2.js +419 -41
  55. package/dist/components/snk-dynaform-form-view2.js +4 -2
  56. package/dist/components/snk-dynaform.js +6 -2
  57. package/dist/components/snk-filter-bar2.js +1 -1
  58. package/dist/components/taskbarUtils.js +5 -0
  59. package/dist/esm/{ConfigStorage-346d781d.js → ConfigStorage-0d1c0695.js} +2 -2
  60. package/dist/esm/{DataFetcher-7d8df5a2.js → DataFetcher-70de9419.js} +12 -0
  61. package/dist/esm/{ISave-2117075a.js → ISave-f5704813.js} +1 -1
  62. package/dist/esm/{SnkFormConfigManager-066d370b.js → SnkFormConfigManager-e7f05f79.js} +2 -2
  63. package/dist/esm/{SnkMultiSelectionListDataSource-056ede43.js → SnkMultiSelectionListDataSource-eefb24b4.js} +15 -7
  64. package/dist/esm/{auth-fetcher-5891e22c.js → auth-fetcher-e34880e5.js} +1 -1
  65. package/dist/esm/{dataunit-fetcher-5dcb0e89.js → dataunit-fetcher-d26e4a08.js} +1 -1
  66. package/dist/esm/{form-config-fetcher-8e2082f3.js → form-config-fetcher-98c42169.js} +1 -1
  67. package/dist/esm/loader.js +1 -1
  68. package/dist/esm/pesquisa-grid_2.entry.js +4 -4
  69. package/dist/esm/sankhyablocks.js +1 -1
  70. package/dist/esm/snk-actions-button_9.entry.js +8 -8
  71. package/dist/esm/snk-application.entry.js +6 -6
  72. package/dist/esm/snk-attach_11.entry.js +12 -10
  73. package/dist/esm/snk-crud.entry.js +12 -8
  74. package/dist/esm/snk-data-exporter.entry.js +5 -5
  75. package/dist/esm/{snk-data-unit-f697345b.js → snk-data-unit-ff57ac90.js} +2 -2
  76. package/dist/esm/snk-data-unit.entry.js +3 -3
  77. package/dist/esm/snk-detail-view.entry.js +7 -7
  78. package/dist/esm/snk-dynaform-detail-view_2.entry.js +31 -8
  79. package/dist/esm/{snk-dynaform-guides-view-6aae38f7.js → snk-dynaform-guides-view-9977a60e.js} +389 -42
  80. package/dist/esm/snk-dynaform-guides-view.entry.js +4 -4
  81. package/dist/esm/snk-dynaform.entry.js +12 -8
  82. package/dist/esm/snk-filter-bar_4.entry.js +4 -4
  83. package/dist/esm/snk-form_2.entry.js +4 -4
  84. package/dist/esm/snk-grid.entry.js +6 -6
  85. package/dist/esm/{snk-guides-viewer-3ea7e312.js → snk-guides-viewer-d512dc7a.js} +1 -1
  86. package/dist/esm/snk-guides-viewer.entry.js +5 -5
  87. package/dist/esm/snk-layout-form-config.entry.js +4 -4
  88. package/dist/esm/snk-pesquisa.entry.js +4 -4
  89. package/dist/esm/{taskbarUtils-a43e4bba.js → taskbarUtils-c08efdbb.js} +9 -4
  90. package/dist/sankhyablocks/{p-3190ac29.js → p-097d75b3.js} +2 -2
  91. package/dist/sankhyablocks/{p-aa9d61fa.entry.js → p-12579574.entry.js} +1 -1
  92. package/dist/sankhyablocks/p-1567aaf9.entry.js +1 -0
  93. package/dist/sankhyablocks/p-2a83f20e.entry.js +1 -0
  94. package/dist/sankhyablocks/{p-5a8390f9.entry.js → p-30570022.entry.js} +1 -1
  95. package/dist/sankhyablocks/p-33f84e69.entry.js +1 -0
  96. package/dist/sankhyablocks/p-4299bcbb.js +1 -0
  97. package/dist/sankhyablocks/{p-10d883b0.js → p-4dd574d6.js} +1 -1
  98. package/dist/sankhyablocks/{p-c5889dae.js → p-59717928.js} +1 -1
  99. package/dist/sankhyablocks/{p-7e63af25.entry.js → p-62601ac6.entry.js} +1 -1
  100. package/dist/sankhyablocks/p-64f14e9c.entry.js +1 -0
  101. package/dist/sankhyablocks/{p-b3762105.entry.js → p-69f1b522.entry.js} +1 -1
  102. package/dist/sankhyablocks/{p-ee192f06.entry.js → p-711508e7.entry.js} +1 -1
  103. package/dist/sankhyablocks/p-75f261aa.js +1 -0
  104. package/dist/sankhyablocks/{p-95777c35.entry.js → p-8be9d886.entry.js} +1 -1
  105. package/dist/sankhyablocks/{p-c1e168a2.js → p-8d1ef77a.js} +1 -1
  106. package/dist/sankhyablocks/{p-13f91e7e.js → p-8d81c8d3.js} +1 -1
  107. package/dist/sankhyablocks/p-9a0e5bdf.js +1 -0
  108. package/dist/sankhyablocks/{p-741f1ad0.entry.js → p-9b5c9387.entry.js} +1 -1
  109. package/dist/sankhyablocks/p-9e02a785.js +1 -0
  110. package/dist/sankhyablocks/{p-c6b6567f.entry.js → p-a9330ce9.entry.js} +1 -1
  111. package/dist/sankhyablocks/{p-6f2de911.entry.js → p-af58b0d9.entry.js} +1 -1
  112. package/dist/sankhyablocks/{p-3630a5ae.entry.js → p-c4b34e2b.entry.js} +1 -1
  113. package/dist/sankhyablocks/{p-8d513b64.js → p-c9440c8a.js} +1 -1
  114. package/dist/sankhyablocks/{p-58e0f14b.entry.js → p-d10df418.entry.js} +1 -1
  115. package/dist/sankhyablocks/{p-4a53fbeb.entry.js → p-d622b92c.entry.js} +1 -1
  116. package/dist/sankhyablocks/{p-7827871d.entry.js → p-d8361914.entry.js} +1 -1
  117. package/dist/sankhyablocks/{p-e91bd00e.js → p-eac48627.js} +1 -1
  118. package/dist/sankhyablocks/{p-d7657667.js → p-ec7c87bb.js} +1 -1
  119. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  120. package/dist/types/components/snk-dynaform/subcomponents/snk-dynaform-detail-view/snk-dynaform-detail-view.d.ts +11 -0
  121. package/dist/types/components/snk-dynaform/subcomponents/snk-dynaform-form-view/snk-dynaform-form-view.d.ts +1 -0
  122. package/dist/types/components.d.ts +32 -0
  123. package/package.json +1 -1
  124. package/dist/sankhyablocks/p-1bc6849e.js +0 -1
  125. package/dist/sankhyablocks/p-3cc67d50.entry.js +0 -1
  126. package/dist/sankhyablocks/p-5c8217fa.entry.js +0 -1
  127. package/dist/sankhyablocks/p-a8a93568.entry.js +0 -1
  128. package/dist/sankhyablocks/p-acd3adf9.entry.js +0 -1
  129. package/dist/sankhyablocks/p-c3bc693a.js +0 -1
  130. package/dist/sankhyablocks/p-ed1b1b14.js +0 -1
  131. package/dist/sankhyablocks/p-fb3e17ff.js +0 -1
@@ -5,6 +5,7 @@
5
5
  flex-wrap: wrap;
6
6
  background-color: var(--background--xlight);
7
7
  padding: var(--space--12, 12px);
8
+ padding-right: 0;
8
9
  border-radius: var(--border--radius-medium);
9
10
  border: 1px solid var(--color--petroleum-100, #C8CCD3);
10
11
 
@@ -12,8 +13,41 @@
12
13
  }
13
14
 
14
15
  ez-form-view {
15
- padding: var(--space--6 ,6px) 0;
16
+ padding-right: var(--space--12, 12px);
16
17
  --ez-form-view__item--padding: 0;
18
+ min-height: 0;
19
+ overflow-y: auto;
20
+ /* Scrollbar moderna (Firefox). Levar para biblioteca após validação*/
21
+ scrollbar-width: auto;
22
+ scrollbar-color: var(--color--strokes, #E1E2E5) transparent;
23
+ }
24
+
25
+ /* Scrollbar moderna (WebKit/Chromium): trilho transparente, polegar em pílula
26
+ flutuante, some no fundo e escurece no hover. Levar para biblioteca após validação */
27
+ ez-form-view::-webkit-scrollbar {
28
+ width: 14px;
29
+ height: 14px;
30
+ }
31
+
32
+ ez-form-view::-webkit-scrollbar-track {
33
+ background: transparent;
34
+ }
35
+
36
+ ez-form-view::-webkit-scrollbar-thumb {
37
+ background-color: var(--color--strokes, #E1E2E5);
38
+ border-radius: 999px;
39
+ /* Borda transparente + background-clip cria o respiro em volta do polegar. */
40
+ border: 2px solid transparent;
41
+ background-clip: padding-box;
42
+ }
43
+
44
+ ez-form-view::-webkit-scrollbar-thumb:hover {
45
+ background-color: var(--color--petroleum-100, #C8CCD3);
46
+ background-clip: padding-box;
47
+ }
48
+
49
+ ez-form-view::-webkit-scrollbar-corner {
50
+ background: transparent;
17
51
  }
18
52
 
19
53
  .level-path{
@@ -124,6 +124,9 @@ export class SnkDynaformFormView {
124
124
  this.dataUnit.unsubscribe(this.dataUnitObserver);
125
125
  }
126
126
  }
127
+ async componentWillLoad() {
128
+ await this.initLayoutFormConfig();
129
+ }
127
130
  componentDidLoad() {
128
131
  if (this.customEditors) {
129
132
  this.observePropsCustomEditor(this.customEditors);
@@ -131,7 +134,6 @@ export class SnkDynaformFormView {
131
134
  if (this.fieldsProps) {
132
135
  this.observeFieldsProps(this.fieldsProps);
133
136
  }
134
- this.initLayoutFormConfig();
135
137
  }
136
138
  async initLayoutFormConfig() {
137
139
  const _application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
@@ -31,6 +31,8 @@ snk-dynaform-form-view {
31
31
 
32
32
  /*public*/
33
33
  padding: 0px;
34
+ padding: var(--space--8, 8px);
35
+ padding-top: 0;
34
36
  }
35
37
 
36
38
  .snk-guides-viewer__detail-container {
@@ -41,20 +43,106 @@ snk-dynaform-form-view {
41
43
  max-height: none;
42
44
  min-height: 0;
43
45
  overflow: hidden;
44
- margin-bottom: var(--space--12, 12px);
45
46
  }
46
47
 
47
- .snk-guides-viewer__container > snk-dynaform-form-view {
48
- max-height: 300px;
48
+ .snk-guides-viewer__master {
49
+ display: flex;
50
+ flex-direction: column;
51
+ min-height: 0;
52
+ height: 100%;
53
+ }
54
+
55
+ /* Painéis do ez-split-panel: preenchem a faixa e deixam o conteúdo rolar. */
56
+ .snk-guides-viewer__split {
57
+ flex: 1;
58
+ min-height: 0;
59
+ }
60
+
61
+ .snk-guides-viewer__split-master,
62
+ .snk-guides-viewer__split-content {
63
+ display: flex;
64
+ flex-direction: column;
65
+ min-height: 0;
66
+ overflow: hidden;
67
+ }
68
+
69
+ /* O master (structural) não tem borda visível; remove o raio herdado do
70
+ ez-split-item para o conteúdo/scroll não ser cortado nos cantos. */
71
+ .snk-guides-viewer__split-master {
72
+ border-radius: 0;
73
+ }
74
+
75
+ /* Painel com contorno: inseta o conteúdo em >= raio da borda, para o scroll/
76
+ barra ficar na região reta e não cortar o canto arredondado.
77
+ Classe dobrada para vencer o `.structural__item { padding: 0 }` do ez-ui. */
78
+ .snk-guides-viewer__split-content.snk-guides-viewer__split-content {
79
+ box-sizing: border-box;
80
+ padding-top: var(--space--4, 4px);
81
+ }
82
+
83
+ /* Preenche o painel inferior: abas fixas no topo, scroll no detail-container.
84
+ Sem transbordo aqui, então o split-item não vira o container de scroll. */
85
+ .snk-guides-viewer__panel {
86
+ display: flex;
87
+ flex-direction: column;
88
+ flex: 1;
89
+ min-height: 0;
90
+ height: 100%;
91
+ overflow: hidden;
92
+ }
93
+
94
+ /* Alterna resumo/expandido só por CSS — o form-view permanece montado. */
95
+ .snk-guides-viewer__master .snk-guides-viewer__master-summary {
96
+ display: none;
97
+ }
98
+ .snk-guides-viewer__master--collapsed .snk-guides-viewer__master-summary {
99
+ display: flex;
100
+ }
101
+ .snk-guides-viewer__master--collapsed .snk-guides-viewer__master-expanded {
102
+ display: none;
103
+ }
104
+
105
+ .snk-guides-viewer__master-expanded {
106
+ position: relative;
107
+ display: flex;
108
+ flex-direction: column;
109
+ min-height: 0;
110
+ flex: 1;
111
+ overflow: visible;
112
+ margin-top: var(--space--6, 6px);
113
+ }
114
+
115
+ /* Altura limitada; o scroll é interno ao form-view (a borda fica sempre fixa). */
116
+ .snk-guides-viewer__master-expanded > snk-dynaform-form-view {
117
+ flex: 1;
49
118
  min-height: 0;
50
- overflow-y: auto;
51
119
  }
52
120
 
121
+ /* form-view e detail-view ficam com altura limitada; o scroll é interno
122
+ (dentro do form-view a borda fica fixa; a grade rola internamente). */
53
123
  .snk-guides-viewer__detail-container > snk-dynaform-form-view,
54
124
  .snk-guides-viewer__detail-container > snk-dynaform-detail-view {
55
125
  flex: 1;
56
126
  min-height: 0;
57
- overflow-y: auto;
127
+ }
128
+
129
+ /* Cada aba aberta fica montada; só a ativa é visível. */
130
+ .snk-guides-viewer__guide-content {
131
+ display: flex;
132
+ flex-direction: column;
133
+ flex: 1;
134
+ min-height: 0;
135
+ overflow: hidden;
136
+ }
137
+
138
+ .snk-guides-viewer__guide-content--hidden {
139
+ display: none;
140
+ }
141
+
142
+ .snk-guides-viewer__guide-content > snk-dynaform-form-view,
143
+ .snk-guides-viewer__guide-content > snk-dynaform-detail-view {
144
+ flex: 1;
145
+ min-height: 0;
58
146
  }
59
147
 
60
148
  .snk-guides-viewer__header {
@@ -66,7 +154,7 @@ snk-dynaform-form-view {
66
154
  /*public*/
67
155
  z-index: var(--snk-guides-viewer__header--z-index);
68
156
  background-color: var(--snk-guides-viewer__header--background-color);
69
- padding: var(--snk-guides-viewer--space-small);
157
+ padding-inline: var(--snk-guides-viewer--space-small);
70
158
  }
71
159
 
72
160
  .snk-guides-viewer__header-breadcrumb {
@@ -95,4 +183,139 @@ snk-dynaform-form-view {
95
183
  box-sizing: border-box;
96
184
  padding: 0 var(--space--12, 12px);
97
185
  flex-shrink: 0;
186
+ }
187
+
188
+ .snk-guides-viewer__master-summary {
189
+ position: relative;
190
+ display: flex;
191
+ align-items: center;
192
+ justify-content: space-between;
193
+ gap: var(--space--12, 12px);
194
+ box-sizing: border-box;
195
+ margin: var(--space--2xs, 8px) var(--space--12, 12px);
196
+ padding: var(--space--2xs, 8px) var(--space--12, 12px);
197
+ border: 1px solid var(--color--strokes, #E1E2E5);
198
+ border-radius: var(--border--radius-medium, 12px);
199
+ background: var(--background--medium, #f0f3f7);
200
+ box-shadow: var(--shadow--small, 0 0 16px rgba(0, 38, 111, 0.07));
201
+ cursor: pointer;
202
+ text-align: left;
203
+ flex-shrink: 0;
204
+ overflow: hidden;
205
+ transition: background 0.15s ease, border-color 0.15s ease;
206
+ }
207
+
208
+ .snk-guides-viewer__master-summary:hover,
209
+ .snk-guides-viewer__master-summary:focus-visible {
210
+ background: var(--background--xlight, #fff);
211
+ border-color: var(--color--primary, #4e4e4e);
212
+ }
213
+
214
+ .snk-guides-viewer__master-summary-fields {
215
+ display: flex;
216
+ gap: var(--space--large, 24px);
217
+ flex: 1;
218
+ min-width: 0;
219
+ overflow: hidden;
220
+ white-space: nowrap;
221
+ /* Espaço p/ o box-shadow do realce de campo inválido não ser cortado. */
222
+ padding: var(--space--4, 4px);
223
+ margin: calc(-1 * var(--space--4, 4px));
224
+ }
225
+
226
+ /* Row-fantasma: fora do fluxo, invisível, largura natural — só para medir. */
227
+ .snk-guides-viewer__master-summary-measure {
228
+ position: absolute;
229
+ top: 0;
230
+ left: 0;
231
+ display: flex;
232
+ gap: var(--space--large, 24px);
233
+ white-space: nowrap;
234
+ visibility: hidden;
235
+ pointer-events: none;
236
+ z-index: -1;
237
+ }
238
+
239
+ .snk-guides-viewer__master-summary-item {
240
+ display: inline-flex;
241
+ flex-direction: column;
242
+ gap: 2px;
243
+ min-width: 0;
244
+ padding: var(--space--4, 4px);
245
+ }
246
+
247
+ .snk-guides-viewer__master-summary-label {
248
+ display: flex;
249
+ align-items: center;
250
+ gap: 2px;
251
+ max-width: 240px;
252
+ color: var(--text--primary, #626e82);
253
+ font-size: var(--title--small, 12px);
254
+ font-weight: var(--text-weight--medium, 400);
255
+ }
256
+
257
+ .snk-guides-viewer__master-summary-label-text {
258
+ overflow: hidden;
259
+ text-overflow: ellipsis;
260
+ white-space: nowrap;
261
+ min-width: 0;
262
+ }
263
+
264
+ /* Marcador de campo obrigatório (mesmo estilo do ez-classic-input). */
265
+ .snk-guides-viewer__master-summary-required {
266
+ flex-shrink: 0;
267
+ color: var(--color--red-600, #BD0025);
268
+ font-weight: 700;
269
+ }
270
+
271
+ /* Campo obrigatório não preenchido ao salvar: realce vermelho.
272
+ box-shadow (não outline) p/ compatibilidade com browsers antigos; o wrapper
273
+ .master-summary-fields tem padding p/ o anel não ser cortado pelo overflow. */
274
+ .snk-guides-viewer__master-summary-item--invalid {
275
+ box-shadow: 0 0 0 1px var(--color--red-600, #BD0025);
276
+ border-radius: var(--border--radius-4, 4px);
277
+ }
278
+
279
+ .snk-guides-viewer__master-summary-value {
280
+ color: var(--title--primary, #2b3a54);
281
+ font-size: var(--text--large, 14px);
282
+ font-weight: 700;
283
+ max-width: 240px;
284
+ overflow: hidden;
285
+ text-overflow: ellipsis;
286
+ }
287
+
288
+ .snk-guides-viewer__master-summary-chevron {
289
+ flex-shrink: 0;
290
+ color: var(--title--primary, #2b3a54);
291
+ }
292
+
293
+ /* Botão recolher (ez-button) centrado sobre a borda superior do card master,
294
+ fora da área dos inputs — não sobrepõe campos no layout lado-a-lado.
295
+ Oculto por padrão; aparece com transição ao passar o mouse (ou focar) o form. */
296
+ /* Pendura o botão a partir da borda superior do master (topo alinhado à margem
297
+ reservada). Sem transbordo para cima, então não é cortado pelo overflow do
298
+ container mesmo com a margem pequena. */
299
+ .snk-guides-viewer__master-collapse-btn {
300
+ position: absolute;
301
+ top: calc(-1 * var(--space--6, 6px));
302
+ left: 50%;
303
+ transform: translate(-50%, 0);
304
+ z-index: 1;
305
+ opacity: 0;
306
+ visibility: hidden;
307
+ transition: opacity 0.2s ease, visibility 0.2s ease;
308
+ }
309
+
310
+ .snk-guides-viewer__master:hover .snk-guides-viewer__master-collapse-btn,
311
+ .snk-guides-viewer__master:focus-within .snk-guides-viewer__master-collapse-btn,
312
+ .snk-guides-viewer__master-collapse-btn:hover {
313
+ opacity: 1;
314
+ visibility: visible;
315
+ }
316
+
317
+ /* Borda do botão igual à borda do card master (form-view usa --color--petroleum-100). */
318
+ .snk-guides-viewer__master-collapse-btn ez-button {
319
+ --ez-button--border: 1px solid var(--color--petroleum-100, #C8CCD3);
320
+ --ez-button--hover--border: 1px solid var(--color--petroleum-100, #C8CCD3);
98
321
  }