venuekit 0.10.1 → 0.10.2
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/README.md +2 -1
- package/dist/{chunk-4FCSKCFJ.js → chunk-QQQM6AFF.js} +53 -23
- package/dist/{chunk-LFRA3GBP.cjs → chunk-Z47OPTEP.cjs} +54 -24
- package/dist/index.cjs +12 -2
- package/dist/index.d.cts +8 -3
- package/dist/index.d.ts +8 -3
- package/dist/index.js +11 -1
- package/dist/{place-types-CeTjPHTF.d.cts → place-types-Dc0eabAi.d.cts} +12 -1
- package/dist/{place-types-CeTjPHTF.d.ts → place-types-Dc0eabAi.d.ts} +12 -1
- package/dist/react.cjs +396 -244
- package/dist/react.d.cts +16 -4
- package/dist/react.d.ts +16 -4
- package/dist/react.js +212 -60
- package/package.json +1 -1
package/dist/react.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as Layout, S as SellableUnit, f as LockViolation,
|
|
1
|
+
import { a as Layout, S as SellableUnit, f as LockViolation, w as PieceKind, F as PlanSummary, A as PlaceTypeOption } from './place-types-Dc0eabAi.cjs';
|
|
2
2
|
import { CSSProperties, ReactElement, ReactNode } from 'react';
|
|
3
3
|
import 'zod';
|
|
4
4
|
|
|
@@ -35,6 +35,10 @@ type Messages = {
|
|
|
35
35
|
mapLabel: string;
|
|
36
36
|
zoomIn: string;
|
|
37
37
|
zoomOut: string;
|
|
38
|
+
/** Con demasiados lugares a la vista no hay un botón por lugar: uno solo acerca el mapa. */
|
|
39
|
+
zoomToChoose: string;
|
|
40
|
+
/** Mapa embebido: la rueda sola hace scroll de la página; para acercar hace falta Ctrl. */
|
|
41
|
+
wheelHint: string;
|
|
38
42
|
overviewMapLabel: string;
|
|
39
43
|
overviewList: string;
|
|
40
44
|
soldOut: string;
|
|
@@ -145,7 +149,7 @@ declare function selectionSummary(units: SellableUnit[], ids: readonly string[],
|
|
|
145
149
|
* las lee `<VenueCanvas>` con `getComputedStyle` y se las pasa al render, así
|
|
146
150
|
* que el mapa sigue al tema igual que el resto.
|
|
147
151
|
*/
|
|
148
|
-
declare const PICKER_CSS = "\n:where(.vk-root){\n --vk-fg:#0f172a;\n --vk-muted:#64748b;\n --vk-line:#e2e8f0;\n --vk-bg:#ffffff;\n --vk-surface:#f8fafc;\n --vk-accent:#0f172a;\n --vk-accent-fg:#ffffff;\n --vk-radius:8px;\n --vk-radius-lg:12px;\n --vk-font:14px/1.45 system-ui,-apple-system,sans-serif;\n /* S\u00F3lo las dibuja el lienzo (y la leyenda). */\n --vk-taken:#cbd5e1;\n --vk-taken-stroke:#94a3b8;\n --vk-held-stroke:#b45309;\n --vk-shape:#94a3b8;\n --vk-shape-fill:#e2e8f0;\n --vk-unassigned:#9ca3af;\n --vk-zone-alpha:38;\n /* Mapa del comprador: tuya, vendida, numero sobre la butaca y referencias. */\n --vk-zone-alpha-selected:66;\n --vk-mine:#ffffff;\n --vk-sold:#2a2a31;\n --vk-sold-stroke:#3a3a44;\n --vk-sold-fg:#6a6a74;\n --vk-unit-fg:#0b0b0d;\n --vk-landmark:#23232a;\n --vk-landmark-stroke:#34343c;\n --vk-landmark-fg:#d6d6dc;\n}\n.vk-root{display:flex;flex-direction:column;gap:12px;font:var(--vk-font);\n color:var(--vk-fg);background:var(--vk-bg);position:relative;box-sizing:border-box;\n /* Sin alto propio: embebido en la pagina de un host, mide lo que mide su\n contenido. El alto de pantalla completa esta detras de data-fill.\n (Sin acentos graves en este comentario: vive adentro de un template literal\n de TypeScript y cada uno lo cortaria al medio.) */\n }\n.vk-root[data-fill=\"true\"]{height:100vh;height:100dvh;max-height:100dvh}\n.vk-root *{box-sizing:border-box}\n/* El alto sale de la proporcion del plano (--vk-plan-ratio, lo pone el\n componente), acotado para que un plano muy alto no empuje la barra fuera\n de la pantalla ni uno muy apaisado quede en una tira. */\n.vk-map{position:relative;flex:none;width:100%;aspect-ratio:var(--vk-plan-ratio, 3 / 2);\n min-height:300px;max-height:70vh;background:var(--vk-surface);\n border:1px solid var(--vk-line);border-radius:var(--vk-radius-lg);overflow:hidden;touch-action:none}\n.vk-root[data-fill=\"true\"] .vk-map{flex:1;aspect-ratio:auto;min-height:0;max-height:none}\n.vk-canvas{display:block;width:100%;height:100%}\n.vk-a11y{position:absolute;inset:0;pointer-events:none}\n.vk-seat{position:absolute;transform:translate(-50%,-50%);padding:0;margin:0;border:0;background:transparent;\n border-radius:50%;cursor:pointer;color:transparent;overflow:hidden}\n.vk-seat:focus-visible{outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-zoom{position:absolute;right:8px;bottom:8px;display:flex;flex-direction:column;gap:4px}\n.vk-zoom button{width:36px;height:36px;border:1px solid var(--vk-line);background:var(--vk-bg);\n color:var(--vk-fg);border-radius:var(--vk-radius);font-size:16px;line-height:1;cursor:pointer}\n.vk-type{margin:0;display:flex;align-items:center;gap:8px;font-weight:600}\n.vk-legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 16px;\n color:var(--vk-muted);font-size:13px}\n.vk-legend li{display:flex;align-items:center;gap:6px}\n.vk-dot{width:14px;height:14px;border-radius:50%;flex:none;box-sizing:border-box}\n.vk-dot[data-state=\"selected\"]{background:var(--vk-mine);border:3px solid var(--vk-accent)}\n.vk-dot[data-state=\"taken\"]{background:var(--vk-sold);border:1px solid var(--vk-sold-stroke)}\n.vk-cta{border:1px solid var(--vk-accent);background:var(--vk-accent);color:var(--vk-accent-fg);\n border-radius:var(--vk-radius);padding:10px 16px;cursor:pointer;font-size:14px;font-weight:600;min-height:44px}\n.vk-cta:disabled{opacity:.5;cursor:default}\n.vk-bar{flex:none;display:flex;align-items:center;gap:12px;padding:12px;\n border:1px solid var(--vk-line);border-radius:var(--vk-radius-lg);background:var(--vk-bg)}\n.vk-bar-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}\n.vk-bar-summary{font-weight:600}\n.vk-bar-total{font-variant-numeric:tabular-nums}\n.vk-bar-hold{color:var(--vk-muted);font-size:13px}\n.vk-notice{margin:0;padding:8px 12px;border-radius:var(--vk-radius);background:var(--vk-surface);\n border:1px solid var(--vk-line);color:var(--vk-fg);font-size:13px}\n.vk-notice:empty{display:none}\n.vk-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n/* El mapa entero: debajo, un boton por entrada (lo que usa el teclado y el lector). */\n.vk-types{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}\n.vk-type-btn{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:10px 14px;\n border:1px solid var(--vk-line);border-radius:var(--vk-radius);background:var(--vk-bg);color:var(--vk-fg);\n font:inherit;text-align:left;cursor:pointer}\n.vk-type-btn:hover{border-color:var(--vk-accent)}\n.vk-type-btn:focus-visible{outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-type-btn[aria-disabled=\"true\"]{cursor:default;opacity:.55}\n.vk-type-btn[aria-disabled=\"true\"]:hover{border-color:var(--vk-line)}\n.vk-type-name{flex:1;min-width:0;font-weight:600;overflow-wrap:anywhere}\n.vk-type-price{flex:none;font-variant-numeric:tabular-nums;color:var(--vk-muted)}\n.vk-type-out{flex:none;font-size:13px;font-weight:600;color:var(--vk-muted)}\n/* Embebido en una tarjeta del host: sin borde propio, encabezado arriba y leyenda abajo. */\n.vk-root[data-embedded=\"true\"]{gap:0}\n.vk-root[data-embedded=\"true\"] .vk-map{border:0;border-radius:0}\n.vk-root[data-embedded=\"true\"] .vk-legend{padding:12px 16px;border-top:1px solid var(--vk-line)}\n.vk-root[data-embedded=\"true\"] .vk-notice{margin:8px 14px 0}\n.vk-head{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-height:52px;padding:8px 14px;\n border-bottom:1px solid var(--vk-line)}\n.vk-back{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border:1px solid var(--vk-line);\n border-radius:var(--vk-radius);background:transparent;color:var(--vk-fg);font:inherit;cursor:pointer}\n.vk-back:focus-visible{outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-head-title{display:inline-flex;align-items:center;gap:8px;min-width:0;font-weight:700;overflow-wrap:anywhere}\n.vk-head-hint{min-width:0;color:var(--vk-muted);font-size:13px}\n/* Con hideList la lista sigue para el teclado y el lector, oculta hasta que un boton toma el foco. */\n.vk-types[data-hidden=\"true\"]:not(:focus-within){position:absolute;width:1px;height:1px;margin:-1px;padding:0;\n overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n.vk-types[data-hidden=\"true\"]:focus-within{padding:12px 14px;border-top:1px solid var(--vk-line)}\n.vk-type-btn[data-selected=\"true\"]{border-color:var(--vk-accent)}\n";
|
|
152
|
+
declare const PICKER_CSS = "\n:where(.vk-root){\n --vk-fg:#0f172a;\n --vk-muted:#64748b;\n --vk-line:#e2e8f0;\n --vk-bg:#ffffff;\n --vk-surface:#f8fafc;\n --vk-accent:#0f172a;\n --vk-accent-fg:#ffffff;\n --vk-radius:8px;\n --vk-radius-lg:12px;\n --vk-font:14px/1.45 system-ui,-apple-system,sans-serif;\n /* S\u00F3lo las dibuja el lienzo (y la leyenda). */\n --vk-taken:#cbd5e1;\n --vk-taken-stroke:#94a3b8;\n --vk-held-stroke:#b45309;\n --vk-shape:#94a3b8;\n --vk-shape-fill:#e2e8f0;\n --vk-unassigned:#9ca3af;\n --vk-zone-alpha:38;\n /* Mapa del comprador: tuya, vendida, numero sobre la butaca y referencias. */\n --vk-zone-alpha-selected:66;\n --vk-mine:#ffffff;\n --vk-sold:#2a2a31;\n --vk-sold-stroke:#3a3a44;\n --vk-sold-fg:#6a6a74;\n --vk-unit-fg:#0b0b0d;\n --vk-landmark:#23232a;\n --vk-landmark-stroke:#34343c;\n --vk-landmark-fg:#d6d6dc;\n}\n.vk-root{display:flex;flex-direction:column;gap:12px;font:var(--vk-font);\n color:var(--vk-fg);background:var(--vk-bg);position:relative;box-sizing:border-box;\n /* Sin alto propio: embebido en la pagina de un host, mide lo que mide su\n contenido. El alto de pantalla completa esta detras de data-fill.\n (Sin acentos graves en este comentario: vive adentro de un template literal\n de TypeScript y cada uno lo cortaria al medio.) */\n }\n.vk-root[data-fill=\"true\"]{height:100vh;height:100dvh;max-height:100dvh}\n.vk-root *{box-sizing:border-box}\n/* El alto sale de la proporcion del plano (--vk-plan-ratio, lo pone el\n componente), acotado para que un plano muy alto no empuje la barra fuera\n de la pantalla ni uno muy apaisado quede en una tira. */\n.vk-map{position:relative;flex:none;width:100%;aspect-ratio:var(--vk-plan-ratio, 3 / 2);\n min-height:300px;max-height:70vh;background:var(--vk-surface);\n border:1px solid var(--vk-line);border-radius:var(--vk-radius-lg);overflow:hidden;touch-action:none}\n.vk-root[data-fill=\"true\"] .vk-map{flex:1;aspect-ratio:auto;min-height:0;max-height:none}\n.vk-map[data-cooperative=\"true\"]{touch-action:pan-y}\n.vk-canvas{display:block;width:100%;height:100%}\n.vk-a11y{position:absolute;inset:0;pointer-events:none}\n.vk-seat{position:absolute;transform:translate(-50%,-50%);padding:0;margin:0;border:0;background:transparent;\n border-radius:50%;cursor:pointer;color:transparent;overflow:hidden}\n.vk-seat:focus-visible{outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-choose{position:absolute;left:8px;top:8px;max-width:calc(100% - 64px);min-height:44px;padding:8px 12px;\n border:1px solid var(--vk-line);border-radius:var(--vk-radius);background:var(--vk-bg);color:var(--vk-fg);\n font:inherit;font-size:14px;text-align:left;cursor:pointer;opacity:0}\n.vk-choose:focus{opacity:1;pointer-events:auto;outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-map-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;max-width:calc(100% - 32px);\n padding:8px 12px;border-radius:var(--vk-radius);background:rgba(0,0,0,.72);color:#fff;font-size:14px;\n text-align:center;pointer-events:none}\n.vk-zoom{position:absolute;right:8px;bottom:8px;display:flex;flex-direction:column;gap:4px}\n.vk-zoom button{width:36px;height:36px;border:1px solid var(--vk-line);background:var(--vk-bg);\n color:var(--vk-fg);border-radius:var(--vk-radius);font-size:16px;line-height:1;cursor:pointer}\n.vk-type{margin:0;display:flex;align-items:center;gap:8px;font-weight:600}\n.vk-legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 16px;\n color:var(--vk-muted);font-size:13px}\n.vk-legend li{display:flex;align-items:center;gap:6px}\n.vk-dot{width:14px;height:14px;border-radius:50%;flex:none;box-sizing:border-box}\n.vk-dot[data-state=\"selected\"]{background:var(--vk-mine);border:3px solid var(--vk-accent)}\n.vk-dot[data-state=\"taken\"]{background:var(--vk-sold);border:1px solid var(--vk-sold-stroke)}\n.vk-cta{border:1px solid var(--vk-accent);background:var(--vk-accent);color:var(--vk-accent-fg);\n border-radius:var(--vk-radius);padding:10px 16px;cursor:pointer;font-size:14px;font-weight:600;min-height:44px}\n.vk-cta:disabled{opacity:.5;cursor:default}\n.vk-bar{flex:none;display:flex;align-items:center;gap:12px;padding:12px;\n border:1px solid var(--vk-line);border-radius:var(--vk-radius-lg);background:var(--vk-bg)}\n.vk-bar-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}\n.vk-bar-summary{font-weight:600}\n.vk-bar-total{font-variant-numeric:tabular-nums}\n.vk-bar-hold{color:var(--vk-muted);font-size:13px}\n.vk-notice{margin:0;padding:8px 12px;border-radius:var(--vk-radius);background:var(--vk-surface);\n border:1px solid var(--vk-line);color:var(--vk-fg);font-size:13px}\n.vk-notice:empty{display:none}\n.vk-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n/* El mapa entero: debajo, un boton por entrada (lo que usa el teclado y el lector). */\n.vk-types{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}\n.vk-type-btn{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:10px 14px;\n border:1px solid var(--vk-line);border-radius:var(--vk-radius);background:var(--vk-bg);color:var(--vk-fg);\n font:inherit;text-align:left;cursor:pointer}\n.vk-type-btn:hover{border-color:var(--vk-accent)}\n.vk-type-btn:focus-visible{outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-type-btn[aria-disabled=\"true\"]{cursor:default;opacity:.55}\n.vk-type-btn[aria-disabled=\"true\"]:hover{border-color:var(--vk-line)}\n.vk-type-name{flex:1;min-width:0;font-weight:600;overflow-wrap:anywhere}\n.vk-type-price{flex:none;font-variant-numeric:tabular-nums;color:var(--vk-muted)}\n.vk-type-out{flex:none;font-size:13px;font-weight:600;color:var(--vk-muted)}\n/* Embebido en una tarjeta del host: sin borde propio, encabezado arriba y leyenda abajo. */\n.vk-root[data-embedded=\"true\"]{gap:0}\n.vk-root[data-embedded=\"true\"] .vk-map{border:0;border-radius:0}\n.vk-root[data-embedded=\"true\"] .vk-legend{padding:12px 16px;border-top:1px solid var(--vk-line)}\n.vk-root[data-embedded=\"true\"] .vk-notice{margin:8px 14px 0}\n.vk-head{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-height:52px;padding:8px 14px;\n border-bottom:1px solid var(--vk-line)}\n.vk-back{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border:1px solid var(--vk-line);\n border-radius:var(--vk-radius);background:transparent;color:var(--vk-fg);font:inherit;cursor:pointer}\n.vk-back:focus-visible{outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-head-title{display:inline-flex;align-items:center;gap:8px;min-width:0;font-weight:700;overflow-wrap:anywhere}\n.vk-head-hint{min-width:0;color:var(--vk-muted);font-size:13px}\n/* Con hideList la lista sigue para el teclado y el lector, oculta hasta que un boton toma el foco. */\n.vk-types[data-hidden=\"true\"]:not(:focus-within){position:absolute;width:1px;height:1px;margin:-1px;padding:0;\n overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n.vk-types[data-hidden=\"true\"]:focus-within{padding:12px 14px;border-top:1px solid var(--vk-line)}\n.vk-type-btn[data-selected=\"true\"]{border-color:var(--vk-accent)}\n";
|
|
149
153
|
|
|
150
154
|
type VenueOverviewPlaceType = {
|
|
151
155
|
ref: string;
|
|
@@ -376,6 +380,10 @@ type DesignerMessages = {
|
|
|
376
380
|
trimToCapacityLabel: string;
|
|
377
381
|
trimPartial: string;
|
|
378
382
|
rejectCapacity: string;
|
|
383
|
+
/** El cambio dejaría el plano fuera de los topes del esquema (una pieza demasiado grande, coordenadas absurdas). */
|
|
384
|
+
rejectInvalid: string;
|
|
385
|
+
/** El cambio pasaría el máximo de lugares de un plano (`MAX_UNITS`). */
|
|
386
|
+
rejectTooManyUnits: string;
|
|
379
387
|
zonesTitle: string;
|
|
380
388
|
zonesHint: string;
|
|
381
389
|
acceptsZone: string;
|
|
@@ -434,10 +442,14 @@ type CapacityRejection = {
|
|
|
434
442
|
capacity: number;
|
|
435
443
|
placed: number;
|
|
436
444
|
};
|
|
437
|
-
/**
|
|
445
|
+
/**
|
|
446
|
+
* Por qué no se aplicó un cambio: lo vendido (`violations`), el cupo de una entrada
|
|
447
|
+
* (`capacity`) o un plano que quedaría inválido (`invalid`, el detalle del esquema, para el host).
|
|
448
|
+
*/
|
|
438
449
|
type DesignerRejection = {
|
|
439
450
|
violations: LockViolation[];
|
|
440
451
|
capacity?: CapacityRejection[];
|
|
452
|
+
invalid?: string;
|
|
441
453
|
};
|
|
442
454
|
|
|
443
455
|
/**
|
|
@@ -579,6 +591,6 @@ type UseImageResult = {
|
|
|
579
591
|
*/
|
|
580
592
|
declare function useImage(src: string | null): UseImageResult;
|
|
581
593
|
|
|
582
|
-
declare const VERSION = "0.10.
|
|
594
|
+
declare const VERSION = "0.10.2";
|
|
583
595
|
|
|
584
596
|
export { type CapacityRejection, DESIGNER_CSS, type DesignerHostApi, type DesignerMessages, type DesignerOverrides, type DesignerRejection, type MessageOverrides, type Messages, PICKER_CSS, type PlacedCount, SeatMap, type SeatMapPlaceType, type SeatMapProps, type UseImageResult, VERSION, VenueDesigner, type VenueDesignerProps, VenueOverview, type VenueOverviewPlaceType, type VenueOverviewProps, designerEn, designerEs, en, es, format, mergeDesignerMessages, mergeMessages, selectionSummary, useImage };
|
package/dist/react.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as Layout, S as SellableUnit, f as LockViolation,
|
|
1
|
+
import { a as Layout, S as SellableUnit, f as LockViolation, w as PieceKind, F as PlanSummary, A as PlaceTypeOption } from './place-types-Dc0eabAi.js';
|
|
2
2
|
import { CSSProperties, ReactElement, ReactNode } from 'react';
|
|
3
3
|
import 'zod';
|
|
4
4
|
|
|
@@ -35,6 +35,10 @@ type Messages = {
|
|
|
35
35
|
mapLabel: string;
|
|
36
36
|
zoomIn: string;
|
|
37
37
|
zoomOut: string;
|
|
38
|
+
/** Con demasiados lugares a la vista no hay un botón por lugar: uno solo acerca el mapa. */
|
|
39
|
+
zoomToChoose: string;
|
|
40
|
+
/** Mapa embebido: la rueda sola hace scroll de la página; para acercar hace falta Ctrl. */
|
|
41
|
+
wheelHint: string;
|
|
38
42
|
overviewMapLabel: string;
|
|
39
43
|
overviewList: string;
|
|
40
44
|
soldOut: string;
|
|
@@ -145,7 +149,7 @@ declare function selectionSummary(units: SellableUnit[], ids: readonly string[],
|
|
|
145
149
|
* las lee `<VenueCanvas>` con `getComputedStyle` y se las pasa al render, así
|
|
146
150
|
* que el mapa sigue al tema igual que el resto.
|
|
147
151
|
*/
|
|
148
|
-
declare const PICKER_CSS = "\n:where(.vk-root){\n --vk-fg:#0f172a;\n --vk-muted:#64748b;\n --vk-line:#e2e8f0;\n --vk-bg:#ffffff;\n --vk-surface:#f8fafc;\n --vk-accent:#0f172a;\n --vk-accent-fg:#ffffff;\n --vk-radius:8px;\n --vk-radius-lg:12px;\n --vk-font:14px/1.45 system-ui,-apple-system,sans-serif;\n /* S\u00F3lo las dibuja el lienzo (y la leyenda). */\n --vk-taken:#cbd5e1;\n --vk-taken-stroke:#94a3b8;\n --vk-held-stroke:#b45309;\n --vk-shape:#94a3b8;\n --vk-shape-fill:#e2e8f0;\n --vk-unassigned:#9ca3af;\n --vk-zone-alpha:38;\n /* Mapa del comprador: tuya, vendida, numero sobre la butaca y referencias. */\n --vk-zone-alpha-selected:66;\n --vk-mine:#ffffff;\n --vk-sold:#2a2a31;\n --vk-sold-stroke:#3a3a44;\n --vk-sold-fg:#6a6a74;\n --vk-unit-fg:#0b0b0d;\n --vk-landmark:#23232a;\n --vk-landmark-stroke:#34343c;\n --vk-landmark-fg:#d6d6dc;\n}\n.vk-root{display:flex;flex-direction:column;gap:12px;font:var(--vk-font);\n color:var(--vk-fg);background:var(--vk-bg);position:relative;box-sizing:border-box;\n /* Sin alto propio: embebido en la pagina de un host, mide lo que mide su\n contenido. El alto de pantalla completa esta detras de data-fill.\n (Sin acentos graves en este comentario: vive adentro de un template literal\n de TypeScript y cada uno lo cortaria al medio.) */\n }\n.vk-root[data-fill=\"true\"]{height:100vh;height:100dvh;max-height:100dvh}\n.vk-root *{box-sizing:border-box}\n/* El alto sale de la proporcion del plano (--vk-plan-ratio, lo pone el\n componente), acotado para que un plano muy alto no empuje la barra fuera\n de la pantalla ni uno muy apaisado quede en una tira. */\n.vk-map{position:relative;flex:none;width:100%;aspect-ratio:var(--vk-plan-ratio, 3 / 2);\n min-height:300px;max-height:70vh;background:var(--vk-surface);\n border:1px solid var(--vk-line);border-radius:var(--vk-radius-lg);overflow:hidden;touch-action:none}\n.vk-root[data-fill=\"true\"] .vk-map{flex:1;aspect-ratio:auto;min-height:0;max-height:none}\n.vk-canvas{display:block;width:100%;height:100%}\n.vk-a11y{position:absolute;inset:0;pointer-events:none}\n.vk-seat{position:absolute;transform:translate(-50%,-50%);padding:0;margin:0;border:0;background:transparent;\n border-radius:50%;cursor:pointer;color:transparent;overflow:hidden}\n.vk-seat:focus-visible{outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-zoom{position:absolute;right:8px;bottom:8px;display:flex;flex-direction:column;gap:4px}\n.vk-zoom button{width:36px;height:36px;border:1px solid var(--vk-line);background:var(--vk-bg);\n color:var(--vk-fg);border-radius:var(--vk-radius);font-size:16px;line-height:1;cursor:pointer}\n.vk-type{margin:0;display:flex;align-items:center;gap:8px;font-weight:600}\n.vk-legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 16px;\n color:var(--vk-muted);font-size:13px}\n.vk-legend li{display:flex;align-items:center;gap:6px}\n.vk-dot{width:14px;height:14px;border-radius:50%;flex:none;box-sizing:border-box}\n.vk-dot[data-state=\"selected\"]{background:var(--vk-mine);border:3px solid var(--vk-accent)}\n.vk-dot[data-state=\"taken\"]{background:var(--vk-sold);border:1px solid var(--vk-sold-stroke)}\n.vk-cta{border:1px solid var(--vk-accent);background:var(--vk-accent);color:var(--vk-accent-fg);\n border-radius:var(--vk-radius);padding:10px 16px;cursor:pointer;font-size:14px;font-weight:600;min-height:44px}\n.vk-cta:disabled{opacity:.5;cursor:default}\n.vk-bar{flex:none;display:flex;align-items:center;gap:12px;padding:12px;\n border:1px solid var(--vk-line);border-radius:var(--vk-radius-lg);background:var(--vk-bg)}\n.vk-bar-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}\n.vk-bar-summary{font-weight:600}\n.vk-bar-total{font-variant-numeric:tabular-nums}\n.vk-bar-hold{color:var(--vk-muted);font-size:13px}\n.vk-notice{margin:0;padding:8px 12px;border-radius:var(--vk-radius);background:var(--vk-surface);\n border:1px solid var(--vk-line);color:var(--vk-fg);font-size:13px}\n.vk-notice:empty{display:none}\n.vk-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n/* El mapa entero: debajo, un boton por entrada (lo que usa el teclado y el lector). */\n.vk-types{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}\n.vk-type-btn{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:10px 14px;\n border:1px solid var(--vk-line);border-radius:var(--vk-radius);background:var(--vk-bg);color:var(--vk-fg);\n font:inherit;text-align:left;cursor:pointer}\n.vk-type-btn:hover{border-color:var(--vk-accent)}\n.vk-type-btn:focus-visible{outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-type-btn[aria-disabled=\"true\"]{cursor:default;opacity:.55}\n.vk-type-btn[aria-disabled=\"true\"]:hover{border-color:var(--vk-line)}\n.vk-type-name{flex:1;min-width:0;font-weight:600;overflow-wrap:anywhere}\n.vk-type-price{flex:none;font-variant-numeric:tabular-nums;color:var(--vk-muted)}\n.vk-type-out{flex:none;font-size:13px;font-weight:600;color:var(--vk-muted)}\n/* Embebido en una tarjeta del host: sin borde propio, encabezado arriba y leyenda abajo. */\n.vk-root[data-embedded=\"true\"]{gap:0}\n.vk-root[data-embedded=\"true\"] .vk-map{border:0;border-radius:0}\n.vk-root[data-embedded=\"true\"] .vk-legend{padding:12px 16px;border-top:1px solid var(--vk-line)}\n.vk-root[data-embedded=\"true\"] .vk-notice{margin:8px 14px 0}\n.vk-head{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-height:52px;padding:8px 14px;\n border-bottom:1px solid var(--vk-line)}\n.vk-back{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border:1px solid var(--vk-line);\n border-radius:var(--vk-radius);background:transparent;color:var(--vk-fg);font:inherit;cursor:pointer}\n.vk-back:focus-visible{outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-head-title{display:inline-flex;align-items:center;gap:8px;min-width:0;font-weight:700;overflow-wrap:anywhere}\n.vk-head-hint{min-width:0;color:var(--vk-muted);font-size:13px}\n/* Con hideList la lista sigue para el teclado y el lector, oculta hasta que un boton toma el foco. */\n.vk-types[data-hidden=\"true\"]:not(:focus-within){position:absolute;width:1px;height:1px;margin:-1px;padding:0;\n overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n.vk-types[data-hidden=\"true\"]:focus-within{padding:12px 14px;border-top:1px solid var(--vk-line)}\n.vk-type-btn[data-selected=\"true\"]{border-color:var(--vk-accent)}\n";
|
|
152
|
+
declare const PICKER_CSS = "\n:where(.vk-root){\n --vk-fg:#0f172a;\n --vk-muted:#64748b;\n --vk-line:#e2e8f0;\n --vk-bg:#ffffff;\n --vk-surface:#f8fafc;\n --vk-accent:#0f172a;\n --vk-accent-fg:#ffffff;\n --vk-radius:8px;\n --vk-radius-lg:12px;\n --vk-font:14px/1.45 system-ui,-apple-system,sans-serif;\n /* S\u00F3lo las dibuja el lienzo (y la leyenda). */\n --vk-taken:#cbd5e1;\n --vk-taken-stroke:#94a3b8;\n --vk-held-stroke:#b45309;\n --vk-shape:#94a3b8;\n --vk-shape-fill:#e2e8f0;\n --vk-unassigned:#9ca3af;\n --vk-zone-alpha:38;\n /* Mapa del comprador: tuya, vendida, numero sobre la butaca y referencias. */\n --vk-zone-alpha-selected:66;\n --vk-mine:#ffffff;\n --vk-sold:#2a2a31;\n --vk-sold-stroke:#3a3a44;\n --vk-sold-fg:#6a6a74;\n --vk-unit-fg:#0b0b0d;\n --vk-landmark:#23232a;\n --vk-landmark-stroke:#34343c;\n --vk-landmark-fg:#d6d6dc;\n}\n.vk-root{display:flex;flex-direction:column;gap:12px;font:var(--vk-font);\n color:var(--vk-fg);background:var(--vk-bg);position:relative;box-sizing:border-box;\n /* Sin alto propio: embebido en la pagina de un host, mide lo que mide su\n contenido. El alto de pantalla completa esta detras de data-fill.\n (Sin acentos graves en este comentario: vive adentro de un template literal\n de TypeScript y cada uno lo cortaria al medio.) */\n }\n.vk-root[data-fill=\"true\"]{height:100vh;height:100dvh;max-height:100dvh}\n.vk-root *{box-sizing:border-box}\n/* El alto sale de la proporcion del plano (--vk-plan-ratio, lo pone el\n componente), acotado para que un plano muy alto no empuje la barra fuera\n de la pantalla ni uno muy apaisado quede en una tira. */\n.vk-map{position:relative;flex:none;width:100%;aspect-ratio:var(--vk-plan-ratio, 3 / 2);\n min-height:300px;max-height:70vh;background:var(--vk-surface);\n border:1px solid var(--vk-line);border-radius:var(--vk-radius-lg);overflow:hidden;touch-action:none}\n.vk-root[data-fill=\"true\"] .vk-map{flex:1;aspect-ratio:auto;min-height:0;max-height:none}\n.vk-map[data-cooperative=\"true\"]{touch-action:pan-y}\n.vk-canvas{display:block;width:100%;height:100%}\n.vk-a11y{position:absolute;inset:0;pointer-events:none}\n.vk-seat{position:absolute;transform:translate(-50%,-50%);padding:0;margin:0;border:0;background:transparent;\n border-radius:50%;cursor:pointer;color:transparent;overflow:hidden}\n.vk-seat:focus-visible{outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-choose{position:absolute;left:8px;top:8px;max-width:calc(100% - 64px);min-height:44px;padding:8px 12px;\n border:1px solid var(--vk-line);border-radius:var(--vk-radius);background:var(--vk-bg);color:var(--vk-fg);\n font:inherit;font-size:14px;text-align:left;cursor:pointer;opacity:0}\n.vk-choose:focus{opacity:1;pointer-events:auto;outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-map-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;max-width:calc(100% - 32px);\n padding:8px 12px;border-radius:var(--vk-radius);background:rgba(0,0,0,.72);color:#fff;font-size:14px;\n text-align:center;pointer-events:none}\n.vk-zoom{position:absolute;right:8px;bottom:8px;display:flex;flex-direction:column;gap:4px}\n.vk-zoom button{width:36px;height:36px;border:1px solid var(--vk-line);background:var(--vk-bg);\n color:var(--vk-fg);border-radius:var(--vk-radius);font-size:16px;line-height:1;cursor:pointer}\n.vk-type{margin:0;display:flex;align-items:center;gap:8px;font-weight:600}\n.vk-legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 16px;\n color:var(--vk-muted);font-size:13px}\n.vk-legend li{display:flex;align-items:center;gap:6px}\n.vk-dot{width:14px;height:14px;border-radius:50%;flex:none;box-sizing:border-box}\n.vk-dot[data-state=\"selected\"]{background:var(--vk-mine);border:3px solid var(--vk-accent)}\n.vk-dot[data-state=\"taken\"]{background:var(--vk-sold);border:1px solid var(--vk-sold-stroke)}\n.vk-cta{border:1px solid var(--vk-accent);background:var(--vk-accent);color:var(--vk-accent-fg);\n border-radius:var(--vk-radius);padding:10px 16px;cursor:pointer;font-size:14px;font-weight:600;min-height:44px}\n.vk-cta:disabled{opacity:.5;cursor:default}\n.vk-bar{flex:none;display:flex;align-items:center;gap:12px;padding:12px;\n border:1px solid var(--vk-line);border-radius:var(--vk-radius-lg);background:var(--vk-bg)}\n.vk-bar-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}\n.vk-bar-summary{font-weight:600}\n.vk-bar-total{font-variant-numeric:tabular-nums}\n.vk-bar-hold{color:var(--vk-muted);font-size:13px}\n.vk-notice{margin:0;padding:8px 12px;border-radius:var(--vk-radius);background:var(--vk-surface);\n border:1px solid var(--vk-line);color:var(--vk-fg);font-size:13px}\n.vk-notice:empty{display:none}\n.vk-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n/* El mapa entero: debajo, un boton por entrada (lo que usa el teclado y el lector). */\n.vk-types{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}\n.vk-type-btn{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:10px 14px;\n border:1px solid var(--vk-line);border-radius:var(--vk-radius);background:var(--vk-bg);color:var(--vk-fg);\n font:inherit;text-align:left;cursor:pointer}\n.vk-type-btn:hover{border-color:var(--vk-accent)}\n.vk-type-btn:focus-visible{outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-type-btn[aria-disabled=\"true\"]{cursor:default;opacity:.55}\n.vk-type-btn[aria-disabled=\"true\"]:hover{border-color:var(--vk-line)}\n.vk-type-name{flex:1;min-width:0;font-weight:600;overflow-wrap:anywhere}\n.vk-type-price{flex:none;font-variant-numeric:tabular-nums;color:var(--vk-muted)}\n.vk-type-out{flex:none;font-size:13px;font-weight:600;color:var(--vk-muted)}\n/* Embebido en una tarjeta del host: sin borde propio, encabezado arriba y leyenda abajo. */\n.vk-root[data-embedded=\"true\"]{gap:0}\n.vk-root[data-embedded=\"true\"] .vk-map{border:0;border-radius:0}\n.vk-root[data-embedded=\"true\"] .vk-legend{padding:12px 16px;border-top:1px solid var(--vk-line)}\n.vk-root[data-embedded=\"true\"] .vk-notice{margin:8px 14px 0}\n.vk-head{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-height:52px;padding:8px 14px;\n border-bottom:1px solid var(--vk-line)}\n.vk-back{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border:1px solid var(--vk-line);\n border-radius:var(--vk-radius);background:transparent;color:var(--vk-fg);font:inherit;cursor:pointer}\n.vk-back:focus-visible{outline:3px solid var(--vk-accent);outline-offset:2px}\n.vk-head-title{display:inline-flex;align-items:center;gap:8px;min-width:0;font-weight:700;overflow-wrap:anywhere}\n.vk-head-hint{min-width:0;color:var(--vk-muted);font-size:13px}\n/* Con hideList la lista sigue para el teclado y el lector, oculta hasta que un boton toma el foco. */\n.vk-types[data-hidden=\"true\"]:not(:focus-within){position:absolute;width:1px;height:1px;margin:-1px;padding:0;\n overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n.vk-types[data-hidden=\"true\"]:focus-within{padding:12px 14px;border-top:1px solid var(--vk-line)}\n.vk-type-btn[data-selected=\"true\"]{border-color:var(--vk-accent)}\n";
|
|
149
153
|
|
|
150
154
|
type VenueOverviewPlaceType = {
|
|
151
155
|
ref: string;
|
|
@@ -376,6 +380,10 @@ type DesignerMessages = {
|
|
|
376
380
|
trimToCapacityLabel: string;
|
|
377
381
|
trimPartial: string;
|
|
378
382
|
rejectCapacity: string;
|
|
383
|
+
/** El cambio dejaría el plano fuera de los topes del esquema (una pieza demasiado grande, coordenadas absurdas). */
|
|
384
|
+
rejectInvalid: string;
|
|
385
|
+
/** El cambio pasaría el máximo de lugares de un plano (`MAX_UNITS`). */
|
|
386
|
+
rejectTooManyUnits: string;
|
|
379
387
|
zonesTitle: string;
|
|
380
388
|
zonesHint: string;
|
|
381
389
|
acceptsZone: string;
|
|
@@ -434,10 +442,14 @@ type CapacityRejection = {
|
|
|
434
442
|
capacity: number;
|
|
435
443
|
placed: number;
|
|
436
444
|
};
|
|
437
|
-
/**
|
|
445
|
+
/**
|
|
446
|
+
* Por qué no se aplicó un cambio: lo vendido (`violations`), el cupo de una entrada
|
|
447
|
+
* (`capacity`) o un plano que quedaría inválido (`invalid`, el detalle del esquema, para el host).
|
|
448
|
+
*/
|
|
438
449
|
type DesignerRejection = {
|
|
439
450
|
violations: LockViolation[];
|
|
440
451
|
capacity?: CapacityRejection[];
|
|
452
|
+
invalid?: string;
|
|
441
453
|
};
|
|
442
454
|
|
|
443
455
|
/**
|
|
@@ -579,6 +591,6 @@ type UseImageResult = {
|
|
|
579
591
|
*/
|
|
580
592
|
declare function useImage(src: string | null): UseImageResult;
|
|
581
593
|
|
|
582
|
-
declare const VERSION = "0.10.
|
|
594
|
+
declare const VERSION = "0.10.2";
|
|
583
595
|
|
|
584
596
|
export { type CapacityRejection, DESIGNER_CSS, type DesignerHostApi, type DesignerMessages, type DesignerOverrides, type DesignerRejection, type MessageOverrides, type Messages, PICKER_CSS, type PlacedCount, SeatMap, type SeatMapPlaceType, type SeatMapProps, type UseImageResult, VERSION, VenueDesigner, type VenueDesignerProps, VenueOverview, type VenueOverviewPlaceType, type VenueOverviewProps, designerEn, designerEs, en, es, format, mergeDesignerMessages, mergeMessages, selectionSummary, useImage };
|