@aglyn/aglyn 1.0.0-beta.215 → 1.0.0-beta.216
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 +11 -11
- package/src/lib/app-utils/deferred-image.d.ts +3 -3
- package/src/lib/app-utils/deferred-image.js +3 -3
- package/src/lib/app-utils/deferred-image.js.map +1 -1
- package/src/lib/app-utils/docs-index.generated.js +11 -4
- package/src/lib/app-utils/docs-index.generated.js.map +1 -1
- package/src/lib/app-utils/marketplace-theme.d.ts +9 -4
- package/src/lib/app-utils/marketplace-theme.js +11 -1
- package/src/lib/app-utils/marketplace-theme.js.map +1 -1
- package/src/lib/app-utils/publisher-agreement.d.ts +36 -1
- package/src/lib/app-utils/publisher-agreement.js +48 -1
- package/src/lib/app-utils/publisher-agreement.js.map +1 -1
- package/src/lib/app-utils/realm-host-surface.generated.js +2 -0
- package/src/lib/app-utils/realm-host-surface.generated.js.map +1 -1
- package/src/lib/app-utils/theme-library.d.ts +206 -0
- package/src/lib/app-utils/theme-library.js +566 -0
- package/src/lib/app-utils/theme-library.js.map +1 -0
- package/src/lib/foundation/definitions/platform.types.js +2 -1
- package/src/lib/foundation/definitions/platform.types.js.map +1 -1
- package/src/lib/plugin-manager/feature-plugins.d.ts +44 -0
- package/src/lib/plugin-manager/feature-plugins.js +25 -0
- package/src/lib/plugin-manager/feature-plugins.js.map +1 -1
- package/src/lib/plugin-manager/first-party-plugins.generated.js +11 -0
- package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -1
- package/src/lib/plugin-manager/realm-host-aglyn.generated.js +2 -0
- package/src/lib/plugin-manager/realm-host-aglyn.generated.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aglyn/aglyn",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.216",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"homepage": "https://aglyn.com",
|
|
6
6
|
"repository": {
|
|
@@ -33,16 +33,16 @@
|
|
|
33
33
|
"./package.json": "./package.json"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@aglyn/shared-data-enums": "1.0.0-beta.
|
|
37
|
-
"@aglyn/shared-data-mdi": "1.0.0-beta.
|
|
38
|
-
"@aglyn/shared-data-types": "1.0.0-beta.
|
|
39
|
-
"@aglyn/shared-util-email": "1.0.0-beta.
|
|
40
|
-
"@aglyn/shared-util-first-touch": "1.0.0-beta.
|
|
41
|
-
"@aglyn/shared-util-http": "1.0.0-beta.
|
|
42
|
-
"@aglyn/shared-util-logger": "1.0.0-beta.
|
|
43
|
-
"@aglyn/shared-util-timestamp": "1.0.0-beta.
|
|
44
|
-
"@aglyn/shared-util-tools": "1.0.0-beta.
|
|
45
|
-
"@aglyn/shared-util-vendor": "1.0.0-beta.
|
|
36
|
+
"@aglyn/shared-data-enums": "1.0.0-beta.216",
|
|
37
|
+
"@aglyn/shared-data-mdi": "1.0.0-beta.216",
|
|
38
|
+
"@aglyn/shared-data-types": "1.0.0-beta.216",
|
|
39
|
+
"@aglyn/shared-util-email": "1.0.0-beta.216",
|
|
40
|
+
"@aglyn/shared-util-first-touch": "1.0.0-beta.216",
|
|
41
|
+
"@aglyn/shared-util-http": "1.0.0-beta.216",
|
|
42
|
+
"@aglyn/shared-util-logger": "1.0.0-beta.216",
|
|
43
|
+
"@aglyn/shared-util-timestamp": "1.0.0-beta.216",
|
|
44
|
+
"@aglyn/shared-util-tools": "1.0.0-beta.216",
|
|
45
|
+
"@aglyn/shared-util-vendor": "1.0.0-beta.216",
|
|
46
46
|
"@data-driven-forms/react-form-renderer": "^4.2.0",
|
|
47
47
|
"@msgpack/msgpack": "^3.1.3",
|
|
48
48
|
"@types/unist": "^3.0.3",
|
|
@@ -56,9 +56,9 @@
|
|
|
56
56
|
* The set only works if it is the same set everywhere: an image with `lazy`
|
|
57
57
|
* but no `fetchpriority` outranks an image with both, so a partially-applied
|
|
58
58
|
* hint re-creates a smaller version of the same inversion. Two of the three
|
|
59
|
-
* sites in
|
|
60
|
-
* else — which is why this is a named thing to spread rather than a
|
|
61
|
-
* remember.
|
|
59
|
+
* sites in the collection elements were exactly that — `loading="lazy"` and
|
|
60
|
+
* nothing else — which is why this is a named thing to spread rather than a
|
|
61
|
+
* habit to remember.
|
|
62
62
|
*
|
|
63
63
|
* Spread it, never mutate it:
|
|
64
64
|
*
|
|
@@ -55,9 +55,9 @@
|
|
|
55
55
|
* The set only works if it is the same set everywhere: an image with `lazy`
|
|
56
56
|
* but no `fetchpriority` outranks an image with both, so a partially-applied
|
|
57
57
|
* hint re-creates a smaller version of the same inversion. Two of the three
|
|
58
|
-
* sites in
|
|
59
|
-
* else — which is why this is a named thing to spread rather than a
|
|
60
|
-
* remember.
|
|
58
|
+
* sites in the collection elements were exactly that — `loading="lazy"` and
|
|
59
|
+
* nothing else — which is why this is a named thing to spread rather than a
|
|
60
|
+
* habit to remember.
|
|
61
61
|
*
|
|
62
62
|
* Spread it, never mutate it:
|
|
63
63
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/deferred-image.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The three attributes that defer an image to its own turn (AGL-2486).\n *\n * ## What this is for\n *\n * The Image element already ranks itself: the lead image is `eager` and every\n * later one is `lazy` + `low` + `async`. That reasoning is written out at the\n * `fetchPriority` prop in `libs/plugins/mui/src/lib/components/image.tsx` and\n * is not repeated here.\n *\n * What that fix could not reach is every OTHER `<img>` a published page\n * renders: a product grid, a related-products rail, a wishlist, a cart line,\n * an event thumbnail, a Product card. Those carried **no loading hint at\n * all** — which is `eager` at the browser's default priority. So a product\n * grid four sections down was fetched EAGERLY, at a HIGHER priority than the\n * `lazy` + `low` Image element in the section the reader was actually looking\n * at. That is the reported symptom — \"images several sections below the fold\n * load before the current section\" — and it survived the Image-element fix\n * precisely because ranking the Image elements against each other says\n * nothing about the images that opted out of the ranking entirely.\n *\n * Uniformly `lazy` is also what produces the second half of what the item\n * asks for. There is no \"next section\" hint to give a browser: Chrome fetches\n * a `lazy` image once it comes within its viewport-distance threshold, so\n * ordering among deferred images falls out of distance from the viewport on\n * its own — but ONLY once every image is in that scheme. One unhinted image\n * does not merely rank badly, it leaves the scheme.\n *\n * ## Deliberately NOT applied to\n *\n * The image at the top of a page, which is the LCP candidate: the Image\n * element's lead image, and the product-detail gallery hero. Making those\n * `lazy` would re-introduce the ORIGINAL bug this issue opened with — an LCP\n * image not discovered until after layout. Those sites carry a comment\n * saying so, because \"finish the job\" is the obvious next edit and it is\n * wrong.\n *\n * ## Why a shared constant rather than three literals\n *\n * The set only works if it is the same set everywhere: an image with `lazy`\n * but no `fetchpriority` outranks an image with both, so a partially-applied\n * hint re-creates a smaller version of the same inversion. Two of the three\n * sites in
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/deferred-image.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The three attributes that defer an image to its own turn (AGL-2486).\n *\n * ## What this is for\n *\n * The Image element already ranks itself: the lead image is `eager` and every\n * later one is `lazy` + `low` + `async`. That reasoning is written out at the\n * `fetchPriority` prop in `libs/plugins/mui/src/lib/components/image.tsx` and\n * is not repeated here.\n *\n * What that fix could not reach is every OTHER `<img>` a published page\n * renders: a product grid, a related-products rail, a wishlist, a cart line,\n * an event thumbnail, a Product card. Those carried **no loading hint at\n * all** — which is `eager` at the browser's default priority. So a product\n * grid four sections down was fetched EAGERLY, at a HIGHER priority than the\n * `lazy` + `low` Image element in the section the reader was actually looking\n * at. That is the reported symptom — \"images several sections below the fold\n * load before the current section\" — and it survived the Image-element fix\n * precisely because ranking the Image elements against each other says\n * nothing about the images that opted out of the ranking entirely.\n *\n * Uniformly `lazy` is also what produces the second half of what the item\n * asks for. There is no \"next section\" hint to give a browser: Chrome fetches\n * a `lazy` image once it comes within its viewport-distance threshold, so\n * ordering among deferred images falls out of distance from the viewport on\n * its own — but ONLY once every image is in that scheme. One unhinted image\n * does not merely rank badly, it leaves the scheme.\n *\n * ## Deliberately NOT applied to\n *\n * The image at the top of a page, which is the LCP candidate: the Image\n * element's lead image, and the product-detail gallery hero. Making those\n * `lazy` would re-introduce the ORIGINAL bug this issue opened with — an LCP\n * image not discovered until after layout. Those sites carry a comment\n * saying so, because \"finish the job\" is the obvious next edit and it is\n * wrong.\n *\n * ## Why a shared constant rather than three literals\n *\n * The set only works if it is the same set everywhere: an image with `lazy`\n * but no `fetchpriority` outranks an image with both, so a partially-applied\n * hint re-creates a smaller version of the same inversion. Two of the three\n * sites in the collection elements were exactly that — `loading=\"lazy\"` and\n * nothing else — which is why this is a named thing to spread rather than a\n * habit to remember.\n *\n * Spread it, never mutate it:\n *\n * ```tsx\n * <Box component=\"img\" src={url} alt=\"\" {...DEFERRED_IMAGE_ATTRIBUTES} />\n * ```\n */\nexport const DEFERRED_IMAGE_ATTRIBUTES = Object.freeze({\n /** Not fetched until the browser decides it is near the viewport. */\n loading: 'lazy',\n /**\n * And when it is fetched, it does not compete with the section on screen.\n * One-directional on purpose: deprioritising an image provably not being\n * looked at cannot starve whatever the LCP turns out to be, whereas\n * PROMOTING one is a claim about every other request in flight that no\n * render-time function is in a position to make.\n */\n fetchPriority: 'low',\n /**\n * Decoded off the main thread. A deferred image has no paint deadline, so\n * decoding it synchronously is main-thread time spent on pixels nobody is\n * looking at yet — which is the same budget item 22 is about.\n */\n decoding: 'async',\n} as const)\n"],"names":["DEFERRED_IMAGE_ATTRIBUTES","Object","freeze","loading","fetchPriority","decoding"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDC,GACD,OAAO,MAAMA,4BAA4BC,OAAOC,MAAM,CAAC;IACrD,mEAAmE,GACnEC,SAAS;IACT;;;;;;GAMC,GACDC,eAAe;IACf;;;;GAIC,GACDC,UAAU;AACZ,GAAW"}
|
|
@@ -2986,6 +2986,13 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
2986
2986
|
anchor: '#open-the-editor',
|
|
2987
2987
|
text: 'Go to Setup → Theme editor. Changes render in a live preview so you see them immediately.'
|
|
2988
2988
|
},
|
|
2989
|
+
{
|
|
2990
|
+
path: '/building-sites/theme-builder/edit-your-theme',
|
|
2991
|
+
title: 'Edit your theme',
|
|
2992
|
+
heading: 'Choose a theme',
|
|
2993
|
+
anchor: '#choose-a-theme',
|
|
2994
|
+
text: 'The Theme card at the top of the page picks the theme your site runs:\n- Built-in — Material UI (default), Bootstrap, Minimal (neutral, in the style of shadcn/ui) and Material 3, plus any your plugins add. Each one restyles components (buttons, inputs, cards, tabs, switches, alerts) as well as colors and type, in light and dark.\n- Your themes — themes you saved from this site.\n- From the marketplace — themes you installed.\nChoosing a theme shows a preview first, in light and dark; Use this theme applies it to the live site.\nYour edits never change the theme itself. Everything you set in the editor below is stored as your edits on top of the theme you picked, so:\n- Restore drops your edits and brings the theme back exactly as it was.\n- Save as custom theme saves the result — the theme plus your edits — as a new theme of your own under Your themes and switches to it. The theme you started from stays in the list, unchanged.\n- Update (on one of your own themes) folds your edits into that theme.\n- Switching themes keeps your edits. Each theme remembers the edits you made to it, and they come back when you pick it again. Themes marked Edited in the list have some.\nYour Dark scheme setting belongs to the site, not the theme, so it stays as you set it whichever theme you pick.'
|
|
2995
|
+
},
|
|
2989
2996
|
{
|
|
2990
2997
|
path: '/building-sites/theme-builder/edit-your-theme',
|
|
2991
2998
|
title: 'Edit your theme',
|
|
@@ -3040,7 +3047,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
3040
3047
|
title: 'Theme Builder',
|
|
3041
3048
|
heading: 'Edit your theme',
|
|
3042
3049
|
anchor: '#edit-your-theme',
|
|
3043
|
-
text: '- Open the theme editor under Setup.\n- Set your palette and typography; changes render in a live preview.\n- Configure both light and dark schemes — published sites apply the visitor\'s scheme automatically.\n- Fonts load via a Google Fonts URL builder.\nThe theme you set here is supplied to the Besigner canvas too, so previews match the live site.\nHow-tos\n- Edit your theme'
|
|
3050
|
+
text: '- Pick a theme — Material UI (default), a built-in theme, one of your own, or one from the marketplace — and preview it before it goes live.\n- Open the theme editor under Setup. Your changes are stored on top of the theme you picked, so it can always be restored or saved as a theme of your own.\n- Set your palette and typography; changes render in a live preview.\n- Configure both light and dark schemes — published sites apply the visitor\'s scheme automatically.\n- Fonts load via a Google Fonts URL builder.\nThe theme you set here is supplied to the Besigner canvas too, so previews match the live site.\nHow-tos\n- Edit your theme'
|
|
3044
3051
|
},
|
|
3045
3052
|
{
|
|
3046
3053
|
path: '/building-sites/theme-builder/overview',
|
|
@@ -5406,14 +5413,14 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
5406
5413
|
title: 'Publisher handbook',
|
|
5407
5414
|
heading: 'Before your first publish',
|
|
5408
5415
|
anchor: '#before-your-first-publish',
|
|
5409
|
-
text: '1. Publisher profile (Marketplace → Profile) — your handle and display name appear on every listing. Publishing is organization-owned: the listing belongs to your organization, not your personal account.\n2. Publisher agreement
|
|
5416
|
+
text: '1. Publisher profile (Marketplace → Profile) — your handle and display name appear on every listing. Publishing is organization-owned: the listing belongs to your organization, not your personal account.\n2. Publisher agreement — accept it once, on behalf of the organization. It is offered wherever you start a publish, and it is always on Marketplace → Profile. See The publisher agreement.\n3. Plan: publishing requires a Pro plan.\n4. Payouts (paid listings only): complete Stripe Connect onboarding from Marketplace → Payouts. The platform fee is 20% (30% on free plans).'
|
|
5410
5417
|
},
|
|
5411
5418
|
{
|
|
5412
5419
|
path: '/developers/plugins/publishing/publisher-handbook',
|
|
5413
5420
|
title: 'Publisher handbook',
|
|
5414
5421
|
heading: 'The publisher agreement',
|
|
5415
5422
|
anchor: '#the-publisher-agreement',
|
|
5416
|
-
text: 'Your organization — not you personally — is the publishing party, so the organization accepts the Marketplace Publisher Agreement once
|
|
5423
|
+
text: 'Your organization — not you personally — is the publishing party, so the organization accepts the Marketplace Publisher Agreement once. Only an owner or admin can accept it, because only they can bind the organization, and we record who accepted it and when.\nYou do not have to go looking for it. When your organization has not accepted the current version, the agreement opens in a dialog wherever you are publishing — the plugin publish page, or the publish dialog for a component, layout, site template, theme, email template or dataset schema — as soon as you open it, and again if you submit without accepting. Accepting there records the same acceptance as Marketplace → Profile does, and the publish you started then goes ahead with everything you filled in. If you are not an owner or admin, the dialog names the people in your organization who can accept it.\nYou can read the agreement in full at aglyn.com/legal/marketplace-publisher-agreement, alongside the rest of the legal center. The version in force is stated at the top of that page, and it is the same string the panel records against your acceptance.\nIt is a different thing from the pre-publish checklist, and they are not interchangeable:\n| | Publisher agreement | Pre-publish checklist |\n| About | The relationship | The bytes in this bundle |\n| Scope | Your organization | One version |\n| Asked | Once, and again when the terms change | Every publish, including a republish of the same version number |\nThe summary shown above the accept button is the part that tends to surprise people later — the license you grant us to host, verify and distribute; what you warrant about each version; that you cannot recall code already installed; that we can disable a version everywhere without notice if it looks dangerous; that review '
|
|
5417
5424
|
},
|
|
5418
5425
|
{
|
|
5419
5426
|
path: '/developers/plugins/publishing/publisher-handbook',
|
|
@@ -5483,7 +5490,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
5483
5490
|
title: 'Extension-point catalog',
|
|
5484
5491
|
heading: '',
|
|
5485
5492
|
anchor: '',
|
|
5486
|
-
text: 'Extension-point catalog\nThe surface matrix: what a plugin can extend, from which entry (barrel = client, /server = API process), and when it runs.\n| Extension point | Entry | Reaches | Runs |\n| Canvas components (defineUiFeatureBundle) | barrel (site) | Besigner + published sites | Editor gates / SSR-suspended page load |\n| Console nav + pages (ConsoleExtension.navItems) | barrel (console) | Console host area | After the org resolves, before the shell paints |\n| Widgets (ConsoleExtension.widgets) | barrel (console) | Named console zones (dashboard, org, billing, team, staff, besigner, the assistant dock) — a widget with a column is a column of a shell-owned table | With their host page |\n| Providers (ConsoleExtension.providers) | barrel (console) | Around every console page | Once the registry is populated |\n| Zones a plugin HOSTS (definePluginZone / registerPluginZone) | barrel (console) | A position on a page the plugin owns, with the props it hands each widget carried on the token — so another plugin writes a widget for it without importing the owner | With the page that draws useConsoleWidgetSlot(); the token itself is type-only and ships nothing |\n| Staff pages (ConsoleExtension.staffPages) | barrel (staff) | The staff area — a tab in the staff strip and a page at /admin/{id} | Once the staff area has loaded its plugins, behind the staff guard |\n| Site runtimes (registerSiteRuntime) | barrel (site) | Every published page | Client render, reading enricher props |\n| Redirect resolvers / page resolvers / enrichers | /server | Tenant page pipeline | Per request, in that order; enricher
|
|
5493
|
+
text: 'Extension-point catalog\nThe surface matrix: what a plugin can extend, from which entry (barrel = client, /server = API process), and when it runs.\n| Extension point | Entry | Reaches | Runs |\n| Canvas components (defineUiFeatureBundle) | barrel (site) | Besigner + published sites | Editor gates / SSR-suspended page load |\n| Console nav + pages (ConsoleExtension.navItems) | barrel (console) | Console host area | After the org resolves, before the shell paints |\n| Widgets (ConsoleExtension.widgets) | barrel (console) | Named console zones (dashboard, org, billing, team, staff, besigner, the assistant dock) — a widget with a column is a column of a shell-owned table | With their host page |\n| Providers (ConsoleExtension.providers) | barrel (console) | Around every console page | Once the registry is populated |\n| Zones a plugin HOSTS (definePluginZone / registerPluginZone) | barrel (console) | A position on a page the plugin owns, with the props it hands each widget carried on the token — so another plugin writes a widget for it without importing the owner | With the page that draws useConsoleWidgetSlot(); the token itself is type-only and ships nothing |\n| Built-in themes (ConsoleExtension.themePresets) | barrel (console) | The theme picker on every site\'s Setup → Theme | When the theme page loads the plugins declaring hostThemePresets |\n| Staff pages (ConsoleExtension.staffPages) | barrel (staff) | The staff area — a tab in the staff strip and a page at /admin/{id} | Once the staff area has loaded its plugins, behind the staff guard |\n| Site runtimes (registerSiteRuntime) | barrel (site) | Every published page | Client render, reading enricher props |\n| Redirect resolvers / page resolvers / enrichers | /server | Tenant page pipeline | Per request, in that order; enricher'
|
|
5487
5494
|
},
|
|
5488
5495
|
{
|
|
5489
5496
|
path: '/developers/plugins/reference/injection-zones',
|