@nxgt/material-vue 0.41.0 → 0.42.0

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 (60) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +2 -1
  3. package/dist/{Button-BG3oDkrl.js → Button-CWmzvv9p.js} +1 -1
  4. package/dist/{HoverCardTrigger-Dh1ar_W4.js → HoverCardTrigger-C5AbAyHE.js} +2 -2
  5. package/dist/{camera-DV9jcl_3.js → camera-C-9slBUV.js} +4 -4
  6. package/dist/{components-C1JYYoQ4.js → components-DX4EycMi.js} +10541 -10262
  7. package/dist/components.js +8 -8
  8. package/dist/composables.js +2 -2
  9. package/dist/dnd.js +1 -1
  10. package/dist/{form-scope-CeD0v_mw.js → form-scope-CN68PTXc.js} +1 -1
  11. package/dist/{i18n-provider-D5XyLQ3P.js → i18n-provider-DmZSTBnp.js} +1 -1
  12. package/dist/i18n.js +4 -4
  13. package/dist/{icon-button-DXrmfs6e.js → icon-button-DErh1aJS.js} +1 -1
  14. package/dist/lib/components/ui/fields/contacts/consts.d.ts +1 -1
  15. package/dist/lib/components/ui/layout/account-menu/account-menu-avatar.vue.d.ts +9 -0
  16. package/dist/lib/components/ui/layout/account-menu/account-menu.vue.d.ts +38 -0
  17. package/dist/lib/components/ui/layout/account-menu/index.d.ts +3 -0
  18. package/dist/lib/components/ui/layout/account-menu/types.d.ts +10 -0
  19. package/dist/lib/components/ui/layout/app-shell/activity-layout.vue.d.ts +21 -5
  20. package/dist/lib/components/ui/layout/app-shell/app-brand-logo.vue.d.ts +20 -0
  21. package/dist/lib/components/ui/layout/app-shell/app-brand.vue.d.ts +30 -0
  22. package/dist/lib/components/ui/layout/app-shell/app-header.vue.d.ts +13 -5
  23. package/dist/lib/components/ui/layout/app-shell/app-sidebar.vue.d.ts +12 -2
  24. package/dist/lib/components/ui/layout/app-shell/index.d.ts +1 -1
  25. package/dist/lib/components/ui/layout/app-shell/types.d.ts +10 -0
  26. package/dist/lib/components/ui/layout/index.d.ts +1 -0
  27. package/dist/lib/i18n/resources/en/en.d.ts +4 -0
  28. package/dist/lib/i18n/resources/en/material.json.d.ts +4 -0
  29. package/dist/lib/i18n/resources/fr/fr.d.ts +4 -0
  30. package/dist/lib/i18n/resources/fr/material.json.d.ts +4 -0
  31. package/dist/lib/i18n/resources/resources.d.ts +8 -0
  32. package/dist/lib/i18n/translator.d.ts +1 -1
  33. package/dist/lib/nuxt/component-names.d.ts +1 -1
  34. package/dist/lib.js +1 -1
  35. package/dist/main.js +17 -17
  36. package/dist/map.js +4 -4
  37. package/dist/material-vue.css +1 -1
  38. package/dist/{pdf-outline-sidebar-CgmJjhUz.js → pdf-outline-sidebar-BU4o_hBI.js} +2 -2
  39. package/dist/{pdf-page-BjQNWV72.js → pdf-page-anNe78Lc.js} +1 -1
  40. package/dist/{pdf-page-list-nG0l4SjH.js → pdf-page-list-CSY76HH6.js} +2 -2
  41. package/dist/{pdf-reader-Dekd4Ymw.js → pdf-reader-BhZNrW7R.js} +8 -8
  42. package/dist/{pdf-sidebar-gDj63dRH.js → pdf-sidebar-DcIpG7eh.js} +3 -3
  43. package/dist/{pdf-thumbnail-sidebar-C5ikii1Z.js → pdf-thumbnail-sidebar-CUC0V4if.js} +3 -3
  44. package/dist/{pdf-toolbar-DmmrSlCq.js → pdf-toolbar-C373S-ul.js} +4 -4
  45. package/dist/pdf.js +2 -2
  46. package/dist/{print-format.utils-CiUiQE-i.js → print-format.utils-C81c0weJ.js} +2 -2
  47. package/dist/{sortable-provider-lK0srHJF.js → sortable-provider-CL2UGGn8.js} +2 -2
  48. package/dist/{stored-language-dM2e5qaS.js → stored-language-Wtcj2HsU.js} +8 -0
  49. package/dist/{stx-player-C2VQCXFc.js → stx-player-CMmM3F5Z.js} +12 -12
  50. package/dist/{translator-DXL5RDRg.js → translator-D5Dp-dob.js} +1 -1
  51. package/dist/{use-heading-spy-Btwc0yad.js → use-heading-spy-BIBHtUXN.js} +1 -1
  52. package/dist/{use-material-translation-Du3Wvsk1.js → use-material-translation-COoBTGpB.js} +3 -3
  53. package/docs/components/README.md +2 -1
  54. package/docs/components/navigation-and-layout.md +56 -1
  55. package/docs/guides/app-shell.md +99 -19
  56. package/docs/guides/i18n.md +1 -1
  57. package/docs/previews/navigation-layout-accountmenu.webp +0 -0
  58. package/docs/roadmap.md +9 -0
  59. package/lib/nuxt/component-names.ts +1 -0
  60. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @nxgt/material-vue
2
2
 
3
+ ## 0.42.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#624](https://github.com/softistx/nxgt-material/pull/624) [`94a77a7`](https://github.com/softistx/nxgt-material/commit/94a77a76b54834bda18d1e2acc494d5a089d245d) Thanks [@SteveGT96](https://github.com/SteveGT96)! - The app bar gets a leading title and a reusable account menu ([#585](https://github.com/softistx/nxgt-material/issues/585)). `ActivityLayout` takes `headerTitle` (the `#header-title` slot in Vue): the context the app is in, an organisation's name say, right after the phone's menu button and truncated with an ellipsis when long, so the avatar stays on screen. `AccountMenu` is new, for `ActivityLayout`'s `avatar` (`#avatar`): an avatar button named "Account menu, <name>" (the picture, else the initials on `bg-primary`) that opens a menu aligned to its end, headed by the avatar, the name and `secondary` (the e-mail), then the app's `items` (links) and a destructive Sign out with a busy state (`signingOut`; `onSignOut` in React, the `sign-out` event in Vue). New strings: `material.account-menu.trigger` and `material.account-menu.sign-out`, in English and French. `AppHeader`'s default slot no longer stops its content from shrinking (`min-w-0`), which is what lets a long title truncate. To adopt: replace a hand-rolled user menu in `avatar` with `<AccountMenu name={user.name} secondary={user.email} src={user.picture} items={…} onSignOut={signOut} />`, and move a title placed in `headerActions` to `headerTitle`.
8
+
9
+ - [#624](https://github.com/softistx/nxgt-material/pull/624) [`d8addd6`](https://github.com/softistx/nxgt-material/commit/d8addd6e12a58aad08b321321bb6aac2fa50646b) Thanks [@SteveGT96](https://github.com/SteveGT96)! - The app shell shows the app's logo and name ([#581](https://github.com/softistx/nxgt-material/issues/581)). `ActivityLayout`, `AppSidebar` and `AppHeader` take `logo` (an image URL, `{ src, alt }`, or a node; in Vue a node goes in the `#logo` slot) and `name` (already translated). The collapsed rail shows the logo alone, named by `name`, which also shows as a tooltip; the expanded sidebar and the phone's menu sheet show the logo and the name side by side. The phone's menu sheet now honours `brand` (the `#brand` slot in Vue) too: it used to show the default atom badge whatever the app passed. `brand` is unchanged otherwise, still the full override, and wins over `logo` and `name`. To adopt: replace `brand={<img src="/logo.svg" alt="Acme" />}` (`<template #brand>` in Vue) with `logo="/logo.svg" name="Acme"`. Two things follow from `brand` reaching the sheet: a link inside `brand` (a home link around the logo) is now the sheet's first focusable element and takes the focus when it opens, and `brand` is rendered twice (the rail stays in the page, hidden, on a phone), so an `id` inside it appears twice while the sheet is open: drop ids from `brand`.
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [[`94a77a7`](https://github.com/softistx/nxgt-material/commit/94a77a76b54834bda18d1e2acc494d5a089d245d)]:
14
+ - @nxgt/material-core@0.12.0
15
+
3
16
  ## 0.41.0
4
17
 
5
18
  ### Minor Changes
package/README.md CHANGED
@@ -323,7 +323,7 @@ Each area a consumer starts from has its own page under `docs/guides/`.
323
323
  | --- | --- |
324
324
  | [Forms](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/guides/forms.md) | wiring fields to vee-validate and Zod, composite values (contacts, opening hours), config-driven `Field`, server errors, what each field emits |
325
325
  | [i18n](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/guides/i18n.md) | adding your strings next to the package's, switching language, translated Zod messages, SSR without a text mismatch |
326
- | [App shell](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/guides/app-shell.md) | laying out an app with `ActivityLayout`, its `items` (rendered as links; `link-component` to pass your own), the active entry and breadcrumbs (vue-router), the `<main>` landmark, the `h1` title and document scrolling |
326
+ | [App shell](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/guides/app-shell.md) | laying out an app with `ActivityLayout`, its `items` (rendered as links; `link-component` to pass your own), the brand (`logo`, `name`), the header's title and `AccountMenu`, the active entry and breadcrumbs (vue-router), the `<main>` landmark, the `h1` title and document scrolling |
327
327
  | [Theming](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/guides/theming.md) | changing colours, radius or fonts, dark mode, using the compiled CSS without Tailwind |
328
328
  | [Printing](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/guides/printing.md) | printable documents built from the `Print*` components |
329
329
  | [PDF documents](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/guides/pdf.md) | PDF files from data with `@nxgt/material-vue/pdf`: builders, `usePdf`, `PdfDownloadButton`, a Nitro route with `pdfResponse`, fonts on an inlined server |
@@ -509,6 +509,7 @@ React-only for now: `StepperIndicator` ([roadmap](https://cdn.jsdelivr.net/npm/@
509
509
  | Preview | Component | What it does | @nxgt/material |
510
510
  | --- | --- | --- | --- |
511
511
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/navigation-layout-appshell.webp" width="120" alt="ActivityLayout"> | [`ActivityLayout`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/navigation-and-layout.md#activitylayout), `ActivityContent`, `AppSidebar`, `AppHeader`, `AppBreadcrumb` | App shell: sidebar built from `items`, a header with a mobile sheet, route breadcrumbs and a titled page; entries are real links, and `link-component` swaps the link. See the [app shell guide](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/guides/app-shell.md). | `ActivityLayout`, `ActivityContent`, `AppSidebar`, `AppHeader`, `AppBreadcrumb` |
512
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/navigation-layout-accountmenu.webp" width="120" alt="AccountMenu"> | [`AccountMenu`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/navigation-and-layout.md#accountmenu) | The app bar's avatar menu: named after the account, the name and e-mail, the app's links, then a destructive Sign out with a busy state. | `AccountMenu` |
512
513
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/navigation-layout-authcard.webp" width="120" alt="AuthCard"> | [`AuthCard`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/navigation-and-layout.md#authcard) | The frame of a signed-out page: one `main`, a centred card whose title is the `h1` (focusable on an end state), a status or alert notice, a brand and toolbar row, safe-area padding. | `AuthCard` |
513
514
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/navigation-layout-sidebar.webp" width="120" alt="Sidebar"> | [`Sidebar`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/navigation-and-layout.md#sidebar), `SidebarHeader`, `SidebarContent`, `SidebarFooter`, `SidebarMenuItem`, `SidebarMenuLabel` | Collapsible navigation sidebar with icons, tooltips and active items. | `Sidebar` (same parts) |
514
515
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/navigation-layout-topappbar.webp" width="120" alt="TopAppBar"> | [`TopAppBar`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/navigation-and-layout.md#topappbar), `BottomAppBar` | Top bar surface, and a bottom bar of icon actions with an active state. | `TopAppBar`, `BottomAppBar` |
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./utils-CykWQ0iJ.js";
2
- import { t } from "./use-material-translation-Du3Wvsk1.js";
2
+ import { t } from "./use-material-translation-COoBTGpB.js";
3
3
  import { Comment as n, Fragment as r, Text as i, computed as a, createBlock as o, createElementBlock as s, createElementVNode as c, createTextVNode as l, createVNode as u, defineComponent as d, guardReactiveProps as f, h as p, inject as ee, isVNode as m, mergeProps as h, normalizeClass as g, normalizeProps as _, onBeforeUnmount as v, openBlock as y, provide as te, ref as b, renderSlot as x, shallowRef as S, unref as C, useAttrs as ne, useSlots as w, watch as T, withCtx as E } from "vue";
4
4
  import { Primitive as re, TooltipArrow as D, TooltipContent as O, TooltipPortal as k, TooltipProvider as A, TooltipRoot as j, TooltipTrigger as M, useForwardPropsEmits as N } from "reka-ui";
5
5
  import { cva as P } from "class-variance-authority";
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./utils-CykWQ0iJ.js";
2
- import { t } from "./use-material-translation-Du3Wvsk1.js";
3
- import { t as n } from "./Button-BG3oDkrl.js";
2
+ import { t } from "./use-material-translation-COoBTGpB.js";
3
+ import { t as n } from "./Button-CWmzvv9p.js";
4
4
  import { r, t as i } from "./in-dialog-Blhwwbyb.js";
5
5
  import { t as a } from "./field-name-attribute-Bl7LSVK0.js";
6
6
  import { computed as o, createBlock as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, getCurrentInstance as m, guardReactiveProps as h, isRef as g, mergeProps as _, normalizeClass as v, normalizeProps as y, onMounted as ee, onUpdated as b, openBlock as x, renderSlot as S, toDisplayString as C, unref as w, useAttrs as T, useId as E, useTemplateRef as D, vModelText as O, withCtx as k, withDirectives as A } from "vue";
@@ -1,8 +1,8 @@
1
1
  import { t as e } from "./utils-CykWQ0iJ.js";
2
- import { _r as t, hr as n, mr as r } from "./components-C1JYYoQ4.js";
3
- import { t as i } from "./use-material-translation-Du3Wvsk1.js";
4
- import { t as a } from "./Button-BG3oDkrl.js";
5
- import { t as o } from "./icon-button-DXrmfs6e.js";
2
+ import { _r as t, hr as n, mr as r } from "./components-DX4EycMi.js";
3
+ import { t as i } from "./use-material-translation-COoBTGpB.js";
4
+ import { t as a } from "./Button-CWmzvv9p.js";
5
+ import { t as o } from "./icon-button-DErh1aJS.js";
6
6
  import { createBlock as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, normalizeClass as m, openBlock as h, ref as g, renderSlot as _, shallowRef as v, toDisplayString as y, unref as b, withCtx as x } from "vue";
7
7
  import { Pause as S, Play as C } from "@lucide/vue";
8
8
  //#region lib/components/ui/media/camera/camera-content.vue?vue&type=script&setup=true&lang.ts