@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.
Files changed (2) hide show
  1. package/dist/layout.css +82 -7
  2. 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(3rem, 7vw, 5.5rem);
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-fill, minmax(var(--ok-card-min, 260px), 1fr));
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: clamp(2rem, 4vw, 3rem);
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 = card */
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: 1px solid color-mix(in oklab, var(--ok-text, var(--ion-text-color, #18181b)) 12%, transparent);
254
- border-radius: 8px;
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.21",
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",