rook-cli 1.3.11 → 1.3.13
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/package.json
CHANGED
package/rook-framework/PRD.md
CHANGED
|
@@ -135,6 +135,7 @@ O framework inteiro vive em `/rook-framework/` como pasta isolada. Para portar p
|
|
|
135
135
|
│ ├── rk-collapsible.liquid ← Molécula: Painel ocultável
|
|
136
136
|
│ ├── rk-carousel.liquid ← Molécula: Slider/Carousel (Swiper.js)
|
|
137
137
|
│ ├── rk-bottom-app-bar.liquid ← Molécula: Barra de navegação inferior estilo App
|
|
138
|
+
│ ├── rk-group.liquid ← Molécula: Container flexível com controladores completos (layout/size/bg/overlay/border/link)
|
|
138
139
|
│ ├── rk-external-assets.liquid ← Serviço: Gerenciador de preconnects, CDNs e scripts externos (GSAP/Animejs)
|
|
139
140
|
│ ├── rk-scripts.liquid ← Serviço: Carregador centralizado dos Web Components JS do framework
|
|
140
141
|
│ └── rk-quick-add.liquid ← Molécula: Add to Cart (⚠️ exceção)
|
|
@@ -152,7 +153,8 @@ O framework inteiro vive em `/rook-framework/` como pasta isolada. Para portar p
|
|
|
152
153
|
├── rk-pix-discount.liquid ← Block: Desconto Pix com customizer
|
|
153
154
|
├── rk-quantity.liquid ← Block: Seletor qtd com customizer
|
|
154
155
|
├── rk-quick-add.liquid ← Block: Add to Cart com customizer
|
|
155
|
-
|
|
156
|
+
├── rk-skeleton.liquid ← Block: Skeleton com customizer
|
|
157
|
+
└── rk-group.liquid ← Block: Grupo container com customizer
|
|
156
158
|
```
|
|
157
159
|
|
|
158
160
|
---
|
|
@@ -1038,6 +1040,73 @@ Shapes: `text` \| `circle` \| `rect`
|
|
|
1038
1040
|
|
|
1039
1041
|
---
|
|
1040
1042
|
|
|
1043
|
+
#### `rk-group`
|
|
1044
|
+
**Arquivo:** `snippets/rk-group.liquid`
|
|
1045
|
+
**Controller:** Nenhum (CSS puro + Liquid)
|
|
1046
|
+
**Descrição:** Container flexível ("smart div") que aceita qualquer conteúdo dentro dele com controladores completos para layout, tamanho, espaçamento, fundo (cor/imagem), overlay (sólido/gradiente), borda e link. Compõe internamente os snippets `rk-layout-style`, `rk-size-style` e `rk-spacing-style` para máxima reutilização.
|
|
1047
|
+
|
|
1048
|
+
| Prop | Tipo | Default | Descrição |
|
|
1049
|
+
|---|---|---|---|
|
|
1050
|
+
| `children` | string | — | HTML do conteúdo interno (obrigatório) |
|
|
1051
|
+
| `settings` | object | — | Objeto de configurações do block/section |
|
|
1052
|
+
| `shopify_attributes` | string | — | Atributos do editor Shopify |
|
|
1053
|
+
| `class` | string | — | Classes CSS extras |
|
|
1054
|
+
| `style` | string | — | Estilos inline extras |
|
|
1055
|
+
|
|
1056
|
+
**Settings de Layout:**
|
|
1057
|
+
| Setting | Tipo | Default | Descrição |
|
|
1058
|
+
|---|---|---|---|
|
|
1059
|
+
| `content_direction` | select | `column` | `column` \| `row` |
|
|
1060
|
+
| `vertical_on_mobile` | checkbox | `true` | Empilha no mobile (quando `row`) |
|
|
1061
|
+
| `horizontal_alignment` | select | `flex-start` | Alinhamento horizontal (row) |
|
|
1062
|
+
| `vertical_alignment` | select | `center` | Alinhamento vertical (row) |
|
|
1063
|
+
| `horizontal_alignment_flex_direction_column` | select | `flex-start` | Alinhamento horizontal (column) |
|
|
1064
|
+
| `vertical_alignment_flex_direction_column` | select | `center` | Alinhamento vertical (column) |
|
|
1065
|
+
| `gap` | range | `12px` | Espaço entre itens |
|
|
1066
|
+
|
|
1067
|
+
**Settings de Tamanho:**
|
|
1068
|
+
| Setting | Tipo | Default | Descrição |
|
|
1069
|
+
|---|---|---|---|
|
|
1070
|
+
| `width` | select | `fill` | `fill` \| `fit-content` \| `custom` |
|
|
1071
|
+
| `custom_width` | range | `100%` | Largura personalizada (%) |
|
|
1072
|
+
| `width_mobile` | select | `fill` | Override mobile |
|
|
1073
|
+
| `custom_width_mobile` | range | `100%` | Largura mobile personalizada |
|
|
1074
|
+
| `height` | select | `fit` | `fit` \| `fill` \| `custom` |
|
|
1075
|
+
| `custom_height` | range | `100%` | Altura personalizada (%) |
|
|
1076
|
+
|
|
1077
|
+
**Settings de Aparência:**
|
|
1078
|
+
| Setting | Tipo | Default | Descrição |
|
|
1079
|
+
|---|---|---|---|
|
|
1080
|
+
| `background_color` | color | — | Cor de fundo |
|
|
1081
|
+
| `background_image` | image_picker | — | Imagem de fundo |
|
|
1082
|
+
| `background_image_position` | select | `cover` | `cover` \| `contain` |
|
|
1083
|
+
| `border` | select | `none` | `none` \| `solid` |
|
|
1084
|
+
| `border_width` | range | `1px` | Espessura da borda |
|
|
1085
|
+
| `border_opacity` | range | `100%` | Opacidade da borda |
|
|
1086
|
+
| `border_radius` | range | `0` | Arredondamento |
|
|
1087
|
+
| `toggle_overlay` | checkbox | `false` | Ativar overlay |
|
|
1088
|
+
| `overlay_color` | color (alpha) | `#00000026` | Cor do overlay |
|
|
1089
|
+
| `overlay_style` | select | `solid` | `solid` \| `gradient` |
|
|
1090
|
+
| `gradient_direction` | select | `to top` | Direção do gradiente |
|
|
1091
|
+
| `link` | url | — | Link do grupo inteiro |
|
|
1092
|
+
| `open_in_new_tab` | checkbox | `false` | Abrir em nova aba |
|
|
1093
|
+
|
|
1094
|
+
**Exemplo:**
|
|
1095
|
+
```liquid
|
|
1096
|
+
{%- capture children %}
|
|
1097
|
+
{% content_for 'blocks' %}
|
|
1098
|
+
{% endcapture %}
|
|
1099
|
+
{% render 'rk-group', children: children, settings: block.settings, shopify_attributes: block.shopify_attributes %}
|
|
1100
|
+
```
|
|
1101
|
+
|
|
1102
|
+
**Comportamento Técnico:**
|
|
1103
|
+
- Link wrapper usa `position: absolute; inset: 0` com `pointer-events: none` nos filhos, preservando interatividade de `a`, `button`, `input`, `textarea`, `select`
|
|
1104
|
+
- Background image usa `<img>` com `object-fit` (cover/contain) para performance e lazy-loading nativo
|
|
1105
|
+
- Overlay suporta cor sólida ou gradiente linear com transparência
|
|
1106
|
+
- No Design Mode do Shopify, pointer-events são restaurados no conteúdo para permitir edição
|
|
1107
|
+
|
|
1108
|
+
---
|
|
1109
|
+
|
|
1041
1110
|
### 5.3 Serviços
|
|
1042
1111
|
|
|
1043
1112
|
#### `rk-external-assets`
|
|
@@ -2755,6 +2755,129 @@ a.rk-card {
|
|
|
2755
2755
|
will-change: opacity, transform;
|
|
2756
2756
|
}
|
|
2757
2757
|
|
|
2758
|
+
/* --------------------------------------------------------------------------
|
|
2759
|
+
rk-group (Group Container — Smart Div with full controllers)
|
|
2760
|
+
Flexible container that accepts any content with layout, size, spacing,
|
|
2761
|
+
background, overlay, border and link controls.
|
|
2762
|
+
-------------------------------------------------------------------------- */
|
|
2763
|
+
.rk-group {
|
|
2764
|
+
position: relative;
|
|
2765
|
+
display: block;
|
|
2766
|
+
background-color: var(--rk-group-bg, transparent);
|
|
2767
|
+
border-style: var(--rk-group-border-style, none);
|
|
2768
|
+
border-width: var(--rk-group-border-width, 0);
|
|
2769
|
+
border-color: rgb(var(--rk-color-border-rgb, 229 229 229) / var(--rk-group-border-opacity, 1));
|
|
2770
|
+
border-radius: var(--rk-group-radius, 0);
|
|
2771
|
+
overflow: hidden;
|
|
2772
|
+
}
|
|
2773
|
+
|
|
2774
|
+
.rk-group--height-fit {
|
|
2775
|
+
height: auto;
|
|
2776
|
+
}
|
|
2777
|
+
|
|
2778
|
+
.rk-group--height-fill {
|
|
2779
|
+
height: 100%;
|
|
2780
|
+
}
|
|
2781
|
+
|
|
2782
|
+
.rk-group--height-custom {
|
|
2783
|
+
height: var(--rk-height, auto);
|
|
2784
|
+
}
|
|
2785
|
+
|
|
2786
|
+
.rk-group--width-fill {
|
|
2787
|
+
width: 100%;
|
|
2788
|
+
}
|
|
2789
|
+
|
|
2790
|
+
.rk-group--width-fit-content {
|
|
2791
|
+
width: fit-content;
|
|
2792
|
+
}
|
|
2793
|
+
|
|
2794
|
+
.rk-group--width-custom {
|
|
2795
|
+
width: var(--rk-width, auto);
|
|
2796
|
+
}
|
|
2797
|
+
|
|
2798
|
+
@media (max-width: 749px) {
|
|
2799
|
+
.rk-group--width-custom,
|
|
2800
|
+
.rk-group--width-fill {
|
|
2801
|
+
width: var(--rk-width-mobile, var(--rk-width, 100%));
|
|
2802
|
+
}
|
|
2803
|
+
}
|
|
2804
|
+
|
|
2805
|
+
/* Link wrapper — full-bleed clickable area */
|
|
2806
|
+
.rk-group__link {
|
|
2807
|
+
position: absolute;
|
|
2808
|
+
inset: 0;
|
|
2809
|
+
z-index: 1;
|
|
2810
|
+
}
|
|
2811
|
+
|
|
2812
|
+
.rk-group__link ~ .rk-group__content,
|
|
2813
|
+
.rk-group__link ~ .rk-group__media {
|
|
2814
|
+
pointer-events: none;
|
|
2815
|
+
}
|
|
2816
|
+
|
|
2817
|
+
.rk-group__link ~ .rk-group__content :is(a, button, input, textarea, select),
|
|
2818
|
+
.rk-group__link ~ .rk-group__media :is(a, button, input, textarea, select) {
|
|
2819
|
+
pointer-events: auto;
|
|
2820
|
+
}
|
|
2821
|
+
|
|
2822
|
+
.rk-group__link ~ .rk-group__content--design-mode {
|
|
2823
|
+
pointer-events: auto;
|
|
2824
|
+
}
|
|
2825
|
+
|
|
2826
|
+
/* Background media layer */
|
|
2827
|
+
.rk-group__media {
|
|
2828
|
+
position: absolute;
|
|
2829
|
+
inset: 0;
|
|
2830
|
+
z-index: 0;
|
|
2831
|
+
pointer-events: none;
|
|
2832
|
+
}
|
|
2833
|
+
|
|
2834
|
+
.rk-group__bg-image {
|
|
2835
|
+
display: block;
|
|
2836
|
+
width: 100%;
|
|
2837
|
+
height: 100%;
|
|
2838
|
+
}
|
|
2839
|
+
|
|
2840
|
+
.rk-group__bg-image--cover {
|
|
2841
|
+
object-fit: cover;
|
|
2842
|
+
}
|
|
2843
|
+
|
|
2844
|
+
.rk-group__bg-image--contain {
|
|
2845
|
+
object-fit: contain;
|
|
2846
|
+
}
|
|
2847
|
+
|
|
2848
|
+
/* Overlay */
|
|
2849
|
+
.rk-group__overlay {
|
|
2850
|
+
position: absolute;
|
|
2851
|
+
inset: 0;
|
|
2852
|
+
pointer-events: none;
|
|
2853
|
+
}
|
|
2854
|
+
|
|
2855
|
+
.rk-group__overlay--solid {
|
|
2856
|
+
background: var(--rk-group-overlay-color);
|
|
2857
|
+
}
|
|
2858
|
+
|
|
2859
|
+
.rk-group__overlay--gradient {
|
|
2860
|
+
background: linear-gradient(
|
|
2861
|
+
var(--rk-group-overlay-direction, to top),
|
|
2862
|
+
var(--rk-group-overlay-color),
|
|
2863
|
+
var(--rk-group-overlay-color-end, transparent)
|
|
2864
|
+
);
|
|
2865
|
+
}
|
|
2866
|
+
|
|
2867
|
+
/* Content layer */
|
|
2868
|
+
.rk-group__content {
|
|
2869
|
+
position: relative;
|
|
2870
|
+
z-index: 1;
|
|
2871
|
+
min-height: inherit;
|
|
2872
|
+
height: 100%;
|
|
2873
|
+
}
|
|
2874
|
+
|
|
2875
|
+
@media (max-width: 749px) {
|
|
2876
|
+
.rk-group__content--mobile-column {
|
|
2877
|
+
flex-direction: column;
|
|
2878
|
+
}
|
|
2879
|
+
}
|
|
2880
|
+
|
|
2758
2881
|
/* --------------------------------------------------------------------------
|
|
2759
2882
|
rk-sr-only (Screen Reader Only utility)
|
|
2760
2883
|
-------------------------------------------------------------------------- */
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
Block: RK Group
|
|
3
|
+
A flexible container that accepts any blocks inside it with full layout,
|
|
4
|
+
sizing, spacing, background, overlay, border and link controls.
|
|
5
|
+
Acts as a "smart div" with all the visual controllers needed.
|
|
6
|
+
{% endcomment %}
|
|
7
|
+
|
|
8
|
+
{%- capture children %}
|
|
9
|
+
{% content_for 'blocks' %}
|
|
10
|
+
{% endcapture %}
|
|
11
|
+
|
|
12
|
+
{% render 'rk-group', children: children, settings: block.settings, shopify_attributes: block.shopify_attributes %}
|
|
13
|
+
|
|
14
|
+
{% schema %}
|
|
15
|
+
{
|
|
16
|
+
"name": "RK | Grupo",
|
|
17
|
+
"tag": null,
|
|
18
|
+
"blocks": [
|
|
19
|
+
{
|
|
20
|
+
"type": "@theme"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"type": "@app"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"settings": [
|
|
27
|
+
{
|
|
28
|
+
"type": "header",
|
|
29
|
+
"content": "Layout"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"type": "select",
|
|
33
|
+
"id": "content_direction",
|
|
34
|
+
"label": "Direção",
|
|
35
|
+
"options": [
|
|
36
|
+
{
|
|
37
|
+
"value": "column",
|
|
38
|
+
"label": "Vertical"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"value": "row",
|
|
42
|
+
"label": "Horizontal"
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"default": "column"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"type": "checkbox",
|
|
49
|
+
"id": "vertical_on_mobile",
|
|
50
|
+
"label": "Empilhar no mobile",
|
|
51
|
+
"default": true,
|
|
52
|
+
"visible_if": "{{ block.settings.content_direction == 'row' }}"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"type": "select",
|
|
56
|
+
"id": "horizontal_alignment",
|
|
57
|
+
"label": "Alinhamento horizontal",
|
|
58
|
+
"options": [
|
|
59
|
+
{ "value": "flex-start", "label": "Esquerda" },
|
|
60
|
+
{ "value": "center", "label": "Centro" },
|
|
61
|
+
{ "value": "flex-end", "label": "Direita" },
|
|
62
|
+
{ "value": "space-between", "label": "Distribuído" }
|
|
63
|
+
],
|
|
64
|
+
"default": "flex-start",
|
|
65
|
+
"visible_if": "{{ block.settings.content_direction == 'row' }}"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"type": "select",
|
|
69
|
+
"id": "vertical_alignment",
|
|
70
|
+
"label": "Alinhamento vertical",
|
|
71
|
+
"options": [
|
|
72
|
+
{ "value": "flex-start", "label": "Topo" },
|
|
73
|
+
{ "value": "center", "label": "Centro" },
|
|
74
|
+
{ "value": "flex-end", "label": "Base" }
|
|
75
|
+
],
|
|
76
|
+
"default": "center",
|
|
77
|
+
"visible_if": "{{ block.settings.content_direction == 'row' }}"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"type": "select",
|
|
81
|
+
"id": "horizontal_alignment_flex_direction_column",
|
|
82
|
+
"label": "Alinhamento horizontal",
|
|
83
|
+
"options": [
|
|
84
|
+
{ "value": "flex-start", "label": "Esquerda" },
|
|
85
|
+
{ "value": "center", "label": "Centro" },
|
|
86
|
+
{ "value": "flex-end", "label": "Direita" }
|
|
87
|
+
],
|
|
88
|
+
"default": "flex-start",
|
|
89
|
+
"visible_if": "{{ block.settings.content_direction != 'row' }}"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"type": "select",
|
|
93
|
+
"id": "vertical_alignment_flex_direction_column",
|
|
94
|
+
"label": "Alinhamento vertical",
|
|
95
|
+
"options": [
|
|
96
|
+
{ "value": "flex-start", "label": "Topo" },
|
|
97
|
+
{ "value": "center", "label": "Centro" },
|
|
98
|
+
{ "value": "flex-end", "label": "Base" },
|
|
99
|
+
{ "value": "space-between", "label": "Distribuído" }
|
|
100
|
+
],
|
|
101
|
+
"default": "center",
|
|
102
|
+
"visible_if": "{{ block.settings.content_direction == 'column' }}"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"type": "range",
|
|
106
|
+
"id": "gap",
|
|
107
|
+
"label": "Espaço entre itens",
|
|
108
|
+
"min": 0,
|
|
109
|
+
"max": 100,
|
|
110
|
+
"step": 1,
|
|
111
|
+
"unit": "px",
|
|
112
|
+
"default": 12
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"type": "header",
|
|
116
|
+
"content": "Tamanho"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"type": "select",
|
|
120
|
+
"id": "width",
|
|
121
|
+
"label": "Largura",
|
|
122
|
+
"options": [
|
|
123
|
+
{ "value": "fit-content", "label": "Ajustar ao conteúdo" },
|
|
124
|
+
{ "value": "fill", "label": "Preencher" },
|
|
125
|
+
{ "value": "custom", "label": "Personalizada" }
|
|
126
|
+
],
|
|
127
|
+
"default": "fill"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"type": "range",
|
|
131
|
+
"id": "custom_width",
|
|
132
|
+
"label": "Largura personalizada",
|
|
133
|
+
"min": 0,
|
|
134
|
+
"max": 100,
|
|
135
|
+
"step": 1,
|
|
136
|
+
"unit": "%",
|
|
137
|
+
"default": 100,
|
|
138
|
+
"visible_if": "{{ block.settings.width == 'custom' }}"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"type": "select",
|
|
142
|
+
"id": "width_mobile",
|
|
143
|
+
"label": "Largura mobile",
|
|
144
|
+
"options": [
|
|
145
|
+
{ "value": "fit-content", "label": "Ajustar ao conteúdo" },
|
|
146
|
+
{ "value": "fill", "label": "Preencher" },
|
|
147
|
+
{ "value": "custom", "label": "Personalizada" }
|
|
148
|
+
],
|
|
149
|
+
"default": "fill"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"type": "range",
|
|
153
|
+
"id": "custom_width_mobile",
|
|
154
|
+
"label": "Largura mobile personalizada",
|
|
155
|
+
"min": 0,
|
|
156
|
+
"max": 100,
|
|
157
|
+
"step": 1,
|
|
158
|
+
"unit": "%",
|
|
159
|
+
"default": 100,
|
|
160
|
+
"visible_if": "{{ block.settings.width_mobile == 'custom' }}"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"type": "select",
|
|
164
|
+
"id": "height",
|
|
165
|
+
"label": "Altura",
|
|
166
|
+
"options": [
|
|
167
|
+
{ "value": "fit", "label": "Ajustar ao conteúdo" },
|
|
168
|
+
{ "value": "fill", "label": "Preencher" },
|
|
169
|
+
{ "value": "custom", "label": "Personalizada" }
|
|
170
|
+
],
|
|
171
|
+
"default": "fit"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"type": "range",
|
|
175
|
+
"id": "custom_height",
|
|
176
|
+
"label": "Altura personalizada",
|
|
177
|
+
"min": 0,
|
|
178
|
+
"max": 100,
|
|
179
|
+
"step": 1,
|
|
180
|
+
"unit": "%",
|
|
181
|
+
"default": 100,
|
|
182
|
+
"visible_if": "{{ block.settings.height == 'custom' }}"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"type": "header",
|
|
186
|
+
"content": "Aparência"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"type": "color",
|
|
190
|
+
"id": "background_color",
|
|
191
|
+
"label": "Cor de fundo"
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"type": "image_picker",
|
|
195
|
+
"id": "background_image",
|
|
196
|
+
"label": "Imagem de fundo"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"type": "select",
|
|
200
|
+
"id": "background_image_position",
|
|
201
|
+
"label": "Ajuste da imagem",
|
|
202
|
+
"options": [
|
|
203
|
+
{ "value": "cover", "label": "Cobrir" },
|
|
204
|
+
{ "value": "contain", "label": "Conter" }
|
|
205
|
+
],
|
|
206
|
+
"default": "cover",
|
|
207
|
+
"visible_if": "{{ block.settings.background_image != blank }}"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"type": "select",
|
|
211
|
+
"id": "border",
|
|
212
|
+
"label": "Borda",
|
|
213
|
+
"options": [
|
|
214
|
+
{ "value": "none", "label": "Nenhuma" },
|
|
215
|
+
{ "value": "solid", "label": "Sólida" }
|
|
216
|
+
],
|
|
217
|
+
"default": "none"
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"type": "range",
|
|
221
|
+
"id": "border_width",
|
|
222
|
+
"min": 0,
|
|
223
|
+
"max": 10,
|
|
224
|
+
"step": 0.5,
|
|
225
|
+
"unit": "px",
|
|
226
|
+
"label": "Espessura da borda",
|
|
227
|
+
"default": 1,
|
|
228
|
+
"visible_if": "{{ block.settings.border != 'none' }}"
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"type": "range",
|
|
232
|
+
"id": "border_opacity",
|
|
233
|
+
"min": 0,
|
|
234
|
+
"max": 100,
|
|
235
|
+
"step": 1,
|
|
236
|
+
"unit": "%",
|
|
237
|
+
"label": "Opacidade da borda",
|
|
238
|
+
"default": 100,
|
|
239
|
+
"visible_if": "{{ block.settings.border != 'none' }}"
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"type": "range",
|
|
243
|
+
"id": "border_radius",
|
|
244
|
+
"label": "Arredondamento",
|
|
245
|
+
"min": 0,
|
|
246
|
+
"max": 100,
|
|
247
|
+
"step": 1,
|
|
248
|
+
"unit": "px",
|
|
249
|
+
"default": 0
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"type": "checkbox",
|
|
253
|
+
"id": "toggle_overlay",
|
|
254
|
+
"label": "Overlay de fundo"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"type": "color",
|
|
258
|
+
"id": "overlay_color",
|
|
259
|
+
"label": "Cor do overlay",
|
|
260
|
+
"alpha": true,
|
|
261
|
+
"default": "#00000026",
|
|
262
|
+
"visible_if": "{{ block.settings.toggle_overlay }}"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"type": "select",
|
|
266
|
+
"id": "overlay_style",
|
|
267
|
+
"label": "Estilo do overlay",
|
|
268
|
+
"options": [
|
|
269
|
+
{ "value": "solid", "label": "Sólido" },
|
|
270
|
+
{ "value": "gradient", "label": "Gradiente" }
|
|
271
|
+
],
|
|
272
|
+
"default": "solid",
|
|
273
|
+
"visible_if": "{{ block.settings.toggle_overlay }}"
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"type": "select",
|
|
277
|
+
"id": "gradient_direction",
|
|
278
|
+
"label": "Direção do gradiente",
|
|
279
|
+
"options": [
|
|
280
|
+
{ "value": "to top", "label": "Para cima" },
|
|
281
|
+
{ "value": "to bottom", "label": "Para baixo" }
|
|
282
|
+
],
|
|
283
|
+
"default": "to top",
|
|
284
|
+
"visible_if": "{{ block.settings.toggle_overlay and block.settings.overlay_style == 'gradient' }}"
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"type": "header",
|
|
288
|
+
"content": "Link"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"type": "url",
|
|
292
|
+
"id": "link",
|
|
293
|
+
"label": "Link"
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"type": "checkbox",
|
|
297
|
+
"id": "open_in_new_tab",
|
|
298
|
+
"label": "Abrir em nova aba",
|
|
299
|
+
"default": false
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"type": "header",
|
|
303
|
+
"content": "Espaçamento"
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"type": "range",
|
|
307
|
+
"id": "padding-block-start",
|
|
308
|
+
"label": "Topo",
|
|
309
|
+
"min": 0,
|
|
310
|
+
"max": 100,
|
|
311
|
+
"step": 1,
|
|
312
|
+
"unit": "px",
|
|
313
|
+
"default": 0
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"type": "range",
|
|
317
|
+
"id": "padding-block-end",
|
|
318
|
+
"label": "Base",
|
|
319
|
+
"min": 0,
|
|
320
|
+
"max": 100,
|
|
321
|
+
"step": 1,
|
|
322
|
+
"unit": "px",
|
|
323
|
+
"default": 0
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"type": "range",
|
|
327
|
+
"id": "padding-inline-start",
|
|
328
|
+
"label": "Esquerda",
|
|
329
|
+
"min": 0,
|
|
330
|
+
"max": 100,
|
|
331
|
+
"step": 1,
|
|
332
|
+
"unit": "px",
|
|
333
|
+
"default": 0
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"type": "range",
|
|
337
|
+
"id": "padding-inline-end",
|
|
338
|
+
"label": "Direita",
|
|
339
|
+
"min": 0,
|
|
340
|
+
"max": 100,
|
|
341
|
+
"step": 1,
|
|
342
|
+
"unit": "px",
|
|
343
|
+
"default": 0
|
|
344
|
+
}
|
|
345
|
+
],
|
|
346
|
+
"presets": [
|
|
347
|
+
{
|
|
348
|
+
"name": "RK | Grupo",
|
|
349
|
+
"category": "Rook UI"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"name": "RK | Grupo Horizontal",
|
|
353
|
+
"category": "Rook UI",
|
|
354
|
+
"settings": {
|
|
355
|
+
"content_direction": "row",
|
|
356
|
+
"gap": 16
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
]
|
|
360
|
+
}
|
|
361
|
+
{% endschema %}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{%- doc -%}
|
|
2
|
+
Snippet: RkGroup
|
|
3
|
+
Renders a flexible container block that accepts any content with full layout,
|
|
4
|
+
sizing, spacing, background, overlay, border and link controls.
|
|
5
|
+
Acts as a "smart div" with all the visual controllers needed.
|
|
6
|
+
|
|
7
|
+
@param {string} children - The DOM content of the group (captured HTML)
|
|
8
|
+
@param {object} settings - The block/section settings object
|
|
9
|
+
@param {string} [shopify_attributes] - Shopify editor attributes string
|
|
10
|
+
@param {string} [class] - Custom CSS classes
|
|
11
|
+
@param {string} [style] - Custom inline styles
|
|
12
|
+
|
|
13
|
+
Settings keys used:
|
|
14
|
+
Layout:
|
|
15
|
+
- content_direction: 'column' | 'row' (default: 'column')
|
|
16
|
+
- vertical_on_mobile: boolean (default: true)
|
|
17
|
+
- horizontal_alignment, vertical_alignment (for row)
|
|
18
|
+
- horizontal_alignment_flex_direction_column, vertical_alignment_flex_direction_column (for column)
|
|
19
|
+
- gap: number (px)
|
|
20
|
+
Size:
|
|
21
|
+
- width: 'fill' | 'fit-content' | 'custom'
|
|
22
|
+
- custom_width: number (%)
|
|
23
|
+
- width_mobile: 'fill' | 'fit-content' | 'custom'
|
|
24
|
+
- custom_width_mobile: number (%)
|
|
25
|
+
- height: 'fit' | 'fill' | 'custom'
|
|
26
|
+
- custom_height: number (%)
|
|
27
|
+
Padding:
|
|
28
|
+
- padding-block-start, padding-block-end, padding-inline-start, padding-inline-end: number (px)
|
|
29
|
+
Appearance:
|
|
30
|
+
- background_color: color
|
|
31
|
+
- background_image: image object
|
|
32
|
+
- background_image_position: 'cover' | 'contain' (default: 'cover')
|
|
33
|
+
- border: 'none' | 'solid'
|
|
34
|
+
- border_width: number (px)
|
|
35
|
+
- border_opacity: number (0-100)
|
|
36
|
+
- border_radius: number (px)
|
|
37
|
+
Overlay:
|
|
38
|
+
- toggle_overlay: boolean
|
|
39
|
+
- overlay_color: color (with alpha)
|
|
40
|
+
- overlay_style: 'solid' | 'gradient'
|
|
41
|
+
- gradient_direction: 'to top' | 'to bottom'
|
|
42
|
+
Link:
|
|
43
|
+
- link: url
|
|
44
|
+
- open_in_new_tab: boolean
|
|
45
|
+
|
|
46
|
+
@example
|
|
47
|
+
{% capture children %}
|
|
48
|
+
{% content_for 'blocks' %}
|
|
49
|
+
{% endcapture %}
|
|
50
|
+
{% render 'rk-group', children: children, settings: block.settings, shopify_attributes: block.shopify_attributes %}
|
|
51
|
+
{%- enddoc -%}
|
|
52
|
+
|
|
53
|
+
<div
|
|
54
|
+
class="
|
|
55
|
+
rk-group
|
|
56
|
+
rk-group--height-{{ settings.height | default: 'fit' }}
|
|
57
|
+
rk-group--width-{{ settings.width | default: 'fill' }}
|
|
58
|
+
rk-spacing-style
|
|
59
|
+
rk-size-style
|
|
60
|
+
{{ class }}
|
|
61
|
+
"
|
|
62
|
+
style="
|
|
63
|
+
{% render 'rk-spacing-style', settings: settings %}
|
|
64
|
+
{% render 'rk-size-style', settings: settings %}
|
|
65
|
+
{%- if settings.border != 'none' and settings.border != blank -%}
|
|
66
|
+
--rk-group-border-width: {{ settings.border_width | default: 1 }}px;
|
|
67
|
+
--rk-group-border-style: {{ settings.border }};
|
|
68
|
+
--rk-group-border-opacity: {{ settings.border_opacity | default: 100 | divided_by: 100.0 }};
|
|
69
|
+
{%- endif -%}
|
|
70
|
+
{%- if settings.border_radius != blank and settings.border_radius > 0 -%}
|
|
71
|
+
--rk-group-radius: {{ settings.border_radius }}px;
|
|
72
|
+
{%- endif -%}
|
|
73
|
+
{%- if settings.background_color != blank -%}
|
|
74
|
+
--rk-group-bg: {{ settings.background_color }};
|
|
75
|
+
{%- endif -%}
|
|
76
|
+
{{ style }}
|
|
77
|
+
"
|
|
78
|
+
{{ shopify_attributes }}
|
|
79
|
+
>
|
|
80
|
+
{%- if settings.link != blank -%}
|
|
81
|
+
<a
|
|
82
|
+
href="{{ settings.link }}"
|
|
83
|
+
class="rk-group__link"
|
|
84
|
+
{% if settings.open_in_new_tab %}target="_blank" rel="noopener"{% endif %}
|
|
85
|
+
></a>
|
|
86
|
+
{%- endif -%}
|
|
87
|
+
|
|
88
|
+
{%- if settings.background_image != blank or settings.toggle_overlay -%}
|
|
89
|
+
<div class="rk-group__media">
|
|
90
|
+
{%- if settings.background_image != blank -%}
|
|
91
|
+
{%- assign bg_position = settings.background_image_position | default: 'cover' -%}
|
|
92
|
+
<img
|
|
93
|
+
src="{{ settings.background_image | image_url: width: 1920 }}"
|
|
94
|
+
alt=""
|
|
95
|
+
loading="lazy"
|
|
96
|
+
class="rk-group__bg-image rk-group__bg-image--{{ bg_position }}"
|
|
97
|
+
width="{{ settings.background_image.width }}"
|
|
98
|
+
height="{{ settings.background_image.height }}"
|
|
99
|
+
>
|
|
100
|
+
{%- endif -%}
|
|
101
|
+
|
|
102
|
+
{%- if settings.toggle_overlay -%}
|
|
103
|
+
{%- assign overlay_color = settings.overlay_color | default: '#00000026' -%}
|
|
104
|
+
{%- assign overlay_style = settings.overlay_style | default: 'solid' -%}
|
|
105
|
+
<div
|
|
106
|
+
class="rk-group__overlay rk-group__overlay--{{ overlay_style }}"
|
|
107
|
+
style="
|
|
108
|
+
--rk-group-overlay-color: {{ overlay_color }};
|
|
109
|
+
--rk-group-overlay-color-end: {{ overlay_color | color_modify: 'alpha', 0 }};
|
|
110
|
+
{%- if overlay_style == 'gradient' -%}
|
|
111
|
+
--rk-group-overlay-direction: {{ settings.gradient_direction | default: 'to top' }};
|
|
112
|
+
{%- endif -%}
|
|
113
|
+
"
|
|
114
|
+
></div>
|
|
115
|
+
{%- endif -%}
|
|
116
|
+
</div>
|
|
117
|
+
{%- endif -%}
|
|
118
|
+
|
|
119
|
+
<div
|
|
120
|
+
class="
|
|
121
|
+
rk-group__content
|
|
122
|
+
rk-layout-style
|
|
123
|
+
{% if request.design_mode %}rk-group__content--design-mode{% endif %}
|
|
124
|
+
{% if settings.vertical_on_mobile and settings.content_direction == 'row' %} rk-group__content--mobile-column{% endif %}
|
|
125
|
+
"
|
|
126
|
+
style="{% render 'rk-layout-style', settings: settings %}"
|
|
127
|
+
>
|
|
128
|
+
{{- children -}}
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
package/src/mcp/server.js
CHANGED
|
@@ -45,6 +45,7 @@ import { FileMapper } from '../filesystem/FileMapper.js';
|
|
|
45
45
|
import { ConflictResolver } from '../filesystem/ConflictResolver.js';
|
|
46
46
|
import { FrameworkInstaller } from '../services/FrameworkInstaller.js';
|
|
47
47
|
import { generateNames } from '../utils/stringUtils.js';
|
|
48
|
+
import { REMOTE_PATHS } from '../config/constants.js';
|
|
48
49
|
|
|
49
50
|
import path from 'path';
|
|
50
51
|
import os from 'os';
|
|
@@ -206,7 +207,7 @@ async function handleInstallComponent(args) {
|
|
|
206
207
|
|
|
207
208
|
// Instala cada componente do manifesto
|
|
208
209
|
for (const nomeComponente of kit.componentes) {
|
|
209
|
-
const copiados = await baixarEDistribuir(
|
|
210
|
+
const copiados = await baixarEDistribuir(`${REMOTE_PATHS.COMPONENTS}/${nomeComponente}`, diretorioAtual);
|
|
210
211
|
totalArquivos += copiados;
|
|
211
212
|
totalComponentes++;
|
|
212
213
|
}
|
|
@@ -229,7 +230,7 @@ async function handleInstallComponent(args) {
|
|
|
229
230
|
|
|
230
231
|
} else {
|
|
231
232
|
// --- Instalação de Componente Individual ---
|
|
232
|
-
const caminhoRemoto =
|
|
233
|
+
const caminhoRemoto = `${REMOTE_PATHS.COMPONENTS}/${name}`;
|
|
233
234
|
const copiados = await baixarEDistribuir(caminhoRemoto, diretorioAtual);
|
|
234
235
|
|
|
235
236
|
return {
|
package/src/utils/logger.js
CHANGED
|
@@ -59,7 +59,7 @@ export class Logger {
|
|
|
59
59
|
console.log(bold(white(' ██║ ██║╚██████╔╝╚██████╔╝██║ ██╗')));
|
|
60
60
|
console.log(bold(white(' ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝')));
|
|
61
61
|
console.log('');
|
|
62
|
-
console.log(dim(' v1.3.
|
|
62
|
+
console.log(dim(' v1.3.13 — Rook UI'));
|
|
63
63
|
console.log('');
|
|
64
64
|
}
|
|
65
65
|
|