@aglyn/plugins-events-calendar 1.0.0-beta.270 → 1.0.0-beta.272

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aglyn/plugins-events-calendar",
3
- "version": "1.0.0-beta.270",
3
+ "version": "1.0.0-beta.272",
4
4
  "license": "Apache-2.0",
5
5
  "homepage": "https://aglyn.com",
6
6
  "repository": {
@@ -25,14 +25,14 @@
25
25
  "./package.json": "./package.json"
26
26
  },
27
27
  "dependencies": {
28
- "@aglyn/aglyn": "1.0.0-beta.270",
29
- "@aglyn/shared-data-mdi": "1.0.0-beta.270",
30
- "@aglyn/shared-ui-jsx": "1.0.0-beta.270",
31
- "@aglyn/shared-ui-snackstack": "1.0.0-beta.270",
32
- "@aglyn/shared-util-timestamp": "1.0.0-beta.270",
33
- "@aglyn/tenant-data-admin": "1.0.0-beta.270",
34
- "@aglyn/tenant-feature-instance": "1.0.0-beta.270",
35
- "@aglyn/tenant-runtime": "1.0.0-beta.270",
28
+ "@aglyn/aglyn": "1.0.0-beta.272",
29
+ "@aglyn/shared-data-mdi": "1.0.0-beta.272",
30
+ "@aglyn/shared-ui-jsx": "1.0.0-beta.272",
31
+ "@aglyn/shared-ui-snackstack": "1.0.0-beta.272",
32
+ "@aglyn/shared-util-timestamp": "1.0.0-beta.272",
33
+ "@aglyn/tenant-data-admin": "1.0.0-beta.272",
34
+ "@aglyn/tenant-feature-instance": "1.0.0-beta.272",
35
+ "@aglyn/tenant-runtime": "1.0.0-beta.272",
36
36
  "@swc/helpers": "0.5.23"
37
37
  },
38
38
  "peerDependencies": {
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * What a workspace without the Event Calendar reads where Events would be.
19
+ *
20
+ * `eventCalendar` is false on every plan: it is sold as a per-org add-on and
21
+ * nothing else, so the shell's generic "not included in your current plan"
22
+ * would send a reader to compare tiers that all say no. The price is the
23
+ * constant the invoice is built from (`EVENT_CALENDAR_ADDON_MONTHLY_USD`),
24
+ * passed in so this sentence cannot drift away from what a purchase charges.
25
+ * The console's Events extension and the native apps (through
26
+ * `generate-native-derived-values.mjs`) both read it from here.
27
+ */
28
+ export declare function eventCalendarUpgradeMessage(monthlyUsd: number): string;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ import { PLATFORM_BRAND_NAME } from "@aglyn/aglyn/app-utils/platform-brand";
17
+ /**
18
+ * What a workspace without the Event Calendar reads where Events would be.
19
+ *
20
+ * `eventCalendar` is false on every plan: it is sold as a per-org add-on and
21
+ * nothing else, so the shell's generic "not included in your current plan"
22
+ * would send a reader to compare tiers that all say no. The price is the
23
+ * constant the invoice is built from (`EVENT_CALENDAR_ADDON_MONTHLY_USD`),
24
+ * passed in so this sentence cannot drift away from what a purchase charges.
25
+ * The console's Events extension and the native apps (through
26
+ * `generate-native-derived-values.mjs`) both read it from here.
27
+ */ export function eventCalendarUpgradeMessage(monthlyUsd) {
28
+ return 'The Event Calendar is a paid add-on ' + `($${monthlyUsd}/mo for your whole ` + `workspace, supported directly by ${PLATFORM_BRAND_NAME}). ` + 'Enable it from Billing → Add-ons.';
29
+ }
30
+
31
+ //# sourceMappingURL=upgrade-notice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/plugins/events-calendar/src/lib/model/upgrade-notice.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\nimport { PLATFORM_BRAND_NAME } from '@aglyn/aglyn/app-utils/platform-brand'\n\n/**\n * What a workspace without the Event Calendar reads where Events would be.\n *\n * `eventCalendar` is false on every plan: it is sold as a per-org add-on and\n * nothing else, so the shell's generic \"not included in your current plan\"\n * would send a reader to compare tiers that all say no. The price is the\n * constant the invoice is built from (`EVENT_CALENDAR_ADDON_MONTHLY_USD`),\n * passed in so this sentence cannot drift away from what a purchase charges.\n * The console's Events extension and the native apps (through\n * `generate-native-derived-values.mjs`) both read it from here.\n */\nexport function eventCalendarUpgradeMessage(monthlyUsd: number): string {\n return (\n 'The Event Calendar is a paid add-on ' +\n `($${monthlyUsd}/mo for your whole ` +\n `workspace, supported directly by ${PLATFORM_BRAND_NAME}). ` +\n 'Enable it from Billing → Add-ons.'\n )\n}\n"],"names":["PLATFORM_BRAND_NAME","eventCalendarUpgradeMessage","monthlyUsd"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,mBAAmB,QAAQ,wCAAuC;AAE3E;;;;;;;;;;CAUC,GACD,OAAO,SAASC,4BAA4BC,UAAkB;IAC5D,OACE,yCACA,CAAC,EAAE,EAAEA,WAAW,mBAAmB,CAAC,GACpC,CAAC,iCAAiC,EAAEF,oBAAoB,GAAG,CAAC,GAC5D;AAEJ"}
package/src/lib/plugin.js CHANGED
@@ -19,6 +19,7 @@ import { mdiCalendarMonthOutline } from "@aglyn/shared-data-mdi";
19
19
  import { lazy } from "react";
20
20
  import { BUNDLE_ID } from "./constants/bundle-common.js";
21
21
  import { registerEventsRecordRoutes } from "./model/events-record-routes.js";
22
+ import { eventCalendarUpgradeMessage } from "./model/upgrade-notice.js";
22
23
  import { EVENTS_TRANSFER_LABEL, EVENTS_TRANSFER_RESOURCE } from "./transfer/events-transfer-key.js";
23
24
  /**
24
25
  * The console page is code-split: the shell registers the extension at app
@@ -37,13 +38,10 @@ import { EVENTS_TRANSFER_LABEL, EVENTS_TRANSFER_RESOURCE } from "./transfer/even
37
38
  pluginId: BUNDLE_ID,
38
39
  displayName: 'Events Calendar',
39
40
  featureFlag: 'eventCalendar',
40
- // `eventCalendar` is false on every plan — it is sold as a per-org
41
- // add-on and nothing else — so the shell's generic "not included in your
42
- // current plan" would send a reader to compare tiers that all say no.
43
- // The price comes from the constant the invoice is built from, so this
44
- // sentence cannot drift away from what a purchase actually charges.
41
+ // `eventCalendar` is false on every plan, so the notice is the add-on's
42
+ // own sentence, priced from the constant the invoice is built from.
45
43
  upgradeNotice: {
46
- message: 'The Event Calendar is a paid add-on ' + `($${Aglyn.EVENT_CALENDAR_ADDON_MONTHLY_USD}/mo for your whole ` + `workspace, supported directly by ${Aglyn.PLATFORM_BRAND_NAME}). ` + 'Enable it from Billing → Add-ons.',
44
+ message: eventCalendarUpgradeMessage(Aglyn.EVENT_CALENDAR_ADDON_MONTHLY_USD),
47
45
  billingAnchor: 'addons'
48
46
  },
49
47
  navItems: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../libs/plugins/events-calendar/src/lib/plugin.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\nimport * as Aglyn from '@aglyn/aglyn'\nimport { registerPluginTransferResourceUi } from '@aglyn/aglyn/plugin-manager/plugin-transfer-resources'\nimport { mdiCalendarMonthOutline } from '@aglyn/shared-data-mdi'\nimport { lazy } from 'react'\nimport { BUNDLE_ID } from './constants/bundle-common'\nimport { registerEventsRecordRoutes } from './model/events-record-routes'\nimport {\n EVENTS_TRANSFER_LABEL,\n EVENTS_TRANSFER_RESOURCE,\n} from './transfer/events-transfer-key'\n\n/**\n * The console page is code-split: the shell registers the extension at app\n * load for the nav strip, but the manager UI only loads when a user opens\n * the Events page (the shell's plugin route wraps it in Suspense).\n */\nconst EventsConsolePage = lazy(() => import('./components/events-console-page'))\n\n/**\n * Console half only: registers the Events nav item + page + dashboard card\n * in the ConsoleExtension registry, and how the import wizard and export\n * dialog show this site's events. Safe to call at console app load — it\n * pulls no besigner/canvas code (the page is lazy). The shell renders the\n * nav item and, through its generic plugin route, the page — so the Events\n * surface exists without any edit to the console's own nav or page files.\n */\nexport function registerEventsCalendarConsole(): void {\n Aglyn.registerConsoleExtension({\n pluginId: BUNDLE_ID,\n displayName: 'Events Calendar',\n featureFlag: 'eventCalendar',\n // `eventCalendar` is false on every plan — it is sold as a per-org\n // add-on and nothing else — so the shell's generic \"not included in your\n // current plan\" would send a reader to compare tiers that all say no.\n // The price comes from the constant the invoice is built from, so this\n // sentence cannot drift away from what a purchase actually charges.\n upgradeNotice: {\n message:\n 'The Event Calendar is a paid add-on ' +\n `($${Aglyn.EVENT_CALENDAR_ADDON_MONTHLY_USD}/mo for your whole ` +\n `workspace, supported directly by ${Aglyn.PLATFORM_BRAND_NAME}). ` +\n 'Enable it from Billing → Add-ons.',\n billingAnchor: 'addons',\n },\n navItems: [\n {\n label: 'Events',\n href: '/events',\n // Reuse the existing release-flag nav-tab so staff-preview gating\n // is unchanged now that the tab comes from the plugin (AGL-394).\n navTabId: 'nav-tab-events',\n icon: { path: mdiCalendarMonthOutline.path },\n header: {\n title: 'Events',\n icon: { path: mdiCalendarMonthOutline.path },\n docsTopic: 'events',\n },\n Component: EventsConsolePage,\n },\n ],\n dashboardCards: [{ cardId: 'events-upcoming', title: 'Upcoming events' }],\n })\n // Where an event opens, for a surface that names one — the AI plugin's job\n // drawer opening an event a build drafted (AGL-3743).\n registerEventsRecordRoutes()\n // The client half of the `events` import and export; the server half is\n // registered from `declarations.console-server.ts`.\n registerPluginTransferResourceUi(\n EVENTS_TRANSFER_RESOURCE,\n {\n label: EVENTS_TRANSFER_LABEL,\n icon: { path: mdiCalendarMonthOutline.path },\n },\n { pluginId: BUNDLE_ID },\n )\n}\n\nexport * from './site'\n"],"names":["Aglyn","registerPluginTransferResourceUi","mdiCalendarMonthOutline","lazy","BUNDLE_ID","registerEventsRecordRoutes","EVENTS_TRANSFER_LABEL","EVENTS_TRANSFER_RESOURCE","EventsConsolePage","registerEventsCalendarConsole","registerConsoleExtension","pluginId","displayName","featureFlag","upgradeNotice","message","EVENT_CALENDAR_ADDON_MONTHLY_USD","PLATFORM_BRAND_NAME","billingAnchor","navItems","label","href","navTabId","icon","path","header","title","docsTopic","Component","dashboardCards","cardId"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,YAAYA,WAAW,eAAc;AACrC,SAASC,gCAAgC,QAAQ,wDAAuD;AACxG,SAASC,uBAAuB,QAAQ,yBAAwB;AAChE,SAASC,IAAI,QAAQ,QAAO;AAC5B,SAASC,SAAS,QAAQ,+BAA2B;AACrD,SAASC,0BAA0B,QAAQ,kCAA8B;AACzE,SACEC,qBAAqB,EACrBC,wBAAwB,QACnB,oCAAgC;AAEvC;;;;CAIC,GACD,MAAMC,oBAAoBL,KAAK,IAAM,MAAM,CAAC;AAE5C;;;;;;;CAOC,GACD,OAAO,SAASM;IACdT,MAAMU,wBAAwB,CAAC;QAC7BC,UAAUP;QACVQ,aAAa;QACbC,aAAa;QACb,mEAAmE;QACnE,yEAAyE;QACzE,sEAAsE;QACtE,uEAAuE;QACvE,oEAAoE;QACpEC,eAAe;YACbC,SACE,yCACA,CAAC,EAAE,EAAEf,MAAMgB,gCAAgC,CAAC,mBAAmB,CAAC,GAChE,CAAC,iCAAiC,EAAEhB,MAAMiB,mBAAmB,CAAC,GAAG,CAAC,GAClE;YACFC,eAAe;QACjB;QACAC,UAAU;YACR;gBACEC,OAAO;gBACPC,MAAM;gBACN,kEAAkE;gBAClE,iEAAiE;gBACjEC,UAAU;gBACVC,MAAM;oBAAEC,MAAMtB,wBAAwBsB,IAAI;gBAAC;gBAC3CC,QAAQ;oBACNC,OAAO;oBACPH,MAAM;wBAAEC,MAAMtB,wBAAwBsB,IAAI;oBAAC;oBAC3CG,WAAW;gBACb;gBACAC,WAAWpB;YACb;SACD;QACDqB,gBAAgB;YAAC;gBAAEC,QAAQ;gBAAmBJ,OAAO;YAAkB;SAAE;IAC3E;IACA,2EAA2E;IAC3E,sDAAsD;IACtDrB;IACA,wEAAwE;IACxE,oDAAoD;IACpDJ,iCACEM,0BACA;QACEa,OAAOd;QACPiB,MAAM;YAAEC,MAAMtB,wBAAwBsB,IAAI;QAAC;IAC7C,GACA;QAAEb,UAAUP;IAAU;AAE1B;AAEA,cAAc,YAAQ"}
1
+ {"version":3,"sources":["../../../../../../libs/plugins/events-calendar/src/lib/plugin.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\nimport * as Aglyn from '@aglyn/aglyn'\nimport { registerPluginTransferResourceUi } from '@aglyn/aglyn/plugin-manager/plugin-transfer-resources'\nimport { mdiCalendarMonthOutline } from '@aglyn/shared-data-mdi'\nimport { lazy } from 'react'\nimport { BUNDLE_ID } from './constants/bundle-common'\nimport { registerEventsRecordRoutes } from './model/events-record-routes'\nimport { eventCalendarUpgradeMessage } from './model/upgrade-notice'\nimport {\n EVENTS_TRANSFER_LABEL,\n EVENTS_TRANSFER_RESOURCE,\n} from './transfer/events-transfer-key'\n\n/**\n * The console page is code-split: the shell registers the extension at app\n * load for the nav strip, but the manager UI only loads when a user opens\n * the Events page (the shell's plugin route wraps it in Suspense).\n */\nconst EventsConsolePage = lazy(() => import('./components/events-console-page'))\n\n/**\n * Console half only: registers the Events nav item + page + dashboard card\n * in the ConsoleExtension registry, and how the import wizard and export\n * dialog show this site's events. Safe to call at console app load — it\n * pulls no besigner/canvas code (the page is lazy). The shell renders the\n * nav item and, through its generic plugin route, the page — so the Events\n * surface exists without any edit to the console's own nav or page files.\n */\nexport function registerEventsCalendarConsole(): void {\n Aglyn.registerConsoleExtension({\n pluginId: BUNDLE_ID,\n displayName: 'Events Calendar',\n featureFlag: 'eventCalendar',\n // `eventCalendar` is false on every plan, so the notice is the add-on's\n // own sentence, priced from the constant the invoice is built from.\n upgradeNotice: {\n message: eventCalendarUpgradeMessage(Aglyn.EVENT_CALENDAR_ADDON_MONTHLY_USD),\n billingAnchor: 'addons',\n },\n navItems: [\n {\n label: 'Events',\n href: '/events',\n // Reuse the existing release-flag nav-tab so staff-preview gating\n // is unchanged now that the tab comes from the plugin (AGL-394).\n navTabId: 'nav-tab-events',\n icon: { path: mdiCalendarMonthOutline.path },\n header: {\n title: 'Events',\n icon: { path: mdiCalendarMonthOutline.path },\n docsTopic: 'events',\n },\n Component: EventsConsolePage,\n },\n ],\n dashboardCards: [{ cardId: 'events-upcoming', title: 'Upcoming events' }],\n })\n // Where an event opens, for a surface that names one — the AI plugin's job\n // drawer opening an event a build drafted (AGL-3743).\n registerEventsRecordRoutes()\n // The client half of the `events` import and export; the server half is\n // registered from `declarations.console-server.ts`.\n registerPluginTransferResourceUi(\n EVENTS_TRANSFER_RESOURCE,\n {\n label: EVENTS_TRANSFER_LABEL,\n icon: { path: mdiCalendarMonthOutline.path },\n },\n { pluginId: BUNDLE_ID },\n )\n}\n\nexport * from './site'\n"],"names":["Aglyn","registerPluginTransferResourceUi","mdiCalendarMonthOutline","lazy","BUNDLE_ID","registerEventsRecordRoutes","eventCalendarUpgradeMessage","EVENTS_TRANSFER_LABEL","EVENTS_TRANSFER_RESOURCE","EventsConsolePage","registerEventsCalendarConsole","registerConsoleExtension","pluginId","displayName","featureFlag","upgradeNotice","message","EVENT_CALENDAR_ADDON_MONTHLY_USD","billingAnchor","navItems","label","href","navTabId","icon","path","header","title","docsTopic","Component","dashboardCards","cardId"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,YAAYA,WAAW,eAAc;AACrC,SAASC,gCAAgC,QAAQ,wDAAuD;AACxG,SAASC,uBAAuB,QAAQ,yBAAwB;AAChE,SAASC,IAAI,QAAQ,QAAO;AAC5B,SAASC,SAAS,QAAQ,+BAA2B;AACrD,SAASC,0BAA0B,QAAQ,kCAA8B;AACzE,SAASC,2BAA2B,QAAQ,4BAAwB;AACpE,SACEC,qBAAqB,EACrBC,wBAAwB,QACnB,oCAAgC;AAEvC;;;;CAIC,GACD,MAAMC,oBAAoBN,KAAK,IAAM,MAAM,CAAC;AAE5C;;;;;;;CAOC,GACD,OAAO,SAASO;IACdV,MAAMW,wBAAwB,CAAC;QAC7BC,UAAUR;QACVS,aAAa;QACbC,aAAa;QACb,wEAAwE;QACxE,oEAAoE;QACpEC,eAAe;YACbC,SAASV,4BAA4BN,MAAMiB,gCAAgC;YAC3EC,eAAe;QACjB;QACAC,UAAU;YACR;gBACEC,OAAO;gBACPC,MAAM;gBACN,kEAAkE;gBAClE,iEAAiE;gBACjEC,UAAU;gBACVC,MAAM;oBAAEC,MAAMtB,wBAAwBsB,IAAI;gBAAC;gBAC3CC,QAAQ;oBACNC,OAAO;oBACPH,MAAM;wBAAEC,MAAMtB,wBAAwBsB,IAAI;oBAAC;oBAC3CG,WAAW;gBACb;gBACAC,WAAWnB;YACb;SACD;QACDoB,gBAAgB;YAAC;gBAAEC,QAAQ;gBAAmBJ,OAAO;YAAkB;SAAE;IAC3E;IACA,2EAA2E;IAC3E,sDAAsD;IACtDrB;IACA,wEAAwE;IACxE,oDAAoD;IACpDJ,iCACEO,0BACA;QACEY,OAAOb;QACPgB,MAAM;YAAEC,MAAMtB,wBAAwBsB,IAAI;QAAC;IAC7C,GACA;QAAEZ,UAAUR;IAAU;AAE1B;AAEA,cAAc,YAAQ"}