@nxgt/material-vue 0.23.4 → 0.24.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 (96) hide show
  1. package/README.md +22 -18
  2. package/dist/{Button-CVIR6uLK.js → Button-DOcT4Pej.js} +95 -72
  3. package/dist/{HoverCardTrigger-iAL5ALrL.js → HoverCardTrigger-WQe85PCH.js} +2 -2
  4. package/dist/{camera-Gvg5N956.js → camera-BNbLUPb1.js} +13 -13
  5. package/dist/{components-AScwCcds.js → components-YlYuHLEI.js} +10856 -10379
  6. package/dist/components.js +8 -8
  7. package/dist/composables.js +2 -2
  8. package/dist/dnd.js +1 -1
  9. package/dist/{i18n-provider-BqWxpaKu.js → i18n-provider-DTuxugHO.js} +1 -1
  10. package/dist/i18n.js +4 -4
  11. package/dist/{icon-button-DbEME76t.js → icon-button-DKLuZ2c-.js} +34 -37
  12. package/dist/lib/components/ui/actions/button/has-text-content.d.ts +10 -0
  13. package/dist/lib/components/ui/actions/copy-button/copy-value.vue.d.ts +21 -0
  14. package/dist/lib/components/ui/actions/copy-button/index.d.ts +2 -0
  15. package/dist/lib/components/ui/collections/data-table/data-table-context.d.ts +6 -0
  16. package/dist/lib/components/ui/collections/data-table/data-table-pagination.vue.d.ts +2 -0
  17. package/dist/lib/components/ui/collections/data-table/data-table.vue.d.ts +17 -27
  18. package/dist/lib/components/ui/collections/data-table/index.d.ts +1 -1
  19. package/dist/lib/components/ui/collections/data-table/partials/data-table-body.vue.d.ts +10 -1
  20. package/dist/lib/components/ui/collections/data-table/partials/data-table-empty.vue.d.ts +13 -1
  21. package/dist/lib/components/ui/collections/data-table/partials/data-table-head.vue.d.ts +22 -0
  22. package/dist/lib/components/ui/collections/data-table/partials/data-table-skeleton-rows.vue.d.ts +10 -0
  23. package/dist/lib/components/ui/collections/data-table/use-data-table.d.ts +17 -0
  24. package/dist/lib/components/ui/collections/filter/partials/filter-field-slider-range.vue.d.ts +1 -4
  25. package/dist/lib/components/ui/collections/pagination/index.d.ts +5 -0
  26. package/dist/lib/components/ui/collections/pagination/pagination-bar.vue.d.ts +21 -0
  27. package/dist/lib/components/ui/collections/pagination/pagination-items.d.ts +2 -0
  28. package/dist/lib/components/ui/collections/pagination/pagination-link.vue.d.ts +18 -0
  29. package/dist/lib/components/ui/display/markdown/index.d.ts +18 -0
  30. package/dist/lib/components/ui/feedback/skeleton/skeleton-text.vue.d.ts +1 -1
  31. package/dist/lib/components/ui/feedback/spinner/spinner.compound-variants.d.ts +4 -0
  32. package/dist/lib/components/ui/fields/contacts/consts.d.ts +1 -1
  33. package/dist/lib/components/ui/fields/inline-edit/index.d.ts +1 -0
  34. package/dist/lib/components/ui/fields/inline-edit/inline-edit-form-field.vue.d.ts +7 -0
  35. package/dist/lib/components/ui/layout/doc/doc.vue.d.ts +5 -5
  36. package/dist/lib/components/ui/layout/doc/index.d.ts +8 -1
  37. package/dist/lib/components/ui/layout/doc/partials/default-doc-link.vue.d.ts +14 -0
  38. package/dist/lib/components/ui/layout/doc/partials/doc-copy-page.vue.d.ts +6 -0
  39. package/dist/lib/components/ui/layout/doc/partials/doc-link.vue.d.ts +3 -7
  40. package/dist/lib/components/ui/layout/doc/types.d.ts +6 -1
  41. package/dist/lib/components/ui/media/pdf-viewer/index.d.ts +6 -6
  42. package/dist/lib/components/ui/media/pdf-viewer/pdf-reader.vue.d.ts +2 -2
  43. package/dist/lib/components/ui/primitives/icon/icon-context.d.ts +1 -1
  44. package/dist/lib/components/ui/selection/checkbox/Checkbox.vue.d.ts +21 -5
  45. package/dist/lib/components/ui/selection/checkbox/checkbox-form-field.vue.d.ts +17 -0
  46. package/dist/lib/components/ui/selection/checkbox/index.d.ts +2 -0
  47. package/dist/lib/components/ui/widgets/charts/chart-container.vue.d.ts +1 -1
  48. package/dist/lib/components/ui/widgets/code-editor/code-editor-form-field.vue.d.ts +13 -0
  49. package/dist/lib/components/ui/widgets/code-editor/index.d.ts +1 -0
  50. package/dist/lib/i18n/resources/en/en.d.ts +7 -0
  51. package/dist/lib/i18n/resources/en/material.json.d.ts +8 -1
  52. package/dist/lib/i18n/resources/fr/fr.d.ts +7 -0
  53. package/dist/lib/i18n/resources/fr/material.json.d.ts +8 -1
  54. package/dist/lib/i18n/resources/resources.d.ts +14 -0
  55. package/dist/lib/i18n/translator.d.ts +1 -1
  56. package/dist/lib/nuxt/component-names.d.ts +1 -1
  57. package/dist/lib.js +2 -2
  58. package/dist/main.js +17 -17
  59. package/dist/map.js +4 -4
  60. package/dist/material-vue.css +1 -1
  61. package/dist/{pdf-outline-sidebar-oz9wdBhB.js → pdf-outline-sidebar-0I-LGrgY.js} +2 -2
  62. package/dist/{pdf-page-0rlq1Lo6.js → pdf-page-C74-6lyZ.js} +1 -1
  63. package/dist/{pdf-page-list-DfhjNHoI.js → pdf-page-list-DPsquYPY.js} +2 -2
  64. package/dist/{pdf-reader-Dr8RVcs4.js → pdf-reader-Bkpp7UZ7.js} +8 -8
  65. package/dist/{pdf-sidebar-VXPQbC_R.js → pdf-sidebar-BH-1jvy-.js} +3 -3
  66. package/dist/{pdf-thumbnail-sidebar-BpgXrVBj.js → pdf-thumbnail-sidebar-ByqNaYfz.js} +3 -3
  67. package/dist/{pdf-toolbar-B6gRRcsv.js → pdf-toolbar-BRnmzddi.js} +4 -4
  68. package/dist/pdf.js +2 -2
  69. package/dist/{sortable-provider-oEVjQiCl.js → sortable-provider-CC9eO1nm.js} +2 -2
  70. package/dist/{stored-language-rjOMJkyX.js → stored-language-N_UoPJsY.js} +20 -2
  71. package/dist/{stx-player-DNADkQ31.js → stx-player-BGKIDqNX.js} +22 -22
  72. package/dist/{translator-BCSJSO1-.js → translator-CU0jKvzB.js} +1 -1
  73. package/dist/{use-heading-spy-d50_nxgR.js → use-heading-spy-Bw1LIAkC.js} +1 -1
  74. package/dist/{use-material-translation-C5zPFhbk.js → use-material-translation-8hUB2M-S.js} +3 -3
  75. package/docs/components/buttons-and-actions.md +19 -3
  76. package/docs/components/data-display.md +14 -1
  77. package/docs/components/data-table-filter-and-lists.md +90 -8
  78. package/docs/components/feedback-and-status.md +1 -1
  79. package/docs/components/form-fields.md +7 -5
  80. package/docs/components/media-and-files.md +1 -1
  81. package/docs/components/navigation-and-layout.md +67 -7
  82. package/docs/components/primitives.md +4 -2
  83. package/docs/components/rich-widgets.md +4 -3
  84. package/docs/components/selection-and-choice.md +16 -13
  85. package/docs/guides/forms.md +14 -5
  86. package/docs/guides/i18n.md +6 -2
  87. package/docs/guides/ssr.md +2 -0
  88. package/docs/previews/buttons-actions-copybutton.webp +0 -0
  89. package/docs/previews/data-table-filter-lists-pagination.webp +0 -0
  90. package/docs/previews/form-fields-slider.webp +0 -0
  91. package/docs/previews/navigation-layout-stepper.webp +0 -0
  92. package/docs/previews/selection-choice-checkbox.webp +0 -0
  93. package/docs/roadmap.md +41 -1
  94. package/docs/troubleshooting.md +104 -0
  95. package/lib/nuxt/component-names.ts +12 -0
  96. package/package.json +1 -1
package/README.md CHANGED
@@ -334,9 +334,13 @@ example and the options that matter. In the *Component* column, `·` separates
334
334
  a field from its vee-validate wrapper, and "+ parts" means the family exports
335
335
  more sub-components. The last column gives the matching export in
336
336
  [`@nxgt/material`](https://www.npmjs.com/package/@nxgt/material), or `—`
337
- when React has none. `Combobox` and `FilesFormField` are React entries with
338
- no Vue counterpart; they keep a row, and their page says what to use
339
- instead.
337
+ when React has none. `Combobox` (not planned) and `FilesFormField` are React
338
+ entries with no Vue counterpart; they keep a row, and their page says what to
339
+ use instead. Also React-only for now: `StepperIndicator`, and some options —
340
+ a generic `Autocomplete`, `ConfirmationDialog`'s `formOptions`, the date
341
+ fields' `disabledDays`, `SliderField` ticks and leading/trailing content, `Avatar` status, a QR logo,
342
+ `AccordionCard` slots, a `SelectField` option slot, `CodeEditor` options and
343
+ the `Tabs` line variant ([roadmap](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/roadmap.md)).
340
344
 
341
345
  ### Primitives
342
346
 
@@ -356,7 +360,7 @@ instead.
356
360
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/primitives-icon.webp" width="120" alt="Icon"> | [`Icon`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/primitives.md#icon) | Font Awesome sprite icon by name and style (duotone by default), labelled with `role="img"`. | `Icon` |
357
361
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/primitives-kbd.webp" width="120" alt="Kbd"> | [`Kbd`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/primitives.md#kbd), `KbdShortcut` | One keyboard key, or a key combination with platform glyphs. | `Kbd`, `KbdShortcut` |
358
362
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/primitives-separator.webp" width="120" alt="Separator"> | [`Separator`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/primitives.md#separator) | Horizontal or vertical divider. | `Separator` |
359
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/primitives-table.webp" width="120" alt="Table"> | [`Table`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/primitives.md#table), `TableHeader`, `TableBody`, `TableRow`, `TableHead`, `TableCell`, `TableEmpty` + parts | Styled semantic table inside a scrollable wrapper. | `Table` (same parts; no `TableEmpty`) |
363
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/primitives-table.webp" width="120" alt="Table"> | [`Table`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/primitives.md#table), `TableHeader`, `TableBody`, `TableRow`, `TableHead`, `TableCell`, `TableEmpty` + parts | Styled semantic table inside a scrollable wrapper. | `Table` (same parts) |
360
364
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/primitives-tabs.webp" width="120" alt="Tabs"> | [`Tabs`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/primitives.md#tabs), `TabsList`, `TabsTrigger`, `TabsContent`, `Tabs` | Tabs whose triggers can take an icon. | `Tabs` (same parts) |
361
365
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/primitives-toggle.webp" width="120" alt="Toggle"> | [`Toggle`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/primitives.md#toggle), `ToggleGroup`, `ToggleGroupItem` | Pressable on / off button: default or outline, three sizes. | `Toggle` |
362
366
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/primitives-togglegroup.webp" width="120" alt="ToggleGroup"> | [`Toggle`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/primitives.md#togglegroup), `ToggleGroup`, `ToggleGroupItem` | Single or multiple toggle group sharing variant and size. | `ToggleGroup`, `ToggleGroupItem`, `ToggleGroupSeparator` |
@@ -373,7 +377,7 @@ instead.
373
377
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/buttons-actions-splitbutton.webp" width="120" alt="SplitButton"> | [`SplitButton`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/buttons-and-actions.md#splitbutton) | Main action plus a dropdown menu of secondary actions. | `SplitButton` |
374
378
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/buttons-actions-responsivebutton.webp" width="120" alt="ResponsiveButton"> | [`ResponsiveButton`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/buttons-and-actions.md#responsivebutton) | Shows its label on desktop and collapses to icon-only on mobile. | `ResponsiveButton` |
375
379
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/buttons-actions-linkbutton.webp" width="120" alt="LinkButton"> | [`LinkButton`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/buttons-and-actions.md#linkbutton), `IconLinkButton`, `ResponsiveLinkButton` | The button styles rendered as `vue-router` links. | `LinkButton`, `IconLinkButton`, `ResponsiveLinkButton` |
376
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/buttons-actions-copybutton.webp" width="120" alt="CopyButton"> | [`CopyButton`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/buttons-and-actions.md#copybutton) | Copies a value to the clipboard and briefly shows a check mark. | `CopyButton`, `CopyValue` |
380
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/buttons-actions-copybutton.webp" width="120" alt="CopyButton"> | [`CopyButton`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/buttons-and-actions.md#copybutton), `CopyValue` | Copies a value to the clipboard and briefly shows a check mark. `CopyValue` displays the value next to the button. | `CopyButton`, `CopyValue` |
377
381
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/buttons-actions-highlighttext.webp" width="120" alt="HighlightText"> | [`HighlightText`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/buttons-and-actions.md#highlighttext) | Marks case-insensitive matches of a query inside a string (`splitMatch`). | `HighlightText` |
378
382
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/buttons-actions-loadmorebutton.webp" width="120" alt="LoadMoreButton"> | [`LoadMoreButton`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/buttons-and-actions.md#loadmorebutton) | "Load more" button for cursor pagination; icon-only with a tooltip unless `expanded`. | `LoadMoreButton` |
379
383
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/buttons-actions-scrolltotop.webp" width="120" alt="ScrollToTop"> | [`ScrollToTop`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/buttons-and-actions.md#scrolltotop) | Floating button that appears past a scroll threshold. | `ScrollToTop` |
@@ -397,14 +401,14 @@ instead.
397
401
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-urlfield.webp" width="120" alt="UrlField"> | [`UrlField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#urlfield) · `UrlFormField` | Validates on blur; open-in-new-tab and copy buttons. | `UrlField`, `UrlFormField` |
398
402
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-searchfield.webp" width="120" alt="SearchField"> | [`SearchField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#searchfield) · `SearchFormField` | Search icon, clear button and spinner, with a debounced `value-change` event. | `SearchField`, `SearchFormField` |
399
403
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-colorfield.webp" width="120" alt="ColorField"> | [`ColorField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#colorfield) · `ColorFormField` | Hex input with a colour picker in a popover. | `ColorField`, `ColorFormField` |
400
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-otpfield.webp" width="120" alt="OtpField"> | [`OtpField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#otpfield) · `OtpFormField`, `InputOTP`, `InputOTPGroup`, `InputOTPSlot`, `InputOTPSeparator` | One-time code input of configurable length. | `OtpField`, `OtpFormField` |
404
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-otpfield.webp" width="120" alt="OtpField"> | [`OtpField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#otpfield) · `OtpFormField`, `InputOTP`, `InputOTPGroup`, `InputOTPSlot`, `InputOTPSeparator` | One-time code input of configurable length. | `OtpField`, `OtpFormField`, `InputOTP` (same parts) |
401
405
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-inputgroupfield.webp" width="120" alt="InputGroupField"> | [`InputGroupField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#inputgroupfield) · `InputGroupFormField` | Labelled `InputGroup` with addons and helper text. | `InputGroupField`, `InputGroupFormField` |
402
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-inlineedit.webp" width="120" alt="InlineEdit"> | [`InlineEdit`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#inlineedit) | Click-to-edit text with save and cancel. | `InlineEdit`, `InlineEditFormField` |
406
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-inlineedit.webp" width="120" alt="InlineEdit"> | [`InlineEdit`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#inlineedit) · `InlineEditFormField` | Click-to-edit text with save and cancel. | `InlineEdit`, `InlineEditFormField` |
403
407
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-countryfield.webp" width="120" alt="CountryField"> | [`CountryField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#countryfield) · `CountryFormField` | Single or multiple country picker with flags. | `CountryField`, `CountryFormField` |
404
408
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-timezonefield.webp" width="120" alt="TimezoneField"> | [`TimezoneField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#timezonefield) · `TimezoneFormField` | Searchable IANA timezone picker with localised labels. | `TimezoneField`, `TimezoneFormField` |
405
409
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-ratingfield.webp" width="120" alt="RatingField"> | [`RatingField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#ratingfield) · `RatingFormField` | Star rating with hover preview, click-to-clear and a read-only mode. | `RatingField`, `RatingFormField` |
406
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-slider.webp" width="120" alt="Slider"> | [`SliderField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#slider) · `SliderFormField`, `Slider` | Labelled single or range slider with a value readout. | `Slider`, `SliderFormField` |
407
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-switch.webp" width="120" alt="Switch"> | [`SwitchField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#switch) · `SwitchFormField`, `Switch` | Toggle switch, optionally in a labelled, bordered row. | `Switch`, `SwitchFormField` |
410
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-slider.webp" width="120" alt="Slider"> | [`SliderField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#slider) · `SliderFormField`, `Slider` | Labelled single or range slider with a value readout. | `Slider`, `SliderField` (alias), `SliderFormField` |
411
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-switch.webp" width="120" alt="Switch"> | [`SwitchField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#switch) · `SwitchFormField`, `Switch` | Toggle switch, optionally in a labelled, bordered row. | `Switch`, `SwitchField` (alias), `SwitchFormField` |
408
412
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-attributes.webp" width="120" alt="Attributes"> | [`AttributesField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#attributes), `AttributesList`, `AttributeDialog`, `AttributeForm` · `AttributesFormField`, `AttributeValuesForm`, `AttributeValueFormField` · `AttributeValuesFormFieldSet` | Editor for typed custom attributes (string, number, date, select, rich text…). `AttributesField` takes `error` and `helperText`; `AttributesFormField` takes `helperText` and follows `resetForm` / `setFieldValue`. | `AttributesField`, `AttributesList`, `AttributeDialog`, `AttributeForm`, `AttributeValuesForm`, `AttributesFormField`, `AttributeValuesFormFieldSet`, `AttributeValueFormField` |
409
413
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-contacts.webp" width="120" alt="Contacts"> | [`Contacts`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#contacts), `ContactDialog`, `ContactItem` (deprecated) · `ContactsFormField` | Typed contact list (phone, email, URL…) with an add / edit dialog. | `Contacts`, `ContactItem`, `ContactDialog`, `ContactsFormField` |
410
414
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-postaladdress.webp" width="120" alt="PostalAddress"> | [`PostalAddress`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#postaladdress), `PostalAddressDialog` · `PostalAddressFormField` | Address card with an edit dialog. | `PostalAddress`, `PostalAddressDialog`, `PostalAddressFormField` |
@@ -425,14 +429,14 @@ instead.
425
429
 
426
430
  | Preview | Component | What it does | @nxgt/material |
427
431
  | --- | --- | --- | --- |
428
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/selection-choice-select.webp" width="120" alt="Select"> | [`Select`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#select), `SelectTrigger`, `SelectValue`, `SelectContent`, `SelectItem` + parts, `NativeSelect`, `NativeSelectOption`, `NativeSelectOptGroup` | Select primitives with groups, labels and scroll buttons, plus a styled native `<select>`. | `Select` (same parts) |
432
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/selection-choice-select.webp" width="120" alt="Select"> | [`Select`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#select), `SelectTrigger`, `SelectValue`, `SelectContent`, `SelectItem` + parts, `NativeSelect`, `NativeSelectOption`, `NativeSelectOptGroup` | Select primitives with groups, labels and scroll buttons, plus a styled native `<select>`. | `Select` (same parts), `NativeSelect` (same parts) |
429
433
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/selection-choice-selectfield.webp" width="120" alt="SelectField"> | [`SelectField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#selectfield) · `SelectFormField` | Labelled select built from `options`. | `SelectField`, `SelectFormField` |
430
434
  | — | [Combobox](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#combobox) | The raw combobox primitives are not in `@nxgt/material-vue`. Use [`ComboboxField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#comboboxfield) for a searchable single select, [`Autocomplete`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#autocomplete) for several values or free text, or the `Command` parts (Overlays & menus) for a hand-built list. | `Combobox` |
431
435
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/selection-choice-comboboxfield.webp" width="120" alt="ComboboxField"> | [`ComboboxField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#comboboxfield) · `ComboboxFormField` | Labelled, searchable single select over `{ value, label }` options, in a popover. | `ComboboxField`, `ComboboxFormField` |
432
436
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/selection-choice-autocomplete.webp" width="120" alt="Autocomplete"> | [`Autocomplete`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#autocomplete) · `AutocompleteFormField` | Single or multiple (chips) autocomplete with free-solo values and a query event. | `Autocomplete`, `AutocompleteFormField` |
433
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/selection-choice-checkbox.webp" width="120" alt="Checkbox"> | [`Checkbox`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#checkbox) | Reka UI checkbox with an indeterminate state; pair it with a `Label`. | `Checkbox`, `CheckboxFormField` |
437
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/selection-choice-checkbox.webp" width="120" alt="Checkbox"> | [`Checkbox`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#checkbox) · `CheckboxFormField` | Checkbox with label, helper text and an indeterminate state; without a label, the bare Reka UI box. | `Checkbox`, `CheckboxFormField` |
434
438
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/selection-choice-checkboxgroup.webp" width="120" alt="CheckboxGroup"> | [`CheckboxGroup`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#checkboxgroup) · `CheckboxGroupFormField` | Checkbox list built from `options`, valued as `string[]`. | `CheckboxGroup`, `CheckboxGroupFormField` |
435
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/selection-choice-radiogroup.webp" width="120" alt="RadioGroup"> | [`RadioGroupField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#radiogroup) · `RadioGroupFormField`, `RadioGroup`, `RadioGroupItem` | Labelled radio group built from `options`, horizontal or vertical. | `RadioGroup`, `RadioGroupItem`, `RadioGroupFormField` |
439
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/selection-choice-radiogroup.webp" width="120" alt="RadioGroup"> | [`RadioGroupField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#radiogroup) · `RadioGroupFormField`, `RadioGroup`, `RadioGroupItem` | Labelled radio group built from `options`, horizontal or vertical. | `RadioGroupField` (alias), `RadioGroup`, `RadioGroupItem`, `RadioGroupFormField` |
436
440
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/selection-choice-checkcardfield.webp" width="120" alt="CheckCardField"> | [`CheckCardField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#checkcardfield) · `CheckCardFormField` | A yes / no choice shown as two selectable cards. | `CheckCardField`, `CheckCardFormField` |
437
441
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/selection-choice-selectcardfield.webp" width="120" alt="SelectCardField"> | [`SelectCardField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#selectcardfield) · `SelectCardFormField` | Single or multiple choice shown as selectable cards. | `SelectCardField`, `SelectCardFormField` |
438
442
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/selection-choice-selectchipfield.webp" width="120" alt="SelectChipField"> | [`SelectChipField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/selection-and-choice.md#selectchipfield) · `SelectChipFormField` | Single or multiple choice shown as toggleable chips. | `SelectChipField`, `SelectChipFormField` |
@@ -461,7 +465,7 @@ instead.
461
465
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-display-timeline.webp" width="120" alt="Timeline"> | [`Timeline`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-display.md#timeline), `TimelineItem`, `RelativeTime` | Vertical event timeline with toned markers and relative times. | `Timeline`, `TimelineItem`, `RelativeTime` |
462
466
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-display-eventchip.webp" width="120" alt="EventChip"> | [`EventChip`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-display.md#eventchip) | Calendar event pill with time, all-day and continuation edges. | `EventChip` |
463
467
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-display-codeblock.webp" width="120" alt="CodeBlock"> | [`CodeBlock`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-display.md#codeblock), `CodeDiff`, `JsonViewer`, `CodeGroup` | Highlighted code with line numbers and copy, a Monaco diff, a collapsible JSON tree, and tabbed samples (`Tabs variant="line"`). | `CodeBlock`, `CodeDiff`, `JsonViewer`, `CodeGroup` |
464
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-display-markdown.webp" width="120" alt="Markdown"> | [`Markdown`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-display.md#markdown) | Markdown with KaTeX math and mermaid diagrams (client-only). Fences reuse `CodeBlock`. `ChatMarkdown` renders through it. | `Markdown` |
468
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-display-markdown.webp" width="120" alt="Markdown"> | [`Markdown`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-display.md#markdown), `MermaidDiagram` | Markdown with KaTeX math and mermaid diagrams (client-only). Fences reuse `CodeBlock`. `ChatMarkdown` renders through it. | `Markdown`, `MermaidDiagram` |
465
469
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-display-terminal.webp" width="120" alt="Terminal"> | [`Terminal`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-display.md#terminal) | Display-only log with prompt, copy, and error/input tones. Container queries. | `Terminal` |
466
470
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-display-figure.webp" width="120" alt="Figure"> | [`Figure`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-display.md#figure) | Framed media with an optional caption. | `Figure` |
467
471
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-display-apioperation.webp" width="120" alt="ApiEndpoint"> | [`ApiEndpoint`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-display.md#apiendpoint), `ApiOperation` | HTTP method badge, path and copy; `ApiOperation` adds a param table and example `CodeGroup`. | `ApiEndpoint`, `ApiOperation` |
@@ -473,10 +477,10 @@ instead.
473
477
 
474
478
  | Preview | Component | What it does | @nxgt/material |
475
479
  | --- | --- | --- | --- |
476
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-table-filter-lists-datatable.webp" width="120" alt="DataTable"> | [`DataTable`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#datatable), `DataTableColumnHeader`, `DataTablePagination`, `DataTableViewOptions` | TanStack Table v9 with sorting, filtering, selection, expandable rows, pagination or load-more, and column visibility. | `DataTable`, `DataTableColumnHeader`, `DataTablePagination`, `DataTableViewOptions` |
480
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-table-filter-lists-datatable.webp" width="120" alt="DataTable"> | [`DataTable`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#datatable), `DataTableColumnHeader`, `DataTablePagination`, `DataTableViewOptions` | TanStack Table v9 with sorting, filtering, selection, expandable rows, pagination or load-more, column visibility, skeleton rows while loading and your own empty state. | `DataTable`, `DataTableColumnHeader`, `DataTablePagination`, `DataTableViewOptions` |
477
481
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-table-filter-lists-filter.webp" width="120" alt="Filter"> | [`Filter`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#filter) · `FilterFormField`, `FilterProvider`, `FilterTrigger`, `FilterChips`, `FilterContent`, `FilterGroups`, `FilterGroup`, `FilterField`, `FilterActions`, `FilterPresets` | Schema-driven filters with chips, presets, validation, and URL or storage persistence. | `Filter`, `FilterProvider`, `FilterContent`, `FilterChips`, `FilterPresets`, `FilterFormField` |
478
482
  | — | [`FilterInline`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#filterinline-filterpopover-filterdialog-filtersheet-filterdrawer), `FilterDialog`, `FilterSheet`, `FilterDrawer`, `FilterPopover` | The filter panel shown inline, or in a popover, dialog, sheet or drawer. | `FilterInline`, `FilterPopover`, `FilterDialog`, `FilterSheet`, `FilterDrawer` |
479
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-table-filter-lists-pagination.webp" width="120" alt="Pagination"> | [`Pagination`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#pagination), `PaginationContent`, `PaginationItem`, `PaginationFirst`, `PaginationLast` + parts | Pagination primitives on Reka UI's `Pagination`, with first / last buttons and ellipses. | `Pagination` (parts), `PaginationBar` |
483
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-table-filter-lists-pagination.webp" width="120" alt="Pagination"> | [`Pagination`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#pagination), `PaginationContent`, `PaginationItem`, `PaginationFirst`, `PaginationLast`, `PaginationLink`, `PaginationBar`, `paginationItems` + parts | Pagination primitives on Reka UI's `Pagination`, with first / last buttons and ellipses. `PaginationBar` adds a sibling window with ellipses. | `Pagination` (parts), `PaginationFirst`, `PaginationLast`, `PaginationLink`, `PaginationBar`, `paginationItems` |
480
484
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-table-filter-lists-tree.webp" width="120" alt="Tree"> | [`Tree`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#tree), `TreeItem` | Expandable tree with none, single or multiple selection and keyboard navigation. | `Tree`, `TreeItem`, `useTree` |
481
485
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/data-table-filter-lists-drag-and-drop.webp" width="120" alt="Drag and drop"> | [`DndProvider`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/data-table-filter-and-lists.md#drag-and-drop), `Draggable`, `Droppable`, `DraggableDroppable`, `SortableProvider`, `Sortable`, `DragHandle`, `DndOverlay` | Drag-and-drop primitives; see [dnd](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/guides/helpers.md#nxgtmaterial-vuednd). | `DndProvider`, `Draggable`, `Droppable`, `Sortable`, `DragHandle` |
482
486
 
@@ -498,7 +502,7 @@ instead.
498
502
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/navigation-layout-stepper.webp" width="120" alt="Stepper"> | [`Stepper`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/navigation-and-layout.md#stepper) | Clickable horizontal or vertical steps with status and progress; compact on mobile. | `Stepper` |
499
503
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/navigation-layout-steps.webp" width="120" alt="Steps"> | [`Steps`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/navigation-and-layout.md#steps), `StepsItem` | Numbered editorial steps that stay visible on every breakpoint. | `Steps`, `StepsItem` |
500
504
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/navigation-layout-hero.webp" width="120" alt="Hero"> | [`Hero`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/navigation-and-layout.md#hero) | Landing band with eyebrow, title, supporting copy and actions. | `Hero` |
501
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/navigation-layout-doc.webp" width="120" alt="Doc"> | [`Doc`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/navigation-and-layout.md#doc), `DocPage`, `DocTopbar`, `DocSidebar`, `DocToc`, `DocPager`, `DocSearch`, `DocChildCards`, `DocSeeAlso`, `DocEmpty`, `DocProgress`, `DocHeader`, `DocCopyMarkdown` | Documentation site shell: sidebar from `md`, TOC rail from `xl`. Reading bar, copy-as-markdown, child cards, see also, and a 404 slot. Storybook `Navigation & layout/Doc/Api` composes an API page from `DocPage`, `AnchorHeading`, `ApiOperation`, `ParamTable` and `CodeGroup`. | `Doc`, `DocPage`, `DocTopbar`, `DocSidebar`, `DocToc`, `DocPager`, `DocSearch`, `DocChildCards`, `DocSeeAlso`, `DocEmpty`, `DocProgress` |
505
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/navigation-layout-doc.webp" width="120" alt="Doc"> | [`Doc`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/navigation-and-layout.md#doc), `DocPage`, `DocTopbar`, `DocSidebar`, `DocNav`, `DocArticle`, `DocToc`, `DocPager`, `DocSearch`, `DocChildCards`, `DocSeeAlso`, `DocEmpty`, `DocProgress`, `DocHeader`, `DocLink`, `DefaultDocLink`, `DocCopyPage`, `DocCopyMarkdown` | Documentation site shell: sidebar from `md`, TOC rail from `xl`. Reading bar, copy-page / markdown, child cards, see also, and a 404 slot. Storybook `Navigation & layout/Doc/Api` composes an API page from `DocPage`, `AnchorHeading`, `ApiOperation`, `ParamTable` and `CodeGroup`. | `Doc` (same parts) |
502
506
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/navigation-layout-background.webp" width="120" alt="Background"> | [`Background`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/navigation-and-layout.md#background) | Full-viewport gradient with blurred colour blobs; centres its content. | `Background` |
503
507
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/navigation-layout-navigationrail.webp" width="120" alt="NavigationRail"> | [`NavigationRail`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/navigation-and-layout.md#navigationrail) | Narrow vertical rail for icon buttons. | `NavigationRail` (placeholder) |
504
508
 
@@ -550,7 +554,7 @@ instead.
550
554
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/media-files-pdfreader.webp" width="120" alt="PdfReader"> | [`PdfReader`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/media-and-files.md#pdfreader), `PdfToolbar`, `PdfSidebar`, `PdfPageList`, `PdfThumbnailSidebar`, `PdfOutlineSidebar` | Client-only PDF reader with zoom, rotation, search, thumbnails, outline and print. | `PdfReader`, `PdfViewer` (same parts) |
551
555
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/media-files-stxplayer.webp" width="120" alt="StxPlayer"> | [`StxPlayer`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/media-and-files.md#stxplayer), `StxPlayerProvider`, `StxPlayerViewport`, `StxPlayerControls`, `StxPlayerQueue`, `StxPlayerMini`, `StxPlayerExtras` | Video / audio player with a queue, captions, playback rate, PiP, and full or mini layouts. | `StxPlayer` (same parts) |
552
556
  | — | [`VideoPlayer`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/media-and-files.md#videoplayer) (deprecated) | Deprecated alias of `StxPlayer`. | `VideoPlayer` |
553
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/media-files-camera.webp" width="120" alt="Camera"> | [`Camera`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/media-and-files.md#camera) | Webcam preview with device selection and a still capture. | — (a story only, not exported) |
557
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/media-files-camera.webp" width="120" alt="Camera"> | [`Camera`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/media-and-files.md#camera) | Webcam preview with device selection and a still capture. | `Camera`, `useCamera`, `capturePhotoFromVideo` |
554
558
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/media-files-print.webp" width="120" alt="Print components"> | [`PrintHeader`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/media-and-files.md#print-components), `PrintSection`, `PrintCard`, `PrintCardField`, `PrintInfoRow`, `PrintBadge`, `PrintTable`, `PrintTableHeader`, `PrintTableRow`, `PrintTableCell`, `PrintTotals`, `PrintTotalRow` | Inline-styled blocks for printable documents (invoice, receipt, report), with a shared `tw`. | `@nxgt/material/print` (same part names, rendered with `@react-pdf/renderer`) |
555
559
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/media-files-map.webp" width="120" alt="Map"> | [`Map`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/media-and-files.md#map), `Marker`, `LocationMarker`, `LocationPreview`, `MapActions`, `LocationField` · `LocationFormField` (from `@nxgt/material-vue/map`) | Leaflet map with markers, controls and a location field. It is not in the component barrel: it lives in `@nxgt/material-vue/map`, with `leaflet` and `@vue-leaflet/vue-leaflet` as **optional peer dependencies** (install them to use it), and its stylesheet is `@nxgt/material-vue/map.css`, which is not part of `styles.css`. The entry imports cleanly under SSR, but leaflet only initialises in a browser: in Nuxt wrap the map in `<ClientOnly>`. The Nuxt module does not auto-register these components — import them where you use them. The [maps guide](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/guides/maps.md) covers the peers, SSR and the defaults. | `Map`, `LocationField`, `LocationFormField` (`@nxgt/material/map`) |
556
560
 
@@ -565,7 +569,7 @@ instead.
565
569
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/rich-widgets-emojipicker.webp" width="120" alt="EmojiPicker"> | [`EmojiPicker`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/rich-widgets.md#emojipicker), `EmojiList` | Shared picker. `ChatComposer` takes `emojis`; `Markdown` expands `:shortcode:`; the RTE toolbar uses the same picker. | `EmojiPicker`, `EmojiList` |
566
570
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/rich-widgets-mentionlist.webp" width="120" alt="MentionList"> | [`MentionList`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/rich-widgets.md#mentionlist) | `@` mention list from an `items` prop (local search). ChatComposer and the RTE suggestion list use it. `filterMentions(items, query, limit?, { match: 'prefix' \| 'substring' })` filters the same way (default `'substring'`); the editor's `mentions.suggestions` takes `(string \| MentionItem)[]`. | `MentionList` |
567
571
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/rich-widgets-richtexteditor.webp" width="120" alt="RichTextEditor"> | [`RichTextEditor`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/rich-widgets.md#richtexteditor) · `RichTextEditorFormField` | Tiptap editor with toolbar, bubble menu, slash commands, mentions, tables, emoji and images. | `RichTextEditor`, `RichTextEditorFormField` |
568
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/rich-widgets-codeeditor.webp" width="120" alt="CodeEditor"> | [`CodeEditor`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/rich-widgets.md#codeeditor) | Monaco editor field with a label and a language switch. | `CodeEditor`, `CodeEditorFormField` |
572
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/rich-widgets-codeeditor.webp" width="120" alt="CodeEditor"> | [`CodeEditor`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/rich-widgets.md#codeeditor) · `CodeEditorFormField` | Monaco editor field with a label and a language switch. | `CodeEditor`, `CodeEditorFormField` |
569
573
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/rich-widgets-quiz.webp" width="120" alt="Quiz"> | [`Quiz`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/rich-widgets.md#quiz), `QuestionCard` | Quiz and question cards composed from Card, ActionCard, GaugeCard, ChecklistCard, Progress and TextField. Container queries. | `Quiz`, `QuestionCard` |
570
574
 
571
575
  ## Traps
@@ -1,12 +1,12 @@
1
1
  import { t as e } from "./utils-CykWQ0iJ.js";
2
- import { t } from "./use-material-translation-C5zPFhbk.js";
3
- import { computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, createVNode as c, defineComponent as l, guardReactiveProps as u, mergeProps as d, normalizeClass as f, normalizeProps as p, openBlock as m, renderSlot as h, shallowRef as g, toDisplayString as _, unref as v, useAttrs as y, withCtx as b } from "vue";
4
- import { Primitive as x, TooltipArrow as S, TooltipContent as C, TooltipPortal as w, TooltipProvider as T, TooltipRoot as E, TooltipTrigger as D, useForwardPropsEmits as O } from "reka-ui";
5
- import { cva as k } from "class-variance-authority";
6
- import { createSharedComposable as A, defaultDocument as j, reactiveOmit as M, useEventListener as N } from "@vueuse/core";
2
+ import { t } from "./use-material-translation-8hUB2M-S.js";
3
+ import { Comment as n, Text as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createTextVNode as l, createVNode as u, defineComponent as d, guardReactiveProps as f, inject as p, isVNode as m, mergeProps as h, normalizeClass as g, normalizeProps as _, openBlock as v, provide as y, renderSlot as b, shallowRef as x, toDisplayString as S, unref as C, useAttrs as w, useSlots as T, withCtx as E } from "vue";
4
+ import { Primitive as D, TooltipArrow as O, TooltipContent as k, TooltipPortal as A, TooltipProvider as j, TooltipRoot as M, TooltipTrigger as N, useForwardPropsEmits as P } from "reka-ui";
5
+ import { cva as F } from "class-variance-authority";
6
+ import { createSharedComposable as I, defaultDocument as L, reactiveOmit as R, useEventListener as z } from "@vueuse/core";
7
7
  //#endregion
8
8
  //#region lib/components/ui/feedback/spinner/spinner.variants.ts
9
- var P = k("transition-all duration-500", {
9
+ var B = F("transition-all duration-500", {
10
10
  variants: {
11
11
  variant: {
12
12
  1: "",
@@ -67,7 +67,7 @@ var P = k("transition-all duration-500", {
67
67
  },
68
68
  {
69
69
  variant: "1",
70
- color: "default",
70
+ color: "light",
71
71
  class: "border-white/10 border-t-white"
72
72
  },
73
73
  {
@@ -191,11 +191,11 @@ var P = k("transition-all duration-500", {
191
191
  class: "stroke-white"
192
192
  }
193
193
  ]
194
- }), F = [
194
+ }), V = [
195
195
  "data-variant",
196
196
  "data-color",
197
197
  "aria-label"
198
- ], I = ["data-variant", "data-color"], L = /* @__PURE__ */ l({
198
+ ], H = ["data-variant", "data-color"], U = /* @__PURE__ */ d({
199
199
  __name: "spinner",
200
200
  props: {
201
201
  variant: { default: "1" },
@@ -210,7 +210,7 @@ var P = k("transition-all duration-500", {
210
210
  },
211
211
  setup(n) {
212
212
  let r = n, { t: i } = t();
213
- return (t, s) => n.variant === "4" ? (m(), a("svg", {
213
+ return (t, a) => n.variant === "4" ? (v(), s("svg", {
214
214
  key: 0,
215
215
  viewBox: "0 0 800 800",
216
216
  "data-slot": "spinner",
@@ -218,10 +218,10 @@ var P = k("transition-all duration-500", {
218
218
  "data-color": n.color,
219
219
  xmlns: "http://www.w3.org/2000/svg",
220
220
  role: "img",
221
- "aria-label": v(i)("material.spinner.loading", "Loading..."),
222
- class: f(v(e)("size-14", r.class))
223
- }, [o("circle", {
224
- class: f(["spin2", v(P)({
221
+ "aria-label": C(i)("material.spinner.loading", "Loading..."),
222
+ class: g(C(e)("size-14", r.class))
223
+ }, [c("circle", {
224
+ class: g(["spin2", C(B)({
225
225
  variant: n.variant,
226
226
  color: n.color
227
227
  })]),
@@ -232,18 +232,18 @@ var P = k("transition-all duration-500", {
232
232
  "stroke-width": "50",
233
233
  "stroke-dasharray": "700 1400",
234
234
  "stroke-linecap": "round"
235
- }, null, 2)], 10, F)) : (m(), a("div", {
235
+ }, null, 2)], 10, V)) : (v(), s("div", {
236
236
  key: 1,
237
237
  "data-slot": "spinner",
238
238
  "data-variant": n.variant,
239
239
  "data-color": n.color,
240
- class: f(v(e)("size-12 border-[2px] rounded-full animate-spin", v(P)({
240
+ class: g(C(e)("size-12 border-[2px] rounded-full animate-spin", C(B)({
241
241
  variant: n.variant,
242
242
  color: n.color
243
243
  }), r.class))
244
- }, null, 10, I));
244
+ }, null, 10, H));
245
245
  }
246
- }), R = /* @__PURE__ */ l({
246
+ }), W = /* @__PURE__ */ d({
247
247
  __name: "Tooltip",
248
248
  props: {
249
249
  defaultOpen: { type: Boolean },
@@ -256,29 +256,29 @@ var P = k("transition-all duration-500", {
256
256
  },
257
257
  emits: ["update:open"],
258
258
  setup(e, { emit: t }) {
259
- let n = O(e, t);
260
- return (e, t) => (m(), r(v(E), d({ "data-slot": "tooltip" }, v(n)), {
261
- default: b((t) => [h(e.$slots, "default", p(u(t)))]),
259
+ let n = P(e, t);
260
+ return (e, t) => (v(), a(C(M), h({ "data-slot": "tooltip" }, C(n)), {
261
+ default: E((t) => [b(e.$slots, "default", _(f(t)))]),
262
262
  _: 3
263
263
  }, 16));
264
264
  }
265
- }), z = /* @__PURE__ */ new Set([
265
+ }), G = /* @__PURE__ */ new Set([
266
266
  "VIDEO",
267
267
  "IFRAME",
268
268
  "CANVAS",
269
269
  "IMG",
270
270
  "EMBED"
271
271
  ]);
272
- function B(e) {
272
+ function K(e) {
273
273
  let t = e?.fullscreenElement;
274
- return !t || typeof HTMLElement > "u" || !(t instanceof HTMLElement) || z.has(t.tagName) ? null : t;
274
+ return !t || typeof HTMLElement > "u" || !(t instanceof HTMLElement) || G.has(t.tagName) ? null : t;
275
275
  }
276
- var V = A(() => {
277
- let e = g(B(j));
278
- return N(j, "fullscreenchange", () => {
279
- e.value = B(j);
276
+ var q = I(() => {
277
+ let e = x(K(L));
278
+ return z(L, "fullscreenchange", () => {
279
+ e.value = K(L);
280
280
  }), e;
281
- }), H = /* @__PURE__ */ l({
281
+ }), J = /* @__PURE__ */ d({
282
282
  inheritAttrs: !1,
283
283
  __name: "TooltipContent",
284
284
  props: {
@@ -309,19 +309,19 @@ var V = A(() => {
309
309
  },
310
310
  emits: ["escapeKeyDown", "pointerDownOutside"],
311
311
  setup(t, { emit: n }) {
312
- let i = t, a = n, o = V(), s = O(M(i, "class", "to"), a);
313
- return (n, a) => (m(), r(v(w), { to: t.to ?? v(o) ?? void 0 }, {
314
- default: b(() => [c(v(C), d({ "data-slot": "tooltip-content" }, {
315
- ...v(s),
312
+ let r = t, i = n, o = q(), s = P(R(r, "class", "to"), i);
313
+ return (n, i) => (v(), a(C(A), { to: t.to ?? C(o) ?? void 0 }, {
314
+ default: E(() => [u(C(k), h({ "data-slot": "tooltip-content" }, {
315
+ ...C(s),
316
316
  ...n.$attrs
317
- }, { class: v(e)("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance", i.class) }), {
318
- default: b(() => [h(n.$slots, "default"), c(v(S), { class: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-xs" })]),
317
+ }, { class: C(e)("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance", r.class) }), {
318
+ default: E(() => [b(n.$slots, "default"), u(C(O), { class: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-xs" })]),
319
319
  _: 3
320
320
  }, 16, ["class"])]),
321
321
  _: 3
322
322
  }, 8, ["to"]));
323
323
  }
324
- }), U = /* @__PURE__ */ l({
324
+ }), Y = /* @__PURE__ */ d({
325
325
  __name: "TooltipProvider",
326
326
  props: {
327
327
  delayDuration: { default: 0 },
@@ -334,12 +334,12 @@ var V = A(() => {
334
334
  },
335
335
  setup(e) {
336
336
  let t = e;
337
- return (e, n) => (m(), r(v(T), p(u(t)), {
338
- default: b(() => [h(e.$slots, "default")]),
337
+ return (e, n) => (v(), a(C(j), _(f(t)), {
338
+ default: E(() => [b(e.$slots, "default")]),
339
339
  _: 3
340
340
  }, 16));
341
341
  }
342
- }), W = /* @__PURE__ */ l({
342
+ }), X = /* @__PURE__ */ d({
343
343
  __name: "TooltipTrigger",
344
344
  props: {
345
345
  reference: {},
@@ -348,12 +348,12 @@ var V = A(() => {
348
348
  },
349
349
  setup(e) {
350
350
  let t = e;
351
- return (e, n) => (m(), r(v(D), d({ "data-slot": "tooltip-trigger" }, t), {
352
- default: b(() => [h(e.$slots, "default")]),
351
+ return (e, n) => (v(), a(C(N), h({ "data-slot": "tooltip-trigger" }, t), {
352
+ default: E(() => [b(e.$slots, "default")]),
353
353
  _: 3
354
354
  }, 16));
355
355
  }
356
- }), G = k("inline-flex center truncate **:truncate gap-2 h-min cursor-pointer whitespace-nowrap rounded-full text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-error/20 dark:aria-invalid:ring-error/40 aria-invalid:border-error px-4 py-2 has-[>svg]:px-3", {
356
+ }), Z = Symbol("named-control"), Q = F("inline-flex center truncate **:truncate gap-2 h-min cursor-pointer whitespace-nowrap rounded-full text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-error/20 dark:aria-invalid:ring-error/40 aria-invalid:border-error px-4 py-2 has-[>svg]:px-3", {
357
357
  variants: {
358
358
  variant: {
359
359
  filled: "shadow-xs",
@@ -376,10 +376,10 @@ var V = A(() => {
376
376
  xs: "h-6 gap-1 rounded-full px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
377
377
  sm: "h-8 rounded-full gap-1.5 px-3 has-[>svg]:px-2.5",
378
378
  lg: "h-10 rounded-full px-6 has-[>svg]:px-4",
379
- icon: "size-9 px-0 py-0",
380
- "icon-xs": "size-6 rounded-full px-0 py-0 [&_svg:not([class*='size-'])]:size-3",
381
- "icon-sm": "size-8 px-0 py-0",
382
- "icon-lg": "size-10 px-0 py-0"
379
+ icon: "size-9 px-0 py-0 has-[>svg]:px-0",
380
+ "icon-xs": "size-6 rounded-full px-0 py-0 has-[>svg]:px-0 [&_svg:not([class*='size-'])]:size-3",
381
+ "icon-sm": "size-8 px-0 py-0 has-[>svg]:px-0",
382
+ "icon-lg": "size-10 px-0 py-0 has-[>svg]:px-0"
383
383
  }
384
384
  },
385
385
  defaultVariants: {
@@ -528,7 +528,28 @@ var V = A(() => {
528
528
  class: "text-foreground [&_svg]:data-[slot=icon]:text-foreground hover:bg-foreground/10 active:bg-muted focus:bg-foreground/15"
529
529
  }
530
530
  ]
531
- }), K = /* @__PURE__ */ l({
531
+ });
532
+ //#endregion
533
+ //#region lib/components/ui/actions/button/has-text-content.ts
534
+ function $(e) {
535
+ if (e == null || typeof e == "boolean") return !1;
536
+ if (typeof e == "string" || typeof e == "number") return String(e).trim() !== "";
537
+ if (Array.isArray(e)) return e.some($);
538
+ if (!m(e) || e.type === n) return !1;
539
+ if (e.type === r) return String(e.children ?? "").trim() !== "";
540
+ if (ee(e.props?.["aria-hidden"] ?? e.props?.ariaHidden)) return !1;
541
+ let { children: t } = e;
542
+ if (typeof t == "string") return t.trim() !== "";
543
+ if (Array.isArray(t)) return $(t);
544
+ let i = t?.default;
545
+ return typeof i == "function" && $(i());
546
+ }
547
+ function ee(e) {
548
+ return e === "" || !!e && e !== "false";
549
+ }
550
+ //#endregion
551
+ //#region lib/components/ui/actions/button/Button.vue
552
+ var te = /* @__PURE__ */ d({
532
553
  inheritAttrs: !1,
533
554
  __name: "Button",
534
555
  props: {
@@ -550,36 +571,38 @@ var V = A(() => {
550
571
  tooltip: {}
551
572
  },
552
573
  setup(t) {
553
- let a = t, o = y(), l = n(() => !!(a.disabled || a.loading)), u = n(() => a.as !== "button" || a.asChild ? o.type : o.type ?? "button"), p = n(() => !!a.size?.startsWith("icon")), g = n(() => e("justify-center duration-500", !p.value && "w-max truncate line-clamp-1 text-ellipsis", G({
554
- variant: a.variant,
555
- color: a.color,
556
- size: a.size
557
- }), a.class));
558
- return (n, a) => t.tooltip ? (m(), r(v(U), { key: 0 }, {
559
- default: b(() => [c(v(R), null, {
560
- default: b(() => [c(v(W), { "as-child": "" }, {
561
- default: b(() => [c(v(x), d(n.$attrs, {
574
+ let n = t, r = w(), s = T(), c = p(Z, void 0);
575
+ y(Z, i(() => !!c?.value || !!(r["aria-label"] || r["aria-labelledby"]) || $(s.default?.())));
576
+ let d = i(() => !!(n.disabled || n.loading)), f = i(() => n.as !== "button" || n.asChild ? r.type : r.type ?? "button"), m = i(() => !!n.size?.startsWith("icon")), _ = i(() => e("justify-center duration-500", !m.value && "w-max truncate line-clamp-1 text-ellipsis", Q({
577
+ variant: n.variant,
578
+ color: n.color,
579
+ size: n.size
580
+ }), n.class));
581
+ return (n, r) => t.tooltip ? (v(), a(C(Y), { key: 0 }, {
582
+ default: E(() => [u(C(W), null, {
583
+ default: E(() => [u(C(X), { "as-child": "" }, {
584
+ default: E(() => [u(C(D), h(n.$attrs, {
562
585
  "data-slot": n.$attrs["data-slot"] ?? "button",
563
586
  "data-variant": t.variant,
564
587
  "data-color": t.color,
565
588
  "data-size": t.size,
566
589
  as: t.as,
567
590
  "as-child": t.asChild,
568
- type: u.value,
569
- disabled: l.value,
591
+ type: f.value,
592
+ disabled: d.value,
570
593
  "aria-busy": t.loading || void 0,
571
- class: g.value
594
+ class: _.value
572
595
  }), {
573
- default: b(() => [t.loading ? (m(), r(L, {
596
+ default: E(() => [t.loading ? (v(), a(U, {
574
597
  key: 0,
575
598
  variant: t.spinnerVariant,
576
599
  color: t.variant === "filled" ? "light" : t.color,
577
- class: f(v(e)("starting:scale-0 duration-500", t.spinnerVariant === "4" ? "size-7.5" : "size-4.5"))
600
+ class: g(C(e)("starting:scale-0 duration-500", t.spinnerVariant === "4" ? "size-7.5" : "size-4.5"))
578
601
  }, null, 8, [
579
602
  "variant",
580
603
  "color",
581
604
  "class"
582
- ])) : i("", !0), h(n.$slots, "default")]),
605
+ ])) : o("", !0), b(n.$slots, "default")]),
583
606
  _: 3
584
607
  }, 16, [
585
608
  "data-slot",
@@ -594,35 +617,35 @@ var V = A(() => {
594
617
  "class"
595
618
  ])]),
596
619
  _: 3
597
- }), c(v(H), null, {
598
- default: b(() => [s(_(t.tooltip), 1)]),
620
+ }), u(C(J), null, {
621
+ default: E(() => [l(S(t.tooltip), 1)]),
599
622
  _: 1
600
623
  })]),
601
624
  _: 3
602
625
  })]),
603
626
  _: 3
604
- })) : (m(), r(v(x), d({ key: 1 }, n.$attrs, {
627
+ })) : (v(), a(C(D), h({ key: 1 }, n.$attrs, {
605
628
  "data-slot": n.$attrs["data-slot"] ?? "button",
606
629
  "data-variant": t.variant,
607
630
  "data-color": t.color,
608
631
  "data-size": t.size,
609
632
  as: t.as,
610
633
  "as-child": t.asChild,
611
- type: u.value,
612
- disabled: l.value,
634
+ type: f.value,
635
+ disabled: d.value,
613
636
  "aria-busy": t.loading || void 0,
614
- class: g.value
637
+ class: _.value
615
638
  }), {
616
- default: b(() => [t.loading ? (m(), r(L, {
639
+ default: E(() => [t.loading ? (v(), a(U, {
617
640
  key: 0,
618
641
  variant: t.spinnerVariant,
619
642
  color: t.variant === "filled" ? "light" : t.color,
620
- class: f(v(e)("starting:scale-0 duration-500", t.spinnerVariant === "4" ? "size-7.5" : "size-4.5"))
643
+ class: g(C(e)("starting:scale-0 duration-500", t.spinnerVariant === "4" ? "size-7.5" : "size-4.5"))
621
644
  }, null, 8, [
622
645
  "variant",
623
646
  "color",
624
647
  "class"
625
- ])) : i("", !0), h(n.$slots, "default")]),
648
+ ])) : o("", !0), b(n.$slots, "default")]),
626
649
  _: 3
627
650
  }, 16, [
628
651
  "data-slot",
@@ -639,4 +662,4 @@ var V = A(() => {
639
662
  }
640
663
  });
641
664
  //#endregion
642
- export { H as a, L as c, U as i, P as l, G as n, V as o, W as r, R as s, K as t };
665
+ export { Y as a, W as c, X as i, U as l, Q as n, J as o, Z as r, q as s, te as t, B as u };
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./utils-CykWQ0iJ.js";
2
- import { t } from "./use-material-translation-C5zPFhbk.js";
3
- import { t as n } from "./Button-CVIR6uLK.js";
2
+ import { t } from "./use-material-translation-8hUB2M-S.js";
3
+ import { t as n } from "./Button-DOcT4Pej.js";
4
4
  import { createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, createVNode as c, defineComponent as l, guardReactiveProps as u, isRef as d, mergeProps as f, normalizeClass as p, normalizeProps as m, openBlock as h, renderSlot as g, toDisplayString as _, unref as v, useId as y, useTemplateRef as b, vModelText as x, withCtx as S, withDirectives as C } from "vue";
5
5
  import { X as w } from "@lucide/vue";
6
6
  import { DialogClose as T, DialogContent as E, DialogDescription as D, DialogOverlay as O, DialogPortal as k, DialogRoot as ee, DialogTitle as te, DialogTrigger as A, HoverCardContent as j, HoverCardPortal as M, HoverCardRoot as N, HoverCardTrigger as P, Label as F, useForwardProps as I, useForwardPropsEmits as L } from "reka-ui";
@@ -1,8 +1,8 @@
1
1
  import { t as e } from "./utils-CykWQ0iJ.js";
2
- import { ir as t, or as n, rr as r } from "./components-AScwCcds.js";
3
- import { t as i } from "./use-material-translation-C5zPFhbk.js";
4
- import { t as a } from "./Button-CVIR6uLK.js";
5
- import { t as o } from "./icon-button-DbEME76t.js";
2
+ import { ar as t, cr as n, or as r } from "./components-YlYuHLEI.js";
3
+ import { t as i } from "./use-material-translation-8hUB2M-S.js";
4
+ import { t as a } from "./Button-DOcT4Pej.js";
5
+ import { t as o } from "./icon-button-DKLuZ2c-.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
@@ -16,8 +16,8 @@ var w = { class: "grid gap-2" }, T = { class: "flex justify-end" }, E = ["src",
16
16
  Object,
17
17
  Array
18
18
  ] } },
19
- setup(t) {
20
- let n = t, { t: p } = i(), { videoRef: g, state: _, actions: v } = r();
19
+ setup(n) {
20
+ let r = n, { t: p } = i(), { videoRef: g, state: _, actions: v } = t();
21
21
  function D(e) {
22
22
  g.value = e instanceof HTMLVideoElement ? e : null;
23
23
  }
@@ -25,9 +25,9 @@ var w = { class: "grid gap-2" }, T = { class: "flex justify-end" }, E = ["src",
25
25
  _.isStreaming ? v.stopStream() : v.startStream();
26
26
  }
27
27
  let k = p("material.camera.capture", "Take Capture"), A = p("material.camera.captured", "Captured");
28
- return (t, r) => (h(), l("div", {
28
+ return (t, n) => (h(), l("div", {
29
29
  "data-slot": "camera",
30
- class: m(b(e)("flex relative w-full h-full gap-2", n.class))
30
+ class: m(b(e)("flex relative w-full h-full gap-2", r.class))
31
31
  }, [u("div", w, [u("video", {
32
32
  ref: D,
33
33
  class: "w-full max-w-lg right-1 ring-primary",
@@ -58,9 +58,9 @@ var w = { class: "grid gap-2" }, T = { class: "flex justify-end" }, E = ["src",
58
58
  }), O = /* @__PURE__ */ p({
59
59
  __name: "camera-provider",
60
60
  setup(e) {
61
- let r = g(null), i = g(null), a = v(null), o = n();
62
- return t({
63
- videoRef: r,
61
+ let t = g(null), i = g(null), a = v(null), o = n();
62
+ return r({
63
+ videoRef: t,
64
64
  canvasRef: i,
65
65
  streamRef: a,
66
66
  state: o,
@@ -74,7 +74,7 @@ var w = { class: "grid gap-2" }, T = { class: "flex justify-end" }, E = ["src",
74
74
  requestPermission: () => o.requestPermission(),
75
75
  startStream: () => {
76
76
  o.startStream((e) => {
77
- a.value = e, r.value && (r.value.srcObject = e);
77
+ a.value = e, t.value && (t.value.srcObject = e);
78
78
  });
79
79
  },
80
80
  stopStream: () => {
@@ -83,7 +83,7 @@ var w = { class: "grid gap-2" }, T = { class: "flex justify-end" }, E = ["src",
83
83
  }), a.value = null, o.setStreaming(!1);
84
84
  },
85
85
  capturePhoto: () => {
86
- o.capturePhoto(r.value);
86
+ o.capturePhoto(t.value);
87
87
  }
88
88
  }
89
89
  }), (e, t) => _(e.$slots, "default");