@aglyn/plugins-ai 1.0.0-beta.264 → 1.0.0-beta.266
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/package.json +17 -17
- package/src/lib/assets/site-styles/beauty.webp +0 -0
- package/src/lib/assets/site-styles/blog.webp +0 -0
- package/src/lib/assets/site-styles/business.webp +0 -0
- package/src/lib/assets/site-styles/coming-soon.webp +0 -0
- package/src/lib/assets/site-styles/education.webp +0 -0
- package/src/lib/assets/site-styles/events.webp +0 -0
- package/src/lib/assets/site-styles/fitness.webp +0 -0
- package/src/lib/assets/site-styles/landing.webp +0 -0
- package/src/lib/assets/site-styles/music.webp +0 -0
- package/src/lib/assets/site-styles/nonprofit.webp +0 -0
- package/src/lib/assets/site-styles/personal.webp +0 -0
- package/src/lib/assets/site-styles/photography.webp +0 -0
- package/src/lib/assets/site-styles/portfolio.webp +0 -0
- package/src/lib/assets/site-styles/professional.webp +0 -0
- package/src/lib/assets/site-styles/realestate.webp +0 -0
- package/src/lib/assets/site-styles/restaurant.webp +0 -0
- package/src/lib/assets/site-styles/store.webp +0 -0
- package/src/lib/assets/site-styles/studio.webp +0 -0
- package/src/lib/assets/site-styles/trades.webp +0 -0
- package/src/lib/assets/site-styles/wellness.webp +0 -0
- package/src/lib/assets/site-styles/yoga.webp +0 -0
- package/src/lib/components/ai-site-start-card.component.d.ts +12 -0
- package/src/lib/components/ai-site-start-card.component.js +256 -236
- package/src/lib/components/ai-site-start-card.component.js.map +1 -1
- package/src/lib/components/ai-site-start-steps.component.d.ts +108 -0
- package/src/lib/components/ai-site-start-steps.component.js +451 -0
- package/src/lib/components/ai-site-start-steps.component.js.map +1 -0
- package/src/lib/components/ai-site-start-tracking.d.ts +114 -0
- package/src/lib/components/ai-site-start-tracking.js +277 -0
- package/src/lib/components/ai-site-start-tracking.js.map +1 -0
- package/src/lib/components/ai-site-style-previews.d.ts +26 -0
- package/src/lib/components/ai-site-style-previews.js +115 -0
- package/src/lib/components/ai-site-style-previews.js.map +1 -0
- package/src/lib/insights/ai-insight-digest.d.ts +9 -0
- package/src/lib/insights/ai-insight-digest.js +35 -11
- package/src/lib/insights/ai-insight-digest.js.map +1 -1
- package/src/lib/jobs/ai-job-page-language.d.ts +9 -0
- package/src/lib/jobs/ai-job-page-language.js +20 -2
- package/src/lib/jobs/ai-job-page-language.js.map +1 -1
- package/src/lib/jobs/ai-job-plan-step.d.ts +43 -8
- package/src/lib/jobs/ai-job-plan-step.js +99 -18
- package/src/lib/jobs/ai-job-plan-step.js.map +1 -1
- package/src/lib/jobs/ai-job-site-datasets.d.ts +82 -1
- package/src/lib/jobs/ai-job-site-datasets.js +276 -14
- package/src/lib/jobs/ai-job-site-datasets.js.map +1 -1
- package/src/lib/jobs/ai-layout-stock-photos.d.ts +108 -10
- package/src/lib/jobs/ai-layout-stock-photos.js +729 -87
- package/src/lib/jobs/ai-layout-stock-photos.js.map +1 -1
- package/src/lib/jobs/fixtures/ai-site-foreign-datasets-recording.d.ts +58 -0
- package/src/lib/jobs/fixtures/ai-site-foreign-datasets-recording.js +678 -0
- package/src/lib/jobs/fixtures/ai-site-foreign-datasets-recording.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3856-beta265-recordings.d.ts +33 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3856-beta265-recordings.js +270 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3856-beta265-recordings.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3856-people-recordings.d.ts +33 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3856-people-recordings.js +277 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3856-people-recordings.js.map +1 -0
- package/src/lib/layout-language/ai-layout-compiler.js +49 -12
- package/src/lib/layout-language/ai-layout-compiler.js.map +1 -1
- package/src/lib/layout-language/ai-layout-design.d.ts +6 -3
- package/src/lib/layout-language/ai-layout-design.js +14 -13
- package/src/lib/layout-language/ai-layout-design.js.map +1 -1
- package/src/lib/layout-language/ai-layout-listings.d.ts +48 -0
- package/src/lib/layout-language/ai-layout-listings.js +91 -5
- package/src/lib/layout-language/ai-layout-listings.js.map +1 -1
- package/src/lib/layout-language/ai-layout-pictures.d.ts +15 -0
- package/src/lib/layout-language/ai-layout-pictures.js +6 -2
- package/src/lib/layout-language/ai-layout-pictures.js.map +1 -1
- package/src/lib/model/ai-site-home-arcs.d.ts +75 -0
- package/src/lib/model/ai-site-home-arcs.js +741 -0
- package/src/lib/model/ai-site-home-arcs.js.map +1 -0
- package/src/lib/model/ai-site-inventory.d.ts +18 -0
- package/src/lib/model/ai-site-inventory.js.map +1 -1
- package/src/lib/model/ai-site-job.d.ts +9 -6
- package/src/lib/model/ai-site-job.js +8 -5
- package/src/lib/model/ai-site-job.js.map +1 -1
- package/src/lib/model/ai-site-kinds.js +24 -24
- package/src/lib/model/ai-site-kinds.js.map +1 -1
- package/src/lib/model/ai-site-start-steps.d.ts +67 -0
- package/src/lib/model/ai-site-start-steps.js +127 -0
- package/src/lib/model/ai-site-start-steps.js.map +1 -0
- package/src/lib/model/ai-site-start.js +4 -1
- package/src/lib/model/ai-site-start.js.map +1 -1
- package/src/lib/runtime/ai-doctrine-validators.d.ts +32 -0
- package/src/lib/runtime/ai-doctrine-validators.js +119 -2
- package/src/lib/runtime/ai-doctrine-validators.js.map +1 -1
- package/src/lib/runtime/ai-doctrine.d.ts +6 -1
- package/src/lib/runtime/ai-doctrine.js +9 -5
- package/src/lib/runtime/ai-doctrine.js.map +1 -1
- package/src/lib/runtime/ai-palette.generated.js +5 -2
- package/src/lib/runtime/ai-palette.generated.js.map +1 -1
- package/src/lib/runtime/site-inventory.js +6 -0
- package/src/lib/runtime/site-inventory.js.map +1 -1
- package/src/lib/server/ai-insight-digest-route.js +2 -2
- package/src/lib/server/ai-insight-digest-route.js.map +1 -1
- package/src/lib/usage/assist-free-taste.js +3 -0
- package/src/lib/usage/assist-free-taste.js.map +1 -1
|
@@ -23,7 +23,7 @@ import { aiPageScrollInteraction } from "../runtime/ai-page-links.js";
|
|
|
23
23
|
import { aiLayoutFitText, aiLayoutQuoteGap, aiLayoutWords } from "./ai-layout-copy.js";
|
|
24
24
|
import { AI_LAYOUT_GROUP_KINDS, AI_LAYOUT_MAX_ITEMS } from "./ai-layout-language.js";
|
|
25
25
|
import { aiLayoutDesignChoices, aiLayoutFamily, aiLayoutGroupVariant } from "./ai-layout-design.js";
|
|
26
|
-
import { AI_LAYOUT_FEATURED_RECORDS, AI_LAYOUT_LISTING_ELEMENTS, aiLayoutIsRecordImageAlt, aiLayoutListingAt, aiLayoutRecordHref, aiLayoutRecordImageAltField } from "./ai-layout-listings.js";
|
|
26
|
+
import { AI_LAYOUT_FEATURED_RECORDS, AI_LAYOUT_LISTING_ELEMENTS, aiLayoutIsRecordImageAlt, aiLayoutListingAt, aiLayoutRecordHref, aiLayoutRecordImageAltField, aiLayoutRepeatFilterOf } from "./ai-layout-listings.js";
|
|
27
27
|
import { aiStorefrontItemIcons } from "./ai-layout-storefront.js";
|
|
28
28
|
import { AI_LAYOUT_LABELS_EN, aiLayoutLabel } from "./ai-layout-labels.js";
|
|
29
29
|
import { aiLayoutRenamedLabel, aiLayoutResolveLink } from "./ai-layout-links.js";
|
|
@@ -57,10 +57,15 @@ const componentOf = (targets, id)=>{
|
|
|
57
57
|
/**
|
|
58
58
|
* The section of this page that places a form: one whose plan places one, or
|
|
59
59
|
* whose design places one by its id.
|
|
60
|
-
*/ function
|
|
60
|
+
*/ /** Whether the site's form lives on another page of the site than this one. */ function formLivesElsewhere(targets) {
|
|
61
|
+
return !!targets.formPageId && targets.formPageId !== targets.pageId;
|
|
62
|
+
}
|
|
63
|
+
function formSectionOf(sections, plan, targets) {
|
|
61
64
|
const forms = formIdsOf(targets);
|
|
62
65
|
const planned = plan.sections.findIndex((section)=>section.uses.some((ref)=>forms.has(ref)));
|
|
63
66
|
if (planned !== -1) return planned;
|
|
67
|
+
// A form drawn on a page it does not live on becomes a button to its page (AGL-3899).
|
|
68
|
+
if (formLivesElsewhere(targets)) return null;
|
|
64
69
|
const designed = sections.findIndex((section)=>section.blocks.some((block)=>block.kind === 'form' && (!block.to || forms.has(block.to))));
|
|
65
70
|
return designed === -1 ? null : designed;
|
|
66
71
|
}
|
|
@@ -456,6 +461,31 @@ function compileSection(page, raw, index) {
|
|
|
456
461
|
]
|
|
457
462
|
} : {}));
|
|
458
463
|
const lastCol = raw.cols && raw.cols.length >= 2 ? raw.cols.length - 1 : undefined;
|
|
464
|
+
// A form the design drew where the plan places none, on a page the form
|
|
465
|
+
// does not live on, is that page's way to it (AGL-3899): a button to the
|
|
466
|
+
// page that holds the form, never a second copy of the form.
|
|
467
|
+
if (!plannedForms.length && formLivesElsewhere(page.targets)) {
|
|
468
|
+
const at0 = blocks.findIndex((block)=>block.kind === 'form');
|
|
469
|
+
if (at0 !== -1) {
|
|
470
|
+
const asks = blocks.some((block)=>block.kind === 'button' && (block.to === 'form' || block.to === `page:${page.targets.formPageId}`));
|
|
471
|
+
const col = blocks[at0].col;
|
|
472
|
+
const kept = blocks.filter((block)=>block.kind !== 'form');
|
|
473
|
+
if (!asks) {
|
|
474
|
+
kept.splice(at0, 0, _extends({
|
|
475
|
+
kind: 'button',
|
|
476
|
+
text: aiLayoutLabel('getInTouch', page.options.language),
|
|
477
|
+
to: 'form'
|
|
478
|
+
}, col !== undefined ? {
|
|
479
|
+
col
|
|
480
|
+
} : {}));
|
|
481
|
+
}
|
|
482
|
+
blocks.splice(0, blocks.length, ...kept);
|
|
483
|
+
page.settled.push({
|
|
484
|
+
at,
|
|
485
|
+
what: 'a form on a page it does not live on; a button to its page instead'
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
}
|
|
459
489
|
for (const block of blocks){
|
|
460
490
|
var _block_items;
|
|
461
491
|
if (block.kind === 'form' && !(block.to && forms.has(block.to))) {
|
|
@@ -1071,7 +1101,10 @@ function group(scope, block, room) {
|
|
|
1071
1101
|
// columns (AGL-3676): the beta.237 Willow Wick home, on a paid plan, drew
|
|
1072
1102
|
// every other group compact — four bands of a title and a sentence.
|
|
1073
1103
|
const variant = design && block.kind === 'cards' && block.style !== 'quiet' ? aiLayoutGroupVariant(design.input, design.choices, (_scope_words = scope.words) != null ? _scope_words : '') : null;
|
|
1074
|
-
|
|
1104
|
+
// Icon columns side by side, where rule 1 knows them by their cells; any
|
|
1105
|
+
// site's groups may take them (AGL-3899), and one to a row outside a
|
|
1106
|
+
// store they are drawn compact.
|
|
1107
|
+
if (variant === 'icons' && (retail || perRow > 1)) return iconColumns(scope, items, room);
|
|
1075
1108
|
const pictured = (variant === 'pictures' || variant === 'articles') && room === 'full' && picturesLeft(scope.page) >= items.length;
|
|
1076
1109
|
return pictured && designedGroup(scope, variant, items, room) || compactGroup(scope, block, items, perRow);
|
|
1077
1110
|
}
|
|
@@ -2050,7 +2083,7 @@ function listingSection(scope, blocks, placed) {
|
|
|
2050
2083
|
var _ref;
|
|
2051
2084
|
var _page_plan_sections_index_name, _page_plan_sections_index, _page_options_sectionIds;
|
|
2052
2085
|
const { page, index, at } = scope;
|
|
2053
|
-
const { listing, role } = placed;
|
|
2086
|
+
const { listing, role, filter } = placed;
|
|
2054
2087
|
if (listing.kind === 'reviews') return reviewsSection(scope, blocks);
|
|
2055
2088
|
if (listing.kind === 'signup') return signupSection(scope, blocks);
|
|
2056
2089
|
// The grid straight under a Shop page's title bar opens on the products:
|
|
@@ -2111,7 +2144,7 @@ function listingSection(scope, blocks, placed) {
|
|
|
2111
2144
|
}
|
|
2112
2145
|
}
|
|
2113
2146
|
], '3', 'flex-end') : head;
|
|
2114
|
-
const records = listingElement(scope, listing, role);
|
|
2147
|
+
const records = listingElement(scope, listing, role, filter);
|
|
2115
2148
|
const parts = [
|
|
2116
2149
|
top ? centered ? tree.add('muiContainer', {
|
|
2117
2150
|
maxWidth: 'md',
|
|
@@ -2414,7 +2447,7 @@ function listingSection(scope, blocks, placed) {
|
|
|
2414
2447
|
* The element that lists the records, bound to them: the Product grid over
|
|
2415
2448
|
* the site's catalog, or Collection Entries over its blog with one post's
|
|
2416
2449
|
* card as the template it repeats. Its records count as the section's items.
|
|
2417
|
-
*/ function listingElement(scope, listing, role) {
|
|
2450
|
+
*/ function listingElement(scope, listing, role, filter) {
|
|
2418
2451
|
const { page } = scope;
|
|
2419
2452
|
const tree = page.tree;
|
|
2420
2453
|
const featured = role === 'featured';
|
|
@@ -2478,14 +2511,16 @@ function listingSection(scope, blocks, placed) {
|
|
|
2478
2511
|
emptyActionHref: listing.emptyAction.href
|
|
2479
2512
|
} : {}), null, null, 'products');
|
|
2480
2513
|
} else if (listing.kind === 'records') {
|
|
2481
|
-
id = recordsElement(scope, listing, featured ? shown : null);
|
|
2514
|
+
id = recordsElement(scope, listing, featured ? shown : null, filter);
|
|
2482
2515
|
} else {
|
|
2483
2516
|
id = postsElement(scope, listing, featured ? shown : COLLECTION_INDEX_POSTS);
|
|
2484
2517
|
}
|
|
2485
|
-
// What a visitor sees here is the site's records, however many it keeps
|
|
2486
|
-
//
|
|
2518
|
+
// What a visitor sees here is the site's records, however many it keeps —
|
|
2519
|
+
// a section named for one group, that group's (AGL-3921): the section shows
|
|
2520
|
+
// its planned items when it has any to show.
|
|
2521
|
+
const listed = (filter == null ? void 0 : filter.records.length) ? filter.records.length : listing.records.length;
|
|
2487
2522
|
noted(scope, Array.from({
|
|
2488
|
-
length: Math.max(2, Math.min(shown,
|
|
2523
|
+
length: Math.max(2, Math.min(shown, listed))
|
|
2489
2524
|
}, ()=>id));
|
|
2490
2525
|
return id;
|
|
2491
2526
|
}
|
|
@@ -2629,7 +2664,7 @@ function listingSection(scope, blocks, placed) {
|
|
|
2629
2664
|
* record's name, as the design's own picture cards do (AGL-3717) — so a list
|
|
2630
2665
|
* of pieces stays the image-led gallery it was before it was a dataset.
|
|
2631
2666
|
* A featured band shows the first few; a page of its own, every record.
|
|
2632
|
-
*/ function recordsElement(scope, listing, limit) {
|
|
2667
|
+
*/ function recordsElement(scope, listing, limit, filter) {
|
|
2633
2668
|
var _listing_fields, _listing_fields1;
|
|
2634
2669
|
var _page_design;
|
|
2635
2670
|
const { page } = scope;
|
|
@@ -2685,7 +2720,7 @@ function listingSection(scope, blocks, placed) {
|
|
|
2685
2720
|
}, null, 'recordLink') : null;
|
|
2686
2721
|
page.settled.push({
|
|
2687
2722
|
at: scope.at,
|
|
2688
|
-
what: `${listing.name} listed from its dataset${questions ? ' as a ruled list' : picture ? ' as picture cards' : ' as cards'}${recordHref ? `, each linking its page under /${listing.recordBase}` : ''}`
|
|
2723
|
+
what: `${listing.name} listed from its dataset${questions ? ' as a ruled list' : picture ? ' as picture cards' : ' as cards'}${recordHref ? `, each linking its page under /${listing.recordBase}` : ''}${filter ? `, only those filed “${filter.value}”` : ''}`
|
|
2689
2724
|
});
|
|
2690
2725
|
const card = questions ? tree.add('muiStack', {
|
|
2691
2726
|
spacing: '1'
|
|
@@ -2711,6 +2746,8 @@ function listingSection(scope, blocks, placed) {
|
|
|
2711
2746
|
repeatDataset: listing.datasetId
|
|
2712
2747
|
}, limit ? {
|
|
2713
2748
|
repeatLimit: String(limit)
|
|
2749
|
+
} : {}, filter ? {
|
|
2750
|
+
repeatFilter: aiLayoutRepeatFilterOf(filter)
|
|
2714
2751
|
} : {}), questions ? {
|
|
2715
2752
|
display: 'grid',
|
|
2716
2753
|
gap: 3
|