@erplora/outfitkit 0.1.21 → 0.1.23
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/dist/layout.css +82 -7
- package/package.json +1 -1
package/dist/layout.css
CHANGED
|
@@ -18,7 +18,11 @@
|
|
|
18
18
|
|
|
19
19
|
:root {
|
|
20
20
|
--ok-grid-gap: clamp(0.75rem, 1.5vw, 1.25rem);
|
|
21
|
-
--ok-section-pad-y: clamp(
|
|
21
|
+
--ok-section-pad-y-compact: clamp(2rem, 4vw, 3rem);
|
|
22
|
+
--ok-section-pad-y-standard: clamp(2.5rem, 5vw, 4.5rem);
|
|
23
|
+
--ok-section-pad-y-featured: clamp(3.5rem, 6vw, 5.5rem);
|
|
24
|
+
--ok-section-pad-y: var(--ok-section-pad-y-standard);
|
|
25
|
+
--ok-section-head-space: clamp(1.75rem, 3vw, 2.5rem);
|
|
22
26
|
}
|
|
23
27
|
|
|
24
28
|
/* ===== Container (web pública; en dashboard NO: ahí el ancho lo da el split-pane) ===== */
|
|
@@ -53,10 +57,11 @@
|
|
|
53
57
|
min-width: 0;
|
|
54
58
|
}
|
|
55
59
|
|
|
56
|
-
/* Grid de cards/KPIs sin clases de breakpoint: se adapta solo al ancho útil.
|
|
60
|
+
/* Grid de cards/KPIs sin clases de breakpoint: se adapta solo al ancho útil.
|
|
61
|
+
auto-fit colapsa tracks vacíos para que 2–3 tarjetas sigan llenando el eje. */
|
|
57
62
|
.ok-grid-cards {
|
|
58
63
|
display: grid;
|
|
59
|
-
grid-template-columns: repeat(auto-
|
|
64
|
+
grid-template-columns: repeat(auto-fit, minmax(min(var(--ok-card-min, 16rem), 100%), 1fr));
|
|
60
65
|
gap: var(--ok-grid-gap);
|
|
61
66
|
}
|
|
62
67
|
|
|
@@ -116,15 +121,44 @@
|
|
|
116
121
|
font-family: var(--ok-font, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif);
|
|
117
122
|
}
|
|
118
123
|
|
|
124
|
+
/* Ritmo vertical compartido. .ok-section-content permite conservar un
|
|
125
|
+
.ok-container explícito dentro de superficies full-bleed. Los modificadores
|
|
126
|
+
pueden vivir en el propio bloque o en un wrapper y se heredan por tokens. */
|
|
127
|
+
.ok-section-content {
|
|
128
|
+
box-sizing: border-box;
|
|
129
|
+
padding-block: var(--ok-section-pad-y);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.ok-section--compact {
|
|
133
|
+
--ok-section-pad-y: var(--ok-section-pad-y-compact);
|
|
134
|
+
--ok-section-head-space: clamp(1.5rem, 2.5vw, 2rem);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.ok-section--featured {
|
|
138
|
+
--ok-section-pad-y: var(--ok-section-pad-y-featured);
|
|
139
|
+
--ok-section-head-space: clamp(2rem, 4vw, 3rem);
|
|
140
|
+
}
|
|
141
|
+
|
|
119
142
|
.ok-section--divider {
|
|
120
143
|
border-top: 1px solid color-mix(in oklab, var(--ok-text, var(--ion-text-color, #18181b)) 8%, transparent);
|
|
121
144
|
}
|
|
122
145
|
|
|
146
|
+
/* Superficie alterna para crear ritmo entre secciones de página. Funciona
|
|
147
|
+
tanto sobre .ok-section como sobre un wrapper full-bleed con .ok-container
|
|
148
|
+
en su interior. */
|
|
149
|
+
.ok-section--soft {
|
|
150
|
+
background: color-mix(
|
|
151
|
+
in oklab,
|
|
152
|
+
var(--ok-text, var(--ion-text-color, #18181b)) 2.5%,
|
|
153
|
+
var(--ok-surface, var(--ion-background-color, #fff))
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
|
|
123
157
|
.ok-section-head {
|
|
124
158
|
display: flex;
|
|
125
159
|
flex-direction: column;
|
|
126
160
|
gap: 0.9rem;
|
|
127
|
-
margin-bottom:
|
|
161
|
+
margin-bottom: var(--ok-section-head-space);
|
|
128
162
|
max-width: 56ch;
|
|
129
163
|
}
|
|
130
164
|
|
|
@@ -187,6 +221,10 @@
|
|
|
187
221
|
* propio sustituye al flex de ion-row; ::before sí renderiza en hosts
|
|
188
222
|
* con shadow DOM)
|
|
189
223
|
*
|
|
224
|
+
* En tablas editoriales, envolver con .ok-table-surface para obtener una
|
|
225
|
+
* superficie común sin añadir bordes de página. .ok-table-group identifica
|
|
226
|
+
* filas de sección que no deben convertirse en superficies independientes.
|
|
227
|
+
*
|
|
190
228
|
* Tokens: --ok-table-cols (columnas del markup no-<table>; por defecto
|
|
191
229
|
* partes iguales) · --ok-table-label-w (ancho de la etiqueta en móvil, 45%).
|
|
192
230
|
* Celdas sin data-title (p.ej. acciones) ocupan el ancho completo en móvil.
|
|
@@ -203,6 +241,24 @@ table.ok-table-stack {
|
|
|
203
241
|
border-collapse: collapse;
|
|
204
242
|
}
|
|
205
243
|
|
|
244
|
+
/* Marco editorial reutilizable. Usa una línea óptica muy suave en escritorio
|
|
245
|
+
* y desaparece en móvil, donde las filas ya construyen su propia superficie. */
|
|
246
|
+
.ok-table-surface {
|
|
247
|
+
width: 100%;
|
|
248
|
+
overflow-x: auto;
|
|
249
|
+
background: var(--ok-surface, var(--ion-card-background, #fff));
|
|
250
|
+
border-radius: 12px;
|
|
251
|
+
box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--ok-text, var(--ion-text-color, #18181b)) 6%, transparent);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.ok-table-surface > .ok-table-stack {
|
|
255
|
+
margin: 0;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.ok-table-surface > .ok-table-stack :is(tbody tr:last-child td, .ok-trow:last-child .ok-tcell) {
|
|
259
|
+
border-bottom: 0;
|
|
260
|
+
}
|
|
261
|
+
|
|
206
262
|
/* Markup no-<table>: cabecera y filas como grid de columnas iguales */
|
|
207
263
|
.ok-table-stack > .ok-thead,
|
|
208
264
|
.ok-table-stack > .ok-trow {
|
|
@@ -230,6 +286,13 @@ table.ok-table-stack {
|
|
|
230
286
|
}
|
|
231
287
|
|
|
232
288
|
@media (max-width: 767px) {
|
|
289
|
+
.ok-table-surface {
|
|
290
|
+
overflow: visible;
|
|
291
|
+
background: transparent;
|
|
292
|
+
border-radius: 0;
|
|
293
|
+
box-shadow: none;
|
|
294
|
+
}
|
|
295
|
+
|
|
233
296
|
/* La tabla nativa deja de comportarse como tabla */
|
|
234
297
|
table.ok-table-stack,
|
|
235
298
|
table.ok-table-stack :is(thead, tbody, tfoot, tr, th, td),
|
|
@@ -248,12 +311,24 @@ table.ok-table-stack {
|
|
|
248
311
|
border: 0;
|
|
249
312
|
}
|
|
250
313
|
|
|
251
|
-
/* Fila =
|
|
314
|
+
/* Fila = superficie ligera. Sin borde: la separación procede del fondo,
|
|
315
|
+
la sombra mínima y los divisores internos, evitando superficies anidadas. */
|
|
252
316
|
.ok-table-stack :is(tbody tr, .ok-trow) {
|
|
253
|
-
border:
|
|
254
|
-
border-radius:
|
|
317
|
+
border: 0;
|
|
318
|
+
border-radius: 12px;
|
|
255
319
|
margin-bottom: 0.75rem;
|
|
256
320
|
overflow: hidden;
|
|
321
|
+
background: var(--ok-surface, var(--ion-card-background, #fff));
|
|
322
|
+
box-shadow: 0 1px 3px color-mix(in oklab, var(--ok-text, var(--ion-text-color, #18181b)) 9%, transparent);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
/* Una fila de grupo es un rótulo editorial, no otra card de datos. */
|
|
326
|
+
.ok-table-stack :is(tbody tr.ok-table-group, .ok-trow.ok-table-group) {
|
|
327
|
+
margin: 1.25rem 0 0.35rem;
|
|
328
|
+
border-radius: 0;
|
|
329
|
+
overflow: visible;
|
|
330
|
+
background: transparent;
|
|
331
|
+
box-shadow: none;
|
|
257
332
|
}
|
|
258
333
|
|
|
259
334
|
/* Celda = par etiqueta/valor (display/width explícitos: pisan el :host
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@erplora/outfitkit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.23",
|
|
4
4
|
"description": "OutfitKit — librería de Web Components (Lit) que CONSTRUYE lo que Ionic no tiene (tree, data-table rica, inline-feedback, kpi/stat, stepper/wizard, calendar, kanban…) sobre primitivos de Ionic. Ionic es la base; OutfitKit cubre los huecos. npm + CDN, imports individuales, CSP-safe. Tema vía tokens --ok-* (fallback a --ion-*).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|