@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.
- package/README.md +22 -18
- package/dist/{Button-CVIR6uLK.js → Button-DOcT4Pej.js} +95 -72
- package/dist/{HoverCardTrigger-iAL5ALrL.js → HoverCardTrigger-WQe85PCH.js} +2 -2
- package/dist/{camera-Gvg5N956.js → camera-BNbLUPb1.js} +13 -13
- package/dist/{components-AScwCcds.js → components-YlYuHLEI.js} +10856 -10379
- package/dist/components.js +8 -8
- package/dist/composables.js +2 -2
- package/dist/dnd.js +1 -1
- package/dist/{i18n-provider-BqWxpaKu.js → i18n-provider-DTuxugHO.js} +1 -1
- package/dist/i18n.js +4 -4
- package/dist/{icon-button-DbEME76t.js → icon-button-DKLuZ2c-.js} +34 -37
- package/dist/lib/components/ui/actions/button/has-text-content.d.ts +10 -0
- package/dist/lib/components/ui/actions/copy-button/copy-value.vue.d.ts +21 -0
- package/dist/lib/components/ui/actions/copy-button/index.d.ts +2 -0
- package/dist/lib/components/ui/collections/data-table/data-table-context.d.ts +6 -0
- package/dist/lib/components/ui/collections/data-table/data-table-pagination.vue.d.ts +2 -0
- package/dist/lib/components/ui/collections/data-table/data-table.vue.d.ts +17 -27
- package/dist/lib/components/ui/collections/data-table/index.d.ts +1 -1
- package/dist/lib/components/ui/collections/data-table/partials/data-table-body.vue.d.ts +10 -1
- package/dist/lib/components/ui/collections/data-table/partials/data-table-empty.vue.d.ts +13 -1
- package/dist/lib/components/ui/collections/data-table/partials/data-table-head.vue.d.ts +22 -0
- package/dist/lib/components/ui/collections/data-table/partials/data-table-skeleton-rows.vue.d.ts +10 -0
- package/dist/lib/components/ui/collections/data-table/use-data-table.d.ts +17 -0
- package/dist/lib/components/ui/collections/filter/partials/filter-field-slider-range.vue.d.ts +1 -4
- package/dist/lib/components/ui/collections/pagination/index.d.ts +5 -0
- package/dist/lib/components/ui/collections/pagination/pagination-bar.vue.d.ts +21 -0
- package/dist/lib/components/ui/collections/pagination/pagination-items.d.ts +2 -0
- package/dist/lib/components/ui/collections/pagination/pagination-link.vue.d.ts +18 -0
- package/dist/lib/components/ui/display/markdown/index.d.ts +18 -0
- package/dist/lib/components/ui/feedback/skeleton/skeleton-text.vue.d.ts +1 -1
- package/dist/lib/components/ui/feedback/spinner/spinner.compound-variants.d.ts +4 -0
- package/dist/lib/components/ui/fields/contacts/consts.d.ts +1 -1
- package/dist/lib/components/ui/fields/inline-edit/index.d.ts +1 -0
- package/dist/lib/components/ui/fields/inline-edit/inline-edit-form-field.vue.d.ts +7 -0
- package/dist/lib/components/ui/layout/doc/doc.vue.d.ts +5 -5
- package/dist/lib/components/ui/layout/doc/index.d.ts +8 -1
- package/dist/lib/components/ui/layout/doc/partials/default-doc-link.vue.d.ts +14 -0
- package/dist/lib/components/ui/layout/doc/partials/doc-copy-page.vue.d.ts +6 -0
- package/dist/lib/components/ui/layout/doc/partials/doc-link.vue.d.ts +3 -7
- package/dist/lib/components/ui/layout/doc/types.d.ts +6 -1
- package/dist/lib/components/ui/media/pdf-viewer/index.d.ts +6 -6
- package/dist/lib/components/ui/media/pdf-viewer/pdf-reader.vue.d.ts +2 -2
- package/dist/lib/components/ui/primitives/icon/icon-context.d.ts +1 -1
- package/dist/lib/components/ui/selection/checkbox/Checkbox.vue.d.ts +21 -5
- package/dist/lib/components/ui/selection/checkbox/checkbox-form-field.vue.d.ts +17 -0
- package/dist/lib/components/ui/selection/checkbox/index.d.ts +2 -0
- package/dist/lib/components/ui/widgets/charts/chart-container.vue.d.ts +1 -1
- package/dist/lib/components/ui/widgets/code-editor/code-editor-form-field.vue.d.ts +13 -0
- package/dist/lib/components/ui/widgets/code-editor/index.d.ts +1 -0
- package/dist/lib/i18n/resources/en/en.d.ts +7 -0
- package/dist/lib/i18n/resources/en/material.json.d.ts +8 -1
- package/dist/lib/i18n/resources/fr/fr.d.ts +7 -0
- package/dist/lib/i18n/resources/fr/material.json.d.ts +8 -1
- package/dist/lib/i18n/resources/resources.d.ts +14 -0
- package/dist/lib/i18n/translator.d.ts +1 -1
- package/dist/lib/nuxt/component-names.d.ts +1 -1
- package/dist/lib.js +2 -2
- package/dist/main.js +17 -17
- package/dist/map.js +4 -4
- package/dist/material-vue.css +1 -1
- package/dist/{pdf-outline-sidebar-oz9wdBhB.js → pdf-outline-sidebar-0I-LGrgY.js} +2 -2
- package/dist/{pdf-page-0rlq1Lo6.js → pdf-page-C74-6lyZ.js} +1 -1
- package/dist/{pdf-page-list-DfhjNHoI.js → pdf-page-list-DPsquYPY.js} +2 -2
- package/dist/{pdf-reader-Dr8RVcs4.js → pdf-reader-Bkpp7UZ7.js} +8 -8
- package/dist/{pdf-sidebar-VXPQbC_R.js → pdf-sidebar-BH-1jvy-.js} +3 -3
- package/dist/{pdf-thumbnail-sidebar-BpgXrVBj.js → pdf-thumbnail-sidebar-ByqNaYfz.js} +3 -3
- package/dist/{pdf-toolbar-B6gRRcsv.js → pdf-toolbar-BRnmzddi.js} +4 -4
- package/dist/pdf.js +2 -2
- package/dist/{sortable-provider-oEVjQiCl.js → sortable-provider-CC9eO1nm.js} +2 -2
- package/dist/{stored-language-rjOMJkyX.js → stored-language-N_UoPJsY.js} +20 -2
- package/dist/{stx-player-DNADkQ31.js → stx-player-BGKIDqNX.js} +22 -22
- package/dist/{translator-BCSJSO1-.js → translator-CU0jKvzB.js} +1 -1
- package/dist/{use-heading-spy-d50_nxgR.js → use-heading-spy-Bw1LIAkC.js} +1 -1
- package/dist/{use-material-translation-C5zPFhbk.js → use-material-translation-8hUB2M-S.js} +3 -3
- package/docs/components/buttons-and-actions.md +19 -3
- package/docs/components/data-display.md +14 -1
- package/docs/components/data-table-filter-and-lists.md +90 -8
- package/docs/components/feedback-and-status.md +1 -1
- package/docs/components/form-fields.md +7 -5
- package/docs/components/media-and-files.md +1 -1
- package/docs/components/navigation-and-layout.md +67 -7
- package/docs/components/primitives.md +4 -2
- package/docs/components/rich-widgets.md +4 -3
- package/docs/components/selection-and-choice.md +16 -13
- package/docs/guides/forms.md +14 -5
- package/docs/guides/i18n.md +6 -2
- package/docs/guides/ssr.md +2 -0
- package/docs/previews/buttons-actions-copybutton.webp +0 -0
- package/docs/previews/data-table-filter-lists-pagination.webp +0 -0
- package/docs/previews/form-fields-slider.webp +0 -0
- package/docs/previews/navigation-layout-stepper.webp +0 -0
- package/docs/previews/selection-choice-checkbox.webp +0 -0
- package/docs/roadmap.md +41 -1
- package/docs/troubleshooting.md +104 -0
- package/lib/nuxt/component-names.ts +12 -0
- 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
|
|
338
|
-
no Vue counterpart; they keep a row, and their page says what to
|
|
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
|
|
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)
|
|
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
|
|
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-
|
|
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. |
|
|
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-
|
|
3
|
-
import {
|
|
4
|
-
import { Primitive as
|
|
5
|
-
import { cva as
|
|
6
|
-
import { createSharedComposable as
|
|
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
|
|
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: "
|
|
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
|
-
}),
|
|
194
|
+
}), V = [
|
|
195
195
|
"data-variant",
|
|
196
196
|
"data-color",
|
|
197
197
|
"aria-label"
|
|
198
|
-
],
|
|
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,
|
|
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":
|
|
222
|
-
class:
|
|
223
|
-
}, [
|
|
224
|
-
class:
|
|
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,
|
|
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:
|
|
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,
|
|
244
|
+
}, null, 10, H));
|
|
245
245
|
}
|
|
246
|
-
}),
|
|
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 =
|
|
260
|
-
return (e, t) => (
|
|
261
|
-
default:
|
|
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
|
-
}),
|
|
265
|
+
}), G = /* @__PURE__ */ new Set([
|
|
266
266
|
"VIDEO",
|
|
267
267
|
"IFRAME",
|
|
268
268
|
"CANVAS",
|
|
269
269
|
"IMG",
|
|
270
270
|
"EMBED"
|
|
271
271
|
]);
|
|
272
|
-
function
|
|
272
|
+
function K(e) {
|
|
273
273
|
let t = e?.fullscreenElement;
|
|
274
|
-
return !t || typeof HTMLElement > "u" || !(t instanceof HTMLElement) ||
|
|
274
|
+
return !t || typeof HTMLElement > "u" || !(t instanceof HTMLElement) || G.has(t.tagName) ? null : t;
|
|
275
275
|
}
|
|
276
|
-
var
|
|
277
|
-
let e =
|
|
278
|
-
return
|
|
279
|
-
e.value =
|
|
276
|
+
var q = I(() => {
|
|
277
|
+
let e = x(K(L));
|
|
278
|
+
return z(L, "fullscreenchange", () => {
|
|
279
|
+
e.value = K(L);
|
|
280
280
|
}), e;
|
|
281
|
-
}),
|
|
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
|
|
313
|
-
return (n,
|
|
314
|
-
default:
|
|
315
|
-
...
|
|
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:
|
|
318
|
-
default:
|
|
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
|
-
}),
|
|
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) => (
|
|
338
|
-
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
|
-
}),
|
|
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) => (
|
|
352
|
-
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
|
-
}),
|
|
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
|
-
})
|
|
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
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
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:
|
|
569
|
-
disabled:
|
|
591
|
+
type: f.value,
|
|
592
|
+
disabled: d.value,
|
|
570
593
|
"aria-busy": t.loading || void 0,
|
|
571
|
-
class:
|
|
594
|
+
class: _.value
|
|
572
595
|
}), {
|
|
573
|
-
default:
|
|
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:
|
|
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
|
-
])) :
|
|
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
|
-
}),
|
|
598
|
-
default:
|
|
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
|
-
})) : (
|
|
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:
|
|
612
|
-
disabled:
|
|
634
|
+
type: f.value,
|
|
635
|
+
disabled: d.value,
|
|
613
636
|
"aria-busy": t.loading || void 0,
|
|
614
|
-
class:
|
|
637
|
+
class: _.value
|
|
615
638
|
}), {
|
|
616
|
-
default:
|
|
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:
|
|
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
|
-
])) :
|
|
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 {
|
|
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-
|
|
3
|
-
import { t as n } from "./Button-
|
|
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 {
|
|
3
|
-
import { t as i } from "./use-material-translation-
|
|
4
|
-
import { t as a } from "./Button-
|
|
5
|
-
import { t as o } from "./icon-button-
|
|
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(
|
|
20
|
-
let
|
|
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,
|
|
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",
|
|
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
|
|
62
|
-
return
|
|
63
|
-
videoRef:
|
|
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,
|
|
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(
|
|
86
|
+
o.capturePhoto(t.value);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
}), (e, t) => _(e.$slots, "default");
|