@aparte/plugin-cards 0.0.0-stage → 0.29.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 +21 -0
- package/README.md +148 -2
- package/dist/carousel-CPy-0JGN.js +63 -0
- package/dist/carousel-CPy-0JGN.js.map +1 -0
- package/dist/controls-BVX2u7sK.js +62 -0
- package/dist/controls-BVX2u7sK.js.map +1 -0
- package/dist/format-CchcJRum.js +720 -0
- package/dist/format-CchcJRum.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/items/icons.d.ts +12 -0
- package/dist/items/icons.d.ts.map +1 -0
- package/dist/items/index.d.ts +100 -0
- package/dist/items/index.d.ts.map +1 -0
- package/dist/items.js +698 -0
- package/dist/items.js.map +1 -0
- package/dist/kit/carousel.d.ts +17 -0
- package/dist/kit/carousel.d.ts.map +1 -0
- package/dist/kit/controls.d.ts +51 -0
- package/dist/kit/controls.d.ts.map +1 -0
- package/dist/kit/define.d.ts +194 -0
- package/dist/kit/define.d.ts.map +1 -0
- package/dist/kit/dom.d.ts +40 -0
- package/dist/kit/dom.d.ts.map +1 -0
- package/dist/kit/format.d.ts +49 -0
- package/dist/kit/format.d.ts.map +1 -0
- package/dist/kit/rating.d.ts +19 -0
- package/dist/kit/rating.d.ts.map +1 -0
- package/dist/kit/sparkline.d.ts +19 -0
- package/dist/kit/sparkline.d.ts.map +1 -0
- package/dist/kit/strings.d.ts +139 -0
- package/dist/kit/strings.d.ts.map +1 -0
- package/dist/link/icons.d.ts +16 -0
- package/dist/link/icons.d.ts.map +1 -0
- package/dist/link/index.d.ts +98 -0
- package/dist/link/index.d.ts.map +1 -0
- package/dist/link.js +387 -0
- package/dist/link.js.map +1 -0
- package/dist/media/icons.d.ts +28 -0
- package/dist/media/icons.d.ts.map +1 -0
- package/dist/media/index.d.ts +107 -0
- package/dist/media/index.d.ts.map +1 -0
- package/dist/media.js +610 -0
- package/dist/media.js.map +1 -0
- package/dist/order/icons.d.ts +49 -0
- package/dist/order/icons.d.ts.map +1 -0
- package/dist/order/index.d.ts +204 -0
- package/dist/order/index.d.ts.map +1 -0
- package/dist/order.js +1843 -0
- package/dist/order.js.map +1 -0
- package/dist/place/icons.d.ts +18 -0
- package/dist/place/icons.d.ts.map +1 -0
- package/dist/place/index.d.ts +207 -0
- package/dist/place/index.d.ts.map +1 -0
- package/dist/place.js +1456 -0
- package/dist/place.js.map +1 -0
- package/dist/plan/icons.d.ts +25 -0
- package/dist/plan/icons.d.ts.map +1 -0
- package/dist/plan/index.d.ts +153 -0
- package/dist/plan/index.d.ts.map +1 -0
- package/dist/plan.js +1191 -0
- package/dist/plan.js.map +1 -0
- package/dist/product/icons.d.ts +16 -0
- package/dist/product/icons.d.ts.map +1 -0
- package/dist/product/index.d.ts +133 -0
- package/dist/product/index.d.ts.map +1 -0
- package/dist/product.js +1245 -0
- package/dist/product.js.map +1 -0
- package/dist/rating-B8Mdx_b_.js +35 -0
- package/dist/rating-B8Mdx_b_.js.map +1 -0
- package/dist/score/icons.d.ts +35 -0
- package/dist/score/icons.d.ts.map +1 -0
- package/dist/score/index.d.ts +185 -0
- package/dist/score/index.d.ts.map +1 -0
- package/dist/score.js +1843 -0
- package/dist/score.js.map +1 -0
- package/dist/sparkline-C-cA9obz.js +56 -0
- package/dist/sparkline-C-cA9obz.js.map +1 -0
- package/dist/stats/icons.d.ts +19 -0
- package/dist/stats/icons.d.ts.map +1 -0
- package/dist/stats/index.d.ts +137 -0
- package/dist/stats/index.d.ts.map +1 -0
- package/dist/stats.js +1085 -0
- package/dist/stats.js.map +1 -0
- package/dist/stock/chart.d.ts +135 -0
- package/dist/stock/chart.d.ts.map +1 -0
- package/dist/stock/icons.d.ts +15 -0
- package/dist/stock/icons.d.ts.map +1 -0
- package/dist/stock/index.d.ts +195 -0
- package/dist/stock/index.d.ts.map +1 -0
- package/dist/stock.js +1013 -0
- package/dist/stock.js.map +1 -0
- package/dist/weather/conditions.d.ts +25 -0
- package/dist/weather/conditions.d.ts.map +1 -0
- package/dist/weather/icons.d.ts +12 -0
- package/dist/weather/icons.d.ts.map +1 -0
- package/dist/weather/index.d.ts +146 -0
- package/dist/weather/index.d.ts.map +1 -0
- package/dist/weather.js +1162 -0
- package/dist/weather.js.map +1 -0
- package/package.json +137 -3
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @aparte/plugin-cards/place — a tool's places, drawn as cards: a restaurant, a shop, a
|
|
3
|
+
* hotel, a venue, with its rating, whether it is open now, and the way there.
|
|
4
|
+
*
|
|
5
|
+
* import { setupPlaceCard } from '@aparte/plugin-cards/place';
|
|
6
|
+
*
|
|
7
|
+
* setupPlaceCard({ tool: 'search_places', map: (result) => result.results });
|
|
8
|
+
*
|
|
9
|
+
* One place or several (`[...]`, or `{ title, places: [...] }`). Three variants of one
|
|
10
|
+
* card: `card` (a tile with its photo; several scroll sideways), `compact` (one row each,
|
|
11
|
+
* stacked) and `detail` (one place in full, with its week of opening hours). Your tool keeps
|
|
12
|
+
* its own fields: `readPlaces` reads the usual names for each (Google Places, both
|
|
13
|
+
* generations, Yelp, OpenStreetMap-ish tools, what a model writes by hand), and `map` says
|
|
14
|
+
* the rest.
|
|
15
|
+
*
|
|
16
|
+
* Whether a place is open is worked out when the card is drawn, from its weekly `hours`
|
|
17
|
+
* (`isOpenAt`, `placeStatus`) — Google's current hours, holidays included, before its
|
|
18
|
+
* regular week — else from the tool's own `openNow`. The three buttons a place
|
|
19
|
+
* gets for free — Directions, Call, Website — appear only when its data can honour them,
|
|
20
|
+
* and an app that passes its own `actions` replaces them.
|
|
21
|
+
*/
|
|
22
|
+
import type { AparteConfig } from '@aparte/core';
|
|
23
|
+
import { type CardSetupOptions } from '../kit/define.js';
|
|
24
|
+
import { type PlaceKind } from './icons.js';
|
|
25
|
+
export type { PlaceKind } from './icons.js';
|
|
26
|
+
export type PlaceVariant = 'card' | 'compact' | 'detail';
|
|
27
|
+
/** One opening range of the week, as a tool writes it. */
|
|
28
|
+
export interface PlaceHoursInput {
|
|
29
|
+
/** 0 = Sunday … 6 = Saturday (7 reads as Sunday too), or an English day name ("mon", "Monday"). */
|
|
30
|
+
day: number | string;
|
|
31
|
+
/** "09:00", "9:30", "0900", "21h30", "9 PM". */
|
|
32
|
+
open: string;
|
|
33
|
+
/** Past midnight is fine ("02:00" after "18:00"). Missing, or "24:00", is midnight. */
|
|
34
|
+
close?: string;
|
|
35
|
+
}
|
|
36
|
+
/** An opening range once read: minutes from the start of `day`. `end` passes 1440 when it closes after midnight. */
|
|
37
|
+
export interface PlaceHoursRange {
|
|
38
|
+
day: number;
|
|
39
|
+
start: number;
|
|
40
|
+
end: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* A place as `map` returns it. Only `name` is needed; every other field adds a line when it
|
|
44
|
+
* is there and nothing when it is not. `readPlaces` also reads the usual aliases (listed on
|
|
45
|
+
* each field).
|
|
46
|
+
*/
|
|
47
|
+
export interface PlaceInput {
|
|
48
|
+
/** Also `title`, `displayName`. */
|
|
49
|
+
name: string;
|
|
50
|
+
/** Shown as it is: "Trattoria", "Boulangerie". Also `primaryTypeDisplayName`, `categories[0]`. */
|
|
51
|
+
category?: string;
|
|
52
|
+
/** Google's `types`, read only to choose a glyph and, without `category`, a word. */
|
|
53
|
+
types?: string[];
|
|
54
|
+
/** An `http(s)` photo. Also `photo`, `imageUrl`, `thumbnail`, `photos[0]`. */
|
|
55
|
+
image?: string;
|
|
56
|
+
/** 0–5 (a 10-point score is halved). */
|
|
57
|
+
rating?: number;
|
|
58
|
+
/** Also `user_ratings_total`, `userRatingCount`, `reviews`, `review_count`. */
|
|
59
|
+
reviewCount?: number;
|
|
60
|
+
/** 1–4, `"€€"`, or Google's `"PRICE_LEVEL_MODERATE"`; any other text is shown as it is ("€10–20"). Also `price_level`. */
|
|
61
|
+
priceLevel?: number | string;
|
|
62
|
+
/** Also `formatted_address`, `formattedAddress`, `vicinity`, Yelp's `location.display_address`. */
|
|
63
|
+
address?: string;
|
|
64
|
+
/** In metres; a text ("12 min walk") is shown as it is. Also `distanceMeters`. */
|
|
65
|
+
distance?: number | string;
|
|
66
|
+
/** Also `formatted_phone_number`, `international_phone_number`, `nationalPhoneNumber`. */
|
|
67
|
+
phone?: string;
|
|
68
|
+
/** The place's own site. Also `websiteUri`. */
|
|
69
|
+
website?: string;
|
|
70
|
+
/** The place's page (on a map, a guide); the name links to it. Also `googleMapsUri`. */
|
|
71
|
+
url?: string;
|
|
72
|
+
/** Also `lat`/`lng`, `latitude`/`longitude`, `geometry.location`, `location`. */
|
|
73
|
+
coordinates?: {
|
|
74
|
+
lat: number;
|
|
75
|
+
lng: number;
|
|
76
|
+
};
|
|
77
|
+
/** Google's place id, which makes Directions land on the place itself. Also `place_id`. */
|
|
78
|
+
placeId?: string;
|
|
79
|
+
/** The tool's own answer; `hours` wins when both are given. Also `open_now`, `isOpen`, `opening_hours.open_now`, Yelp's `hours[0].is_open_now`. */
|
|
80
|
+
openNow?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* The week's opening hours: `[{ day, open, close }]` (several ranges a day, closing past
|
|
83
|
+
* midnight), Google's `periods` or `weekday_text`, Yelp's `hours`, or
|
|
84
|
+
* `{ monday: "09:00-18:00", sunday: "closed" }`. Also `currentOpeningHours` (read first:
|
|
85
|
+
* it has the holidays), `regularOpeningHours`, `opening_hours`, `openingHours`.
|
|
86
|
+
*/
|
|
87
|
+
hours?: PlaceHoursInput[] | Record<string, unknown> | string[];
|
|
88
|
+
/** The place's offset from UTC in minutes, so "Open now" is read on the place's clock. Also `utc_offset_minutes`. */
|
|
89
|
+
utcOffset?: number;
|
|
90
|
+
/** At most four short facts: "Terrace", "Vegan". Also `features`, `amenities`. */
|
|
91
|
+
tags?: string[];
|
|
92
|
+
}
|
|
93
|
+
/** A price level once read: the tier, and the sign the source wrote it with, if it did. */
|
|
94
|
+
export interface PlacePrice {
|
|
95
|
+
level: number;
|
|
96
|
+
symbol?: string;
|
|
97
|
+
}
|
|
98
|
+
/** A place as the card draws it, once read. */
|
|
99
|
+
export interface Place {
|
|
100
|
+
name: string;
|
|
101
|
+
category?: string;
|
|
102
|
+
kind: PlaceKind;
|
|
103
|
+
image?: string;
|
|
104
|
+
rating?: number;
|
|
105
|
+
reviewCount?: number;
|
|
106
|
+
price?: PlacePrice;
|
|
107
|
+
priceText?: string;
|
|
108
|
+
address?: string;
|
|
109
|
+
distance?: number;
|
|
110
|
+
distanceText?: string;
|
|
111
|
+
phone?: string;
|
|
112
|
+
website?: string;
|
|
113
|
+
url?: string;
|
|
114
|
+
coordinates?: {
|
|
115
|
+
lat: number;
|
|
116
|
+
lng: number;
|
|
117
|
+
};
|
|
118
|
+
placeId?: string;
|
|
119
|
+
openNow?: boolean;
|
|
120
|
+
hours: PlaceHoursRange[];
|
|
121
|
+
utcOffset?: number;
|
|
122
|
+
tags: string[];
|
|
123
|
+
}
|
|
124
|
+
/** The card's data: one place or several, and the collection's title. */
|
|
125
|
+
export interface PlaceData {
|
|
126
|
+
title?: string;
|
|
127
|
+
places: Place[];
|
|
128
|
+
}
|
|
129
|
+
/** Whether a place is open at a moment, and when that changes (none: it never does). */
|
|
130
|
+
export interface PlaceStatus {
|
|
131
|
+
open: boolean;
|
|
132
|
+
changesAt?: Date;
|
|
133
|
+
}
|
|
134
|
+
/** How an app plugs the place card in: the kit's options, and two of the card's own. */
|
|
135
|
+
export interface PlaceCardOptions extends CardSetupOptions<PlaceData, PlaceVariant> {
|
|
136
|
+
/**
|
|
137
|
+
* The sign a price TIER (1–4) is drawn with. A tier is a scale, not an amount — Google
|
|
138
|
+
* and Yelp return a number, not a currency — so the card cannot know the place's money.
|
|
139
|
+
* `$` by default, the sign those APIs' own documentation uses; a European app passes `€`.
|
|
140
|
+
* A tier the source wrote with its own sign ("€€") keeps it. Read aloud as
|
|
141
|
+
* "Price level 2 of 4" either way.
|
|
142
|
+
*/
|
|
143
|
+
currencySymbol?: string;
|
|
144
|
+
/** The clock "Open now" is read against — the device's by default; a test or a replay passes its own. */
|
|
145
|
+
now?: () => Date;
|
|
146
|
+
/**
|
|
147
|
+
* The Directions / Call / Website buttons on each place, drawn from its data (`true` by
|
|
148
|
+
* default). They are the place's own; the app's `actions` are the card's, under it, and
|
|
149
|
+
* one does not replace the other. `false` draws none.
|
|
150
|
+
*/
|
|
151
|
+
builtIns?: boolean;
|
|
152
|
+
}
|
|
153
|
+
/** Minutes from midnight: "09:00", "9:30", "0900", "21h30", "9 PM", Google's `{ hour, minute }`. */
|
|
154
|
+
export declare function readTime(value: unknown): number | undefined;
|
|
155
|
+
/**
|
|
156
|
+
* The week's opening hours from the shapes tools write them in: `[{ day, open, close }]`,
|
|
157
|
+
* Google's `periods` (`{ open: { day, time | hour, minute }, close }`), its `weekday_text`
|
|
158
|
+
* ("Monday: 9:00 AM – 5:00 PM"), or a week by name (`{ monday: "09:00-18:00" }`).
|
|
159
|
+
* Anything it cannot read is left out.
|
|
160
|
+
*/
|
|
161
|
+
export declare function readHours(raw: unknown): PlaceHoursRange[];
|
|
162
|
+
/**
|
|
163
|
+
* Whether a place with these hours is open at `date`, and when that changes — read on
|
|
164
|
+
* `date`'s own clock (pass the place's local time). `null` when the hours say nothing.
|
|
165
|
+
* Hours take any shape `readHours` reads.
|
|
166
|
+
*/
|
|
167
|
+
export declare function placeStatus(hours: unknown, date: Date): PlaceStatus | null;
|
|
168
|
+
/** Whether a place with these hours is open at `date`. No hours, no answer: `false`. */
|
|
169
|
+
export declare function isOpenAt(hours: unknown, date: Date): boolean;
|
|
170
|
+
/**
|
|
171
|
+
* The card's data from what `map` returns: one place, an array of places, or a collection
|
|
172
|
+
* (`{ title?, places | results | candidates }`). At most ten places; `null` when not one
|
|
173
|
+
* has a name.
|
|
174
|
+
*/
|
|
175
|
+
export declare function readPlaces(raw: unknown): PlaceData | null;
|
|
176
|
+
/**
|
|
177
|
+
* Google Maps directions to the place: to its coordinates when known, else to its name and
|
|
178
|
+
* address, landing on the place itself when its Google id is known. `null` without either.
|
|
179
|
+
*/
|
|
180
|
+
export declare function directionsUrl(place: Pick<Place, 'name' | 'address' | 'coordinates' | 'placeId'>): string | null;
|
|
181
|
+
/**
|
|
182
|
+
* A `tel:` link from a written number — its digits, and the `+` before the first of them
|
|
183
|
+
* ("Tel: +33 …" keeps it). An extension ("ext. 12", "x12", "#3") is not part of the number:
|
|
184
|
+
* dialled as digits, it would make a different one. `null` for no number.
|
|
185
|
+
*/
|
|
186
|
+
export declare function phoneUrl(phone: string | undefined): string | null;
|
|
187
|
+
/**
|
|
188
|
+
* The place card with its built-in buttons and the device's clock — for `placeCard.segment(data)`.
|
|
189
|
+
* Plug it in with `setupPlaceCard`, which also hears the card's own options.
|
|
190
|
+
*/
|
|
191
|
+
export declare const placeCard: {
|
|
192
|
+
name: string;
|
|
193
|
+
variants: readonly PlaceVariant[];
|
|
194
|
+
setup: (options?: CardSetupOptions<PlaceData, PlaceVariant>) => () => void;
|
|
195
|
+
segment: (raw: unknown, options?: {
|
|
196
|
+
id?: string;
|
|
197
|
+
variant?: PlaceVariant | undefined;
|
|
198
|
+
config?: AparteConfig;
|
|
199
|
+
}) => import("../index.js").AparteCardSegment;
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* Draw a tool's places as this card — returns the function that stops it. Each place keeps
|
|
203
|
+
* its Directions / Call / Website buttons beside the app's own `actions` unless `builtIns`
|
|
204
|
+
* is `false`.
|
|
205
|
+
*/
|
|
206
|
+
export declare function setupPlaceCard(options?: PlaceCardOptions): () => void;
|
|
207
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/place/index.ts"],"names":[],"mappings":"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"}
|