@pixelated-tech/components 3.2.13 → 3.2.14
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.COMPONENTS.md +146 -48
- package/README.md +49 -30
- package/dist/components/callout/callout.scss +0 -3
- package/dist/components/cms/flickr.js +8 -2
- package/dist/components/cms/google.reviews.components.js +1 -1
- package/dist/components/menu/menu-expando.js +7 -1
- package/dist/components/nerdjoke/nerdjoke.js +13 -7
- package/dist/components/pagebuilder/form/form.css +5 -1
- package/dist/components/pagebuilder/form/formcomponents.js +1 -1
- package/dist/components/seo/manifest.js +40 -0
- package/dist/components/seo/schema-localbusiness.js +46 -2
- package/dist/components/seo/schema-website.js +31 -2
- package/dist/components/seo/sitemap.js +3 -3
- package/dist/data/routes.json +25 -0
- package/dist/data/routes2.json +25 -0
- package/dist/index.js +2 -2
- package/dist/index.server.js +0 -1
- package/dist/types/components/cms/flickr.d.ts.map +1 -1
- package/dist/types/components/cms/google.reviews.components.d.ts.map +1 -1
- package/dist/types/components/config/config.types.d.ts +30 -0
- package/dist/types/components/config/config.types.d.ts.map +1 -1
- package/dist/types/components/menu/menu-expando.d.ts.map +1 -1
- package/dist/types/components/nerdjoke/nerdjoke.d.ts.map +1 -1
- package/dist/types/components/seo/manifest.d.ts +19 -0
- package/dist/types/components/seo/manifest.d.ts.map +1 -0
- package/dist/types/components/seo/schema-localbusiness.d.ts +22 -23
- package/dist/types/components/seo/schema-localbusiness.d.ts.map +1 -1
- package/dist/types/components/seo/schema-website.d.ts +17 -18
- package/dist/types/components/seo/schema-website.d.ts.map +1 -1
- package/dist/types/components/seo/sitemap.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.server.d.ts +0 -1
- package/dist/types/stories/seo/seo.googleanalytics.stories.d.ts.map +1 -1
- package/dist/types/stories/seo/seo.schema.stories.d.ts +23 -0
- package/dist/types/stories/seo/seo.schema.stories.d.ts.map +1 -0
- package/dist/types/tests/manifest.test.d.ts +2 -0
- package/dist/types/tests/manifest.test.d.ts.map +1 -0
- package/package.json +2 -2
- package/dist/components/utilities/api.js +0 -36
- package/dist/types/components/utilities/api.d.ts +0 -16
- package/dist/types/components/utilities/api.d.ts.map +0 -1
- package/dist/types/tests/api.test.d.ts +0 -2
- package/dist/types/tests/api.test.d.ts.map +0 -1
package/README.COMPONENTS.md
CHANGED
|
@@ -44,6 +44,7 @@ This guide provides detailed API documentation and usage examples for all Pixela
|
|
|
44
44
|
- [GoogleMap](#googlemap)
|
|
45
45
|
- [GoogleSearch](#googlesearch)
|
|
46
46
|
- [JSON-LD Schemas](#json-ld-schemas)
|
|
47
|
+
- [Manifest](#manifest)
|
|
47
48
|
- [MetadataComponents](#metadatacomponents)
|
|
48
49
|
|
|
49
50
|
### Shopping Cart
|
|
@@ -881,11 +882,16 @@ import { SaveLoadSection } from '@pixelated-tech/components';
|
|
|
881
882
|
|
|
882
883
|
Structured data components for SEO.
|
|
883
884
|
|
|
885
|
+
**Configuration**: The LocalBusiness and Website schema components can use `siteInfo` data from the routes JSON file as fallback values when props are not explicitly provided. This allows for centralized site-wide configuration of business/website information.
|
|
886
|
+
|
|
884
887
|
#### LocalBusiness
|
|
885
888
|
|
|
889
|
+
Generates LocalBusiness JSON-LD structured data. When props are not provided, falls back to `siteInfo` configuration from routes JSON.
|
|
890
|
+
|
|
886
891
|
```tsx
|
|
887
892
|
import { LocalBusinessSchema } from '@pixelated-tech/components';
|
|
888
893
|
|
|
894
|
+
// With explicit props
|
|
889
895
|
<LocalBusinessSchema
|
|
890
896
|
name="My Business"
|
|
891
897
|
address={{
|
|
@@ -896,6 +902,19 @@ import { LocalBusinessSchema } from '@pixelated-tech/components';
|
|
|
896
902
|
}}
|
|
897
903
|
telephone="(555) 123-4567"
|
|
898
904
|
/>
|
|
905
|
+
|
|
906
|
+
// Or with siteinfo object (recommended)
|
|
907
|
+
<LocalBusinessSchema
|
|
908
|
+
siteInfo={siteInfoData}
|
|
909
|
+
streetAddress="123 Main St"
|
|
910
|
+
addressLocality="City"
|
|
911
|
+
addressRegion="State"
|
|
912
|
+
postalCode="12345"
|
|
913
|
+
/>
|
|
914
|
+
|
|
915
|
+
// Or with minimal props (uses siteInfo fallbacks)
|
|
916
|
+
<LocalBusinessSchema />
|
|
917
|
+
```
|
|
899
918
|
```
|
|
900
919
|
|
|
901
920
|
#### Recipe
|
|
@@ -941,9 +960,12 @@ import { ServicesSchema } from '@pixelated-tech/components';
|
|
|
941
960
|
|
|
942
961
|
#### Website
|
|
943
962
|
|
|
963
|
+
Generates Website JSON-LD structured data. When props are not provided, falls back to `siteInfo` configuration from routes JSON.
|
|
964
|
+
|
|
944
965
|
```tsx
|
|
945
966
|
import { WebsiteSchema } from '@pixelated-tech/components';
|
|
946
967
|
|
|
968
|
+
// With explicit props
|
|
947
969
|
<WebsiteSchema
|
|
948
970
|
name="My Website"
|
|
949
971
|
url="https://example.com"
|
|
@@ -953,6 +975,22 @@ import { WebsiteSchema } from '@pixelated-tech/components';
|
|
|
953
975
|
logo: "https://example.com/logo.png"
|
|
954
976
|
}}
|
|
955
977
|
/>
|
|
978
|
+
|
|
979
|
+
// Or with siteinfo object (recommended)
|
|
980
|
+
<WebsiteSchema
|
|
981
|
+
siteInfo={siteInfoData}
|
|
982
|
+
potentialAction={{
|
|
983
|
+
'@type': 'SearchAction',
|
|
984
|
+
target: {
|
|
985
|
+
'@type': 'EntryPoint',
|
|
986
|
+
urlTemplate: 'https://example.com/search?q={search_term}'
|
|
987
|
+
}
|
|
988
|
+
}}
|
|
989
|
+
/>
|
|
990
|
+
|
|
991
|
+
// Or with minimal props (uses siteInfo fallbacks)
|
|
992
|
+
<WebsiteSchema />
|
|
993
|
+
```
|
|
956
994
|
```
|
|
957
995
|
|
|
958
996
|
#### BlogPosting
|
|
@@ -1057,6 +1095,52 @@ import { GoogleSearch } from '@pixelated-tech/components';
|
|
|
1057
1095
|
| `apiKey` | `string` | - | Google API key |
|
|
1058
1096
|
| `placeholder` | `string` | `'Search...'` | Search input placeholder |
|
|
1059
1097
|
|
|
1098
|
+
### Manifest
|
|
1099
|
+
|
|
1100
|
+
Generates a complete PWA manifest from siteinfo configuration. This component centralizes PWA manifest generation and ensures consistency across sites.
|
|
1101
|
+
|
|
1102
|
+
```tsx
|
|
1103
|
+
import { Manifest } from '@pixelated-tech/components';
|
|
1104
|
+
|
|
1105
|
+
// Basic usage with siteinfo
|
|
1106
|
+
export default function manifest() {
|
|
1107
|
+
return Manifest({ siteInfo: myRoutes.siteInfo });
|
|
1108
|
+
}
|
|
1109
|
+
|
|
1110
|
+
// With custom properties for site-specific overrides
|
|
1111
|
+
export default function manifest() {
|
|
1112
|
+
return Manifest({
|
|
1113
|
+
siteInfo: myRoutes.siteInfo,
|
|
1114
|
+
customProperties: {
|
|
1115
|
+
orientation: 'portrait',
|
|
1116
|
+
categories: ['business', 'productivity'],
|
|
1117
|
+
lang: 'en-US'
|
|
1118
|
+
}
|
|
1119
|
+
});
|
|
1120
|
+
}
|
|
1121
|
+
```
|
|
1122
|
+
|
|
1123
|
+
#### Props
|
|
1124
|
+
| Prop | Type | Default | Description |
|
|
1125
|
+
|------|------|---------|-------------|
|
|
1126
|
+
| `siteInfo` | `SiteInfo` | - | Site configuration object from routes.json |
|
|
1127
|
+
| `customProperties` | `Partial<MetadataRoute.Manifest>` | `{}` | Optional custom manifest properties to override defaults |
|
|
1128
|
+
|
|
1129
|
+
#### Generated Properties
|
|
1130
|
+
|
|
1131
|
+
The component automatically generates these manifest properties from `siteInfo`:
|
|
1132
|
+
|
|
1133
|
+
- `name` & `short_name`: From `siteInfo.name`
|
|
1134
|
+
- `description`: From `siteInfo.description`
|
|
1135
|
+
- `theme_color`: From `siteInfo.theme_color`
|
|
1136
|
+
- `background_color`: From `siteInfo.background_color`
|
|
1137
|
+
- `display`: From `siteInfo.display`
|
|
1138
|
+
- `homepage_url`: From `siteInfo.url`
|
|
1139
|
+
- `developer`: Object with `name` and `url` from siteInfo
|
|
1140
|
+
- `icons`: Array with favicon configuration
|
|
1141
|
+
- `author`: From `siteInfo.author` (non-standard property)
|
|
1142
|
+
- `default_locale`: From `siteInfo.default_locale`
|
|
1143
|
+
|
|
1060
1144
|
### MetadataComponents
|
|
1061
1145
|
|
|
1062
1146
|
Dynamic meta tag injection for SEO.
|
|
@@ -1312,7 +1396,19 @@ import { NerdJoke } from '@pixelated-tech/components';
|
|
|
1312
1396
|
|
|
1313
1397
|
### PixelatedClientConfigProvider Setup
|
|
1314
1398
|
|
|
1315
|
-
|
|
1399
|
+
The PixelatedClientConfigProvider enables components to access centralized configuration data. Configuration can be loaded from environment variables or a `routes.json` file in your project.
|
|
1400
|
+
|
|
1401
|
+
**Config Consumers:**
|
|
1402
|
+
- **LocalBusinessSchema & WebsiteSchema**: Use `siteInfo` for fallback business/website data
|
|
1403
|
+
- **CloudinaryImage & SmartImage**: Use `cloudinary` for image optimization settings
|
|
1404
|
+
- **WordPress**: Use `wordpress` for API connections
|
|
1405
|
+
- **ContentfulItems**: Use `contentful` for CMS integration
|
|
1406
|
+
- **eBay**: Use `ebay` for store integration
|
|
1407
|
+
- **Flickr**: Use `flickr` for photo gallery integration
|
|
1408
|
+
- **GoogleAnalytics**: Use `googleAnalytics` for tracking
|
|
1409
|
+
- **HubSpot**: Use `hubspot` for CRM integration
|
|
1410
|
+
- **PayPal**: Use `paypal` for payment processing
|
|
1411
|
+
- **Proxy**: Use `proxy` for API proxy settings
|
|
1316
1412
|
|
|
1317
1413
|
```tsx
|
|
1318
1414
|
// app/layout.tsx (Next.js 13+ App Router)
|
|
@@ -1327,15 +1423,63 @@ export default function RootLayout({
|
|
|
1327
1423
|
<html lang="en">
|
|
1328
1424
|
<body>
|
|
1329
1425
|
<PixelatedClientConfigProvider config={{
|
|
1426
|
+
// Site-wide business/website information (used by schema components)
|
|
1427
|
+
siteInfo: {
|
|
1428
|
+
name: 'Your Business Name',
|
|
1429
|
+
description: 'Your business description',
|
|
1430
|
+
url: 'https://yourwebsite.com',
|
|
1431
|
+
email: 'contact@yourwebsite.com',
|
|
1432
|
+
telephone: '(555) 123-4567',
|
|
1433
|
+
address: {
|
|
1434
|
+
streetAddress: '123 Main St',
|
|
1435
|
+
addressLocality: 'City',
|
|
1436
|
+
addressRegion: 'State',
|
|
1437
|
+
postalCode: '12345',
|
|
1438
|
+
addressCountry: 'United States'
|
|
1439
|
+
},
|
|
1440
|
+
openingHours: 'Mo-Fr 09:00-18:00'
|
|
1441
|
+
},
|
|
1442
|
+
// Image optimization
|
|
1330
1443
|
cloudinary: {
|
|
1331
1444
|
product_env: 'production',
|
|
1332
1445
|
baseUrl: 'https://res.cloudinary.com/your-account',
|
|
1333
1446
|
transforms: 'f_auto,q_auto,w_auto'
|
|
1334
1447
|
},
|
|
1448
|
+
// CMS integrations
|
|
1335
1449
|
wordpress: {
|
|
1336
1450
|
site: 'your-blog.wordpress.com'
|
|
1337
1451
|
},
|
|
1338
|
-
|
|
1452
|
+
contentful: {
|
|
1453
|
+
spaceId: 'your-space-id',
|
|
1454
|
+
accessToken: 'your-access-token',
|
|
1455
|
+
environment: 'master'
|
|
1456
|
+
},
|
|
1457
|
+
// E-commerce
|
|
1458
|
+
ebay: {
|
|
1459
|
+
appId: 'your-app-id',
|
|
1460
|
+
globalId: 'EBAY-US'
|
|
1461
|
+
},
|
|
1462
|
+
paypal: {
|
|
1463
|
+
sandboxPayPalApiKey: 'your-sandbox-key',
|
|
1464
|
+
payPalApiKey: 'your-production-key'
|
|
1465
|
+
},
|
|
1466
|
+
// Analytics & CRM
|
|
1467
|
+
googleAnalytics: {
|
|
1468
|
+
id: 'GA-XXXXXXXXX'
|
|
1469
|
+
},
|
|
1470
|
+
hubspot: {
|
|
1471
|
+
portalId: 'your-portal-id',
|
|
1472
|
+
formId: 'your-form-id'
|
|
1473
|
+
},
|
|
1474
|
+
// Media services
|
|
1475
|
+
flickr: {
|
|
1476
|
+
api_key: 'your-flickr-api-key',
|
|
1477
|
+
user_id: 'your-user-id'
|
|
1478
|
+
},
|
|
1479
|
+
// API proxy
|
|
1480
|
+
proxy: {
|
|
1481
|
+
proxyURL: 'https://proxy.pixelated.tech/prod/proxy?url='
|
|
1482
|
+
}
|
|
1339
1483
|
}}>
|
|
1340
1484
|
{children}
|
|
1341
1485
|
</PixelatedClientConfigProvider>
|
|
@@ -1345,52 +1489,6 @@ export default function RootLayout({
|
|
|
1345
1489
|
}
|
|
1346
1490
|
```
|
|
1347
1491
|
|
|
1348
|
-
### Cloudinary Configuration
|
|
1349
|
-
|
|
1350
|
-
```tsx
|
|
1351
|
-
const cloudinaryConfig = {
|
|
1352
|
-
product_env: 'production', // Environment identifier
|
|
1353
|
-
baseUrl: 'https://res.cloudinary.com/your-account', // Your Cloudinary URL
|
|
1354
|
-
transforms: 'f_auto,q_auto,w_auto' // Default transformations
|
|
1355
|
-
};
|
|
1356
|
-
```
|
|
1357
|
-
|
|
1358
|
-
### WordPress Configuration
|
|
1359
|
-
|
|
1360
|
-
```tsx
|
|
1361
|
-
const wordpressConfig = {
|
|
1362
|
-
site: 'your-blog.wordpress.com', // WordPress site URL
|
|
1363
|
-
apiVersion: '1.1' // API version (optional)
|
|
1364
|
-
};
|
|
1365
|
-
```
|
|
1366
|
-
|
|
1367
|
-
### Contentful Configuration
|
|
1368
|
-
|
|
1369
|
-
```tsx
|
|
1370
|
-
const contentfulConfig = {
|
|
1371
|
-
spaceId: 'your-space-id', // Contentful space ID
|
|
1372
|
-
accessToken: 'your-access-token', // Contentful access token
|
|
1373
|
-
environment: 'master' // Contentful environment
|
|
1374
|
-
};
|
|
1375
|
-
```
|
|
1376
|
-
|
|
1377
|
-
### Other Service Configurations
|
|
1378
|
-
|
|
1379
|
-
```tsx
|
|
1380
|
-
const config = {
|
|
1381
|
-
calendly: {
|
|
1382
|
-
username: 'your-calendly-username'
|
|
1383
|
-
},
|
|
1384
|
-
hubspot: {
|
|
1385
|
-
portalId: 'your-portal-id',
|
|
1386
|
-
formId: 'your-form-id'
|
|
1387
|
-
},
|
|
1388
|
-
instagram: {
|
|
1389
|
-
accessToken: 'your-access-token'
|
|
1390
|
-
}
|
|
1391
|
-
};
|
|
1392
|
-
```
|
|
1393
|
-
|
|
1394
1492
|
---
|
|
1395
1493
|
|
|
1396
1494
|
## TypeScript Support
|
package/README.md
CHANGED
|
@@ -182,6 +182,8 @@ npm run storybook
|
|
|
182
182
|
- [ ] Buffer Integration (or Sendible, Sprout Social, Hootsuite)
|
|
183
183
|
- [ ] Zapier Integration
|
|
184
184
|
- [ ] Hero Banner: headline, subtext, CTA, background image/video, overlay.
|
|
185
|
+
- [ ] Accessibility Enhancer: wrapper component that automatically improves accessibility across Pixelated sites by adding ARIA labels, roles, and states to existing components. Includes color contrast checking, keyboard navigation helpers, and alt-text suggestions for images.
|
|
186
|
+
- [ ] SEO Dashboard with AI Integration: component that analyzes site content, suggests optimizations, integrates with AI for meta descriptions and keyword research.
|
|
185
187
|
|
|
186
188
|
### CI / CD Improvements
|
|
187
189
|
- [ ] Add CI workflow to run tests and lints on pull requests.
|
|
@@ -202,8 +204,15 @@ npm run storybook
|
|
|
202
204
|
- [ ] **GoogleReviews Component**: Add API key to config provider instead of hardcoding.
|
|
203
205
|
- [ ] **Instagram Component**: Add accessToken and userId to config provider for centralized API credentials.
|
|
204
206
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
+
### SSR Fixes
|
|
208
|
+
- [ ] **cloudinary.image.tsx** (`SmartImage`): Add `"use client"` or refactor to avoid `usePixelatedConfig` in server contexts
|
|
209
|
+
- [ ] **wordpress.components.tsx** (`BlogPostList`, etc.): Add `"use client"` or refactor to avoid `usePixelatedConfig` in server contexts
|
|
210
|
+
- [ ] **pagebuilder/form/formcomponents.tsx**: Add `"use client"` or refactor to avoid `usePixelatedConfig` in server contexts
|
|
211
|
+
- [ ] **cms/hubspot.components.tsx**: Add `"use client"` or refactor to avoid `usePixelatedConfig` in server contexts
|
|
212
|
+
- [ ] **cms/gravatar.components.tsx**: Add `"use client"` or refactor to avoid `usePixelatedConfig` in server contexts
|
|
213
|
+
- [ ] **structured/recipe.tsx**: Add `"use client"` or refactor to avoid `usePixelatedConfig` in server contexts
|
|
214
|
+
- [ ] **structured/timeline.tsx**: Add `"use client"` or refactor to avoid `usePixelatedConfig` in server contexts
|
|
215
|
+
- [ ] **structured/markdown.tsx**: Add `"use client"` or refactor to avoid `usePixelatedConfig` in server contexts
|
|
207
216
|
|
|
208
217
|
See the [open issues](https://github.com/brianwhaley/pixelated-components/issues) for a full list of proposed features (and known issues).
|
|
209
218
|
|
|
@@ -261,16 +270,16 @@ Project Link: [https://github.com/brianwhaley/pixelated-components](https://gith
|
|
|
261
270
|
|
|
262
271
|
### Overview
|
|
263
272
|
|
|
264
|
-
**Current Status**: ✅ 2,
|
|
273
|
+
**Current Status**: ✅ 2,210 tests passing across 65 test files
|
|
265
274
|
|
|
266
275
|
| Metric | Value |
|
|
267
276
|
|--------|-------|
|
|
268
|
-
| Test Files |
|
|
269
|
-
| Total Tests | 2,
|
|
270
|
-
| Coverage (Statements) |
|
|
271
|
-
| Coverage (Lines) |
|
|
272
|
-
| Coverage (Functions) |
|
|
273
|
-
| Coverage (Branches) | 67.
|
|
277
|
+
| Test Files | 65 |
|
|
278
|
+
| Total Tests | 2,210 |
|
|
279
|
+
| Coverage (Statements) | 77.92% |
|
|
280
|
+
| Coverage (Lines) | 81.09% |
|
|
281
|
+
| Coverage (Functions) | 81.27% |
|
|
282
|
+
| Coverage (Branches) | 67.31% |
|
|
274
283
|
| Test Framework | Vitest 4.x |
|
|
275
284
|
| Testing Library | @testing-library/react + jsdom |
|
|
276
285
|
|
|
@@ -288,42 +297,52 @@ npm run test:run # Single run (for CI)
|
|
|
288
297
|
**Component Coverage Summary**
|
|
289
298
|
|
|
290
299
|
#### Component Coverage (Sorted by Statement Coverage)
|
|
291
|
-
- **
|
|
300
|
+
- **config.server.tsx**: 100% statements
|
|
301
|
+
- **modal.tsx**: 100% statements
|
|
302
|
+
- **accordion.tsx**: 100% statements
|
|
303
|
+
- **tiles.tsx**: 100% statements
|
|
292
304
|
- **googlesearch.tsx**: 100% statements
|
|
293
305
|
- **formvalidations.tsx**: 100% statements
|
|
294
|
-
- **tiles.tsx**: 100% statements
|
|
295
|
-
- **markdown.tsx**: 100% statements
|
|
296
306
|
- **buzzwordbingo.tsx**: 100% statements
|
|
297
307
|
- **timeline.tsx**: 100% statements
|
|
298
|
-
- **
|
|
299
|
-
- **
|
|
300
|
-
- **
|
|
308
|
+
- **markdown.tsx**: 100% statements
|
|
309
|
+
- **ComponentPropertiesForm.tsx**: 100% statements
|
|
310
|
+
- **ComponentSelector.tsx**: 100% statements
|
|
311
|
+
- **ComponentTree.tsx**: 100% statements
|
|
312
|
+
- **schema-localbusiness.tsx**: 100% statements
|
|
313
|
+
- **schema-recipe.tsx**: 100% statements
|
|
314
|
+
- **schema-services.tsx**: 100% statements
|
|
315
|
+
- **schema-website.tsx**: 100% statements
|
|
316
|
+
- **google.reviews.functions.ts**: 100% statements
|
|
301
317
|
- **sidepanel.tsx**: 97.5% statements
|
|
318
|
+
- **config.ts**: 96.55% statements
|
|
302
319
|
- **google.reviews.components.tsx**: 95.83% statements
|
|
320
|
+
- **schema-blogposting.tsx**: 95.23% statements
|
|
321
|
+
- **recipe.tsx**: 94.59% statements
|
|
303
322
|
- **resume.tsx**: 94.38% statements
|
|
304
323
|
- **contentful.delivery.ts**: 92.5% statements
|
|
305
324
|
- **css.tsx**: 91.42% statements
|
|
306
325
|
- **functions.ts**: 90.9% statements
|
|
307
326
|
- **config.client.tsx**: 90% statements
|
|
308
|
-
- **
|
|
309
|
-
- **loading.tsx**: 85.71% statements
|
|
310
|
-
- **table.tsx**: 84.48% statements
|
|
327
|
+
- **menu-expando.tsx**: 90.12% statements
|
|
311
328
|
- **cloudinary.ts**: 83.33% statements
|
|
329
|
+
- **form.tsx**: 83.2% statements
|
|
312
330
|
- **shoppingcart.functions.ts**: 81.69% statements
|
|
313
|
-
- **callout.tsx**: 80
|
|
314
|
-
- **
|
|
315
|
-
- **
|
|
316
|
-
- **
|
|
331
|
+
- **callout.tsx**: 80% statements
|
|
332
|
+
- **microinteractions.tsx**: 80% statements
|
|
333
|
+
- **sitemap.ts**: 76.05% statements
|
|
334
|
+
- **manifest.tsx**: 75% statements
|
|
335
|
+
- **carousel.tsx**: 71.69% statements
|
|
336
|
+
- **nerdjoke.tsx**: 69.44% statements
|
|
317
337
|
- **menu-accordion.tsx**: 68.13% statements
|
|
318
|
-
- **semantic.tsx**:
|
|
319
|
-
- **
|
|
338
|
+
- **semantic.tsx**: 63.51% statements
|
|
339
|
+
- **flickr.ts**: 51.42% statements
|
|
340
|
+
- **PageEngine.tsx**: 48% statements
|
|
341
|
+
- **SaveLoadSection.tsx**: 84.84% statements
|
|
342
|
+
- **table.tsx**: 84.48% statements
|
|
343
|
+
- **loading.tsx**: 85.71% statements
|
|
320
344
|
- **socialcard.tsx**: 29.5% statements
|
|
321
|
-
- **
|
|
322
|
-
- **ComponentSelector.tsx**: 0% statements (no tests)
|
|
323
|
-
- **ComponentTree.tsx**: 0% statements (no tests)
|
|
324
|
-
- **PageBuilderUI.tsx**: 0% statements (no tests)
|
|
325
|
-
- **PageEngine.tsx**: 0% statements (no tests)
|
|
326
|
-
- **SaveLoadSection.tsx**: 0% statements (no tests)
|
|
345
|
+
- **PageBuilderUI.tsx**: 26.66% statements
|
|
327
346
|
|
|
328
347
|
### Testing Next Steps
|
|
329
348
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import PropTypes from 'prop-types';
|
|
2
|
-
import { generateURL } from '../utilities/api';
|
|
3
2
|
import { mergeDeep } from '../utilities/functions';
|
|
4
3
|
const defaultFlickr = {
|
|
5
4
|
flickr: {
|
|
@@ -57,7 +56,14 @@ export function GetFlickrData(props) {
|
|
|
57
56
|
flickrConfig = mergeDeep(flickrConfig, props.flickr);
|
|
58
57
|
}
|
|
59
58
|
const flickr = flickrConfig;
|
|
60
|
-
|
|
59
|
+
// Build URL with query parameters
|
|
60
|
+
let myURL = flickr.baseURL;
|
|
61
|
+
let queryParams = '';
|
|
62
|
+
Object.keys(flickr.urlProps).forEach((prop) => {
|
|
63
|
+
const value = flickr.urlProps[prop];
|
|
64
|
+
queryParams += (queryParams.length === 0) ? prop + '=' + value : '&' + prop + '=' + value;
|
|
65
|
+
});
|
|
66
|
+
myURL += queryParams;
|
|
61
67
|
const fetchFlickrData = async () => {
|
|
62
68
|
try {
|
|
63
69
|
const response = await fetch(myURL);
|
|
@@ -50,5 +50,5 @@ export function GoogleReviewsCard(props) {
|
|
|
50
50
|
if (error) {
|
|
51
51
|
return (_jsx("div", { className: "google-reviews-card", children: _jsxs("p", { className: "error", children: ["Error: ", error] }) }));
|
|
52
52
|
}
|
|
53
|
-
return (_jsxs("div", { className: "google-reviews-card", children: [_jsx("h3", { children: place?.name || 'Reviews' }), place?.formatted_address && (_jsx("p", { className: "address", children: place.formatted_address })), reviews.length === 0 ? (_jsx("p", { className: "no-reviews", children: "No reviews found." })) : (_jsx("ul", { children: reviews.map((r, i) => (_jsxs("li", { children: [_jsxs("div", { className: "review-header", children: [r.profile_photo_url && (_jsx("img", { src: r.profile_photo_url, alt: r.author_name, className: "profile-photo" })), _jsxs("div", { children: [_jsx("div", { className: "author-name", children: r.author_name }), _jsxs("div", { className: "rating", children: ['★'.repeat(r.rating), '☆'.repeat(5 - r.rating), " ", r.rating, "/5", r.relative_time_description && _jsxs("span", { children: [" \u00B7 ", r.relative_time_description] })] })] })] }), r.text && _jsx("div", { className: "review-text", children: r.text })] }, i))) })), place && (_jsx("a", { href: `https://search.google.com/local/writereview?placeid=${place.place_id}`, target: "_blank", rel: "noopener noreferrer", className: "write-review", children: "Write a review on Google \u2192" }))] }));
|
|
53
|
+
return (_jsxs("div", { className: "google-reviews-card", children: [_jsx("h3", { children: place?.name || 'Reviews' }), place?.formatted_address && (_jsx("p", { className: "address", children: place.formatted_address })), reviews.length === 0 ? (_jsx("p", { className: "no-reviews", children: "No reviews found." })) : (_jsx("ul", { children: reviews.map((r, i) => (_jsxs("li", { children: [_jsxs("div", { className: "review-header", children: [r.profile_photo_url && (_jsx("div", { className: "profile-photo-container", children: _jsx("img", { src: r.profile_photo_url, alt: r.author_name, className: "profile-photo" }) })), _jsxs("div", { children: [_jsx("div", { className: "author-name", children: r.author_name }), _jsxs("div", { className: "rating", children: ['★'.repeat(r.rating), '☆'.repeat(5 - r.rating), " ", r.rating, "/5", r.relative_time_description && _jsxs("span", { children: [" \u00B7 ", r.relative_time_description] })] })] })] }), r.text && _jsx("div", { className: "review-text", children: r.text })] }, i))) })), place && (_jsx("a", { href: `https://search.google.com/local/writereview?placeid=${place.place_id}`, target: "_blank", rel: "noopener noreferrer", className: "write-review", children: "Write a review on Google \u2192" }))] }));
|
|
54
54
|
}
|
|
@@ -136,6 +136,12 @@ export function MenuExpandoButton() {
|
|
|
136
136
|
if (details)
|
|
137
137
|
details.open = !details.open;
|
|
138
138
|
}
|
|
139
|
-
|
|
139
|
+
function handleKeyDown(event) {
|
|
140
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
141
|
+
event.preventDefault();
|
|
142
|
+
handleMenuExpandoButtonClick(event);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return (_jsx("div", { className: "menuExpandoButton", id: "menuExpandoButton", onClick: handleMenuExpandoButtonClick, onKeyDown: handleKeyDown, tabIndex: 0, role: "button", "aria-label": "Toggle mobile menu", children: _jsx("img", { src: "/images/icons/mobile-menu2.png", title: "Mobile Menu", alt: "Mobile Menu" }) }));
|
|
140
146
|
}
|
|
141
147
|
MenuExpandoButton.propTypes = {};
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
4
4
|
import PropTypes from "prop-types";
|
|
5
|
-
import { getXHRData, generateURL } from "../utilities/api";
|
|
6
5
|
import "../../css/pixelated.grid.scss";
|
|
7
6
|
import "./nerdjoke.css";
|
|
8
7
|
const debug = false;
|
|
@@ -36,7 +35,7 @@ export function NerdJoke( /* props: NerdJokeType */) {
|
|
|
36
35
|
elapsedPath.style.width = myWidth;
|
|
37
36
|
}
|
|
38
37
|
}, [formatTimeLeft]);
|
|
39
|
-
const loadJoke = useCallback(() => {
|
|
38
|
+
const loadJoke = useCallback(async () => {
|
|
40
39
|
if (debug)
|
|
41
40
|
console.log("Loading Joke");
|
|
42
41
|
timePassedRef.current = 0;
|
|
@@ -52,11 +51,18 @@ export function NerdJoke( /* props: NerdJokeType */) {
|
|
|
52
51
|
}, TIME_LIMIT * 1000);
|
|
53
52
|
const myURL = "https://vvqyc1xpw6.execute-api.us-east-2.amazonaws.com/prod/nerdjokes?";
|
|
54
53
|
const myURLProps = { command: "%2Fnerdjokes", text: "getjokejson" };
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
try {
|
|
55
|
+
const url = myURL + "command=" + myURLProps.command + "&text=" + myURLProps.text;
|
|
56
|
+
const response = await fetch(url);
|
|
57
|
+
if (!response.ok)
|
|
58
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
59
|
+
const jokeData = await response.json();
|
|
60
|
+
setJoke(jokeData);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.error('Failed to fetch joke:', error);
|
|
64
|
+
// Optionally set a fallback joke or handle error
|
|
65
|
+
}
|
|
60
66
|
}, []);
|
|
61
67
|
const startTimer = useCallback(() => {
|
|
62
68
|
if (debug)
|
|
@@ -72,11 +72,15 @@ form span {
|
|
|
72
72
|
border-radius: 20px;
|
|
73
73
|
padding: 0 3px; */
|
|
74
74
|
vertical-align: middle;
|
|
75
|
+
padding: 5px;
|
|
76
|
+
box-shadow: none;
|
|
77
|
+
background-color: transparent;
|
|
78
|
+
border: none;
|
|
75
79
|
}
|
|
76
80
|
|
|
77
81
|
.tooltipIcon img {
|
|
78
82
|
width: 20px;
|
|
79
|
-
margin: 5px 0 0 -10px;
|
|
83
|
+
/* margin: 5px 0 0 -10px; */
|
|
80
84
|
background-color: #DDD;
|
|
81
85
|
border-radius: 5px;
|
|
82
86
|
}
|
|
@@ -83,7 +83,7 @@ function FormTooltip(props) {
|
|
|
83
83
|
alt={props.id + " - " + props.text}
|
|
84
84
|
src="/images/icons/tooltip-icon-2.png" /> */
|
|
85
85
|
return (_jsx(_Fragment, { children: props.text && props.id
|
|
86
|
-
? _jsx(_Fragment, { children: _jsxs("div", { id: thisID, className: `tooltip ${props.className || ''}`, children: [_jsx("
|
|
86
|
+
? _jsx(_Fragment, { children: _jsxs("div", { id: thisID, className: `tooltip ${props.className || ''}`, children: [_jsx("button", { type: "button", className: "tooltipIcon", onClick: toggleTooltip, "aria-label": "Toggle tooltip", children: tooltipImg }), _jsx("div", { className: "tooltipText", children: props.text })] }) })
|
|
87
87
|
: "" }));
|
|
88
88
|
}
|
|
89
89
|
FormValidate.propTypes = {
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a PWA manifest from siteinfo configuration
|
|
3
|
+
* @param options - Configuration options
|
|
4
|
+
* @returns Next.js manifest object
|
|
5
|
+
*/
|
|
6
|
+
export function generateManifest(options) {
|
|
7
|
+
const { siteInfo, customProperties = {} } = options;
|
|
8
|
+
const baseManifest = {
|
|
9
|
+
// @ts-expect-error - 'author' is not in standard Manifest type but used by some PWA implementations
|
|
10
|
+
author: siteInfo.author,
|
|
11
|
+
background_color: siteInfo.background_color,
|
|
12
|
+
default_locale: siteInfo.default_locale,
|
|
13
|
+
description: siteInfo.description,
|
|
14
|
+
developer: {
|
|
15
|
+
name: siteInfo.author || "Developer",
|
|
16
|
+
url: siteInfo.url
|
|
17
|
+
},
|
|
18
|
+
display: siteInfo.display || "standalone",
|
|
19
|
+
homepage_url: siteInfo.url,
|
|
20
|
+
icons: [{
|
|
21
|
+
src: siteInfo.favicon || "/favicon.ico",
|
|
22
|
+
sizes: siteInfo.favicon_sizes || "64x64 32x32 24x24 16x16",
|
|
23
|
+
type: siteInfo.favicon_type || "image/x-icon"
|
|
24
|
+
}],
|
|
25
|
+
name: siteInfo.name,
|
|
26
|
+
short_name: siteInfo.name,
|
|
27
|
+
start_url: ".",
|
|
28
|
+
theme_color: siteInfo.theme_color,
|
|
29
|
+
};
|
|
30
|
+
// Merge with custom properties, allowing overrides
|
|
31
|
+
return { ...baseManifest, ...customProperties };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Default export for Next.js manifest route
|
|
35
|
+
* @param options - Configuration options
|
|
36
|
+
* @returns Next.js manifest object
|
|
37
|
+
*/
|
|
38
|
+
export function Manifest(options) {
|
|
39
|
+
return generateManifest(options);
|
|
40
|
+
}
|
|
@@ -1,5 +1,50 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
/**
|
|
4
|
+
* LocalBusiness Schema Component
|
|
5
|
+
* Generates JSON-LD structured data for SEO
|
|
6
|
+
* https://schema.org/LocalBusiness
|
|
7
|
+
*
|
|
8
|
+
* This component uses siteInfo passed as props to generate schema data.
|
|
9
|
+
* It does not use client-side hooks and can be rendered on the server.
|
|
10
|
+
*/
|
|
11
|
+
LocalBusinessSchema.propTypes = {
|
|
12
|
+
name: PropTypes.string,
|
|
13
|
+
streetAddress: PropTypes.string,
|
|
14
|
+
addressLocality: PropTypes.string,
|
|
15
|
+
addressRegion: PropTypes.string,
|
|
16
|
+
postalCode: PropTypes.string,
|
|
17
|
+
addressCountry: PropTypes.string,
|
|
18
|
+
telephone: PropTypes.string,
|
|
19
|
+
url: PropTypes.string,
|
|
20
|
+
logo: PropTypes.string,
|
|
21
|
+
image: PropTypes.string,
|
|
22
|
+
openingHours: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
|
|
23
|
+
description: PropTypes.string,
|
|
24
|
+
email: PropTypes.string,
|
|
25
|
+
priceRange: PropTypes.string,
|
|
26
|
+
sameAs: PropTypes.arrayOf(PropTypes.string), // Social media profiles
|
|
27
|
+
siteInfo: PropTypes.object // Required siteinfo from parent component
|
|
28
|
+
};
|
|
29
|
+
export function LocalBusinessSchema(props) {
|
|
30
|
+
// const config = usePixelatedConfig();
|
|
31
|
+
const siteInfo = props.siteInfo;
|
|
32
|
+
// Use props if provided, otherwise fall back to siteInfo
|
|
33
|
+
const name = props.name || siteInfo?.name;
|
|
34
|
+
const streetAddress = props.streetAddress || siteInfo?.address?.streetAddress;
|
|
35
|
+
const addressLocality = props.addressLocality || siteInfo?.address?.addressLocality;
|
|
36
|
+
const addressRegion = props.addressRegion || siteInfo?.address?.addressRegion;
|
|
37
|
+
const postalCode = props.postalCode || siteInfo?.address?.postalCode;
|
|
38
|
+
const addressCountry = props.addressCountry || siteInfo?.address?.addressCountry || 'United States';
|
|
39
|
+
const telephone = props.telephone || siteInfo?.telephone;
|
|
40
|
+
const url = props.url || siteInfo?.url;
|
|
41
|
+
const logo = props.logo || siteInfo?.image;
|
|
42
|
+
const image = props.image || siteInfo?.image;
|
|
43
|
+
const openingHours = props.openingHours;
|
|
44
|
+
const description = props.description || siteInfo?.description;
|
|
45
|
+
const email = props.email || siteInfo?.email;
|
|
46
|
+
const priceRange = props.priceRange || siteInfo?.priceRange;
|
|
47
|
+
const sameAs = props.sameAs || siteInfo?.sameAs;
|
|
3
48
|
const schemaData = {
|
|
4
49
|
'@context': 'https://schema.org',
|
|
5
50
|
'@type': 'LocalBusiness',
|
|
@@ -24,4 +69,3 @@ export function LocalBusinessSchema({ name, streetAddress, addressLocality, addr
|
|
|
24
69
|
};
|
|
25
70
|
return (_jsx("script", { type: "application/ld+json", dangerouslySetInnerHTML: { __html: JSON.stringify(schemaData) } }));
|
|
26
71
|
}
|
|
27
|
-
export default LocalBusinessSchema;
|
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
/**
|
|
4
|
+
* Website Schema Component
|
|
5
|
+
* Generates JSON-LD structured data for websites
|
|
6
|
+
* https://schema.org/WebSite
|
|
7
|
+
*
|
|
8
|
+
* This component uses siteInfo passed as props to generate schema data.
|
|
9
|
+
* It does not use client-side hooks and can be rendered on the server.
|
|
10
|
+
*/
|
|
11
|
+
WebsiteSchema.propTypes = {
|
|
12
|
+
name: PropTypes.string,
|
|
13
|
+
url: PropTypes.string,
|
|
14
|
+
description: PropTypes.string,
|
|
15
|
+
potentialAction: PropTypes.shape({
|
|
16
|
+
'@type': PropTypes.string,
|
|
17
|
+
target: PropTypes.shape({
|
|
18
|
+
'@type': PropTypes.string,
|
|
19
|
+
urlTemplate: PropTypes.string
|
|
20
|
+
}),
|
|
21
|
+
query: PropTypes.string
|
|
22
|
+
}),
|
|
23
|
+
siteInfo: PropTypes.object // Required siteinfo from parent component
|
|
24
|
+
};
|
|
25
|
+
export function WebsiteSchema(props) {
|
|
26
|
+
// const config = usePixelatedConfig();
|
|
27
|
+
const siteInfo = props.siteInfo;
|
|
28
|
+
// Use props if provided, otherwise fall back to siteInfo
|
|
29
|
+
const name = props.name || siteInfo?.name;
|
|
30
|
+
const url = props.url || siteInfo?.url;
|
|
31
|
+
const description = props.description || siteInfo?.description;
|
|
32
|
+
const potentialAction = props.potentialAction;
|
|
3
33
|
const schemaData = {
|
|
4
34
|
'@context': 'https://schema.org',
|
|
5
35
|
'@type': 'WebSite',
|
|
@@ -10,4 +40,3 @@ export function WebsiteSchema({ name, url, description, potentialAction }) {
|
|
|
10
40
|
};
|
|
11
41
|
return (_jsx("script", { type: "application/ld+json", dangerouslySetInnerHTML: { __html: JSON.stringify(schemaData) } }));
|
|
12
42
|
}
|
|
13
|
-
export default WebsiteSchema;
|
|
@@ -173,9 +173,9 @@ export async function createImageURLsFromJSON(origin, jsonPath = 'public/site-im
|
|
|
173
173
|
images: newImages,
|
|
174
174
|
});
|
|
175
175
|
}
|
|
176
|
-
catch (e) {
|
|
177
|
-
|
|
178
|
-
|
|
176
|
+
catch /* (e) */ {
|
|
177
|
+
// During build time, fetch will fail - suppress the error to avoid build noise
|
|
178
|
+
// The function returns an empty array, which is acceptable
|
|
179
179
|
}
|
|
180
180
|
return sitemap;
|
|
181
181
|
}
|
package/dist/data/routes.json
CHANGED
|
@@ -1,4 +1,29 @@
|
|
|
1
1
|
{
|
|
2
|
+
"siteInfo": {
|
|
3
|
+
"name": "Pixelated Technologies",
|
|
4
|
+
"description": "Custom web development and digital design agency specializing in React, Next.js, and modern web technologies",
|
|
5
|
+
"url": "https://pixelated.tech",
|
|
6
|
+
"email": "info@pixelated.tech",
|
|
7
|
+
"image": "/images/pix/pix-bg-512.gif",
|
|
8
|
+
"image_height": "512",
|
|
9
|
+
"image_width": "512",
|
|
10
|
+
"favicon": "/favicon.ico",
|
|
11
|
+
"telephone": "+1-973-710-8008",
|
|
12
|
+
"address": {
|
|
13
|
+
"streetAddress": "10 Jade Circle",
|
|
14
|
+
"addressLocality": "Denville",
|
|
15
|
+
"addressRegion": "NJ",
|
|
16
|
+
"postalCode": "07834",
|
|
17
|
+
"addressCountry": "US"
|
|
18
|
+
},
|
|
19
|
+
"priceRange": "$$",
|
|
20
|
+
"sameAs": [
|
|
21
|
+
"https://www.linkedin.com/in/brianwhaley",
|
|
22
|
+
"https://github.com/brianwhaley",
|
|
23
|
+
"https://twitter.com/brianwhaley"
|
|
24
|
+
],
|
|
25
|
+
"keywords": "pixelated, web development, react, next.js, custom websites, digital design, small business"
|
|
26
|
+
},
|
|
2
27
|
"routes": [
|
|
3
28
|
{
|
|
4
29
|
"name": "Home",
|
package/dist/data/routes2.json
CHANGED
|
@@ -1,4 +1,29 @@
|
|
|
1
1
|
{
|
|
2
|
+
"siteInfo": {
|
|
3
|
+
"name": "Pixelated Technologies",
|
|
4
|
+
"description": "Custom web development and digital design agency specializing in React, Next.js, and modern web technologies",
|
|
5
|
+
"url": "https://pixelated.tech",
|
|
6
|
+
"email": "info@pixelated.tech",
|
|
7
|
+
"image": "/images/pix/pix-bg-512.gif",
|
|
8
|
+
"image_height": "512",
|
|
9
|
+
"image_width": "512",
|
|
10
|
+
"favicon": "/favicon.ico",
|
|
11
|
+
"telephone": "+1-973-710-8008",
|
|
12
|
+
"address": {
|
|
13
|
+
"streetAddress": "10 Jade Circle",
|
|
14
|
+
"addressLocality": "Denville",
|
|
15
|
+
"addressRegion": "NJ",
|
|
16
|
+
"postalCode": "07834",
|
|
17
|
+
"addressCountry": "US"
|
|
18
|
+
},
|
|
19
|
+
"priceRange": "$$",
|
|
20
|
+
"sameAs": [
|
|
21
|
+
"https://www.linkedin.com/in/brianwhaley",
|
|
22
|
+
"https://github.com/brianwhaley",
|
|
23
|
+
"https://twitter.com/brianwhaley"
|
|
24
|
+
],
|
|
25
|
+
"keywords": "pixelated, web development, react, next.js, custom websites, digital design, small business"
|
|
26
|
+
},
|
|
2
27
|
"routes": [
|
|
3
28
|
{
|
|
4
29
|
"name": "Home",
|
package/dist/index.js
CHANGED
|
@@ -65,9 +65,10 @@ export * from './components/seo/schema-recipe';
|
|
|
65
65
|
export * from './components/seo/schema-services';
|
|
66
66
|
export * from './components/seo/schema-website';
|
|
67
67
|
export * from './components/seo/schema-blogposting';
|
|
68
|
+
export * from './components/seo/manifest';
|
|
68
69
|
export * from './components/seo/metadata'; // server-side
|
|
69
70
|
export * from './components/seo/metadata.components';
|
|
70
|
-
export * from './components/seo/sitemap'; // server-side
|
|
71
|
+
export * from './components/seo/sitemap'; // server-side
|
|
71
72
|
export * from './components/shoppingcart/ebay.components';
|
|
72
73
|
export * from './components/shoppingcart/ebay.functions'; // server-side
|
|
73
74
|
export * from './components/shoppingcart/paypal';
|
|
@@ -79,5 +80,4 @@ export * from './components/structured/recipe';
|
|
|
79
80
|
export * from './components/structured/resume';
|
|
80
81
|
export * from './components/structured/socialcard';
|
|
81
82
|
export * from './components/structured/timeline';
|
|
82
|
-
export * from './components/utilities/api'; // server-side
|
|
83
83
|
export * from './components/utilities/functions'; // server-side
|
package/dist/index.server.js
CHANGED
|
@@ -27,7 +27,6 @@ export * from './components/seo/metadata';
|
|
|
27
27
|
export * from './components/seo/sitemap';
|
|
28
28
|
export * from './components/shoppingcart/ebay.functions';
|
|
29
29
|
export * from './components/shoppingcart/shoppingcart.functions';
|
|
30
|
-
export * from './components/utilities/api';
|
|
31
30
|
export * from './components/utilities/functions';
|
|
32
31
|
// Server-only wrapper exports
|
|
33
32
|
// DO I REALLY NEED THIS?
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flickr.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/flickr.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"flickr.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/flickr.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAsE3D,wBAAgB,aAAa,CAAE,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,gBA2D5E;yBA3De,aAAa;;;;;;AAmE7B,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACvF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,uBAAuB;;;;;;;gBAejE;yBAfe,mBAAmB;;;;;;AA8BnC,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAE,KAAK,EAAE,iBAAiB,2CA0CtD;yBA1Ce,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google.reviews.components.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/google.reviews.components.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,sBAAsB,CAAC;AAW9B,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACnF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,
|
|
1
|
+
{"version":3,"file":"google.reviews.components.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/google.reviews.components.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,sBAAsB,CAAC;AAW9B,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACnF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,2CAiGA;yBAvGe,iBAAiB"}
|
|
@@ -74,6 +74,35 @@ export interface WordpressConfig {
|
|
|
74
74
|
baseURL: string;
|
|
75
75
|
site: string;
|
|
76
76
|
}
|
|
77
|
+
export interface SiteInfo {
|
|
78
|
+
name: string;
|
|
79
|
+
description: string;
|
|
80
|
+
url: string;
|
|
81
|
+
email?: string;
|
|
82
|
+
image?: string;
|
|
83
|
+
image_height?: string;
|
|
84
|
+
image_width?: string;
|
|
85
|
+
favicon?: string;
|
|
86
|
+
telephone?: string;
|
|
87
|
+
address?: {
|
|
88
|
+
streetAddress: string;
|
|
89
|
+
addressLocality: string;
|
|
90
|
+
addressRegion: string;
|
|
91
|
+
postalCode: string;
|
|
92
|
+
addressCountry: string;
|
|
93
|
+
};
|
|
94
|
+
openingHours?: string;
|
|
95
|
+
priceRange?: string;
|
|
96
|
+
sameAs?: string[];
|
|
97
|
+
keywords?: string;
|
|
98
|
+
author?: string;
|
|
99
|
+
theme_color?: string;
|
|
100
|
+
background_color?: string;
|
|
101
|
+
default_locale?: string;
|
|
102
|
+
display?: "standalone" | "fullscreen" | "minimal-ui" | "browser";
|
|
103
|
+
favicon_sizes?: string;
|
|
104
|
+
favicon_type?: string;
|
|
105
|
+
}
|
|
77
106
|
export interface PixelatedConfig {
|
|
78
107
|
cloudinary?: CloudinaryConfig;
|
|
79
108
|
contentful?: ContentfulConfig;
|
|
@@ -85,6 +114,7 @@ export interface PixelatedConfig {
|
|
|
85
114
|
hubspot?: HubspotConfig;
|
|
86
115
|
paypal?: PaypalConfig;
|
|
87
116
|
proxy?: ProxyConfig;
|
|
117
|
+
siteInfo?: SiteInfo;
|
|
88
118
|
wordpress?: WordpressConfig;
|
|
89
119
|
}
|
|
90
120
|
//# sourceMappingURL=config.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../../src/components/config/config.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../../src/components/config/config.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-expando.d.ts","sourceRoot":"","sources":["../../../../src/components/menu/menu-expando.tsx"],"names":[],"mappings":"AAIA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,oBAAoB,CAAC;AAE5B,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,2CAkJrC;yBAlJe,WAAW;;;;;AA+J3B,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,2CAIzC;yBAJe,eAAe;;;;;;AAW/B,wBAAgB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"menu-expando.d.ts","sourceRoot":"","sources":["../../../../src/components/menu/menu-expando.tsx"],"names":[],"mappings":"AAIA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,oBAAoB,CAAC;AAE5B,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,2CAkJrC;yBAlJe,WAAW;;;;;AA+J3B,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,2CAIzC;yBAJe,eAAe;;;;;;AAW/B,wBAAgB,iBAAiB,4CA4BhC;yBA5Be,iBAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nerdjoke.d.ts","sourceRoot":"","sources":["../../../../src/components/nerdjoke/nerdjoke.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"nerdjoke.d.ts","sourceRoot":"","sources":["../../../../src/components/nerdjoke/nerdjoke.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,+BAA+B,CAAC;AACvC,OAAO,gBAAgB,CAAC;AAOxB,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;AACjE,wBAAgB,QAAQ,4CAsIvB;yBAtIe,QAAQ;;;AA8IxB,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;AACrE,iBAAS,UAAU,CAAC,KAAK,EAAE,cAAc,2CASxC;kBATQ,UAAU"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MetadataRoute } from 'next';
|
|
2
|
+
import type { SiteInfo } from '../config/config.types';
|
|
3
|
+
export interface ManifestOptions {
|
|
4
|
+
siteInfo: SiteInfo;
|
|
5
|
+
customProperties?: Partial<MetadataRoute.Manifest>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Generates a PWA manifest from siteinfo configuration
|
|
9
|
+
* @param options - Configuration options
|
|
10
|
+
* @returns Next.js manifest object
|
|
11
|
+
*/
|
|
12
|
+
export declare function generateManifest(options: ManifestOptions): MetadataRoute.Manifest;
|
|
13
|
+
/**
|
|
14
|
+
* Default export for Next.js manifest route
|
|
15
|
+
* @param options - Configuration options
|
|
16
|
+
* @returns Next.js manifest object
|
|
17
|
+
*/
|
|
18
|
+
export declare function Manifest(options: ManifestOptions): MetadataRoute.Manifest;
|
|
19
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../../src/components/seo/manifest.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;CACnD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAAC,QAAQ,CA4BjF;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAAC,QAAQ,CAEzE"}
|
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
import PropTypes, { InferProps } from "prop-types";
|
|
2
|
+
export type LocalBusinessSchemaType = InferProps<typeof LocalBusinessSchema.propTypes>;
|
|
3
|
+
export declare function LocalBusinessSchema(props: LocalBusinessSchemaType): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare namespace LocalBusinessSchema {
|
|
5
|
+
var propTypes: {
|
|
6
|
+
name: PropTypes.Requireable<string>;
|
|
7
|
+
streetAddress: PropTypes.Requireable<string>;
|
|
8
|
+
addressLocality: PropTypes.Requireable<string>;
|
|
9
|
+
addressRegion: PropTypes.Requireable<string>;
|
|
10
|
+
postalCode: PropTypes.Requireable<string>;
|
|
11
|
+
addressCountry: PropTypes.Requireable<string>;
|
|
12
|
+
telephone: PropTypes.Requireable<string>;
|
|
13
|
+
url: PropTypes.Requireable<string>;
|
|
14
|
+
logo: PropTypes.Requireable<string>;
|
|
15
|
+
image: PropTypes.Requireable<string>;
|
|
16
|
+
openingHours: PropTypes.Requireable<NonNullable<string | (string | null | undefined)[] | null | undefined>>;
|
|
17
|
+
description: PropTypes.Requireable<string>;
|
|
18
|
+
email: PropTypes.Requireable<string>;
|
|
19
|
+
priceRange: PropTypes.Requireable<string>;
|
|
20
|
+
sameAs: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
21
|
+
siteInfo: PropTypes.Requireable<object>;
|
|
22
|
+
};
|
|
22
23
|
}
|
|
23
|
-
export declare function LocalBusinessSchema({ name, streetAddress, addressLocality, addressRegion, postalCode, addressCountry, telephone, url, logo, image, openingHours, description, email, priceRange, sameAs }: LocalBusinessSchemaProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
-
export default LocalBusinessSchema;
|
|
25
24
|
//# sourceMappingURL=schema-localbusiness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-localbusiness.d.ts","sourceRoot":"","sources":["../../../../src/components/seo/schema-localbusiness.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema-localbusiness.d.ts","sourceRoot":"","sources":["../../../../src/components/seo/schema-localbusiness.tsx"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAgCnD,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAEvF,wBAAgB,mBAAmB,CAAE,KAAK,EAAE,uBAAuB,2CAiDlE;yBAjDe,mBAAmB"}
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
import PropTypes, { InferProps } from "prop-types";
|
|
2
|
+
export type WebsiteSchemaType = InferProps<typeof WebsiteSchema.propTypes>;
|
|
3
|
+
export declare function WebsiteSchema(props: WebsiteSchemaType): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare namespace WebsiteSchema {
|
|
5
|
+
var propTypes: {
|
|
6
|
+
name: PropTypes.Requireable<string>;
|
|
7
|
+
url: PropTypes.Requireable<string>;
|
|
8
|
+
description: PropTypes.Requireable<string>;
|
|
9
|
+
potentialAction: PropTypes.Requireable<PropTypes.InferProps<{
|
|
10
|
+
'@type': PropTypes.Requireable<string>;
|
|
11
|
+
target: PropTypes.Requireable<PropTypes.InferProps<{
|
|
12
|
+
'@type': PropTypes.Requireable<string>;
|
|
13
|
+
urlTemplate: PropTypes.Requireable<string>;
|
|
14
|
+
}>>;
|
|
15
|
+
query: PropTypes.Requireable<string>;
|
|
16
|
+
}>>;
|
|
17
|
+
siteInfo: PropTypes.Requireable<object>;
|
|
17
18
|
};
|
|
18
19
|
}
|
|
19
|
-
export declare function WebsiteSchema({ name, url, description, potentialAction }: WebsiteSchemaProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
-
export default WebsiteSchema;
|
|
21
20
|
//# sourceMappingURL=schema-website.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-website.d.ts","sourceRoot":"","sources":["../../../../src/components/seo/schema-website.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema-website.d.ts","sourceRoot":"","sources":["../../../../src/components/seo/schema-website.tsx"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA4BnD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAE3E,wBAAgB,aAAa,CAAE,KAAK,EAAE,iBAAiB,2CAwBtD;yBAxBe,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../../../src/components/seo/sitemap.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAQ1C,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAWzD,MAAM,MAAM,aAAa,GAAG;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,SAAS,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;CACb,CAAC;AAKF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE;IAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,EAAE,cAAc,SAA0B,UAU7I;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,cAAc,SAA0B,mBAatF;AAID,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,SAGxC;AAID,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,UAU3D;AAID;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,GAAE,aAAkB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAmEnH;AAKD,wBAAsB,cAAc,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,MAAM,EAAE,MAAM;;;;;;
|
|
1
|
+
{"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../../../src/components/seo/sitemap.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAQ1C,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAWzD,MAAM,MAAM,aAAa,GAAG;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,SAAS,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;CACb,CAAC;AAKF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE;IAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,EAAE,cAAc,SAA0B,UAU7I;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,cAAc,SAA0B,mBAatF;AAID,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,SAGxC;AAID,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,UAU3D;AAID;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,GAAE,aAAkB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAmEnH;AAKD,wBAAsB,cAAc,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,MAAM,EAAE,MAAM;;;;;;iBAkOukJ,CAAC;;;;KAnNxpJ;AAMD,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,SAA4B,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAgC3H;AAKD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAC;;;;;;iBAwKgkJ,CAAC;;;;KAzJxpJ;AAcD,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACzF,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,wBAAwB;;;;;;iBA0I8kJ,CAAC;;;;KAnHxpJ;yBAvBqB,oBAAoB;;;;;;;;;;;AAoC1C,MAAM,MAAM,mCAAmC,GAAG,UAAU,CAAC,OAAO,+BAA+B,CAAC,SAAS,CAAC,CAAC;AAC/G,wBAAsB,+BAA+B,CAAC,KAAK,EAAE,mCAAmC;;;;;;iBAqGwjJ,CAAC;;;;KArFxpJ;yBAhBqB,+BAA+B;;;;;;;;;;;AAgCrD,MAAM,MAAM,6BAA6B,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,SAAS,CAAC,CAAC;AACnG,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,6BAA6B,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA0B7G;yBA1BqB,yBAAyB;;;;;;;;;;;;AA6C/C,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM;;;;;;iBAuBimJ,CAAC;;;;KANxpJ"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -63,6 +63,7 @@ export * from "./components/seo/schema-recipe";
|
|
|
63
63
|
export * from "./components/seo/schema-services";
|
|
64
64
|
export * from "./components/seo/schema-website";
|
|
65
65
|
export * from "./components/seo/schema-blogposting";
|
|
66
|
+
export * from "./components/seo/manifest";
|
|
66
67
|
export * from "./components/seo/metadata";
|
|
67
68
|
export * from "./components/seo/metadata.components";
|
|
68
69
|
export * from "./components/seo/sitemap";
|
|
@@ -77,6 +78,5 @@ export * from "./components/structured/recipe";
|
|
|
77
78
|
export * from "./components/structured/resume";
|
|
78
79
|
export * from "./components/structured/socialcard";
|
|
79
80
|
export * from "./components/structured/timeline";
|
|
80
|
-
export * from "./components/utilities/api";
|
|
81
81
|
export * from "./components/utilities/functions";
|
|
82
82
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -23,7 +23,6 @@ export * from "./components/seo/metadata";
|
|
|
23
23
|
export * from "./components/seo/sitemap";
|
|
24
24
|
export * from "./components/shoppingcart/ebay.functions";
|
|
25
25
|
export * from "./components/shoppingcart/shoppingcart.functions";
|
|
26
|
-
export * from "./components/utilities/api";
|
|
27
26
|
export * from "./components/utilities/functions";
|
|
28
27
|
export * from "./components/config/config.server";
|
|
29
28
|
export * from "./components/seo/metadata.components";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seo.googleanalytics.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/seo/seo.googleanalytics.stories.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"seo.googleanalytics.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/seo/seo.googleanalytics.stories.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;gCACgC,kCAAkC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
declare namespace _default {
|
|
2
|
+
export let title: string;
|
|
3
|
+
export { LocalBusinessSchema as component };
|
|
4
|
+
export let decorators: ((Story: any) => import("react/jsx-runtime").JSX.Element)[];
|
|
5
|
+
}
|
|
6
|
+
export default _default;
|
|
7
|
+
export namespace Schema_LocalBusiness_From_Config {
|
|
8
|
+
function render(): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
}
|
|
10
|
+
export namespace Schema_LocalBusiness_Custom_Props {
|
|
11
|
+
export function render_1(): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export { render_1 as render };
|
|
13
|
+
}
|
|
14
|
+
export namespace Schema_Website_From_Config {
|
|
15
|
+
export function render_2(): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export { render_2 as render };
|
|
17
|
+
}
|
|
18
|
+
export namespace Schema_Website_With_Search {
|
|
19
|
+
export function render_3(): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export { render_3 as render };
|
|
21
|
+
}
|
|
22
|
+
import { LocalBusinessSchema } from '@/components/seo/schema-localbusiness';
|
|
23
|
+
//# sourceMappingURL=seo.schema.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seo.schema.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/seo/seo.schema.stories.js"],"names":[],"mappings":";;;;;;;IAuBS,2DAMP;;;IAIO,oEASP;;;;IAIO,oEAMP;;;;IAIO,oEAeP;;;oCAtEkC,uCAAuC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.test.d.ts","sourceRoot":"","sources":["../../../src/tests/manifest.test.tsx"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixelated-tech/components",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.14",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Pixelated Technologies",
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"typescript": "^5.9.3",
|
|
138
138
|
"url-loader": "^4.1.1",
|
|
139
139
|
"vitest": "^4.0.16",
|
|
140
|
-
"webpack": "^5.104.
|
|
140
|
+
"webpack": "^5.104.1",
|
|
141
141
|
"webpack-cli": "^6.0.1",
|
|
142
142
|
"webpack-dev-server": "^5.2.2",
|
|
143
143
|
"webpack-node-externals": "^3.0.0"
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import PropTypes from 'prop-types';
|
|
2
|
-
export function getXHRData(apiURL, apiMethod, myCallback) {
|
|
3
|
-
const xhr = new XMLHttpRequest();
|
|
4
|
-
xhr.open(apiMethod, apiURL, true);
|
|
5
|
-
// xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
|
6
|
-
// xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
|
7
|
-
// xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
|
|
8
|
-
xhr.onreadystatechange = () => {
|
|
9
|
-
// if (xhr.readyState === 4) {
|
|
10
|
-
if (xhr.readyState === 4 && xhr.status === 200) {
|
|
11
|
-
let response;
|
|
12
|
-
response = JSON.parse(xhr.responseText);
|
|
13
|
-
myCallback(response);
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
xhr.send();
|
|
17
|
-
}
|
|
18
|
-
getXHRData.propTypes = {
|
|
19
|
-
apiURL: PropTypes.string.isRequired,
|
|
20
|
-
apiMethod: PropTypes.string.isRequired
|
|
21
|
-
};
|
|
22
|
-
export function generateURL(baseURL, props) {
|
|
23
|
-
let url = baseURL;
|
|
24
|
-
let allProps = '';
|
|
25
|
-
for (const prop in props) {
|
|
26
|
-
if (props) {
|
|
27
|
-
allProps += (allProps.length === 0) ? prop + '=' + props[prop] : '&' + prop + '=' + props[prop];
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
url += allProps;
|
|
31
|
-
return url;
|
|
32
|
-
}
|
|
33
|
-
generateURL.propTypes = {
|
|
34
|
-
baseURL: PropTypes.string.isRequired,
|
|
35
|
-
props: PropTypes.object
|
|
36
|
-
};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import PropTypes from 'prop-types';
|
|
2
|
-
export declare function getXHRData(apiURL: string, apiMethod: string, myCallback: any): void;
|
|
3
|
-
export declare namespace getXHRData {
|
|
4
|
-
var propTypes: {
|
|
5
|
-
apiURL: PropTypes.Validator<string>;
|
|
6
|
-
apiMethod: PropTypes.Validator<string>;
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
export declare function generateURL(baseURL: string, props: any): string;
|
|
10
|
-
export declare namespace generateURL {
|
|
11
|
-
var propTypes: {
|
|
12
|
-
baseURL: PropTypes.Validator<string>;
|
|
13
|
-
props: PropTypes.Requireable<object>;
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=api.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/components/utilities/api.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,wBAAgB,UAAU,CAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAgB7E;yBAhBe,UAAU;;;;;;AAuB1B,wBAAgB,WAAW,CAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,UAUvD;yBAVe,WAAW"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.test.d.ts","sourceRoot":"","sources":["../../../src/tests/api.test.ts"],"names":[],"mappings":""}
|