@antelopejs/dms 0.4.1 → 0.4.3

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.
Files changed (33) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/pages/settings/users/invites.js +6 -5
  3. package/dist/pages/settings/users/invites.js.map +1 -1
  4. package/dist/pages/settings/users/members.d.ts +1 -0
  5. package/dist/pages/settings/users/members.js +12 -3
  6. package/dist/pages/settings/users/members.js.map +1 -1
  7. package/dist/pages/settings/users/permission-tree-nodes.d.ts +3 -0
  8. package/dist/pages/settings/users/permission-tree-nodes.js +22 -0
  9. package/dist/pages/settings/users/permission-tree-nodes.js.map +1 -0
  10. package/dist/pages/settings/users/roles.js +2 -16
  11. package/dist/pages/settings/users/roles.js.map +1 -1
  12. package/dist/test/unit/pages/settings/permission-tree-nodes.test.d.ts +1 -0
  13. package/dist/test/unit/pages/settings/permission-tree-nodes.test.js +68 -0
  14. package/dist/test/unit/pages/settings/permission-tree-nodes.test.js.map +1 -0
  15. package/frontend-vue/dms.frontend.ts +2 -0
  16. package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardHeader.vue +4 -2
  17. package/frontend-vue/layers/dms-layout/app/composables/general/types/index.ts +7 -0
  18. package/frontend-vue/layers/dms-layout/app/composables/general/useColorModePreference.ts +17 -0
  19. package/frontend-vue/layers/dms-layout/app/custom-pages/settings/appearance.vue +6 -6
  20. package/frontend-vue/layers/dms-layout/app/plugins/color-mode.ts +100 -0
  21. package/frontend-vue/layers/dms-ui/app/components/form/Form.vue +41 -1
  22. package/frontend-vue/layers/dms-ui/app/components/form/components/Calendar.vue +49 -26
  23. package/frontend-vue/layers/dms-ui/app/components/form/components/DatePicker.vue +77 -32
  24. package/frontend-vue/layers/dms-ui/app/composables/chart/useThemeRevision.ts +0 -22
  25. package/frontend-vue/layers/dms-ui/app/composables/form/useForm.ts +23 -0
  26. package/frontend-vue/layers/dms-ui/i18n/locales/ui-en-GB.json +1 -0
  27. package/frontend-vue/layers/dms-ui/i18n/locales/ui-fr-FR.json +1 -0
  28. package/frontend-vue/package.json +2 -2
  29. package/frontend-vue/pnpm-lock.yaml +7 -33
  30. package/frontend-vue/tests/color-mode-server-render.test.ts +84 -0
  31. package/frontend-vue/tests/color-mode-sync.test.ts +320 -0
  32. package/frontend-vue/tests/form-required-fields.test.ts +44 -0
  33. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,44 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.4.3
4
+
5
+ [compare changes](https://github.com/AntelopeJS/dms/compare/v0.4.2...v0.4.3)
6
+
7
+ ### 🚀 Enhancements
8
+
9
+ - **form:** Mark required fields and add a required legend ([#46](https://github.com/AntelopeJS/dms/pull/46))
10
+ - **settings:** Reach pending invites from the members page ([#47](https://github.com/AntelopeJS/dms/pull/47))
11
+
12
+ ### 🩹 Fixes
13
+
14
+ - **playground:** Build the dms and the playground before starting ([ce1e7bd](https://github.com/AntelopeJS/dms/commit/ce1e7bd))
15
+ - **form:** Handle partial ranges and show range and multiple dates in the date picker ([b12efcf](https://github.com/AntelopeJS/dms/commit/b12efcf))
16
+ - **form:** Emit ISO strings for multiple dates in the calendar and date picker ([327ebc2](https://github.com/AntelopeJS/dms/commit/327ebc2))
17
+ - **layout:** Keep the current page in the breadcrumb when the URL has a query ([#53](https://github.com/AntelopeJS/dms/pull/53))
18
+ - **layout:** Keep the color-mode preference in a dms-color-mode cookie ([#56](https://github.com/AntelopeJS/dms/pull/56))
19
+
20
+ ### 🏡 Chore
21
+
22
+ - **release:** @antelopejs/interface-dms v0.2.2 ([2be2aba](https://github.com/AntelopeJS/dms/commit/2be2aba))
23
+ - **playground:** Add sibling pages whose slugs share a prefix ([#49](https://github.com/AntelopeJS/dms/pull/49))
24
+
25
+ ### ❤️ Contributors
26
+
27
+ - Alessandro Aloisio ([@alessaloisio](http://github.com/alessaloisio))
28
+ - Antony Rizzitelli <rizzitelli.antony@pm.me>
29
+
30
+ ## v0.4.2
31
+
32
+ [compare changes](https://github.com/AntelopeJS/dms/compare/v0.4.1...v0.4.2)
33
+
34
+ ### 🩹 Fixes
35
+
36
+ - **roles:** Show permissions whose parent id is not registered ([#44](https://github.com/AntelopeJS/dms/pull/44))
37
+
38
+ ### ❤️ Contributors
39
+
40
+ - Antony Rizzitelli <rizzitelli.antony@pm.me>
41
+
3
42
  ## v0.4.1
4
43
 
5
44
  [compare changes](https://github.com/AntelopeJS/dms/compare/v0.4.0...v0.4.1)
@@ -30,9 +30,9 @@ const default_types_1 = require("@antelopejs/interface-dms/base/data-types/defau
30
30
  const status_type_1 = require("@antelopejs/interface-dms/base/data-types/status-type");
31
31
  const types_1 = require("@antelopejs/interface-dms/base/types");
32
32
  const fire_and_forget_1 = require("@antelopejs/interface-dms/utils/fire-and-forget");
33
- const category_1 = require("./category");
34
33
  const member_invite_form_1 = require("./member-invite-form");
35
34
  const members_1 = require("./members");
35
+ const INVITES_PERMISSION_ID = "settings.user.invites";
36
36
  let inviteSettingDataAPI = class inviteSettingDataAPI extends (0, interface_data_api_1.DataController)(db_1.UserInvite, {
37
37
  list: base_1.TableViewRoutes.List,
38
38
  get: base_1.TableViewRoutes.Get,
@@ -188,9 +188,10 @@ exports.inviteSettingDataAPI = inviteSettingDataAPI = __decorate([
188
188
  ], inviteSettingDataAPI);
189
189
  let InvitesSettingsController = class InvitesSettingsController extends (0, page_1.PageController)("invites", {
190
190
  displayName: "$menu.invites",
191
- category: category_1.userCategory,
191
+ category: members_1.MembersSettingsController,
192
+ permission: { id: INVITES_PERMISSION_ID },
193
+ hidden: true,
192
194
  icon: "i-ph-envelope-simple",
193
- order: 5,
194
195
  description: "$page.settings.description.invites",
195
196
  }) {
196
197
  static table = (0, base_1.TableView)(inviteSettingDataAPI, {
@@ -225,7 +226,7 @@ let InvitesSettingsController = class InvitesSettingsController extends (0, page
225
226
  icon: "i-ph-arrow-clockwise",
226
227
  target: {
227
228
  type: "api",
228
- url: "/settings/user/invites/{_id}/resend",
229
+ url: `${members_1.INVITES_PAGE_PATH}/{_id}/resend`,
229
230
  method: "POST",
230
231
  successMessage: "$page.settings.invites.action.resend_success",
231
232
  confirm: {
@@ -240,7 +241,7 @@ let InvitesSettingsController = class InvitesSettingsController extends (0, page
240
241
  icon: "i-ph-trash",
241
242
  target: {
242
243
  type: "api",
243
- url: "/settings/user/invites/{_id}/cancel",
244
+ url: `${members_1.INVITES_PAGE_PATH}/{_id}/cancel`,
244
245
  method: "DELETE",
245
246
  successMessage: "$page.settings.invites.action.cancel_success",
246
247
  confirm: {
@@ -1 +1 @@
1
- {"version":3,"file":"invites.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/invites.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invites.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/invites.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAOmC;AACnC,uEAAwD;AACxD,uEAGwC;AACxC,sEAMiD;AACjD,4EAAsF;AACtF,qDAA2E;AAC3E,mFAIqD;AACrD,+DAG2C;AAC3C,yDAA8E;AAC9E,6EAA8E;AAC9E,uFAAkF;AAClF,yDAAsE;AACtE,yDAMwC;AACxC,2FAA2F;AAC3F,uFAAmF;AACnF,gEAA4E;AAC5E,qFAAgF;AAChF,6DAG8B;AAC9B,uCAImB;AAEnB,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAG/C,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,IAAA,mCAAc,EACtD,eAAU,EACV;IACE,IAAI,EAAE,sBAAe,CAAC,IAAI;IAC1B,GAAG,EAAE,sBAAe,CAAC,GAAG;IACxB,IAAI,EAAE,sBAAe,CAAC,IAAI;CAC3B,EACD,IAAA,0BAAU,EAAC,2BAA2B,CAAC,CACxC;IAkHC,IAYI,MAAM;QACR,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrD,CAAC;CACF,CAAA;AAzIY,oDAAoB;AAWvB;IAFP,IAAA,yBAAc,GAAE;IAChB,IAAA,uCAAiB,EAAC,oBAAe,CAAC;8BACpB,oBAAe;mDAAC;AAKvB;IAHP,IAAA,mBAAQ,GAAE;IACV,IAAA,eAAQ,GAAE;IACV,IAAA,iBAAM,EAAC,qBAAU,CAAC,QAAQ,CAAC;;iDACR;AAcZ;IAZP,IAAA,mBAAQ,GAAE;IACV,IAAA,iBAAU,GAAE;IACZ,IAAA,eAAQ,GAAE;IACV,IAAA,aAAM,EAAC;QACN,IAAI,EAAE,qCAAqC;QAC3C,IAAI,EAAE,IAAI,gCAAgB,CAAC,SAAS,CAAC;YACnC,WAAW,EAAE,0CAA0C;SACxD,CAAC;QACF,UAAU,EAAE,IAAI;KACjB,CAAC;IACD,IAAA,mBAAQ,GAAE;IACV,IAAA,iBAAM,EAAC,qBAAU,CAAC,QAAQ,CAAC;;mDACN;AAUd;IARP,IAAA,eAAQ,GAAE;IACV,IAAA,aAAM,EAAC;QACN,IAAI,EAAE,yCAAyC;QAC/C,IAAI,EAAE,IAAI,gCAAgB,CAAC,UAAU,CAAC;YACpC,WAAW,EAAE,qDAAqD;SACnE,CAAC;KACH,CAAC;IACD,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;uDACH;AAUlB;IARP,IAAA,eAAQ,GAAE;IACV,IAAA,aAAM,EAAC;QACN,IAAI,EAAE,wCAAwC;QAC9C,IAAI,EAAE,IAAI,gCAAgB,CAAC,UAAU,CAAC;YACpC,WAAW,EAAE,oDAAoD;SAClE,CAAC;KACH,CAAC;IACD,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;sDACJ;AAgBjB;IAdP,IAAA,mBAAQ,GAAE;IACV,IAAA,aAAM,EAAC;QACN,IAAI,EAAE,qCAAqC;QAC3C,IAAI,EAAE,IAAI,gCAAgB,CAAC,YAAY,CAAC;YACtC,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,0CAA0C;YACvD,iBAAiB,EAAE,0BAAkB;YACrC,UAAU,EAAE;gBACV,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,KAAK;aACb;SACF,CAAC;KACH,CAAC;IACD,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;uDACD;AASpB;IAPP,IAAA,mBAAQ,GAAE;IACV,IAAA,eAAQ,GAAE;IACV,IAAA,aAAM,EAAC;QACN,IAAI,EAAE,qCAAqC;QAC3C,IAAI,EAAE,IAAI,gCAAgB,CAAC,WAAW,EAAE;KACzC,CAAC;IACD,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;2DACE;AAUvB;IARP,IAAA,eAAQ,GAAE;IACV,IAAA,aAAM,EAAC;QACN,IAAI,EAAE,wCAAwC;QAC9C,IAAI,EAAE,IAAI,gCAAgB,CAAC,UAAU,CAAC;YACpC,KAAK,EAAE,8CAAyB;SACjC,CAAC;KACH,CAAC;IACD,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;sDACJ;AASjB;IAPP,IAAA,eAAQ,GAAE;IACV,IAAA,aAAM,EAAC;QACN,IAAI,EAAE,qDAAqD;QAC3D,IAAI,EAAE,IAAI,gCAAgB,CAAC,WAAW,EAAE;QACxC,WAAW,EAAE,0DAA0D;KACxE,CAAC;IACD,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;iEACQ;AAa7B;IAXP,IAAA,eAAQ,GAAE;IACV,IAAA,aAAM,EAAC;QACN,IAAI,EAAE,0CAA0C;QAChD,IAAI,EAAE,IAAI,gCAAgB,CAAC,QAAQ,EAAE;QACrC,gBAAgB,EAAE;YAChB,IAAI,EAAE,4BAAoB,CAAC,QAAQ;YACnC,IAAI,EAAE,4BAAoB,CAAC,QAAQ;YACnC,GAAG,EAAE,4BAAoB,CAAC,MAAM;SACjC;KACF,CAAC;IACD,IAAA,iBAAM,EAAC,qBAAU,CAAC,QAAQ,CAAC;8BACT,IAAI;uDAAC;AAahB;IAXP,IAAA,eAAQ,GAAE;IACV,IAAA,aAAM,EAAC;QACN,IAAI,EAAE,0CAA0C;QAChD,IAAI,EAAE,IAAI,gCAAgB,CAAC,QAAQ,EAAE;QACrC,gBAAgB,EAAE;YAChB,IAAI,EAAE,4BAAoB,CAAC,QAAQ;YACnC,IAAI,EAAE,4BAAoB,CAAC,QAAQ;YACnC,GAAG,EAAE,4BAAoB,CAAC,MAAM;SACjC;KACF,CAAC;IACD,IAAA,iBAAM,EAAC,qBAAU,CAAC,QAAQ,CAAC;8BACT,IAAI;uDAAC;AAExB;IAAC,IAAA,mBAAQ,EAAC,CAAC,WAAW,CAAC,CAAC;IACvB,IAAA,eAAQ,GAAE;IACV,IAAA,aAAM,EAAC;QACN,IAAI,EAAE,sCAAsC;QAC5C,IAAI,EAAE,IAAI,wBAAU,CAAC;YACnB,WAAW,EAAE,uCAAuC;YACpD,YAAY,EAAE,uCAAuC;YACrD,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,SAAS;SACxB,CAAC;KACH,CAAC;IACD,IAAA,iBAAM,EAAC,qBAAU,CAAC,QAAQ,CAAC;;;kDAG3B;+BAxIU,oBAAoB;IADhC,IAAA,2CAAsB,GAAE;GACZ,oBAAoB,CAyIhC;AAOM,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,IAAA,qBAAc,EAAC,SAAS,EAAE;IACvE,WAAW,EAAE,eAAe;IAC5B,QAAQ,EAAE,mCAAyB;IACnC,UAAU,EAAE,EAAE,EAAE,EAAE,qBAAqB,EAAE;IACzC,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,oCAAoC;CAClD,CAAC;IACA,MAAM,CAAC,KAAK,GAAG,IAAA,gBAAS,EAAC,oBAAoB,EAAE;QAC7C,OAAO,EAAE,sCAAsC;QAC/C,QAAQ,EAAE,OAAO;QACjB,aAAa,EAAE;YACb;gBACE,KAAK,EAAE,sCAAsC;gBAC7C,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,+BAAqB;gBACjC,MAAM,EAAE;oBACN,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,IAAI;oBACV,SAAS,EAAE,qCAAgB;oBAC3B,KAAK,EAAE,qCAAqC;oBAC5C,WAAW,EAAE,2CAA2C;iBACzD;aACF;SACF;QACD,UAAU,EAAE;YACV,GAAG,EAAE,KAAK;YACV,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;YAC1C,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE;gBACN;oBACE,KAAK,EAAE,sCAAsC;oBAC7C,IAAI,EAAE,sBAAsB;oBAC5B,MAAM,EAAE;wBACN,IAAI,EAAE,KAAK;wBACX,GAAG,EAAE,GAAG,2BAAiB,eAAe;wBACxC,MAAM,EAAE,MAAM;wBACd,cAAc,EAAE,8CAA8C;wBAC9D,OAAO,EAAE;4BACP,KAAK,EAAE,oDAAoD;4BAC3D,WAAW,EACT,0DAA0D;4BAC5D,YAAY,EAAE,SAAS;yBACxB;qBACF;iBACF;gBACD;oBACE,KAAK,EAAE,sCAAsC;oBAC7C,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE;wBACN,IAAI,EAAE,KAAK;wBACX,GAAG,EAAE,GAAG,2BAAiB,eAAe;wBACxC,MAAM,EAAE,QAAQ;wBAChB,cAAc,EAAE,8CAA8C;wBAC9D,OAAO,EAAE;4BACP,KAAK,EAAE,oDAAoD;4BAC3D,WAAW,EACT,0DAA0D;4BAC5D,YAAY,EAAE,OAAO;yBACtB;qBACF;iBACF;aACF;SACF;KACF,CAAC,CAAC;IAGG,AAAN,KAAK,CAAC,YAAY,CACU,EAAU,EACzB,GAAmB;QAE9B,MAAM,QAAQ,GAAG,IAAA,mCAAkB,EAAC,GAAG,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,MAAM,IAAA,uCAAmB,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/D,IAAA,2BAAM,EAAC,cAAc,EAAE,GAAG,EAAE,wCAAwC,CAAC,CAAC;QAEtE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,+BAAqB,EAAC;YAC5C,QAAQ;YACR,cAAc,EAAE,cAAc;YAC9B,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,SAAS,EAAE,cAAc,CAAC,SAAS;YACnC,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,OAAO,EAAE,cAAc,CAAC,SAAS;YACjC,aAAa,EAAE,cAAc,CAAC,aAAa;YAC3C,mBAAmB,EAAE,cAAc,CAAC,mBAAmB;YAIvD,UAAU,EAAE,cAAc,CAAC,UAAU,IAAI,SAAS;YAClD,iBAAiB,EAAE,QAAQ;SAC5B,CAAC,CAAC;QAEH,IAAA,+BAAa,EACX,IAAA,2BAAoB,EAClB,cAAc,CAAC,KAAK,EACpB,KAAK,EACL,IAAA,4BAAkB,EAAC,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC,CACtE,EACD,oBAAoB,cAAc,CAAC,KAAK,GAAG,CAC5C,CAAC;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY,CACU,EAAU,EACzB,GAAmB;QAE9B,MAAM,QAAQ,GAAG,IAAA,mCAAkB,EAAC,GAAG,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,MAAM,IAAA,uCAAmB,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/D,IAAA,2BAAM,EAAC,cAAc,EAAE,GAAG,EAAE,wCAAwC,CAAC,CAAC;QAEtE,MAAM,UAAU,GAAG,MAAM,IAAA,gCAAY,EAAC;YACpC,QAAQ;YACR,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QACH,MAAM,IAAA,4CAAwB,EAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;;AA1HU,8DAAyB;AAwE9B;IADL,IAAA,oBAAI,EAAC,aAAa,CAAC;IAEjB,WAAA,IAAA,yBAAS,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACxB,WAAA,IAAA,uBAAO,GAAE,CAAA;;;;6DA+BX;AAGK;IADL,IAAA,sBAAM,EAAC,aAAa,CAAC;IAEnB,WAAA,IAAA,yBAAS,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACxB,WAAA,IAAA,uBAAO,GAAE,CAAA;;;;6DAYX;oCA1HU,yBAAyB;IADrC,IAAA,mBAAY,GAAE;GACF,yBAAyB,CA2HrC"}
@@ -1,6 +1,7 @@
1
1
  import { type RequestContext } from "@antelopejs/interface-api";
2
2
  import type { Action } from "@antelopejs/interface-dms/component";
3
3
  import { type User, UserModel } from "@antelopejs/interface-dms/auth/db";
4
+ export declare const INVITES_PAGE_PATH = "/settings/user/members/invites";
4
5
  export declare const membersTable: import("@antelopejs/interface-dms").ComponentBuilder<import("@antelopejs/interface-dms/base").TableViewOptionsSerialized>;
5
6
  export declare const membersTableAddAction: Action;
6
7
  declare const MembersSettingsController_base: {
@@ -12,7 +12,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.MembersSettingsController = exports.membersTableAddAction = exports.membersTable = void 0;
15
+ exports.MembersSettingsController = exports.membersTableAddAction = exports.membersTable = exports.INVITES_PAGE_PATH = void 0;
16
16
  const interface_api_1 = require("@antelopejs/interface-api");
17
17
  const interface_api_util_1 = require("@antelopejs/interface-api-util");
18
18
  const interface_data_api_1 = require("@antelopejs/interface-data-api");
@@ -28,13 +28,14 @@ const request_tenant_1 = require("@antelopejs/interface-dms/request-tenant");
28
28
  const tenant_ownership_1 = require("@antelopejs/interface-dms/tenant-ownership");
29
29
  const db_2 = require("@antelopejs/interface-dms/auth/db");
30
30
  const base_1 = require("@antelopejs/interface-dms/base");
31
+ const types_1 = require("@antelopejs/interface-dms/base/types");
31
32
  const saas_mode_1 = require("@antelopejs/interface-dms/utils/saas-mode");
32
33
  const member_invite_schema_1 = require("../../../validation/member-invite.schema");
33
34
  const category_1 = require("./category");
34
35
  const member_invite_form_1 = require("./member-invite-form");
35
36
  (0, interface_data_api_1.RegisterDataController)()(data_controllers_1.memberSettingDataAPI);
36
37
  const MEMBERS_PAGE_PATH = "/settings/user/members";
37
- const INVITES_PAGE_PATH = "/settings/user/invites";
38
+ exports.INVITES_PAGE_PATH = `${MEMBERS_PAGE_PATH}/invites`;
38
39
  function detectOwnerChange(current, body) {
39
40
  if (body.isTenantOwner === undefined)
40
41
  return null;
@@ -93,6 +94,14 @@ exports.membersTable = (0, base_1.TableView)(data_controllers_1.memberSettingDat
93
94
  ],
94
95
  },
95
96
  customButtons: [
97
+ {
98
+ label: "$menu.invites",
99
+ icon: "i-ph-envelope-simple",
100
+ color: "neutral",
101
+ variant: types_1.ButtonVariant.outline,
102
+ permission: "add",
103
+ target: { type: "page", url: exports.INVITES_PAGE_PATH },
104
+ },
96
105
  {
97
106
  label: "$page.settings.members.invite.button",
98
107
  icon: "i-ph-user-plus",
@@ -180,7 +189,7 @@ let MembersSettingsController = class MembersSettingsController extends (0, page
180
189
  extensions,
181
190
  });
182
191
  return {
183
- redirectPath: result.kind === "added" ? MEMBERS_PAGE_PATH : INVITES_PAGE_PATH,
192
+ redirectPath: result.kind === "added" ? MEMBERS_PAGE_PATH : exports.INVITES_PAGE_PATH,
184
193
  };
185
194
  }
186
195
  async validateMemberEmail(ctx, memberId, userModel) {
@@ -1 +1 @@
1
- {"version":3,"file":"members.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/members.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"members.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/members.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { PermissionTree } from "@antelopejs/interface-dms/permissions";
2
+ import type { FormComponents } from "@antelopejs/interface-dms/base/form";
3
+ export declare function mapPermissionTreeToPermissionNodes(permissionTree: Record<string, PermissionTree>): FormComponents.PermissionsTreeNode[];
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapPermissionTreeToPermissionNodes = mapPermissionTreeToPermissionNodes;
4
+ function mapPermissionTreeToPermissionNodes(permissionTree) {
5
+ return Object.values(permissionTree).flatMap(mapPermissionTreeNode);
6
+ }
7
+ function mapPermissionTreeNode(node) {
8
+ if (!node.data)
9
+ return mapPermissionTreeToPermissionNodes(node.children);
10
+ if (node.data.defaultGranted)
11
+ return [];
12
+ const children = mapPermissionTreeToPermissionNodes(node.children);
13
+ return [
14
+ {
15
+ id: node.data.id,
16
+ label: node.data.title ?? "Unknown Permission",
17
+ icon: node.data.icon,
18
+ children: children.length > 0 ? children : undefined,
19
+ },
20
+ ];
21
+ }
22
+ //# sourceMappingURL=permission-tree-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-tree-nodes.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/permission-tree-nodes.ts"],"names":[],"mappings":";;AAaA,gFAIC;AAJD,SAAgB,kCAAkC,CAChD,cAA8C;IAE9C,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAoB;IAEpB,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,kCAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzE,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,CAAC;IAExC,MAAM,QAAQ,GAAG,kCAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEnE,OAAO;QACL;YACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YAChB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,oBAAoB;YAC9C,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SACrD;KACF,CAAC;AACJ,CAAC"}
@@ -17,22 +17,8 @@ const page_1 = require("@antelopejs/interface-dms/page");
17
17
  const permissions_1 = require("@antelopejs/interface-dms/permissions");
18
18
  const base_1 = require("@antelopejs/interface-dms/base");
19
19
  const category_1 = require("./category");
20
+ const permission_tree_nodes_1 = require("./permission-tree-nodes");
20
21
  (0, interface_data_api_1.RegisterDataController)()(roles_1.roleSettingDataAPI);
21
- function mapPermissionTreeToPermissionNodes(permissionTree) {
22
- return Object.values(permissionTree)
23
- .filter((node) => node.data && !node.data.defaultGranted)
24
- .map((node) => {
25
- const permissionNode = {
26
- id: node.data?.id ?? "",
27
- label: node.data?.title ?? "Unknown Permission",
28
- icon: node.data?.icon,
29
- children: Object.keys(node.children).length > 0
30
- ? mapPermissionTreeToPermissionNodes(node.children)
31
- : undefined,
32
- };
33
- return permissionNode;
34
- });
35
- }
36
22
  let RolesSettingsController = class RolesSettingsController extends (0, page_1.PageController)("roles", {
37
23
  displayName: "$menu.roles",
38
24
  category: category_1.userCategory,
@@ -42,7 +28,7 @@ let RolesSettingsController = class RolesSettingsController extends (0, page_1.P
42
28
  }) {
43
29
  async getPermissionsTree() {
44
30
  const permissionTree = await (0, permissions_1.GetPermissions)();
45
- return mapPermissionTreeToPermissionNodes(permissionTree);
31
+ return (0, permission_tree_nodes_1.mapPermissionTreeToPermissionNodes)(permissionTree);
46
32
  }
47
33
  static table = (0, base_1.TableView)(roles_1.roleSettingDataAPI, {
48
34
  caption: "$page.settings.roles.table.caption",
@@ -1 +1 @@
1
- {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/roles.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAAgD;AAChD,uEAAwE;AACxE,4EAAsF;AACtF,yDAA8E;AAC9E,uEAG+C;AAC/C,yDAA2D;AAE3D,yCAA0C;AAE1C,IAAA,2CAAsB,GAAE,CAAC,0BAAkB,CAAC,CAAC;AAE7C,SAAS,kCAAkC,CACzC,cAA8C;IAE9C,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;SACjC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;SACxD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,cAAc,GAAuC;YACzD,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;YACvB,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,oBAAoB;YAC/C,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI;YACrB,QAAQ,EACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;gBACnC,CAAC,CAAC,kCAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACnD,CAAC,CAAC,SAAS;SAChB,CAAC;QACF,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC,CAAC;AACP,CAAC;AAGM,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,IAAA,qBAAc,EAAC,OAAO,EAAE;IACnE,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,uBAAY;IACtB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,CAAC;IACR,WAAW,EAAE,kCAAkC;CAChD,CAAC;IAEM,AAAN,KAAK,CAAC,kBAAkB;QACtB,MAAM,cAAc,GAAG,MAAM,IAAA,4BAAc,GAAE,CAAC;QAC9C,OAAO,kCAAkC,CAAC,cAAc,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,IAAA,gBAAS,EAAC,0BAAkB,EAAE;QAC3C,OAAO,EAAE,oCAAoC;QAC7C,UAAU,EAAE;YACV,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;YAC5C,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;YAC1C,YAAY,EAAE,IAAI;SACnB;QACD,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;KAChC,CAAC,CAAC;;AAzBQ,0DAAuB;AAQ5B;IADL,IAAA,mBAAG,EAAC,kBAAkB,CAAC;;;;iEAIvB;kCAXU,uBAAuB;IADnC,IAAA,mBAAY,GAAE;GACF,uBAAuB,CA0BnC"}
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/roles.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAAgD;AAChD,uEAAwE;AACxE,4EAAsF;AACtF,yDAA8E;AAC9E,uEAAuE;AACvE,yDAA2D;AAE3D,yCAA0C;AAC1C,mEAA6E;AAE7E,IAAA,2CAAsB,GAAE,CAAC,0BAAkB,CAAC,CAAC;AAGtC,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,IAAA,qBAAc,EAAC,OAAO,EAAE;IACnE,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,uBAAY;IACtB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,CAAC;IACR,WAAW,EAAE,kCAAkC;CAChD,CAAC;IAEM,AAAN,KAAK,CAAC,kBAAkB;QACtB,MAAM,cAAc,GAAG,MAAM,IAAA,4BAAc,GAAE,CAAC;QAC9C,OAAO,IAAA,0DAAkC,EAAC,cAAc,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,IAAA,gBAAS,EAAC,0BAAkB,EAAE;QAC3C,OAAO,EAAE,oCAAoC;QAC7C,UAAU,EAAE;YACV,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;YAC5C,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;YAC1C,YAAY,EAAE,IAAI;SACnB;QACD,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;KAChC,CAAC,CAAC;;AAzBQ,0DAAuB;AAQ5B;IADL,IAAA,mBAAG,EAAC,kBAAkB,CAAC;;;;iEAIvB;kCAXU,uBAAuB;IADnC,IAAA,mBAAY,GAAE;GACF,uBAAuB,CA0BnC"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const permission_tree_nodes_1 = require("../../../../pages/settings/users/permission-tree-nodes");
5
+ function registered(id, children = {}, overrides = {}) {
6
+ return { data: { id, title: id, ...overrides }, children };
7
+ }
8
+ function unregistered(children) {
9
+ return { children };
10
+ }
11
+ describe("[unit] pages/settings/users/permission-tree-nodes", () => {
12
+ it("maps registered permissions to nested nodes", () => {
13
+ const tree = {
14
+ pages: registered("pages", {
15
+ list: registered("pages.list", {}, { title: "List", icon: "i-list" }),
16
+ }),
17
+ };
18
+ (0, chai_1.expect)((0, permission_tree_nodes_1.mapPermissionTreeToPermissionNodes)(tree)).to.deep.equal([
19
+ {
20
+ id: "pages",
21
+ label: "pages",
22
+ icon: undefined,
23
+ children: [
24
+ {
25
+ id: "pages.list",
26
+ label: "List",
27
+ icon: "i-list",
28
+ children: undefined,
29
+ },
30
+ ],
31
+ },
32
+ ]);
33
+ });
34
+ it("lifts permissions whose parent id is not registered", () => {
35
+ const tree = {
36
+ media: unregistered({
37
+ upload: registered("media.upload"),
38
+ folders: unregistered({ manage: registered("media.folders.manage") }),
39
+ }),
40
+ };
41
+ (0, chai_1.expect)((0, permission_tree_nodes_1.mapPermissionTreeToPermissionNodes)(tree).map((node) => node.id)).to.deep.equal(["media.upload", "media.folders.manage"]);
42
+ });
43
+ it("lifts a permission registered three levels below any registered id", () => {
44
+ const tree = {
45
+ a: unregistered({ b: unregistered({ c: registered("a.b.c") }) }),
46
+ };
47
+ (0, chai_1.expect)((0, permission_tree_nodes_1.mapPermissionTreeToPermissionNodes)(tree)).to.deep.equal([
48
+ { id: "a.b.c", label: "a.b.c", icon: undefined, children: undefined },
49
+ ]);
50
+ });
51
+ it("lifts an orphan permission into its closest registered ancestor", () => {
52
+ const tree = {
53
+ a: registered("a", {
54
+ b: unregistered({ c: registered("a.b.c") }),
55
+ }),
56
+ };
57
+ const [root] = (0, permission_tree_nodes_1.mapPermissionTreeToPermissionNodes)(tree);
58
+ (0, chai_1.expect)(root.id).to.equal("a");
59
+ (0, chai_1.expect)(root.children?.map((node) => node.id)).to.deep.equal(["a.b.c"]);
60
+ });
61
+ it("hides a default-granted permission together with its subtree", () => {
62
+ const tree = {
63
+ docs: registered("docs", { edit: registered("docs.edit") }, { defaultGranted: true }),
64
+ };
65
+ (0, chai_1.expect)((0, permission_tree_nodes_1.mapPermissionTreeToPermissionNodes)(tree)).to.deep.equal([]);
66
+ });
67
+ });
68
+ //# sourceMappingURL=permission-tree-nodes.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-tree-nodes.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/pages/settings/permission-tree-nodes.test.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import authMiddleware from "./layers/dms-auth/app/middleware/auth";
9
9
  import homepageRedirectMiddleware from "./layers/dms-layout/app/middleware/homepage-redirect.global";
10
10
  import moduleRoutingMiddleware from "./layers/dms-layout/app/middleware/module-routing.global";
11
11
  import pageLeaveGuardMiddleware from "./layers/dms-layout/app/middleware/page-leave-guard.global";
12
+ import colorModePlugin from "./layers/dms-layout/app/plugins/color-mode";
12
13
  import interfaceScalePlugin from "./layers/dms-layout/app/plugins/interface-scale";
13
14
  import languageSyncPlugin from "./layers/dms-layout/app/plugins/language-sync";
14
15
  import seoPlugin from "./layers/dms-layout/app/plugins/seo";
@@ -143,6 +144,7 @@ function registerPlugins(sdk: Parameters<DmsFrontendModule["setup"]>[0]): void {
143
144
  await plugin.default(context);
144
145
  }, clientOnly);
145
146
  }
147
+ sdk.registerPlugin(colorModePlugin);
146
148
  sdk.registerPlugin(interfaceScalePlugin);
147
149
  sdk.registerPlugin(languageSyncPlugin);
148
150
  sdk.registerPlugin(seoPlugin);
@@ -93,11 +93,13 @@ const toggleCurrentPageFavorite = () => {
93
93
  const breadcrumb = computed((): BreadcrumbItem[] => {
94
94
  const base: BreadcrumbItem[] = [{ label: "home", to: homepage || "/" }];
95
95
 
96
- if (route.fullPath === (homepage || "/")) {
96
+ // The path only: with the query, the last segment ("data?table=x") matched
97
+ // no route and the current page dropped out of the breadcrumb.
98
+ if (route.path === (homepage || "/")) {
97
99
  return base;
98
100
  }
99
101
 
100
- const paths = route.fullPath.split("/").filter((path) => path);
102
+ const paths = route.path.split("/").filter((path) => path);
101
103
 
102
104
  return base.concat(
103
105
  paths
@@ -6,6 +6,13 @@ export interface ScaleOption {
6
6
  hint: string;
7
7
  }
8
8
 
9
+ export type ColorModePreference = "light" | "dark" | "system";
10
+
11
+ export interface ColorModeOption {
12
+ value: ColorModePreference;
13
+ label: string;
14
+ }
15
+
9
16
  export interface SystemStateMeta {
10
17
  title: string;
11
18
  description: string;
@@ -0,0 +1,17 @@
1
+ import type { ColorModePreference } from "./types";
2
+
3
+ export const COLOR_MODE_COOKIE = "dms-color-mode";
4
+ const COLOR_MODE_COOKIE_MAX_AGE = 60 * 60 * 24 * 365;
5
+ const DEFAULT_COLOR_MODE_PREFERENCE: ColorModePreference = "system";
6
+
7
+ /**
8
+ * The user's color mode as a cookie ref shared by every caller: assign it to
9
+ * change the theme. The server reads the same cookie, so an explicit `light`
10
+ * or `dark` is already in the rendered HTML; `system` resolves in the browser.
11
+ */
12
+ export const useColorModePreference = () => {
13
+ return useDmsCookie<ColorModePreference>(COLOR_MODE_COOKIE, {
14
+ default: () => DEFAULT_COLOR_MODE_PREFERENCE,
15
+ maxAge: COLOR_MODE_COOKIE_MAX_AGE,
16
+ });
17
+ };
@@ -3,7 +3,7 @@ import ThemePreview from "../../build/components/pages/settings/theme/ThemePrevi
3
3
  import ScalePreview from "../../build/components/pages/settings/theme/ScalePreview.vue";
4
4
  import CssVariablesList from "../../build/components/pages/settings/theme/CssVariablesList.vue";
5
5
 
6
- const colorOptions = [
6
+ const colorOptions: ColorModeOption[] = [
7
7
  {
8
8
  value: "system",
9
9
  label: "$page.settings.appearance.system",
@@ -36,7 +36,7 @@ const scaleOptions: ScaleOption[] = [
36
36
  },
37
37
  ];
38
38
 
39
- const colorMode = useColorMode();
39
+ const colorModePreference = useColorModePreference();
40
40
  const interfaceScale = useInterfaceScale();
41
41
  const { processI18n } = useTranslation();
42
42
  </script>
@@ -60,13 +60,13 @@ const { processI18n } = useTranslation();
60
60
  :key="`color-option-${index}`"
61
61
  class="group bg-elevated relative flex cursor-pointer flex-col overflow-hidden rounded-xl transition-all"
62
62
  :class="
63
- colorMode.preference === option.value
63
+ colorModePreference === option.value
64
64
  ? 'outline-primary outline-2 outline-offset-2'
65
65
  : 'ring-default hover:ring-accented ring hover:-translate-y-0.5'
66
66
  "
67
67
  >
68
68
  <input
69
- v-model="colorMode.preference"
69
+ v-model="colorModePreference"
70
70
  type="radio"
71
71
  :value="option.value"
72
72
  class="sr-only"
@@ -85,13 +85,13 @@ const { processI18n } = useTranslation();
85
85
  <span
86
86
  class="ring-accented grid size-4 shrink-0 place-items-center rounded-full ring ring-inset"
87
87
  :class="
88
- colorMode.preference === option.value
88
+ colorModePreference === option.value
89
89
  ? 'bg-primary ring-primary'
90
90
  : ''
91
91
  "
92
92
  >
93
93
  <span
94
- v-if="colorMode.preference === option.value"
94
+ v-if="colorModePreference === option.value"
95
95
  class="bg-default size-1.5 rounded-full"
96
96
  />
97
97
  </span>
@@ -0,0 +1,100 @@
1
+ import {
2
+ type BasicColorSchema,
3
+ useColorMode as useVueUseColorMode,
4
+ } from "@vueuse/core";
5
+ import { type Ref, watch } from "vue";
6
+ import type { ColorModePreference } from "../composables/general/types";
7
+ import {
8
+ COLOR_MODE_COOKIE,
9
+ useColorModePreference,
10
+ } from "../composables/general/useColorModePreference";
11
+
12
+ type ExplicitColorMode = Exclude<ColorModePreference, "system">;
13
+
14
+ /** The preferences that pin their class on `<html>`; any other follows the system. */
15
+ const EXPLICIT_COLOR_MODES: ExplicitColorMode[] = ["light", "dark"];
16
+ const SYSTEM_PREFERENCE: ColorModePreference = "system";
17
+ const VUEUSE_SYSTEM_MODE: BasicColorSchema = "auto";
18
+ /**
19
+ * vueuse's default key. Nuxt UI's `useDark()`, installed with the app, and its
20
+ * color-mode components (`UDashboardSearch`'s theme group…) all read it.
21
+ */
22
+ const VUEUSE_STORAGE_KEY = "vueuse-color-scheme";
23
+ const DARK_SCHEME_QUERY = "(prefers-color-scheme: dark)";
24
+ const PRE_PAINT_SCRIPT_ID = "dms-color-mode";
25
+
26
+ /**
27
+ * Runs in `<head>` before first paint, and so before the entry module installs
28
+ * Nuxt UI: it hands vueuse the cookie's mode, which `useDark()` reads on boot,
29
+ * and sets the `<html>` class, resolving `system` itself. The cookie is read
30
+ * the way `useDmsCookie` writes it (URI-encoded JSON), falling back to the raw
31
+ * value. Source text rather than a serialized function, which a bundler could
32
+ * fill with helpers the page does not have.
33
+ */
34
+ const PRE_PAINT_SCRIPT = `(() => {
35
+ const modes = ${JSON.stringify(EXPLICIT_COLOR_MODES)};
36
+ const prefix = ${JSON.stringify(`${COLOR_MODE_COOKIE}=`)};
37
+ const entry = document.cookie.split("; ").find((cookie) => cookie.startsWith(prefix)) ?? "";
38
+ let preference = "";
39
+ try {
40
+ preference = decodeURIComponent(entry.slice(prefix.length));
41
+ preference = JSON.parse(preference);
42
+ } catch {}
43
+ const mode = modes.includes(preference) ? preference : ${JSON.stringify(VUEUSE_SYSTEM_MODE)};
44
+ try {
45
+ localStorage.setItem(${JSON.stringify(VUEUSE_STORAGE_KEY)}, mode);
46
+ } catch {}
47
+ const system = matchMedia(${JSON.stringify(DARK_SCHEME_QUERY)}).matches ? "dark" : "light";
48
+ document.documentElement.classList.remove(...modes);
49
+ document.documentElement.classList.add(modes.includes(mode) ? mode : system);
50
+ })();`;
51
+
52
+ function explicitColorMode(value: string): ExplicitColorMode | undefined {
53
+ return EXPLICIT_COLOR_MODES.find((mode) => mode === value);
54
+ }
55
+
56
+ /**
57
+ * Mirrors the cookie, the source of truth, into the vueuse store Nuxt UI
58
+ * shares, and a change made from a Nuxt UI component back into the cookie.
59
+ * Each side is written only when it would change, so neither echoes the other.
60
+ */
61
+ function syncWithVueUse(preference: Ref<ColorModePreference>): void {
62
+ const { store } = useVueUseColorMode({ storageKey: VUEUSE_STORAGE_KEY });
63
+ watch(
64
+ preference,
65
+ (next) => {
66
+ const mode = explicitColorMode(next) ?? VUEUSE_SYSTEM_MODE;
67
+ if (store.value !== mode) store.value = mode;
68
+ },
69
+ { immediate: true },
70
+ );
71
+ watch(store, (next) => {
72
+ const nextPreference = explicitColorMode(next) ?? SYSTEM_PREFERENCE;
73
+ if (preference.value !== nextPreference) preference.value = nextPreference;
74
+ });
75
+ }
76
+
77
+ /**
78
+ * The server renders an explicit preference's class, so the first paint is
79
+ * right before any script runs, and the pre-paint script, which only matters
80
+ * before that paint: inserted later by the browser head it would run after
81
+ * boot and redo what the sync already did. In the browser the class belongs to
82
+ * vueuse, which Nuxt UI already drives it with: were unhead tracking it as
83
+ * well, it would remove it when `dark` gives way to a `system` that still
84
+ * resolves dark, and vueuse, seeing no change, would not put it back. A page
85
+ * rendered without the script (client-side fallback) is corrected by the sync,
86
+ * which applies the cookie on boot.
87
+ */
88
+ export default defineDmsPlugin(() => {
89
+ const preference = useColorModePreference();
90
+
91
+ if (!import.meta.env.SSR) {
92
+ syncWithVueUse(preference);
93
+ return;
94
+ }
95
+ const mode = explicitColorMode(preference.value);
96
+ useHead({
97
+ htmlAttrs: mode ? { class: mode } : {},
98
+ script: [{ id: PRE_PAINT_SCRIPT_ID, innerHTML: PRE_PAINT_SCRIPT }],
99
+ });
100
+ });