@brandlab-digital/site-next 1.0.0-rc.2 → 1.0.0-rc.21

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 (88) hide show
  1. package/dist/analytics.d.ts +23 -0
  2. package/dist/analytics.d.ts.map +1 -1
  3. package/dist/analytics.js +61 -0
  4. package/dist/analytics.js.map +1 -1
  5. package/dist/blog.d.ts.map +1 -1
  6. package/dist/blog.js +5 -2
  7. package/dist/blog.js.map +1 -1
  8. package/dist/contact/attribution.d.ts +11 -0
  9. package/dist/contact/attribution.d.ts.map +1 -0
  10. package/dist/contact/attribution.js +145 -0
  11. package/dist/contact/attribution.js.map +1 -0
  12. package/dist/contact/client.d.ts +7 -1
  13. package/dist/contact/client.d.ts.map +1 -1
  14. package/dist/contact/client.js +32 -1
  15. package/dist/contact/client.js.map +1 -1
  16. package/dist/contact/context.d.ts +4 -0
  17. package/dist/contact/context.d.ts.map +1 -1
  18. package/dist/contact/context.js +56 -7
  19. package/dist/contact/context.js.map +1 -1
  20. package/dist/contact/contract.d.ts +3 -4
  21. package/dist/contact/contract.d.ts.map +1 -1
  22. package/dist/contact/contract.js +3 -5
  23. package/dist/contact/contract.js.map +1 -1
  24. package/dist/contact/email.d.ts +1 -0
  25. package/dist/contact/email.d.ts.map +1 -1
  26. package/dist/contact/email.js +137 -54
  27. package/dist/contact/email.js.map +1 -1
  28. package/dist/contact/image-sanitizer.d.ts +1 -1
  29. package/dist/contact/image-sanitizer.d.ts.map +1 -1
  30. package/dist/contact/image-sanitizer.js +12 -17
  31. package/dist/contact/image-sanitizer.js.map +1 -1
  32. package/dist/contact/index.d.ts +1 -0
  33. package/dist/contact/index.d.ts.map +1 -1
  34. package/dist/contact/index.js +2 -0
  35. package/dist/contact/index.js.map +1 -1
  36. package/dist/contact/production.d.ts +3 -1
  37. package/dist/contact/production.d.ts.map +1 -1
  38. package/dist/contact/production.js +31 -60
  39. package/dist/contact/production.js.map +1 -1
  40. package/dist/contact/resend.d.ts +1 -1
  41. package/dist/contact/resend.js +1 -1
  42. package/dist/contact/server-entry.d.ts +13 -0
  43. package/dist/contact/server-entry.d.ts.map +1 -0
  44. package/dist/contact/server-entry.js +13 -0
  45. package/dist/contact/server-entry.js.map +1 -0
  46. package/dist/contact/server.d.ts.map +1 -1
  47. package/dist/contact/server.js +27 -28
  48. package/dist/contact/server.js.map +1 -1
  49. package/dist/contact/shared.d.ts +3 -6
  50. package/dist/contact/shared.d.ts.map +1 -1
  51. package/dist/contact/shared.js.map +1 -1
  52. package/dist/google-reviews-client.d.ts +20 -0
  53. package/dist/google-reviews-client.d.ts.map +1 -0
  54. package/dist/google-reviews-client.js +85 -0
  55. package/dist/google-reviews-client.js.map +1 -0
  56. package/dist/google-reviews-durable.d.ts +22 -0
  57. package/dist/google-reviews-durable.d.ts.map +1 -0
  58. package/dist/google-reviews-durable.js +81 -0
  59. package/dist/google-reviews-durable.js.map +1 -0
  60. package/dist/google-reviews-server.d.ts +58 -0
  61. package/dist/google-reviews-server.d.ts.map +1 -0
  62. package/dist/google-reviews-server.js +151 -0
  63. package/dist/google-reviews-server.js.map +1 -0
  64. package/dist/google-reviews-ui.d.ts +599 -0
  65. package/dist/google-reviews-ui.d.ts.map +1 -0
  66. package/dist/google-reviews-ui.js +188 -0
  67. package/dist/google-reviews-ui.js.map +1 -0
  68. package/dist/google-reviews.d.ts +4 -322
  69. package/dist/google-reviews.d.ts.map +1 -1
  70. package/dist/google-reviews.js +4 -252
  71. package/dist/google-reviews.js.map +1 -1
  72. package/dist/google-tag-plan.d.ts +19 -0
  73. package/dist/google-tag-plan.d.ts.map +1 -0
  74. package/dist/google-tag-plan.js +85 -0
  75. package/dist/google-tag-plan.js.map +1 -0
  76. package/dist/google-tag.d.ts +17 -0
  77. package/dist/google-tag.d.ts.map +1 -0
  78. package/dist/google-tag.js +18 -0
  79. package/dist/google-tag.js.map +1 -0
  80. package/dist/instrumentation-client.d.ts +2 -0
  81. package/dist/instrumentation-client.d.ts.map +1 -1
  82. package/dist/instrumentation-client.js +39 -3
  83. package/dist/instrumentation-client.js.map +1 -1
  84. package/dist/redis-rest.d.ts +12 -0
  85. package/dist/redis-rest.d.ts.map +1 -0
  86. package/dist/redis-rest.js +83 -0
  87. package/dist/redis-rest.js.map +1 -0
  88. package/package.json +29 -36
@@ -0,0 +1,188 @@
1
+ import { createElement } from 'react';
2
+ import { GOOGLE_MAPS_ATTRIBUTION_LABEL, GOOGLE_MAPS_ATTRIBUTION_TEXT, GOOGLE_PLACE_REVIEWS_MAX_REVIEWS, normalizeGooglePlacePublicUrl, } from '@brandlab-digital/site-core/google-reviews';
3
+ import { GOOGLE_MAPS_ATTRIBUTION_LOGO_DATA_URL, GOOGLE_MAPS_ATTRIBUTION_LOGO_HEIGHT, GOOGLE_MAPS_ATTRIBUTION_LOGO_WIDTH, } from './google-maps-attribution-assets.js';
4
+ export const GOOGLE_MAPS_REVIEW_POLICY_URL = 'https://support.google.com/contributionpolicy/answer/7422880';
5
+ export function GoogleReviewsLink({ googleMapsUri, label = 'Read our Google reviews', ...anchorProps }) {
6
+ const href = normalizeGooglePlacePublicUrl(googleMapsUri);
7
+ if (!href)
8
+ return null;
9
+ return createElement('a', {
10
+ ...anchorProps,
11
+ href,
12
+ 'data-brandlab-google-reviews': 'link-only',
13
+ referrerPolicy: 'no-referrer',
14
+ rel: 'noopener noreferrer',
15
+ target: '_blank',
16
+ }, label);
17
+ }
18
+ function assertNonEmptyText(value, field) {
19
+ if (typeof value !== 'string' || !value.trim()) {
20
+ throw new Error(`${field} is required for a policy-complete Google Places rendering.`);
21
+ }
22
+ }
23
+ function assertPublicUrl(value, field, required = false) {
24
+ if (value === undefined && !required)
25
+ return;
26
+ if (typeof value !== 'string' || !normalizeGooglePlacePublicUrl(value)) {
27
+ throw new Error(`${field} must be a credential-free HTTPS URL.`);
28
+ }
29
+ }
30
+ function assertGooglePlaceReviewsSnapshotIsRenderable(snapshot) {
31
+ assertNonEmptyText(snapshot.businessName, 'snapshot.businessName');
32
+ assertPublicUrl(snapshot.googleMapsUri, 'snapshot.googleMapsUri', true);
33
+ if (!['summary', 'full'].includes(snapshot.mode)) {
34
+ throw new Error('snapshot.mode must be summary or full.');
35
+ }
36
+ if (snapshot.attribution?.label !== GOOGLE_MAPS_ATTRIBUTION_LABEL ||
37
+ snapshot.attribution?.text !== GOOGLE_MAPS_ATTRIBUTION_TEXT) {
38
+ throw new Error('Google Maps attribution must use the unmodified shared label and text.');
39
+ }
40
+ if (!Array.isArray(snapshot.reviews) ||
41
+ snapshot.reviews.length > GOOGLE_PLACE_REVIEWS_MAX_REVIEWS ||
42
+ (snapshot.mode === 'summary' && snapshot.reviews.length > 0)) {
43
+ throw new Error('Google Places review content does not match the declared display mode.');
44
+ }
45
+ if (!Array.isArray(snapshot.thirdPartyAttributions)) {
46
+ throw new Error('snapshot.thirdPartyAttributions is required for provider attribution.');
47
+ }
48
+ snapshot.reviews.forEach((review, index) => {
49
+ assertNonEmptyText(review.authorName, `snapshot.reviews[${index}].authorName`);
50
+ assertNonEmptyText(review.text, `snapshot.reviews[${index}].text`);
51
+ assertPublicUrl(review.googleMapsUri, `snapshot.reviews[${index}].googleMapsUri`, true);
52
+ assertPublicUrl(review.authorUri, `snapshot.reviews[${index}].authorUri`);
53
+ assertPublicUrl(review.authorPhotoUri, `snapshot.reviews[${index}].authorPhotoUri`);
54
+ assertPublicUrl(review.flagContentUri, `snapshot.reviews[${index}].flagContentUri`);
55
+ });
56
+ snapshot.thirdPartyAttributions.forEach((item, index) => {
57
+ assertNonEmptyText(item.provider, `snapshot.thirdPartyAttributions[${index}].provider`);
58
+ assertPublicUrl(item.providerUri, `snapshot.thirdPartyAttributions[${index}].providerUri`);
59
+ });
60
+ }
61
+ function googleMapsAttributionStyle(tone) {
62
+ return {
63
+ color: tone === 'dark' ? '#ffffff' : '#5e5e5e',
64
+ fontFamily: 'Roboto, Arial, sans-serif',
65
+ fontSize: 12,
66
+ fontWeight: 400,
67
+ whiteSpace: 'nowrap',
68
+ };
69
+ }
70
+ function googleMapsContentContainerStyle(tone) {
71
+ return {
72
+ backgroundColor: tone === 'dark' ? '#1f1f1f' : '#ffffff',
73
+ border: `1px solid ${tone === 'dark' ? '#5e5e5e' : '#d9d9d9'}`,
74
+ boxSizing: 'border-box',
75
+ color: tone === 'dark' ? '#ffffff' : '#1f1f1f',
76
+ padding: 16,
77
+ };
78
+ }
79
+ function googleMapsLogoClearSpaceStyle() {
80
+ return {
81
+ display: 'inline-flex',
82
+ lineHeight: 0,
83
+ padding: '10px 10px 5px',
84
+ };
85
+ }
86
+ function externalLinkProps(href) {
87
+ return {
88
+ href,
89
+ referrerPolicy: 'no-referrer',
90
+ rel: 'noopener noreferrer',
91
+ target: '_blank',
92
+ };
93
+ }
94
+ function renderGoogleMapsAttribution(attributionUrl, mode, tone) {
95
+ const content = mode === 'logo'
96
+ ? createElement('img', {
97
+ alt: GOOGLE_MAPS_ATTRIBUTION_LABEL,
98
+ decoding: 'async',
99
+ draggable: false,
100
+ height: GOOGLE_MAPS_ATTRIBUTION_LOGO_HEIGHT,
101
+ src: GOOGLE_MAPS_ATTRIBUTION_LOGO_DATA_URL[tone],
102
+ style: {
103
+ display: 'block',
104
+ height: GOOGLE_MAPS_ATTRIBUTION_LOGO_HEIGHT,
105
+ width: GOOGLE_MAPS_ATTRIBUTION_LOGO_WIDTH,
106
+ },
107
+ width: GOOGLE_MAPS_ATTRIBUTION_LOGO_WIDTH,
108
+ })
109
+ : createElement('span', {
110
+ 'data-brandlab-google-maps-attribution': 'text-constrained-space',
111
+ style: googleMapsAttributionStyle(tone),
112
+ translate: 'no',
113
+ }, GOOGLE_MAPS_ATTRIBUTION_TEXT);
114
+ if (!attributionUrl)
115
+ return content;
116
+ return createElement('a', {
117
+ ...externalLinkProps(attributionUrl),
118
+ 'aria-label': GOOGLE_MAPS_ATTRIBUTION_LABEL,
119
+ 'data-brandlab-google-maps-attribution': mode,
120
+ ...(mode === 'logo' ? { style: googleMapsLogoClearSpaceStyle() } : {}),
121
+ }, content);
122
+ }
123
+ function renderReview(review, index, props) {
124
+ const authorUri = normalizeGooglePlacePublicUrl(review.authorUri);
125
+ const authorPhotoUri = normalizeGooglePlacePublicUrl(review.authorPhotoUri);
126
+ const sourceUrl = normalizeGooglePlacePublicUrl(review.googleMapsUri);
127
+ const flagContentUri = normalizeGooglePlacePublicUrl(review.flagContentUri);
128
+ return createElement('article', { className: props.reviewClassName, key: `${review.authorName}:${review.publishTime ?? index}` }, createElement('header', null, authorPhotoUri
129
+ ? createElement('img', {
130
+ alt: '',
131
+ decoding: 'async',
132
+ height: 40,
133
+ loading: 'lazy',
134
+ referrerPolicy: 'no-referrer',
135
+ src: authorPhotoUri,
136
+ width: 40,
137
+ })
138
+ : null, authorUri
139
+ ? createElement('a', { ...externalLinkProps(authorUri), className: props.authorClassName }, review.authorName)
140
+ : createElement('span', { className: props.authorClassName }, review.authorName), review.rating
141
+ ? createElement('span', { 'aria-label': `${review.rating} out of 5 stars` }, `${review.rating}/5`)
142
+ : null, review.relativePublishTimeDescription
143
+ ? createElement('time', { dateTime: review.publishTime }, review.relativePublishTimeDescription)
144
+ : null), createElement('blockquote', { className: props.textClassName }, createElement('p', null, review.text)), createElement('footer', null, sourceUrl
145
+ ? createElement('a', externalLinkProps(sourceUrl), 'Read this review on Google Maps')
146
+ : null, flagContentUri
147
+ ? createElement('a', externalLinkProps(flagContentUri), 'Report this review to Google')
148
+ : null));
149
+ }
150
+ /** Attribution-complete Places output. Projects may style but cannot remove provider controls. */
151
+ export function GooglePlaceReviews({ snapshot, reviewClassName, authorClassName, textClassName, attributionClassName, policyClassName, attributionTone = 'light', attributionMode = 'logo', ...sectionProps }) {
152
+ if (snapshot.status !== 'available')
153
+ return null;
154
+ assertGooglePlaceReviewsSnapshotIsRenderable(snapshot);
155
+ const props = {
156
+ ...sectionProps,
157
+ snapshot,
158
+ reviewClassName,
159
+ authorClassName,
160
+ textClassName,
161
+ attributionClassName,
162
+ policyClassName,
163
+ attributionTone,
164
+ attributionMode,
165
+ };
166
+ const attributionUrl = normalizeGooglePlacePublicUrl(snapshot.googleMapsUri);
167
+ return createElement('section', {
168
+ ...sectionProps,
169
+ 'aria-label': sectionProps['aria-label'] ?? `${snapshot.businessName} reviews on Google Maps`,
170
+ 'data-brandlab-google-reviews': `attribution-complete-${snapshot.mode}`,
171
+ 'data-brandlab-google-attribution-mode': attributionMode,
172
+ }, createElement('div', {
173
+ 'data-brandlab-google-content-container': 'visually-distinguished',
174
+ style: googleMapsContentContainerStyle(attributionTone),
175
+ }, snapshot.rating
176
+ ? createElement('p', {
177
+ 'aria-label': `Average rating ${snapshot.rating} out of 5${snapshot.userRatingCount === undefined ? '' : ` from ${snapshot.userRatingCount} reviews`}`,
178
+ }, `${snapshot.rating}/5${snapshot.userRatingCount === undefined ? '' : ` from ${snapshot.userRatingCount} reviews`}`)
179
+ : null, snapshot.mode === 'full'
180
+ ? createElement('p', { 'data-brandlab-google-review-ordering': 'google-relevance' }, `Reviews are selected and ordered by Google Maps by relevance. Up to ${snapshot.reviews.length} returned reviews are displayed without reordering.`)
181
+ : null, ...snapshot.reviews.map((review, index) => renderReview(review, index, props)), ...snapshot.thirdPartyAttributions.map((item) => {
182
+ const providerUri = normalizeGooglePlacePublicUrl(item.providerUri);
183
+ return createElement('p', { key: `${item.provider}:${providerUri ?? ''}` }, 'Data provider: ', providerUri
184
+ ? createElement('a', externalLinkProps(providerUri), item.provider)
185
+ : item.provider);
186
+ }), createElement('p', { className: attributionClassName }, 'Reviews provided by ', renderGoogleMapsAttribution(attributionUrl, attributionMode, attributionTone)), createElement('p', { className: policyClassName }, 'Google checks for and removes fake review content when it is identified. ', createElement('a', externalLinkProps(GOOGLE_MAPS_REVIEW_POLICY_URL), 'Learn how Google reviews work'), '.')));
187
+ }
188
+ //# sourceMappingURL=google-reviews-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-reviews-ui.js","sourceRoot":"","sources":["../src/google-reviews-ui.ts"],"names":[],"mappings":"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"}
@@ -1,326 +1,8 @@
1
1
  import 'server-only';
2
- import { type CSSProperties, type HTMLAttributes } from 'react';
3
- import { type FetchGooglePlaceReviewsOptions, type GooglePlaceReviewsSnapshot } from '@brandlab-digital/site-core/google-reviews';
4
- export declare const GOOGLE_PLACE_REVIEWS_UNAVAILABLE_HEADERS: {
5
- readonly 'Cache-Control': "private, no-store, max-age=0";
6
- };
7
- export declare const GOOGLE_PLACE_REVIEWS_AVAILABLE_HEADERS: {
8
- readonly 'Cache-Control': "private, no-store, max-age=0";
9
- };
10
- export interface GooglePlaceReviewsRouteOptions extends FetchGooglePlaceReviewsOptions {
11
- /** Durable, project-wide quota protection keyed without request PII. */
12
- quotaGuard: GooglePlaceReviewsQuotaGuard;
13
- responseInit?: ResponseInit;
14
- }
15
- export interface GooglePlaceReviewsQuotaDecision {
16
- allowed: boolean;
17
- retryAfterSeconds?: number;
18
- }
19
- export type GooglePlaceReviewsQuotaGuard = (input: {
20
- placeId: string;
21
- }) => Promise<GooglePlaceReviewsQuotaDecision> | GooglePlaceReviewsQuotaDecision;
22
- export interface GooglePlaceReviewsProps extends HTMLAttributes<HTMLElement> {
23
- snapshot: GooglePlaceReviewsSnapshot;
24
- reviewClassName?: string;
25
- authorClassName?: string;
26
- textClassName?: string;
27
- attributionClassName?: string;
28
- /** Selects Google's approved attribution text colour for the surrounding background. */
29
- attributionTone?: 'light' | 'dark';
30
- /**
31
- * The official logo is mandatory by default. Text is available only when the
32
- * reviewed interface genuinely cannot accommodate the 98-by-18-pixel logo.
33
- */
34
- attributionMode?: 'logo' | 'text-constrained-space';
35
- }
36
2
  /**
37
- * Shared, attribution-complete rendering for Places review snapshots. Projects
38
- * may style the output but cannot omit the Google, author, source or reporting
39
- * links present in the upstream response.
3
+ * Backwards-compatible server entrypoint for RC.11 consumers. New code must
4
+ * use the explicit /server, /client or /ui subpath so the RSC boundary is clear.
40
5
  */
41
- export declare function GooglePlaceReviews({ snapshot, reviewClassName, authorClassName, textClassName, attributionClassName, attributionTone, attributionMode, ...sectionProps }: GooglePlaceReviewsProps): import("react").DetailedReactHTMLElement<{
42
- 'aria-label': string;
43
- 'data-brandlab-google-reviews': string;
44
- 'data-brandlab-google-attribution-mode': "logo" | "text-constrained-space";
45
- defaultChecked?: boolean | undefined;
46
- defaultValue?: string | number | readonly string[] | undefined;
47
- suppressContentEditableWarning?: boolean | undefined;
48
- suppressHydrationWarning?: boolean | undefined;
49
- accessKey?: string | undefined;
50
- autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {});
51
- autoFocus?: boolean | undefined;
52
- className?: string | undefined;
53
- contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
54
- contextMenu?: string | undefined;
55
- dir?: string | undefined;
56
- draggable?: (boolean | "true" | "false") | undefined;
57
- enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
58
- hidden?: boolean | undefined;
59
- id?: string | undefined;
60
- lang?: string | undefined;
61
- nonce?: string | undefined;
62
- slot?: string | undefined;
63
- spellCheck?: (boolean | "true" | "false") | undefined;
64
- style?: CSSProperties | undefined;
65
- tabIndex?: number | undefined;
66
- title?: string | undefined;
67
- translate?: "yes" | "no" | undefined;
68
- radioGroup?: string | undefined;
69
- role?: import("react").AriaRole | undefined;
70
- about?: string | undefined;
71
- content?: string | undefined;
72
- datatype?: string | undefined;
73
- inlist?: any;
74
- prefix?: string | undefined;
75
- property?: string | undefined;
76
- rel?: string | undefined;
77
- resource?: string | undefined;
78
- rev?: string | undefined;
79
- typeof?: string | undefined;
80
- vocab?: string | undefined;
81
- autoCorrect?: string | undefined;
82
- autoSave?: string | undefined;
83
- color?: string | undefined;
84
- itemProp?: string | undefined;
85
- itemScope?: boolean | undefined;
86
- itemType?: string | undefined;
87
- itemID?: string | undefined;
88
- itemRef?: string | undefined;
89
- results?: number | undefined;
90
- security?: string | undefined;
91
- unselectable?: "on" | "off" | undefined;
92
- popover?: "" | "auto" | "manual" | "hint" | undefined;
93
- popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
94
- popoverTarget?: string | undefined;
95
- inert?: boolean | undefined;
96
- inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
97
- is?: string | undefined;
98
- exportparts?: string | undefined;
99
- part?: string | undefined;
100
- "aria-activedescendant"?: string | undefined;
101
- "aria-atomic"?: (boolean | "true" | "false") | undefined;
102
- "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
103
- "aria-braillelabel"?: string | undefined;
104
- "aria-brailleroledescription"?: string | undefined;
105
- "aria-busy"?: (boolean | "true" | "false") | undefined;
106
- "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
107
- "aria-colcount"?: number | undefined;
108
- "aria-colindex"?: number | undefined;
109
- "aria-colindextext"?: string | undefined;
110
- "aria-colspan"?: number | undefined;
111
- "aria-controls"?: string | undefined;
112
- "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
113
- "aria-describedby"?: string | undefined;
114
- "aria-description"?: string | undefined;
115
- "aria-details"?: string | undefined;
116
- "aria-disabled"?: (boolean | "true" | "false") | undefined;
117
- "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
118
- "aria-errormessage"?: string | undefined;
119
- "aria-expanded"?: (boolean | "true" | "false") | undefined;
120
- "aria-flowto"?: string | undefined;
121
- "aria-grabbed"?: (boolean | "true" | "false") | undefined;
122
- "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
123
- "aria-hidden"?: (boolean | "true" | "false") | undefined;
124
- "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
125
- "aria-keyshortcuts"?: string | undefined;
126
- "aria-labelledby"?: string | undefined;
127
- "aria-level"?: number | undefined;
128
- "aria-live"?: "off" | "assertive" | "polite" | undefined;
129
- "aria-modal"?: (boolean | "true" | "false") | undefined;
130
- "aria-multiline"?: (boolean | "true" | "false") | undefined;
131
- "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
132
- "aria-orientation"?: "horizontal" | "vertical" | undefined;
133
- "aria-owns"?: string | undefined;
134
- "aria-placeholder"?: string | undefined;
135
- "aria-posinset"?: number | undefined;
136
- "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
137
- "aria-readonly"?: (boolean | "true" | "false") | undefined;
138
- "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
139
- "aria-required"?: (boolean | "true" | "false") | undefined;
140
- "aria-roledescription"?: string | undefined;
141
- "aria-rowcount"?: number | undefined;
142
- "aria-rowindex"?: number | undefined;
143
- "aria-rowindextext"?: string | undefined;
144
- "aria-rowspan"?: number | undefined;
145
- "aria-selected"?: (boolean | "true" | "false") | undefined;
146
- "aria-setsize"?: number | undefined;
147
- "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
148
- "aria-valuemax"?: number | undefined;
149
- "aria-valuemin"?: number | undefined;
150
- "aria-valuenow"?: number | undefined;
151
- "aria-valuetext"?: string | undefined;
152
- children?: import("react").ReactNode | undefined;
153
- dangerouslySetInnerHTML?: {
154
- __html: string | TrustedHTML;
155
- } | undefined;
156
- onCopy?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
157
- onCopyCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
158
- onCut?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
159
- onCutCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
160
- onPaste?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
161
- onPasteCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
162
- onCompositionEnd?: import("react").CompositionEventHandler<HTMLElement> | undefined;
163
- onCompositionEndCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
164
- onCompositionStart?: import("react").CompositionEventHandler<HTMLElement> | undefined;
165
- onCompositionStartCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
166
- onCompositionUpdate?: import("react").CompositionEventHandler<HTMLElement> | undefined;
167
- onCompositionUpdateCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
168
- onFocus?: import("react").FocusEventHandler<HTMLElement> | undefined;
169
- onFocusCapture?: import("react").FocusEventHandler<HTMLElement> | undefined;
170
- onBlur?: import("react").FocusEventHandler<HTMLElement> | undefined;
171
- onBlurCapture?: import("react").FocusEventHandler<HTMLElement> | undefined;
172
- onChange?: import("react").ChangeEventHandler<HTMLElement, Element> | undefined;
173
- onChangeCapture?: import("react").ChangeEventHandler<HTMLElement, Element> | undefined;
174
- onBeforeInput?: import("react").InputEventHandler<HTMLElement> | undefined;
175
- onBeforeInputCapture?: import("react").InputEventHandler<HTMLElement> | undefined;
176
- onInput?: import("react").InputEventHandler<HTMLElement> | undefined;
177
- onInputCapture?: import("react").InputEventHandler<HTMLElement> | undefined;
178
- onReset?: import("react").ReactEventHandler<HTMLElement> | undefined;
179
- onResetCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
180
- onSubmit?: import("react").SubmitEventHandler<HTMLElement> | undefined;
181
- onSubmitCapture?: import("react").SubmitEventHandler<HTMLElement> | undefined;
182
- onInvalid?: import("react").ReactEventHandler<HTMLElement> | undefined;
183
- onInvalidCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
184
- onLoad?: import("react").ReactEventHandler<HTMLElement> | undefined;
185
- onLoadCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
186
- onError?: import("react").ReactEventHandler<HTMLElement> | undefined;
187
- onErrorCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
188
- onKeyDown?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
189
- onKeyDownCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
190
- onKeyPress?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
191
- onKeyPressCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
192
- onKeyUp?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
193
- onKeyUpCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
194
- onAbort?: import("react").ReactEventHandler<HTMLElement> | undefined;
195
- onAbortCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
196
- onCanPlay?: import("react").ReactEventHandler<HTMLElement> | undefined;
197
- onCanPlayCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
198
- onCanPlayThrough?: import("react").ReactEventHandler<HTMLElement> | undefined;
199
- onCanPlayThroughCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
200
- onDurationChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
201
- onDurationChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
202
- onEmptied?: import("react").ReactEventHandler<HTMLElement> | undefined;
203
- onEmptiedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
204
- onEncrypted?: import("react").ReactEventHandler<HTMLElement> | undefined;
205
- onEncryptedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
206
- onEnded?: import("react").ReactEventHandler<HTMLElement> | undefined;
207
- onEndedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
208
- onLoadedData?: import("react").ReactEventHandler<HTMLElement> | undefined;
209
- onLoadedDataCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
210
- onLoadedMetadata?: import("react").ReactEventHandler<HTMLElement> | undefined;
211
- onLoadedMetadataCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
212
- onLoadStart?: import("react").ReactEventHandler<HTMLElement> | undefined;
213
- onLoadStartCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
214
- onPause?: import("react").ReactEventHandler<HTMLElement> | undefined;
215
- onPauseCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
216
- onPlay?: import("react").ReactEventHandler<HTMLElement> | undefined;
217
- onPlayCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
218
- onPlaying?: import("react").ReactEventHandler<HTMLElement> | undefined;
219
- onPlayingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
220
- onProgress?: import("react").ReactEventHandler<HTMLElement> | undefined;
221
- onProgressCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
222
- onRateChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
223
- onRateChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
224
- onSeeked?: import("react").ReactEventHandler<HTMLElement> | undefined;
225
- onSeekedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
226
- onSeeking?: import("react").ReactEventHandler<HTMLElement> | undefined;
227
- onSeekingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
228
- onStalled?: import("react").ReactEventHandler<HTMLElement> | undefined;
229
- onStalledCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
230
- onSuspend?: import("react").ReactEventHandler<HTMLElement> | undefined;
231
- onSuspendCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
232
- onTimeUpdate?: import("react").ReactEventHandler<HTMLElement> | undefined;
233
- onTimeUpdateCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
234
- onVolumeChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
235
- onVolumeChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
236
- onWaiting?: import("react").ReactEventHandler<HTMLElement> | undefined;
237
- onWaitingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
238
- onAuxClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
239
- onAuxClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
240
- onClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
241
- onClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
242
- onContextMenu?: import("react").MouseEventHandler<HTMLElement> | undefined;
243
- onContextMenuCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
244
- onDoubleClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
245
- onDoubleClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
246
- onDrag?: import("react").DragEventHandler<HTMLElement> | undefined;
247
- onDragCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
248
- onDragEnd?: import("react").DragEventHandler<HTMLElement> | undefined;
249
- onDragEndCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
250
- onDragEnter?: import("react").DragEventHandler<HTMLElement> | undefined;
251
- onDragEnterCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
252
- onDragExit?: import("react").DragEventHandler<HTMLElement> | undefined;
253
- onDragExitCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
254
- onDragLeave?: import("react").DragEventHandler<HTMLElement> | undefined;
255
- onDragLeaveCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
256
- onDragOver?: import("react").DragEventHandler<HTMLElement> | undefined;
257
- onDragOverCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
258
- onDragStart?: import("react").DragEventHandler<HTMLElement> | undefined;
259
- onDragStartCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
260
- onDrop?: import("react").DragEventHandler<HTMLElement> | undefined;
261
- onDropCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
262
- onMouseDown?: import("react").MouseEventHandler<HTMLElement> | undefined;
263
- onMouseDownCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
264
- onMouseEnter?: import("react").MouseEventHandler<HTMLElement> | undefined;
265
- onMouseLeave?: import("react").MouseEventHandler<HTMLElement> | undefined;
266
- onMouseMove?: import("react").MouseEventHandler<HTMLElement> | undefined;
267
- onMouseMoveCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
268
- onMouseOut?: import("react").MouseEventHandler<HTMLElement> | undefined;
269
- onMouseOutCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
270
- onMouseOver?: import("react").MouseEventHandler<HTMLElement> | undefined;
271
- onMouseOverCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
272
- onMouseUp?: import("react").MouseEventHandler<HTMLElement> | undefined;
273
- onMouseUpCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
274
- onSelect?: import("react").ReactEventHandler<HTMLElement> | undefined;
275
- onSelectCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
276
- onTouchCancel?: import("react").TouchEventHandler<HTMLElement> | undefined;
277
- onTouchCancelCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
278
- onTouchEnd?: import("react").TouchEventHandler<HTMLElement> | undefined;
279
- onTouchEndCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
280
- onTouchMove?: import("react").TouchEventHandler<HTMLElement> | undefined;
281
- onTouchMoveCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
282
- onTouchStart?: import("react").TouchEventHandler<HTMLElement> | undefined;
283
- onTouchStartCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
284
- onPointerDown?: import("react").PointerEventHandler<HTMLElement> | undefined;
285
- onPointerDownCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
286
- onPointerMove?: import("react").PointerEventHandler<HTMLElement> | undefined;
287
- onPointerMoveCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
288
- onPointerUp?: import("react").PointerEventHandler<HTMLElement> | undefined;
289
- onPointerUpCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
290
- onPointerCancel?: import("react").PointerEventHandler<HTMLElement> | undefined;
291
- onPointerCancelCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
292
- onPointerEnter?: import("react").PointerEventHandler<HTMLElement> | undefined;
293
- onPointerLeave?: import("react").PointerEventHandler<HTMLElement> | undefined;
294
- onPointerOver?: import("react").PointerEventHandler<HTMLElement> | undefined;
295
- onPointerOverCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
296
- onPointerOut?: import("react").PointerEventHandler<HTMLElement> | undefined;
297
- onPointerOutCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
298
- onGotPointerCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
299
- onGotPointerCaptureCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
300
- onLostPointerCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
301
- onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
302
- onScroll?: import("react").UIEventHandler<HTMLElement> | undefined;
303
- onScrollCapture?: import("react").UIEventHandler<HTMLElement> | undefined;
304
- onScrollEnd?: import("react").UIEventHandler<HTMLElement> | undefined;
305
- onScrollEndCapture?: import("react").UIEventHandler<HTMLElement> | undefined;
306
- onWheel?: import("react").WheelEventHandler<HTMLElement> | undefined;
307
- onWheelCapture?: import("react").WheelEventHandler<HTMLElement> | undefined;
308
- onAnimationStart?: import("react").AnimationEventHandler<HTMLElement> | undefined;
309
- onAnimationStartCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
310
- onAnimationEnd?: import("react").AnimationEventHandler<HTMLElement> | undefined;
311
- onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
312
- onAnimationIteration?: import("react").AnimationEventHandler<HTMLElement> | undefined;
313
- onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
314
- onToggle?: import("react").ToggleEventHandler<HTMLElement> | undefined;
315
- onBeforeToggle?: import("react").ToggleEventHandler<HTMLElement> | undefined;
316
- onTransitionCancel?: import("react").TransitionEventHandler<HTMLElement> | undefined;
317
- onTransitionCancelCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
318
- onTransitionEnd?: import("react").TransitionEventHandler<HTMLElement> | undefined;
319
- onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
320
- onTransitionRun?: import("react").TransitionEventHandler<HTMLElement> | undefined;
321
- onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
322
- onTransitionStart?: import("react").TransitionEventHandler<HTMLElement> | undefined;
323
- onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
324
- }, HTMLElement> | null;
325
- export declare function createGooglePlaceReviewsRouteResponse(options: GooglePlaceReviewsRouteOptions): Promise<Response>;
6
+ export * from './google-reviews-server.js';
7
+ export * from './google-reviews-ui.js';
326
8
  //# sourceMappingURL=google-reviews.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"google-reviews.d.ts","sourceRoot":"","sources":["../src/google-reviews.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AAC9E,OAAO,EAQL,KAAK,8BAA8B,EAGnC,KAAK,0BAA0B,EAChC,MAAM,4CAA4C,CAAA;AAOnD,eAAO,MAAM,wCAAwC;;CAE3C,CAAA;AAEV,eAAO,MAAM,sCAAsC;;CAEzC,CAAA;AAEV,MAAM,WAAW,8BAA+B,SAAQ,8BAA8B;IACpF,wEAAwE;IACxE,UAAU,EAAE,4BAA4B,CAAA;IACxC,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,OAAO,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,MAAM,4BAA4B,GAAG,CAAC,KAAK,EAAE;IACjD,OAAO,EAAE,MAAM,CAAA;CAChB,KAAK,OAAO,CAAC,+BAA+B,CAAC,GAAG,+BAA+B,CAAA;AA6FhF,MAAM,WAAW,uBAAwB,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC1E,QAAQ,EAAE,0BAA0B,CAAA;IACpC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,wFAAwF;IACxF,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAClC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,wBAAwB,CAAA;CACpD;AAyLD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,eAAe,EACf,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,eAAyB,EACzB,eAAwB,EACxB,GAAG,YAAY,EAChB,EAAE,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAuEzB;AAED,wBAAsB,qCAAqC,CACzD,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,QAAQ,CAAC,CAiBnB"}
1
+ {"version":3,"file":"google-reviews.d.ts","sourceRoot":"","sources":["../src/google-reviews.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB;;;GAGG;AACH,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA"}