ultimate-jekyll-manager 0.0.305 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/CLAUDE.md +140 -1
- package/README.md +1 -1
- package/TODO.md +1 -1
- package/dist/assets/css/pages/admin/calendar/index.scss +477 -0
- package/dist/assets/css/pages/admin/dashboard/index.scss +7 -0
- package/dist/assets/css/pages/admin/firebase/index.scss +33 -0
- package/dist/assets/css/pages/admin/users/index.scss +9 -0
- package/dist/assets/css/pages/feedback/index.scss +31 -0
- package/dist/assets/js/core/auth.js +20 -1
- package/dist/assets/js/libs/admin-helpers.js +54 -0
- package/dist/assets/js/libs/form-manager.js +42 -0
- package/dist/assets/js/modules/vert.js +1 -1
- package/dist/assets/js/pages/account/index.js +19 -21
- package/dist/assets/js/pages/account/sections/billing.js +37 -76
- package/dist/assets/js/pages/account/sections/connections.js +10 -10
- package/dist/assets/js/pages/account/sections/refund.js +3 -5
- package/dist/assets/js/pages/account/test-subscriptions/active.js +5 -0
- package/dist/assets/js/pages/account/test-subscriptions/cancellation-requested.js +5 -0
- package/dist/assets/js/pages/account/test-subscriptions/cancelled.js +12 -0
- package/dist/assets/js/pages/account/test-subscriptions/suspended.js +12 -0
- package/dist/assets/js/pages/account/test-subscriptions/trialing.js +5 -0
- package/dist/assets/js/pages/admin/calendar/calendar-core.js +313 -0
- package/dist/assets/js/pages/admin/calendar/calendar-events.js +213 -0
- package/dist/assets/js/pages/admin/calendar/calendar-renderer.js +661 -0
- package/dist/assets/js/pages/admin/calendar/index.js +70 -0
- package/dist/assets/js/pages/admin/dashboard/index.js +459 -0
- package/dist/assets/js/pages/admin/firebase/index.js +740 -0
- package/dist/assets/js/pages/admin/notifications/index.js +53 -0
- package/dist/assets/js/pages/admin/notifications/new/index.js +1 -1
- package/dist/assets/js/pages/admin/users/index.js +432 -0
- package/dist/assets/js/pages/admin/users/new/index.js +67 -0
- package/dist/assets/js/pages/feedback/index.js +204 -0
- package/dist/assets/js/pages/payment/checkout/index.js +23 -13
- package/dist/assets/js/pages/payment/checkout/modules/api.js +4 -4
- package/dist/assets/js/pages/payment/checkout/modules/state.js +1 -1
- package/dist/assets/js/pages/pricing/index.js +23 -0
- package/dist/assets/themes/bootstrap/overrides/_buttons-adaptive.scss +6 -0
- package/dist/assets/themes/classy/_theme.scss +1 -0
- package/dist/assets/themes/classy/css/components/_buttons.scss +6 -0
- package/dist/assets/themes/classy/css/layout/_backend.scss +59 -0
- package/dist/assets/themes/classy/css/layout/_navigation.scss +11 -0
- package/dist/commands/setup.js +1 -0
- package/dist/defaults/dist/_includes/admin/sections/sidebar.json +32 -17
- package/dist/defaults/dist/_includes/core/body.html +7 -0
- package/dist/defaults/dist/_includes/core/foot.html +83 -0
- package/dist/defaults/dist/_includes/core/head.html +7 -1
- package/dist/defaults/dist/_includes/themes/classy/backend/sections/sidebar.html +92 -8
- package/dist/defaults/dist/_layouts/blueprint/admin/calendar/index.html +311 -0
- package/dist/defaults/dist/_layouts/blueprint/admin/dashboard/index.html +183 -187
- package/dist/defaults/dist/_layouts/blueprint/admin/firebase/index.html +162 -221
- package/dist/defaults/dist/_layouts/blueprint/admin/newsletters/index.html +59 -0
- package/dist/defaults/dist/_layouts/blueprint/admin/newsletters/new.html +46 -0
- package/dist/defaults/dist/_layouts/blueprint/admin/notifications/index.html +62 -238
- package/dist/defaults/dist/_layouts/blueprint/admin/notifications/new.html +16 -1
- package/dist/defaults/dist/_layouts/blueprint/admin/stackblitz/index.html +33 -0
- package/dist/defaults/dist/_layouts/blueprint/admin/users/index.html +193 -154
- package/dist/defaults/dist/_layouts/blueprint/admin/users/new.html +57 -123
- package/dist/defaults/dist/_layouts/blueprint/alternatives/alternative.html +11 -0
- package/dist/defaults/dist/_layouts/blueprint/contact.html +5 -0
- package/dist/defaults/dist/_layouts/blueprint/download.html +11 -0
- package/dist/defaults/dist/_layouts/blueprint/extension/index.html +5 -0
- package/dist/defaults/dist/_layouts/blueprint/feedback.html +12 -0
- package/dist/defaults/dist/_layouts/blueprint/index.html +9 -0
- package/dist/defaults/dist/_layouts/blueprint/pricing.html +11 -0
- package/dist/defaults/dist/_layouts/core/root.html +1 -0
- package/dist/defaults/dist/_layouts/themes/classy/admin/core/{base.html → minimal-viewport-locked.html} +3 -1
- package/dist/defaults/dist/_layouts/themes/classy/admin/core/minimal.html +2 -0
- package/dist/defaults/dist/_layouts/themes/classy/backend/core/base.html +1 -1
- package/dist/defaults/dist/_layouts/themes/classy/backend/core/minimal-viewport-locked.html +149 -0
- package/dist/defaults/dist/_layouts/themes/classy/backend/core/minimal.html +1 -1
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/account/index.html +2 -2
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/feedback.html +201 -0
- package/dist/defaults/dist/_layouts/themes/classy/frontend/pages/index.html +1 -0
- package/dist/defaults/dist/pages/admin/calendar/index.html +7 -0
- package/dist/defaults/dist/pages/admin/index.md +3 -1
- package/dist/defaults/dist/pages/admin/newsletters/index.html +7 -0
- package/dist/defaults/dist/pages/admin/newsletters/new.html +7 -0
- package/dist/defaults/dist/pages/admin/stackblitz/index.html +7 -0
- package/dist/defaults/dist/pages/feedback.md +7 -0
- package/dist/defaults/dist/redirects/authentication/account.html +1 -1
- package/dist/defaults/dist/redirects/authentication/authentication-required.html +1 -1
- package/dist/defaults/dist/redirects/authentication/authentication-success.html +1 -1
- package/dist/defaults/dist/redirects/authentication/authentication-token.html +1 -1
- package/dist/defaults/dist/redirects/authentication/forgot.html +1 -1
- package/dist/defaults/dist/redirects/authentication/helpers/cancel.html +1 -1
- package/dist/defaults/dist/redirects/authentication/helpers/change-password.html +1 -1
- package/dist/defaults/dist/redirects/authentication/helpers/forgot.html +1 -1
- package/dist/defaults/dist/redirects/authentication/helpers/join.html +1 -1
- package/dist/defaults/dist/redirects/authentication/helpers/login.html +1 -1
- package/dist/defaults/dist/redirects/authentication/helpers/recover.html +1 -1
- package/dist/defaults/dist/redirects/authentication/helpers/refund.html +1 -1
- package/dist/defaults/dist/redirects/authentication/helpers/register.html +1 -1
- package/dist/defaults/dist/redirects/authentication/helpers/reset-password.html +1 -1
- package/dist/defaults/dist/redirects/authentication/oauth2.html +1 -1
- package/dist/defaults/dist/redirects/authentication/signin.html +1 -1
- package/dist/defaults/dist/redirects/authentication/signout.html +1 -1
- package/dist/defaults/dist/redirects/authentication/signup.html +1 -1
- package/dist/defaults/dist/redirects/download/all.html +1 -1
- package/dist/defaults/dist/redirects/extension/browser-extension.html +1 -1
- package/dist/defaults/dist/redirects/legal/cookie-policy.html +1 -1
- package/dist/defaults/dist/redirects/legal/privacy-policy.html +1 -1
- package/dist/defaults/dist/redirects/legal/terms-of-service.html +1 -1
- package/dist/defaults/dist/redirects/legal/tos.html +1 -1
- package/dist/defaults/src/_config.yml +11 -0
- package/dist/service-worker.js +2 -2
- package/package.json +9 -7
- package/dist/assets/js/pages/admin/index.js +0 -492
- package/dist/defaults/dist/_layouts/blueprint/admin/index.html +0 -30
- package/dist/defaults/dist/_layouts/themes/classy/admin/core/iframe.html +0 -70
- package/dist/defaults/dist/redirects/admin/admin.html +0 -9
package/CHANGELOG.md
CHANGED
|
@@ -15,7 +15,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
|
15
15
|
- `Security` in case of vulnerabilities.
|
|
16
16
|
|
|
17
17
|
---
|
|
18
|
+
## [1.0.1] - 2026-03-15
|
|
19
|
+
### Changed
|
|
20
|
+
- Upgrade `node-powertools` from ^2.3.2 to ^3.0.0
|
|
21
|
+
- Upgrade `web-manager` from ^4.1.26 to ^4.1.28
|
|
22
|
+
- Upgrade `wonderful-fetch` from ^1.3.4 to ^2.0.4
|
|
23
|
+
- Upgrade `prepare-package` from ^1.2.6 to ^2.0.7
|
|
24
|
+
- Add `preparePackage.type: "copy"` configuration
|
|
25
|
+
|
|
18
26
|
## [Unreleased]
|
|
27
|
+
### Changed
|
|
28
|
+
- Migrate "app" terminology to "brand" across frontend and service worker: renamed `appData`/`fetchAppData` to `brandData`/`fetchBrandData`, `appConfig`/`fetchAppConfig` to `brandConfig`/`fetchBrandConfig`, API endpoint from `/backend-manager/app` to `/backend-manager/brand`, and `this.app` to `this.brand` in service worker
|
|
29
|
+
|
|
19
30
|
### Added
|
|
20
31
|
- Abandoned cart tracking on checkout page: creates a Firestore document in `payments-carts/{uid}` when authenticated users begin checkout, with a 15-minute first reminder delay
|
|
21
32
|
- Backend sidebar auto-expands collapsible dropdown sections containing the currently active page link (desktop and mobile)
|
|
@@ -27,8 +38,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
|
27
38
|
- Auth state settles before any authorized fetches fire on checkout, preventing race conditions
|
|
28
39
|
- Quick boot mode (`UJ_QUICK=true`) for faster dev server startup (~5s vs ~20s) by skipping clean, slow setup operations, and deferring webpack/sass compilation until after Jekyll's first build
|
|
29
40
|
- Dev-only warning in FormManager for form fields missing `name` attributes (skipped by validation and `getData()`)
|
|
41
|
+
- FAQPage JSON-LD schema with 3-level fallback chain (`schema.faq_page.items` → `faqs.items` → `alternative.faqs.items`)
|
|
42
|
+
- FAQPage schema enabled on blueprint pages with FAQ sections (pricing, contact, download, extension, alternatives)
|
|
43
|
+
- OG image dimension meta tags (`og:image:width`, `og:image:height`) with 1200×630 defaults
|
|
44
|
+
- Article published/modified time meta tags for blog posts
|
|
45
|
+
- Admin marketing calendar page (`/admin/calendar`) with custom-built interactive calendar for scheduling newsletters and notifications
|
|
46
|
+
- Calendar supports 4 view modes (month, week, day, year) with event CRUD, drag-and-drop, overlapping event layout, and `window.calendarAPI`
|
|
47
|
+
- Real-time red "now" line indicator in day/week views, updates every 60 seconds
|
|
48
|
+
- Viewport-locked admin layout variant (`themes/classy/admin/core/minimal-viewport-locked`) for full-height admin pages
|
|
49
|
+
- Feedback page (`/feedback`) with emoji rating selection, written feedback fields, review prompt modal, and analytics tracking
|
|
50
|
+
- FormManager auto-populates form fields from URL query parameters (skips utm_*, itm_*, cb, fbclid, gclid)
|
|
51
|
+
- Review prompt modal after positive feedback submission with copy-paste textarea and external review site link
|
|
30
52
|
|
|
31
53
|
### Changed
|
|
54
|
+
- Twitter card default from `summary` to configurable `summary_large_image`
|
|
32
55
|
- Rename `site.tracking` config to `site.analytics` with simplified keys (`google-analytics` → `google`, `meta-pixel` → `meta`, `tiktok-pixel` → `tiktok`)
|
|
33
56
|
- Update `webManager.config.tracking['meta-pixel']` to `webManager.config.analytics?.meta` in auth.js
|
|
34
57
|
- Replace hardcoded discount codes with server-side validation via `payments/discount` API endpoint
|
|
@@ -58,6 +81,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
|
58
81
|
- Fix admin forms (notifications, users) and blog/status forms missing `novalidate`, `onsubmit`, `name` attributes, and `.button-text` spans
|
|
59
82
|
- Fix profile premium badge using removed `trialing` status and `access` field
|
|
60
83
|
- Add dev-only artificial pre-delay support to checkout page for testing form protection timing
|
|
84
|
+
- Fix `btn-check:checked` outline button styling in classy theme — transparent `!important` rule was overriding Bootstrap's checked background due to higher CSS specificity
|
|
61
85
|
|
|
62
86
|
---
|
|
63
87
|
## [1.0.0] - 2024-06-19
|
package/CLAUDE.md
CHANGED
|
@@ -363,7 +363,7 @@ Ultimate Jekyll uses the `jekyll-uj-powertools` gem for custom Liquid functional
|
|
|
363
363
|
**Documentation:** `/Users/ian/Developer/Repositories/ITW-Creative-works/jekyll-uj-powertools/README.md`
|
|
364
364
|
|
|
365
365
|
### Available Features
|
|
366
|
-
- **Filters:** `uj_strip_ads`, `uj_json_escape`, `uj_title_case`, `uj_content_format`
|
|
366
|
+
- **Filters:** `uj_strip_ads`, `uj_json_escape`, `uj_title_case`, `uj_content_format`, `uj_hash`
|
|
367
367
|
- **Tags:** `iftruthy`, `iffalsy`, `uj_icon`, `uj_logo`, `uj_image`, `uj_member`, `uj_post`, `uj_readtime`, `uj_social`, `uj_translation_url`, `uj_fake_comments`, `uj_language`
|
|
368
368
|
- **Global Variables:** `site.uj.cache_breaker`
|
|
369
369
|
- **Page Variables:** `page.random_id`, `page.extension`, `page.layout_data`, `page.resolved`
|
|
@@ -375,6 +375,14 @@ Ultimate Jekyll uses the `jekyll-uj-powertools` gem for custom Liquid functional
|
|
|
375
375
|
#### `uj_content_format`
|
|
376
376
|
Formats content by first liquifying it, then markdownifying it (if markdown file).
|
|
377
377
|
|
|
378
|
+
#### `uj_hash`
|
|
379
|
+
Returns a deterministic number between 0 and max (exclusive) based on the input string's MD5 hash. Same input always produces the same output.
|
|
380
|
+
|
|
381
|
+
```liquid
|
|
382
|
+
{{ "some-string" | uj_hash: 1000 }} => 0-999 (stable across builds)
|
|
383
|
+
{{ site.url | uj_hash: 2 }} => 0 or 1
|
|
384
|
+
```
|
|
385
|
+
|
|
378
386
|
#### `iftruthy` / `iffalsy`
|
|
379
387
|
Custom tags that check JavaScript truthiness (not null, undefined, or empty string).
|
|
380
388
|
|
|
@@ -481,6 +489,12 @@ When posts are created via BEM's `POST /admin/post` endpoint:
|
|
|
481
489
|
|
|
482
490
|
Ultimate Jekyll uses Font Awesome icons but does NOT include the Font Awesome JavaScript or CSS library. All icons must be rendered server-side using Jekyll's `{% uj_icon %}` tag.
|
|
483
491
|
|
|
492
|
+
### Available Icons
|
|
493
|
+
|
|
494
|
+
UJM ships with the **full Font Awesome Pro solid icon set** (4,600+ icons) at `assets/icons/font-awesome/solid/`, plus brand icons at `assets/icons/font-awesome/brands/`. Any Pro or Free solid/brand icon name can be used with `{% uj_icon %}` and prerendered icons. The icon style defaults to `solid` and can be configured via `site.config.icons.style`.
|
|
495
|
+
|
|
496
|
+
Browse available icons at: https://fontawesome.com/icons
|
|
497
|
+
|
|
484
498
|
### When to Use `{% uj_icon %}` vs Prerendered Icons
|
|
485
499
|
|
|
486
500
|
**IMPORTANT:** Use the correct method based on WHERE the icon will be used:
|
|
@@ -911,6 +925,26 @@ Custom library for site management functionality.
|
|
|
911
925
|
|
|
912
926
|
**Important:** Always check the source code or README before assuming a function exists. Do not guess at API methods.
|
|
913
927
|
|
|
928
|
+
#### Subscription Resolution
|
|
929
|
+
|
|
930
|
+
Use `webManager.auth().resolveSubscription(account)` to derive calculated subscription state. This is the **single source of truth** for determining a user's effective plan — do NOT manually check `subscription.status`, `trial.claimed`, or `cancellation.pending` separately.
|
|
931
|
+
|
|
932
|
+
```javascript
|
|
933
|
+
const resolved = webManager.auth().resolveSubscription(account);
|
|
934
|
+
// Returns: { plan, active, trialing, cancelling }
|
|
935
|
+
```
|
|
936
|
+
|
|
937
|
+
| Field | Description |
|
|
938
|
+
|-------|-------------|
|
|
939
|
+
| `plan` | Effective plan ID right now (`'basic'` if cancelled/suspended) |
|
|
940
|
+
| `active` | Has active access (active, trialing, or cancelling) |
|
|
941
|
+
| `trialing` | In active trial |
|
|
942
|
+
| `cancelling` | Cancellation pending |
|
|
943
|
+
|
|
944
|
+
Raw subscription data (product.id, status, trial, cancellation) is on `account.subscription` directly — `resolveSubscription()` returns only the calculated/derived fields.
|
|
945
|
+
|
|
946
|
+
The same function exists in BEM as `User.resolveSubscription(account)` with identical return shape.
|
|
947
|
+
|
|
914
948
|
### Ultimate Jekyll Libraries
|
|
915
949
|
|
|
916
950
|
Ultimate Jekyll provides helper libraries in `src/assets/js/libs/` that can be imported as needed.
|
|
@@ -1348,6 +1382,111 @@ Which renders as "Can I import my data from ExampleApp?" for an ExampleApp compe
|
|
|
1348
1382
|
| CSS | `src/assets/css/pages/alternatives/alternative/index.scss` |
|
|
1349
1383
|
| JS | `src/assets/js/pages/alternatives/alternative/index.js` |
|
|
1350
1384
|
|
|
1385
|
+
## Schema / Structured Data (JSON-LD)
|
|
1386
|
+
|
|
1387
|
+
UJ automatically generates JSON-LD structured data in `foot.html`. The SoftwareApplication schema with AggregateRating is opt-in via frontmatter.
|
|
1388
|
+
|
|
1389
|
+
### SoftwareApplication Schema
|
|
1390
|
+
|
|
1391
|
+
Renders a `SoftwareApplication` JSON-LD block with deterministic aggregate ratings. Enabled by blueprint layouts (index, pricing, download, alternatives/alternative) — consuming projects can override or disable per page.
|
|
1392
|
+
|
|
1393
|
+
**How it works:**
|
|
1394
|
+
|
|
1395
|
+
1. **`_config.yml`** sets fallback defaults (no `enabled` key — just field defaults like `application_category`, `price`, etc.)
|
|
1396
|
+
2. **Blueprint layouts** set `schema.software_application.enabled: true` with page-appropriate `features`
|
|
1397
|
+
3. **Consuming projects** can override any value in their page frontmatter, or disable with `enabled: false`
|
|
1398
|
+
|
|
1399
|
+
This follows the standard `page.resolved` merge: page > layout > site.
|
|
1400
|
+
|
|
1401
|
+
**Deterministic ratings:** Uses the `uj_hash` filter (from jekyll-uj-powertools) seeded with `site.url` by default, producing stable values across builds:
|
|
1402
|
+
- Rating: always `4.8` or `4.9` (deterministic per seed)
|
|
1403
|
+
- Review count: 200,000–999,999 (deterministic per seed)
|
|
1404
|
+
- Override seed per page with `hash_seed` to get different values
|
|
1405
|
+
|
|
1406
|
+
**Blueprint frontmatter example:**
|
|
1407
|
+
```yaml
|
|
1408
|
+
### SCHEMA ###
|
|
1409
|
+
schema:
|
|
1410
|
+
software_application:
|
|
1411
|
+
enabled: true
|
|
1412
|
+
features:
|
|
1413
|
+
- "Free to use"
|
|
1414
|
+
- "24/7 availability"
|
|
1415
|
+
- "User-friendly interface"
|
|
1416
|
+
```
|
|
1417
|
+
|
|
1418
|
+
**Consuming project override example:**
|
|
1419
|
+
```yaml
|
|
1420
|
+
schema:
|
|
1421
|
+
software_application:
|
|
1422
|
+
application_category: "EducationalApplication"
|
|
1423
|
+
features:
|
|
1424
|
+
- "AI-powered solutions"
|
|
1425
|
+
- "24/7 availability"
|
|
1426
|
+
```
|
|
1427
|
+
|
|
1428
|
+
**Consuming project disable example:**
|
|
1429
|
+
```yaml
|
|
1430
|
+
schema:
|
|
1431
|
+
software_application:
|
|
1432
|
+
enabled: false
|
|
1433
|
+
```
|
|
1434
|
+
|
|
1435
|
+
**Available fields:**
|
|
1436
|
+
|
|
1437
|
+
| Field | Default | Description |
|
|
1438
|
+
|-------|---------|-------------|
|
|
1439
|
+
| `enabled` | (set by blueprint) | Enable/disable the schema block |
|
|
1440
|
+
| `name` | `site.brand.name` | Application name |
|
|
1441
|
+
| `description` | `page.resolved.meta.description` | Application description |
|
|
1442
|
+
| `application_category` | `WebApplication` | Schema.org application category |
|
|
1443
|
+
| `operating_system` | `Web-based` | Target OS |
|
|
1444
|
+
| `price` | `0` | Price (string) |
|
|
1445
|
+
| `price_currency` | `USD` | Currency code |
|
|
1446
|
+
| `features` | `[]` | Feature list for `featureList` field |
|
|
1447
|
+
| `hash_seed` | `site.url` | Seed for deterministic rating/count generation |
|
|
1448
|
+
|
|
1449
|
+
**File locations:**
|
|
1450
|
+
|
|
1451
|
+
| Purpose | Path |
|
|
1452
|
+
|---------|------|
|
|
1453
|
+
| Schema block (rendering) | `src/defaults/dist/_includes/core/foot.html` |
|
|
1454
|
+
| Site-level defaults | `src/defaults/src/_config.yml` (under `schema:`) |
|
|
1455
|
+
| Blueprint activation | `src/defaults/dist/_layouts/blueprint/{index,pricing,download}.html`, `blueprint/alternatives/alternative.html` |
|
|
1456
|
+
| Hash filter | `jekyll-uj-powertools/lib/filters/main.rb` (`uj_hash`) |
|
|
1457
|
+
|
|
1458
|
+
### FAQPage Schema
|
|
1459
|
+
|
|
1460
|
+
Renders a `FAQPage` JSON-LD block for pages with FAQ/accordion sections. Enabled by the alternatives blueprint — consuming projects can also enable it on any page with FAQ content.
|
|
1461
|
+
|
|
1462
|
+
**How it works:**
|
|
1463
|
+
|
|
1464
|
+
1. **`_config.yml`** sets `faq_page.items: []` as fallback
|
|
1465
|
+
2. **Blueprint layouts** set `schema.faq_page.enabled: true`
|
|
1466
|
+
3. **Items source (fallback chain):** `schema.faq_page.items` → `page.resolved.faqs.items` → `page.resolved.alternative.faqs.items`. Pages with generic `faqs.items` (like pricing) and alternatives pages both get FAQPage schema automatically without duplicating content
|
|
1467
|
+
4. Questions/answers are processed through `uj_liquify` (supports Liquid expressions like competitor names) and `uj_json_escape`
|
|
1468
|
+
|
|
1469
|
+
**Blueprint activation:** Enabled by default in `blueprint/pricing.html`, `blueprint/contact.html`, `blueprint/download.html`, `blueprint/extension/index.html`, and `blueprint/alternatives/alternative.html`.
|
|
1470
|
+
|
|
1471
|
+
**Consuming project usage — provide items directly:**
|
|
1472
|
+
```yaml
|
|
1473
|
+
schema:
|
|
1474
|
+
faq_page:
|
|
1475
|
+
enabled: true
|
|
1476
|
+
items:
|
|
1477
|
+
- question: "How do I get started?"
|
|
1478
|
+
answer: "Sign up for free and follow the onboarding guide."
|
|
1479
|
+
- question: "Is there a free plan?"
|
|
1480
|
+
answer: "Yes, our basic plan is completely free."
|
|
1481
|
+
```
|
|
1482
|
+
|
|
1483
|
+
**Available fields:**
|
|
1484
|
+
|
|
1485
|
+
| Field | Default | Description |
|
|
1486
|
+
|-------|---------|-------------|
|
|
1487
|
+
| `enabled` | (set by blueprint) | Enable/disable the schema block |
|
|
1488
|
+
| `items` | `[]` | Array of `{question, answer}` objects. Falls back to `alternative.faqs.items` if empty |
|
|
1489
|
+
|
|
1351
1490
|
## Audit Workflow
|
|
1352
1491
|
|
|
1353
1492
|
When fixing issues identified by the audit task (`src/gulp/tasks/audit.js`):
|
package/README.md
CHANGED
|
@@ -385,7 +385,7 @@ Raw pixel values also accepted: `vert-size="300"` → 300px max-height. Omit `ve
|
|
|
385
385
|
- Inserts fake session data in the Security section (active sessions)
|
|
386
386
|
|
|
387
387
|
##### Checkout Page (`/payment/checkout`)
|
|
388
|
-
* `
|
|
388
|
+
* `_dev_brandId`: Override the brand ID for testing (e.g., `_dev_brandId=test-app`)
|
|
389
389
|
* `_dev_trialEligible`: Force trial eligibility status:
|
|
390
390
|
- `_dev_trialEligible=true`: User is eligible for trial
|
|
391
391
|
- `_dev_trialEligible=false`: User is not eligible for trial
|
package/TODO.md
CHANGED
|
@@ -38,7 +38,7 @@ MAKE COMPONENTS? ASK CLAUDE HOW AND IF ITS POSSIBLE
|
|
|
38
38
|
|
|
39
39
|
FIX SIGNIN/SINGUP FORM
|
|
40
40
|
|
|
41
|
-
https://192.168.86.69:4000/payment/checkout?product=premium&_dev_trialEligible=true&
|
|
41
|
+
https://192.168.86.69:4000/payment/checkout?product=premium&_dev_trialEligible=true&_dev_brandId=dev&_dev_cardProcessor=stripe
|
|
42
42
|
|
|
43
43
|
filter-adaptive-inverse
|
|
44
44
|
|