@kerusiweb/core 2.0.0
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/LICENSE +22 -0
- package/README.md +68 -0
- package/dist/kerusi/index.d.ts +19 -0
- package/dist/kerusi/index.d.ts.map +1 -0
- package/dist/kerusi/index.js +19 -0
- package/dist/kerusi/index.js.map +1 -0
- package/dist/kerusi/kerusi-layout-mode.d.ts +58 -0
- package/dist/kerusi/kerusi-layout-mode.d.ts.map +1 -0
- package/dist/kerusi/kerusi-layout-mode.js +117 -0
- package/dist/kerusi/kerusi-layout-mode.js.map +1 -0
- package/dist/kerusi/kerusi-locale.d.ts +43 -0
- package/dist/kerusi/kerusi-locale.d.ts.map +1 -0
- package/dist/kerusi/kerusi-locale.js +111 -0
- package/dist/kerusi/kerusi-locale.js.map +1 -0
- package/dist/kerusi/kerusi-map.model.d.ts +258 -0
- package/dist/kerusi/kerusi-map.model.d.ts.map +1 -0
- package/dist/kerusi/kerusi-map.model.js +11 -0
- package/dist/kerusi/kerusi-map.model.js.map +1 -0
- package/dist/kerusi/kerusi-price.d.ts +22 -0
- package/dist/kerusi/kerusi-price.d.ts.map +1 -0
- package/dist/kerusi/kerusi-price.js +48 -0
- package/dist/kerusi/kerusi-price.js.map +1 -0
- package/dist/kerusi/kerusi-rows.d.ts +25 -0
- package/dist/kerusi/kerusi-rows.d.ts.map +1 -0
- package/dist/kerusi/kerusi-rows.js +36 -0
- package/dist/kerusi/kerusi-rows.js.map +1 -0
- package/dist/kerusi/kerusi-state.d.ts +85 -0
- package/dist/kerusi/kerusi-state.d.ts.map +1 -0
- package/dist/kerusi/kerusi-state.js +117 -0
- package/dist/kerusi/kerusi-state.js.map +1 -0
- package/dist/kerusi/kerusi-state.model.d.ts +79 -0
- package/dist/kerusi/kerusi-state.model.d.ts.map +1 -0
- package/dist/kerusi/kerusi-state.model.js +7 -0
- package/dist/kerusi/kerusi-state.model.js.map +1 -0
- package/dist/kerusi/kerusi-validator.d.ts +96 -0
- package/dist/kerusi/kerusi-validator.d.ts.map +1 -0
- package/dist/kerusi/kerusi-validator.js +525 -0
- package/dist/kerusi/kerusi-validator.js.map +1 -0
- package/dist/kerusi/kerusi-violation.d.ts +36 -0
- package/dist/kerusi/kerusi-violation.d.ts.map +1 -0
- package/dist/kerusi/kerusi-violation.js +13 -0
- package/dist/kerusi/kerusi-violation.js.map +1 -0
- package/dist/public-api.d.ts +4 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +13 -0
- package/dist/public-api.js.map +1 -0
- package/dist/render/build-render-model.d.ts +36 -0
- package/dist/render/build-render-model.d.ts.map +1 -0
- package/dist/render/build-render-model.js +258 -0
- package/dist/render/build-render-model.js.map +1 -0
- package/dist/render/element-shapes.d.ts +34 -0
- package/dist/render/element-shapes.d.ts.map +1 -0
- package/dist/render/element-shapes.js +41 -0
- package/dist/render/element-shapes.js.map +1 -0
- package/dist/render/index.d.ts +14 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +14 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/navigation-order.d.ts +49 -0
- package/dist/render/navigation-order.d.ts.map +1 -0
- package/dist/render/navigation-order.js +109 -0
- package/dist/render/navigation-order.js.map +1 -0
- package/dist/render/render-model.d.ts +151 -0
- package/dist/render/render-model.d.ts.map +1 -0
- package/dist/render/render-model.js +2 -0
- package/dist/render/render-model.js.map +1 -0
- package/dist/render/seat-shapes.d.ts +72 -0
- package/dist/render/seat-shapes.d.ts.map +1 -0
- package/dist/render/seat-shapes.js +161 -0
- package/dist/render/seat-shapes.js.map +1 -0
- package/dist/render/section-layout.d.ts +66 -0
- package/dist/render/section-layout.d.ts.map +1 -0
- package/dist/render/section-layout.js +173 -0
- package/dist/render/section-layout.js.map +1 -0
- package/dist/view/index.d.ts +12 -0
- package/dist/view/index.d.ts.map +1 -0
- package/dist/view/index.js +12 -0
- package/dist/view/index.js.map +1 -0
- package/dist/view/kerusi-seatmap-colors.d.ts +176 -0
- package/dist/view/kerusi-seatmap-colors.d.ts.map +1 -0
- package/dist/view/kerusi-seatmap-colors.js +215 -0
- package/dist/view/kerusi-seatmap-colors.js.map +1 -0
- package/dist/view/rtl.d.ts +17 -0
- package/dist/view/rtl.d.ts.map +1 -0
- package/dist/view/rtl.js +29 -0
- package/dist/view/rtl.js.map +1 -0
- package/dist/view/seat-aria.d.ts +44 -0
- package/dist/view/seat-aria.d.ts.map +1 -0
- package/dist/view/seat-aria.js +103 -0
- package/dist/view/seat-aria.js.map +1 -0
- package/dist/view/selection.d.ts +84 -0
- package/dist/view/selection.d.ts.map +1 -0
- package/dist/view/selection.js +98 -0
- package/dist/view/selection.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-layout.js","sourceRoot":"","sources":["../../src/render/section-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Presentation policy that is still framework-free: the colour system a
|
|
3
|
+
* renderer resolves seat fills from, the ARIA strings it announces, and the
|
|
4
|
+
* selection rules that decide whether a seat may be toggled.
|
|
5
|
+
*
|
|
6
|
+
* A binding turns these into markup; none of them know how.
|
|
7
|
+
*/
|
|
8
|
+
export * from './kerusi-seatmap-colors.js';
|
|
9
|
+
export * from './rtl.js';
|
|
10
|
+
export * from './seat-aria.js';
|
|
11
|
+
export * from './selection.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/view/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,4BAA4B,CAAC;AAC3C,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Presentation policy that is still framework-free: the colour system a
|
|
3
|
+
* renderer resolves seat fills from, the ARIA strings it announces, and the
|
|
4
|
+
* selection rules that decide whether a seat may be toggled.
|
|
5
|
+
*
|
|
6
|
+
* A binding turns these into markup; none of them know how.
|
|
7
|
+
*/
|
|
8
|
+
export * from './kerusi-seatmap-colors.js';
|
|
9
|
+
export * from './rtl.js';
|
|
10
|
+
export * from './seat-aria.js';
|
|
11
|
+
export * from './selection.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/view/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,4BAA4B,CAAC;AAC3C,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { RenderSeat } from '../render/render-model.js';
|
|
2
|
+
/**
|
|
3
|
+
* Theming for `<kerusi-seatmap>`.
|
|
4
|
+
*
|
|
5
|
+
* Color means seat type; shape means status. The pre-1.0 renderer colored
|
|
6
|
+
* purely by availability, so `SeatType.color` — the spec's own suggested
|
|
7
|
+
* render color (§4.7) — was parsed and then ignored, and a map could not
|
|
8
|
+
* color its own types. A later revision swung the other way and let status
|
|
9
|
+
* override the type color, which hid the type color on every held or booked
|
|
10
|
+
* seat — exactly where a busy map needed it most. Now a seat keeps its type
|
|
11
|
+
* color everywhere; status is read from a dimming wash and an occupant figure
|
|
12
|
+
* instead (see {@link seatFill}). `selected` is the one deliberate exception:
|
|
13
|
+
* it still owns the color outright, so your own picks are never ambiguous.
|
|
14
|
+
*
|
|
15
|
+
* Selection is also the one state drawn from *two* tones rather than one:
|
|
16
|
+
* `selectedBg` frames the seat and `selectedFg` fills a core inside it (see
|
|
17
|
+
* {@link seatCoreFill}). An earlier revision had this the other way round — a
|
|
18
|
+
* near-white rim around a mid-purple middle — which put the low-contrast tone
|
|
19
|
+
* on the outside boundary, so a selected seat dissolved into a light page and
|
|
20
|
+
* sank into a dark one. Holding both a light and a dark tone means one of them
|
|
21
|
+
* always separates from the page, whichever way a consumer has themed it, and
|
|
22
|
+
* the library never has to ask which that is.
|
|
23
|
+
*/
|
|
24
|
+
export interface KerusiSeatmapColors {
|
|
25
|
+
/** An available seat with no type color. */
|
|
26
|
+
availableBg?: string;
|
|
27
|
+
availableFg?: string;
|
|
28
|
+
/**
|
|
29
|
+
* A seat the user has picked. The one status that still owns the seat's
|
|
30
|
+
* color outright — see {@link seatFill} — so your own picks always pop out
|
|
31
|
+
* of the map. `selectedBg` frames the seat and `selectedFg` fills the core
|
|
32
|
+
* inside that frame, which is also what the label and the occupant figure
|
|
33
|
+
* are tinted with. Both carry real visual weight, so override them as a
|
|
34
|
+
* pair; swapping the two gives the inverse treatment, a light frame around
|
|
35
|
+
* a dark core, which works just as well.
|
|
36
|
+
*/
|
|
37
|
+
selectedBg?: string;
|
|
38
|
+
selectedFg?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Sold. The seat keeps its type color; `bookedBg` is the dimming wash drawn
|
|
41
|
+
* over it and `bookedFg` tints the solid occupant figure that marks it.
|
|
42
|
+
*/
|
|
43
|
+
bookedBg?: string;
|
|
44
|
+
bookedFg?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Someone else's checkout in progress. `heldBg` washes the seat's type
|
|
47
|
+
* color and `heldFg` strokes the hollow occupant figure that marks it —
|
|
48
|
+
* hollow because the hold is provisional, not settled.
|
|
49
|
+
*/
|
|
50
|
+
heldBg?: string;
|
|
51
|
+
heldFg?: string;
|
|
52
|
+
/** Withheld by the venue: no occupant, so grey is the whole signal. */
|
|
53
|
+
blockedBg?: string;
|
|
54
|
+
blockedFg?: string;
|
|
55
|
+
/** Non-bookable features: screens, stages, lavatories. */
|
|
56
|
+
elementBg?: string;
|
|
57
|
+
elementFg?: string;
|
|
58
|
+
/** Exits and doors, which should stand out from other fixtures. */
|
|
59
|
+
elementAccentBg?: string;
|
|
60
|
+
elementAccentFg?: string;
|
|
61
|
+
/** Aisles, gaps and other deliberately empty space. */
|
|
62
|
+
elementMutedBg?: string;
|
|
63
|
+
elementMutedFg?: string;
|
|
64
|
+
/** The keyboard focus ring. */
|
|
65
|
+
focusRing?: string;
|
|
66
|
+
/** Behind the seating area. `transparent` by default. */
|
|
67
|
+
backdrop?: string;
|
|
68
|
+
}
|
|
69
|
+
export declare const DEFAULT_KERUSI_COLORS: Required<KerusiSeatmapColors>;
|
|
70
|
+
/**
|
|
71
|
+
* Fills the gaps in a partial palette with the library defaults.
|
|
72
|
+
*
|
|
73
|
+
* Every paint function below takes a `Required<KerusiSeatmapColors>`, and a
|
|
74
|
+
* binding's `colors` input is partial, so each one would otherwise open with
|
|
75
|
+
* the same spread. One merge, defined once.
|
|
76
|
+
*/
|
|
77
|
+
export declare function resolveColors(colors?: KerusiSeatmapColors): Required<KerusiSeatmapColors>;
|
|
78
|
+
/**
|
|
79
|
+
* A palette value as a CSS custom property, with the resolved `[colors]` value
|
|
80
|
+
* as its fallback.
|
|
81
|
+
*
|
|
82
|
+
* This is what makes the theme reachable from a stylesheet. The palette is
|
|
83
|
+
* still a TypeScript object, but every value it produces is written as
|
|
84
|
+
* `var(--kerusi-selected-bg, #7854af)`, so a consumer has three tiers to work
|
|
85
|
+
* with, in precedence order:
|
|
86
|
+
*
|
|
87
|
+
* a `--kerusi-*` property in their own CSS → the `[colors]` input → the
|
|
88
|
+
* library default
|
|
89
|
+
*
|
|
90
|
+
* The custom property is never set by the library itself, which is what keeps
|
|
91
|
+
* that order honest: if the component wrote the input onto the host, the input
|
|
92
|
+
* would always beat the stylesheet and the CSS tier would be decorative.
|
|
93
|
+
*
|
|
94
|
+
* `SeatType.color` deliberately does not go through here. That is the
|
|
95
|
+
* document's own value under §4.7, not the theme's, and {@link readableOn}
|
|
96
|
+
* still has to be able to parse it.
|
|
97
|
+
*/
|
|
98
|
+
export declare function cssVar(key: keyof KerusiSeatmapColors, value: string): string;
|
|
99
|
+
/** `selectedBg` → `--kerusi-selected-bg`. */
|
|
100
|
+
export declare function cssVarName(key: keyof KerusiSeatmapColors): string;
|
|
101
|
+
/**
|
|
102
|
+
* The fill for a seat's body, in precedence order:
|
|
103
|
+
*
|
|
104
|
+
* selected → blocked → `SeatType.color` → available
|
|
105
|
+
*
|
|
106
|
+
* For a selected seat this is the *frame*: {@link seatCoreFill}'s core is drawn
|
|
107
|
+
* inside it and covers most of the body, so `selectedBg` reads as a border
|
|
108
|
+
* rather than as the seat's area.
|
|
109
|
+
*
|
|
110
|
+
* A held or booked seat is deliberately *not* in this list: it keeps its type
|
|
111
|
+
* color, same as an available one, because status is read from
|
|
112
|
+
* {@link seatOccupantVariant}'s figure and {@link seatWashFill}'s wash
|
|
113
|
+
* instead. Hiding the type color behind a status hue was the bug this
|
|
114
|
+
* replaced — see the module doc comment. `blocked` still gets its own fill,
|
|
115
|
+
* because a seat withheld by the venue has no occupant to draw; grey is the
|
|
116
|
+
* whole signal, same as before. Attributes never affect the fill — §4.3.3
|
|
117
|
+
* makes them descriptive tags, not a rendering category.
|
|
118
|
+
*/
|
|
119
|
+
export declare function seatFill(seat: RenderSeat, selected: boolean, colors: Required<KerusiSeatmapColors>, useTypeColors: boolean): string;
|
|
120
|
+
/**
|
|
121
|
+
* The bright core inside a selected seat's frame — the second of the two tones
|
|
122
|
+
* selection is drawn from, see the module doc comment. Everything drawn over
|
|
123
|
+
* the core (the label, the occupant figure, the wheelchair marker) is tinted
|
|
124
|
+
* `selectedBg` to read against it.
|
|
125
|
+
*/
|
|
126
|
+
export declare function seatCoreFill(colors: Required<KerusiSeatmapColors>): string;
|
|
127
|
+
/**
|
|
128
|
+
* The label color to pair with {@link seatFill} — except for a selected seat,
|
|
129
|
+
* where the label sits on {@link seatCoreFill}'s core rather than on the frame,
|
|
130
|
+
* so the two tones swap round.
|
|
131
|
+
*/
|
|
132
|
+
export declare function seatTextFill(seat: RenderSeat, selected: boolean, colors: Required<KerusiSeatmapColors>, useTypeColors: boolean): string;
|
|
133
|
+
/** Which occupant figure marks a seat, if any — see {@link seatFill}. */
|
|
134
|
+
export type SeatOccupantVariant = 'selected' | 'held' | 'booked';
|
|
135
|
+
/**
|
|
136
|
+
* The occupant figure for a seat, or `null` for a seat with nothing to draw:
|
|
137
|
+
* available (nobody there yet) and blocked (nobody ever will be).
|
|
138
|
+
*/
|
|
139
|
+
export declare function seatOccupantVariant(seat: RenderSeat, selected: boolean): SeatOccupantVariant | null;
|
|
140
|
+
/**
|
|
141
|
+
* The tint for an occupant figure: solid `selectedBg`/`bookedFg` for a seat
|
|
142
|
+
* that is settled (yours, or someone else's), or `heldFg` for the hollow
|
|
143
|
+
* outline that marks a hold still in progress. A selected seat's figure is
|
|
144
|
+
* drawn on {@link seatCoreFill}'s core, so it takes the frame's color rather
|
|
145
|
+
* than the core's — the opposite way round from every other variant, which
|
|
146
|
+
* sits on the seat's own fill.
|
|
147
|
+
*/
|
|
148
|
+
export declare function occupantTint(variant: SeatOccupantVariant, colors: Required<KerusiSeatmapColors>): string;
|
|
149
|
+
/**
|
|
150
|
+
* The dimming wash drawn over a held or booked seat's type color, so a taken
|
|
151
|
+
* seat still recedes even though its hue no longer changes.
|
|
152
|
+
*/
|
|
153
|
+
export declare function seatWashFill(status: 'held' | 'booked', colors: Required<KerusiSeatmapColors>): string;
|
|
154
|
+
/**
|
|
155
|
+
* The occupant figure's fill: solid for `selected`/`booked`, `none` for
|
|
156
|
+
* `held` — a hold in progress draws as a hollow outline instead. Pair with
|
|
157
|
+
* {@link occupantStrokeFill}, which is the exact inverse.
|
|
158
|
+
*/
|
|
159
|
+
export declare function occupantFillFor(variant: SeatOccupantVariant, colors: Required<KerusiSeatmapColors>): string;
|
|
160
|
+
/** The occupant figure's stroke: only the hollow `held` variant has one. */
|
|
161
|
+
export declare function occupantStrokeFor(variant: SeatOccupantVariant, colors: Required<KerusiSeatmapColors>): string;
|
|
162
|
+
/** Element fill for a shape tone. */
|
|
163
|
+
export declare function elementFill(tone: 'neutral' | 'accent' | 'muted', colors: Required<KerusiSeatmapColors>): string;
|
|
164
|
+
/** Element label color for a shape tone. */
|
|
165
|
+
export declare function elementTextFill(tone: 'neutral' | 'accent' | 'muted', colors: Required<KerusiSeatmapColors>): string;
|
|
166
|
+
/**
|
|
167
|
+
* Black or white, whichever reads better on the given color. Used only for a
|
|
168
|
+
* `SeatType.color` the document chose, where the library cannot know what
|
|
169
|
+
* foreground the author intended.
|
|
170
|
+
*
|
|
171
|
+
* Uses the WCAG relative-luminance formula rather than a naive channel average,
|
|
172
|
+
* so a saturated green and a saturated blue of the same average brightness get
|
|
173
|
+
* the contrast each actually needs.
|
|
174
|
+
*/
|
|
175
|
+
export declare function readableOn(background: string): string;
|
|
176
|
+
//# sourceMappingURL=kerusi-seatmap-colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kerusi-seatmap-colors.d.ts","sourceRoot":"","sources":["../../src/view/kerusi-seatmap-colors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
export const DEFAULT_KERUSI_COLORS = {
|
|
2
|
+
availableBg: '#76d75d',
|
|
3
|
+
availableFg: '#123a08',
|
|
4
|
+
selectedBg: '#7854af',
|
|
5
|
+
selectedFg: '#f3ecff',
|
|
6
|
+
bookedBg: '#5e0c17',
|
|
7
|
+
bookedFg: '#ffc9d0',
|
|
8
|
+
heldBg: '#4a3500',
|
|
9
|
+
heldFg: '#ffe1a8',
|
|
10
|
+
blockedBg: '#5a616e',
|
|
11
|
+
blockedFg: '#d2d7df',
|
|
12
|
+
elementBg: '#d7deea',
|
|
13
|
+
elementFg: '#3a4353',
|
|
14
|
+
elementAccentBg: '#4c8bf5',
|
|
15
|
+
elementAccentFg: '#ffffff',
|
|
16
|
+
elementMutedBg: '#eef1f6',
|
|
17
|
+
elementMutedFg: '#6b7385',
|
|
18
|
+
focusRing: '#1b1f27',
|
|
19
|
+
backdrop: 'transparent',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Fills the gaps in a partial palette with the library defaults.
|
|
23
|
+
*
|
|
24
|
+
* Every paint function below takes a `Required<KerusiSeatmapColors>`, and a
|
|
25
|
+
* binding's `colors` input is partial, so each one would otherwise open with
|
|
26
|
+
* the same spread. One merge, defined once.
|
|
27
|
+
*/
|
|
28
|
+
export function resolveColors(colors) {
|
|
29
|
+
return { ...DEFAULT_KERUSI_COLORS, ...colors };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A palette value as a CSS custom property, with the resolved `[colors]` value
|
|
33
|
+
* as its fallback.
|
|
34
|
+
*
|
|
35
|
+
* This is what makes the theme reachable from a stylesheet. The palette is
|
|
36
|
+
* still a TypeScript object, but every value it produces is written as
|
|
37
|
+
* `var(--kerusi-selected-bg, #7854af)`, so a consumer has three tiers to work
|
|
38
|
+
* with, in precedence order:
|
|
39
|
+
*
|
|
40
|
+
* a `--kerusi-*` property in their own CSS → the `[colors]` input → the
|
|
41
|
+
* library default
|
|
42
|
+
*
|
|
43
|
+
* The custom property is never set by the library itself, which is what keeps
|
|
44
|
+
* that order honest: if the component wrote the input onto the host, the input
|
|
45
|
+
* would always beat the stylesheet and the CSS tier would be decorative.
|
|
46
|
+
*
|
|
47
|
+
* `SeatType.color` deliberately does not go through here. That is the
|
|
48
|
+
* document's own value under §4.7, not the theme's, and {@link readableOn}
|
|
49
|
+
* still has to be able to parse it.
|
|
50
|
+
*/
|
|
51
|
+
export function cssVar(key, value) {
|
|
52
|
+
return `var(${cssVarName(key)}, ${value})`;
|
|
53
|
+
}
|
|
54
|
+
/** `selectedBg` → `--kerusi-selected-bg`. */
|
|
55
|
+
export function cssVarName(key) {
|
|
56
|
+
return `--kerusi-${key.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`)}`;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The fill for a seat's body, in precedence order:
|
|
60
|
+
*
|
|
61
|
+
* selected → blocked → `SeatType.color` → available
|
|
62
|
+
*
|
|
63
|
+
* For a selected seat this is the *frame*: {@link seatCoreFill}'s core is drawn
|
|
64
|
+
* inside it and covers most of the body, so `selectedBg` reads as a border
|
|
65
|
+
* rather than as the seat's area.
|
|
66
|
+
*
|
|
67
|
+
* A held or booked seat is deliberately *not* in this list: it keeps its type
|
|
68
|
+
* color, same as an available one, because status is read from
|
|
69
|
+
* {@link seatOccupantVariant}'s figure and {@link seatWashFill}'s wash
|
|
70
|
+
* instead. Hiding the type color behind a status hue was the bug this
|
|
71
|
+
* replaced — see the module doc comment. `blocked` still gets its own fill,
|
|
72
|
+
* because a seat withheld by the venue has no occupant to draw; grey is the
|
|
73
|
+
* whole signal, same as before. Attributes never affect the fill — §4.3.3
|
|
74
|
+
* makes them descriptive tags, not a rendering category.
|
|
75
|
+
*/
|
|
76
|
+
export function seatFill(seat, selected, colors, useTypeColors) {
|
|
77
|
+
if (selected) {
|
|
78
|
+
return cssVar('selectedBg', colors.selectedBg);
|
|
79
|
+
}
|
|
80
|
+
if (seat.status === 'blocked') {
|
|
81
|
+
return cssVar('blockedBg', colors.blockedBg);
|
|
82
|
+
}
|
|
83
|
+
return (useTypeColors && seat.typeColor) || cssVar('availableBg', colors.availableBg);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The bright core inside a selected seat's frame — the second of the two tones
|
|
87
|
+
* selection is drawn from, see the module doc comment. Everything drawn over
|
|
88
|
+
* the core (the label, the occupant figure, the wheelchair marker) is tinted
|
|
89
|
+
* `selectedBg` to read against it.
|
|
90
|
+
*/
|
|
91
|
+
export function seatCoreFill(colors) {
|
|
92
|
+
return cssVar('selectedFg', colors.selectedFg);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The label color to pair with {@link seatFill} — except for a selected seat,
|
|
96
|
+
* where the label sits on {@link seatCoreFill}'s core rather than on the frame,
|
|
97
|
+
* so the two tones swap round.
|
|
98
|
+
*/
|
|
99
|
+
export function seatTextFill(seat, selected, colors, useTypeColors) {
|
|
100
|
+
if (selected) {
|
|
101
|
+
return cssVar('selectedBg', colors.selectedBg);
|
|
102
|
+
}
|
|
103
|
+
if (seat.status === 'blocked') {
|
|
104
|
+
return cssVar('blockedFg', colors.blockedFg);
|
|
105
|
+
}
|
|
106
|
+
return useTypeColors && seat.typeColor
|
|
107
|
+
? readableOn(seat.typeColor)
|
|
108
|
+
: cssVar('availableFg', colors.availableFg);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* The occupant figure for a seat, or `null` for a seat with nothing to draw:
|
|
112
|
+
* available (nobody there yet) and blocked (nobody ever will be).
|
|
113
|
+
*/
|
|
114
|
+
export function seatOccupantVariant(seat, selected) {
|
|
115
|
+
if (selected) {
|
|
116
|
+
return 'selected';
|
|
117
|
+
}
|
|
118
|
+
if (seat.status === 'held' || seat.status === 'booked') {
|
|
119
|
+
return seat.status;
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* The tint for an occupant figure: solid `selectedBg`/`bookedFg` for a seat
|
|
125
|
+
* that is settled (yours, or someone else's), or `heldFg` for the hollow
|
|
126
|
+
* outline that marks a hold still in progress. A selected seat's figure is
|
|
127
|
+
* drawn on {@link seatCoreFill}'s core, so it takes the frame's color rather
|
|
128
|
+
* than the core's — the opposite way round from every other variant, which
|
|
129
|
+
* sits on the seat's own fill.
|
|
130
|
+
*/
|
|
131
|
+
export function occupantTint(variant, colors) {
|
|
132
|
+
switch (variant) {
|
|
133
|
+
case 'selected':
|
|
134
|
+
return cssVar('selectedBg', colors.selectedBg);
|
|
135
|
+
case 'held':
|
|
136
|
+
return cssVar('heldFg', colors.heldFg);
|
|
137
|
+
case 'booked':
|
|
138
|
+
return cssVar('bookedFg', colors.bookedFg);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* The dimming wash drawn over a held or booked seat's type color, so a taken
|
|
143
|
+
* seat still recedes even though its hue no longer changes.
|
|
144
|
+
*/
|
|
145
|
+
export function seatWashFill(status, colors) {
|
|
146
|
+
return status === 'held' ? cssVar('heldBg', colors.heldBg) : cssVar('bookedBg', colors.bookedBg);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* The occupant figure's fill: solid for `selected`/`booked`, `none` for
|
|
150
|
+
* `held` — a hold in progress draws as a hollow outline instead. Pair with
|
|
151
|
+
* {@link occupantStrokeFill}, which is the exact inverse.
|
|
152
|
+
*/
|
|
153
|
+
export function occupantFillFor(variant, colors) {
|
|
154
|
+
return variant === 'held' ? 'none' : occupantTint(variant, colors);
|
|
155
|
+
}
|
|
156
|
+
/** The occupant figure's stroke: only the hollow `held` variant has one. */
|
|
157
|
+
export function occupantStrokeFor(variant, colors) {
|
|
158
|
+
return variant === 'held' ? occupantTint(variant, colors) : 'none';
|
|
159
|
+
}
|
|
160
|
+
/** Element fill for a shape tone. */
|
|
161
|
+
export function elementFill(tone, colors) {
|
|
162
|
+
return tone === 'accent'
|
|
163
|
+
? cssVar('elementAccentBg', colors.elementAccentBg)
|
|
164
|
+
: tone === 'muted'
|
|
165
|
+
? cssVar('elementMutedBg', colors.elementMutedBg)
|
|
166
|
+
: cssVar('elementBg', colors.elementBg);
|
|
167
|
+
}
|
|
168
|
+
/** Element label color for a shape tone. */
|
|
169
|
+
export function elementTextFill(tone, colors) {
|
|
170
|
+
return tone === 'accent'
|
|
171
|
+
? cssVar('elementAccentFg', colors.elementAccentFg)
|
|
172
|
+
: tone === 'muted'
|
|
173
|
+
? cssVar('elementMutedFg', colors.elementMutedFg)
|
|
174
|
+
: cssVar('elementFg', colors.elementFg);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Black or white, whichever reads better on the given color. Used only for a
|
|
178
|
+
* `SeatType.color` the document chose, where the library cannot know what
|
|
179
|
+
* foreground the author intended.
|
|
180
|
+
*
|
|
181
|
+
* Uses the WCAG relative-luminance formula rather than a naive channel average,
|
|
182
|
+
* so a saturated green and a saturated blue of the same average brightness get
|
|
183
|
+
* the contrast each actually needs.
|
|
184
|
+
*/
|
|
185
|
+
export function readableOn(background) {
|
|
186
|
+
const rgb = parseHex(background);
|
|
187
|
+
if (!rgb) {
|
|
188
|
+
return '#000000';
|
|
189
|
+
}
|
|
190
|
+
const [r, g, b] = rgb.map((channel) => {
|
|
191
|
+
const c = channel / 255;
|
|
192
|
+
return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;
|
|
193
|
+
});
|
|
194
|
+
const luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
195
|
+
return luminance > 0.179 ? '#000000' : '#ffffff';
|
|
196
|
+
}
|
|
197
|
+
/** `#rgb` or `#rrggbb` to channel values. Returns `undefined` for anything else. */
|
|
198
|
+
function parseHex(color) {
|
|
199
|
+
const hex = color.trim().replace(/^#/, '');
|
|
200
|
+
const full = hex.length === 3
|
|
201
|
+
? hex
|
|
202
|
+
.split('')
|
|
203
|
+
.map((c) => c + c)
|
|
204
|
+
.join('')
|
|
205
|
+
: hex;
|
|
206
|
+
if (!/^[0-9a-f]{6}$/i.test(full)) {
|
|
207
|
+
return undefined;
|
|
208
|
+
}
|
|
209
|
+
return [
|
|
210
|
+
Number.parseInt(full.slice(0, 2), 16),
|
|
211
|
+
Number.parseInt(full.slice(2, 4), 16),
|
|
212
|
+
Number.parseInt(full.slice(4, 6), 16),
|
|
213
|
+
];
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=kerusi-seatmap-colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kerusi-seatmap-colors.js","sourceRoot":"","sources":["../../src/view/kerusi-seatmap-colors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which locales are written right-to-left.
|
|
3
|
+
*
|
|
4
|
+
* A binding needs this to decide whether to mirror a grid section and swap the
|
|
5
|
+
* left/right arrow keys, and it would be written identically in every one —
|
|
6
|
+
* so it belongs here rather than in any of them.
|
|
7
|
+
*/
|
|
8
|
+
/** BCP-47 language subtags written right-to-left. */
|
|
9
|
+
export declare const RTL_LANGUAGES: ReadonlySet<string>;
|
|
10
|
+
/**
|
|
11
|
+
* True when the locale's language subtag is written right-to-left.
|
|
12
|
+
*
|
|
13
|
+
* Only the primary subtag is consulted, so `ar-EG` and `AR` both resolve the
|
|
14
|
+
* same way as `ar`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isRtlLocale(locale: string): boolean;
|
|
17
|
+
//# sourceMappingURL=rtl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rtl.d.ts","sourceRoot":"","sources":["../../src/view/rtl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qDAAqD;AACrD,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,CAU5C,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnD"}
|
package/dist/view/rtl.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which locales are written right-to-left.
|
|
3
|
+
*
|
|
4
|
+
* A binding needs this to decide whether to mirror a grid section and swap the
|
|
5
|
+
* left/right arrow keys, and it would be written identically in every one —
|
|
6
|
+
* so it belongs here rather than in any of them.
|
|
7
|
+
*/
|
|
8
|
+
/** BCP-47 language subtags written right-to-left. */
|
|
9
|
+
export const RTL_LANGUAGES = new Set([
|
|
10
|
+
'ar',
|
|
11
|
+
'he',
|
|
12
|
+
'fa',
|
|
13
|
+
'ur',
|
|
14
|
+
'ps',
|
|
15
|
+
'dv',
|
|
16
|
+
'yi',
|
|
17
|
+
'ku',
|
|
18
|
+
'sd',
|
|
19
|
+
]);
|
|
20
|
+
/**
|
|
21
|
+
* True when the locale's language subtag is written right-to-left.
|
|
22
|
+
*
|
|
23
|
+
* Only the primary subtag is consulted, so `ar-EG` and `AR` both resolve the
|
|
24
|
+
* same way as `ar`.
|
|
25
|
+
*/
|
|
26
|
+
export function isRtlLocale(locale) {
|
|
27
|
+
return RTL_LANGUAGES.has(locale.toLowerCase().split('-')[0]);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=rtl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rtl.js","sourceRoot":"","sources":["../../src/view/rtl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qDAAqD;AACrD,MAAM,CAAC,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC;IACxD,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;CACL,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { RenderSeat } from '../render/render-model.js';
|
|
2
|
+
import { DisallowedReason } from './selection.js';
|
|
3
|
+
/**
|
|
4
|
+
* What a screen reader says about a seat.
|
|
5
|
+
*
|
|
6
|
+
* The pre-1.0 renderer drew seats as bare clickable `<g>` elements with no
|
|
7
|
+
* accessible name at all, so everything the document knew about a seat — its
|
|
8
|
+
* type, its price, whether it was even bookable, and every §4.3.4 accessibility
|
|
9
|
+
* property — was invisible to anyone not looking at the picture.
|
|
10
|
+
*
|
|
11
|
+
* Selection state is deliberately absent from the label: it rides on
|
|
12
|
+
* `aria-pressed`, and repeating it here would make every toggle announce twice.
|
|
13
|
+
*/
|
|
14
|
+
/** Strings a caller may translate. Defaults are English. */
|
|
15
|
+
export interface SeatAriaStrings {
|
|
16
|
+
rowSeat: (row: string, seat: string) => string;
|
|
17
|
+
seatOnly: (seat: string) => string;
|
|
18
|
+
noPrice: string;
|
|
19
|
+
available: string;
|
|
20
|
+
booked: string;
|
|
21
|
+
held: string;
|
|
22
|
+
heldUntil: (time: string) => string;
|
|
23
|
+
blocked: string;
|
|
24
|
+
wheelchairAccessible: string;
|
|
25
|
+
transferArmrest: (side: string) => string;
|
|
26
|
+
aisleChairCompatible: string;
|
|
27
|
+
companionRequired: string;
|
|
28
|
+
/** How a selection total is announced. */
|
|
29
|
+
selectionSummary: (count: number, total: string) => string;
|
|
30
|
+
selectionEmpty: string;
|
|
31
|
+
disallowed: Record<DisallowedReason, string>;
|
|
32
|
+
}
|
|
33
|
+
export declare const DEFAULT_SEAT_ARIA_STRINGS: SeatAriaStrings;
|
|
34
|
+
/**
|
|
35
|
+
* Builds a seat's accessible name, in the order a listener needs it: where the
|
|
36
|
+
* seat is, what kind it is, what it costs, whether it can be had, what
|
|
37
|
+
* accessibility it offers, and finally its descriptive tags.
|
|
38
|
+
*/
|
|
39
|
+
export declare function seatAriaLabel(seat: RenderSeat, locale: string, strings?: SeatAriaStrings): string;
|
|
40
|
+
/** A hold expiry as a local clock time; falls back to the raw value. */
|
|
41
|
+
export declare function formatTime(iso: string, locale: string): string;
|
|
42
|
+
/** The live-region announcement when a seat cannot be selected. */
|
|
43
|
+
export declare function disallowedAnnouncement(seat: RenderSeat, reason: DisallowedReason, strings?: SeatAriaStrings): string;
|
|
44
|
+
//# sourceMappingURL=seat-aria.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seat-aria.d.ts","sourceRoot":"","sources":["../../src/view/seat-aria.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;;;;;;GAUG;AAEH,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3D,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED,eAAO,MAAM,yBAAyB,EAAE,eAwBvC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,eAA2C,GACnD,MAAM,CAsBR;AAwCD,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAU9D;AAED,mEAAmE;AACnE,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,eAA2C,GACnD,MAAM,CAKR"}
|