@nxgt/material-vue 0.37.1 → 0.39.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 (89) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/README.md +1 -0
  3. package/dist/{Button-CurFF4Zt.js → Button-DVeAQorb.js} +1 -1
  4. package/dist/{DropdownMenuTrigger-BsuyNVzV.js → DropdownMenuTrigger-C7uYPf_9.js} +36 -36
  5. package/dist/{HoverCardTrigger-jCXl6TrX.js → HoverCardTrigger-VvXPswRz.js} +122 -120
  6. package/dist/{camera-CYwiFuGE.js → camera-CG6WfZNc.js} +4 -4
  7. package/dist/components/base-content.css +64 -4
  8. package/dist/components/base.css +3 -1
  9. package/dist/{components--v_k8diD.js → components-B2kSyBK0.js} +13277 -12751
  10. package/dist/components.js +8 -8
  11. package/dist/composables.js +2 -2
  12. package/dist/dnd.js +1 -1
  13. package/dist/{form-scope-B2oJ5fHr.js → form-scope-XhlaF5na.js} +1 -1
  14. package/dist/{i18n-provider-B2q6vp6H.js → i18n-provider-BBnUUGqM.js} +1 -1
  15. package/dist/i18n.js +4 -4
  16. package/dist/{icon-button-CIUc1bEp.js → icon-button-CSPfP615.js} +1 -1
  17. package/dist/in-dialog-Blhwwbyb.js +31 -0
  18. package/dist/lib/components/ui/collections/data-table/data-table-density.d.ts +15 -0
  19. package/dist/lib/components/ui/collections/data-table/data-table.stories.columns.d.ts +47 -0
  20. package/dist/lib/components/ui/collections/data-table/data-table.stories.template.d.ts +1 -0
  21. package/dist/lib/components/ui/collections/data-table/index.d.ts +1 -1
  22. package/dist/lib/components/ui/collections/data-table/types.d.ts +7 -0
  23. package/dist/lib/components/ui/feedback/banner/banner.vue.d.ts +1 -1
  24. package/dist/lib/components/ui/fields/contacts/consts.d.ts +1 -1
  25. package/dist/lib/components/ui/fields/index.d.ts +1 -0
  26. package/dist/lib/components/ui/fields/repeatable-group/index.d.ts +4 -0
  27. package/dist/lib/components/ui/fields/repeatable-group/partials/repeatable-group-footer.vue.d.ts +14 -0
  28. package/dist/lib/components/ui/fields/repeatable-group/partials/repeatable-group-row.vue.d.ts +33 -0
  29. package/dist/lib/components/ui/fields/repeatable-group/repeatable-group-classes.d.ts +33 -0
  30. package/dist/lib/components/ui/fields/repeatable-group/repeatable-group-form-field.vue.d.ts +44 -0
  31. package/dist/lib/components/ui/fields/repeatable-group/repeatable-group-names.d.ts +16 -0
  32. package/dist/lib/components/ui/fields/repeatable-group/repeatable-group.vue.d.ts +69 -0
  33. package/dist/lib/components/ui/fields/repeatable-group/use-repeatable-group.d.ts +39 -0
  34. package/dist/lib/components/ui/fields/search-field/search-field.vue.d.ts +10 -1
  35. package/dist/lib/components/ui/media/stx-player/stx-player-extras.vue.d.ts +1 -1
  36. package/dist/lib/components/ui/overlays/command/CommandItem.vue.d.ts +10 -3
  37. package/dist/lib/components/ui/overlays/command/CommandList.vue.d.ts +4 -2
  38. package/dist/lib/components/ui/overlays/dialog/in-dialog.d.ts +12 -0
  39. package/dist/lib/components/ui/primitives/typography/typography.variants.d.ts +1 -0
  40. package/dist/lib/components/ui/primitives/typography/typography.vue.d.ts +2 -0
  41. package/dist/lib/components/ui/selection/checkbox-group/checkbox-group.vue.d.ts +2 -0
  42. package/dist/lib/components/ui/selection/option-count/option-count.vue.d.ts +25 -0
  43. package/dist/lib/components/ui/selection/option-count/use-option-count-text.d.ts +10 -0
  44. package/dist/lib/components/ui/selection/radio-group/radio-group-field.vue.d.ts +2 -0
  45. package/dist/lib/components/ui/selection/select-chip-field/select-chip-field.vue.d.ts +11 -0
  46. package/dist/lib/components/ui/selection/sortable-list/sortable-list.vue.d.ts +1 -1
  47. package/dist/lib/components/ui/selection/transfer-list/transfer-list.vue.d.ts +1 -1
  48. package/dist/lib/i18n/resources/en/en.d.ts +15 -0
  49. package/dist/lib/i18n/resources/en/material.json.d.ts +15 -0
  50. package/dist/lib/i18n/resources/fr/fr.d.ts +15 -0
  51. package/dist/lib/i18n/resources/fr/material.json.d.ts +15 -0
  52. package/dist/lib/i18n/resources/resources.d.ts +30 -0
  53. package/dist/lib/i18n/translator.d.ts +1 -1
  54. package/dist/lib/nuxt/component-names.d.ts +1 -1
  55. package/dist/lib.js +1 -1
  56. package/dist/main.js +17 -17
  57. package/dist/map.js +4 -4
  58. package/dist/material-vue.css +1 -1
  59. package/dist/{pdf-outline-sidebar-DJJ-ARco.js → pdf-outline-sidebar-aQ5Lhbss.js} +2 -2
  60. package/dist/{pdf-page-CRt6KXdJ.js → pdf-page-NCmScgMW.js} +1 -1
  61. package/dist/{pdf-page-list-BgCp5Asx.js → pdf-page-list-BnvE130d.js} +2 -2
  62. package/dist/{pdf-reader-BGxqEx8O.js → pdf-reader-CMt9dKZ-.js} +8 -8
  63. package/dist/{pdf-sidebar-Cvtuomgp.js → pdf-sidebar-BWzX3e0f.js} +3 -3
  64. package/dist/{pdf-thumbnail-sidebar-CeWPs7o7.js → pdf-thumbnail-sidebar-8nbYsI3d.js} +3 -3
  65. package/dist/{pdf-toolbar-BtXcyEpd.js → pdf-toolbar-DpQMG5rv.js} +5 -5
  66. package/dist/pdf.js +2 -2
  67. package/dist/{print-format.utils-keJqahvw.js → print-format.utils-oj5kle2P.js} +2 -2
  68. package/dist/{sortable-provider-DMu8DL2z.js → sortable-provider-2czx1jSW.js} +2 -2
  69. package/dist/{stored-language-dtksFoGO.js → stored-language-CKZMMJcz.js} +26 -0
  70. package/dist/{stx-player-nDsDyvc-.js → stx-player-CS1FYHVS.js} +5 -5
  71. package/dist/{translator-DqiGrSH_.js → translator-uh5FWiMq.js} +1 -1
  72. package/dist/{use-heading-spy-BZ7ctGZ5.js → use-heading-spy-CcJfoBA1.js} +1 -1
  73. package/dist/{use-material-translation-DRB6oPdF.js → use-material-translation-C6xccbic.js} +3 -3
  74. package/docs/components/README.md +1 -1
  75. package/docs/components/data-table-filter-and-lists.md +3 -1
  76. package/docs/components/form-fields.md +146 -0
  77. package/docs/components/overlays-and-menus.md +2 -0
  78. package/docs/components/primitives.md +3 -1
  79. package/docs/components/selection-and-choice.md +28 -4
  80. package/docs/guides/forms.md +89 -4
  81. package/docs/guides/i18n.md +2 -1
  82. package/docs/previews/form-fields-repeatablegroup.webp +0 -0
  83. package/docs/roadmap.md +7 -0
  84. package/docs/troubleshooting.md +70 -0
  85. package/lib/components/base-content.css +64 -4
  86. package/lib/components/base.css +3 -1
  87. package/lib/nuxt/component-names.ts +2 -0
  88. package/package.json +2 -2
  89. package/dist/use-inert-others-CtGqZKR8.js +0 -22
package/CHANGELOG.md CHANGED
@@ -1,5 +1,106 @@
1
1
  # @nxgt/material-vue
2
2
 
3
+ ## 0.39.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#588](https://github.com/softistx/nxgt-material/pull/588) [`f8ef212`](https://github.com/softistx/nxgt-material/commit/f8ef2120be53d5a60a976ff47355d1eb487672b1) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `DataTable` takes a `density` prop, `'comfortable'` (default, the look it always had) or `'compact'`, which tightens the cell padding above and below, the row and header heights, the sort and expand buttons (the expand button keeps 28px, above the 24px target minimum) and the gap between rows, the selection column included. The table carries it as `data-density`, styled with classes, so a strict CSP is unaffected; a `DataTable` nested in an expanded row keeps its own density. The toolbar band, the empty state and the print variant keep their size. The `DataTableDensity` type is exported.
8
+
9
+ Also in this release:
10
+
11
+ - `@nxgt/material`: `TableHead` now sets `text-foreground`, as `@nxgt/material-vue`'s does. It affects every React `Table` header: the header text is the foreground colour, no longer the muted inherited one (3.97:1 contrast on the header band, now above 4.5:1).
12
+ - Both: the `expand` column's header is no longer empty. It holds a visually hidden "Expand" (`material.table.labels.expand`, "Déplier" in French), which fixes axe's `empty-table-header`. An app that overrides the `material.table.labels` bundle can add the key.
13
+
14
+ Nothing to change in an existing app.
15
+
16
+ ### Patch Changes
17
+
18
+ - [#579](https://github.com/softistx/nxgt-material/pull/579) [`69562df`](https://github.com/softistx/nxgt-material/commit/69562dff2d874d60f066d45dd6dc7df418112041) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Autocomplete in a dialog: the open list no longer covers the dialog's own controls ([#577](https://github.com/softistx/nxgt-material/issues/577)). Inside a `DialogContent`, `DialogScrollContent`, `AlertDialogContent` or `SheetContent`, the list opens under the field's helper text, in the layer's flow, and pushes what follows (the footer, the Save button) down instead of floating over it. It never flips up over the title, and its options scroll past 15rem. The layer grows while the list is open (a dialog stays capped at the viewport and scrolls) and shrinks back at once on a pick, so the next field does not move under a click aimed at it. A closed field is as tall in a dialog as outside one. A `PopoverContent`, `HoverCardContent` or menu content opened from a dialog keeps a floating list, as on the page. A `DrawerContent` on the page is not covered yet: its list still floats ([#582](https://github.com/softistx/nxgt-material/issues/582)). Outside these layers nothing changes. No API change.
19
+
20
+ - [#586](https://github.com/softistx/nxgt-material/pull/586) [`a3d9c79`](https://github.com/softistx/nxgt-material/commit/a3d9c79310c09e14d25b67db5c5c73afa4f875b4) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `.form-grid-layout` no longer caps its height (`max-h-[calc(100lvh-…)]`) nor scrolls `[data-slot="form-fields"]` in a box of its own: a long form grows with the page, and the page (or the `DialogContent` / `SheetContent` around it) is the one scroll. `[data-slot="form-actions"]` is sticky at the bottom of that scroll on a blurred `bg-background/90`, so Cancel and Save stay in reach. In a `DialogContent` or an `AlertDialogContent` the stuck actions fill the dialog's padding below them, and `ConfirmationDialog`'s footer sticks the same way when it holds a form (any dialog holding a `.form-grid-layout` without `form-actions` does). A form that is a direct child of `DrawerContent` scrolls itself, since a drawer does not. The fields' controls and links carry `scroll-margin-bottom` (6rem plus a dialog's bottom padding, 7.5rem above `ConfirmationDialog`'s footer), so a field tabbed to is scrolled clear of the actions in any scroll box (WCAG 2.4.11); `--form-actions-clearance` raises it for taller actions, and `--form-actions-fill` names a dialog's bottom padding when it is not the default.
21
+
22
+ Migration: search for `form-grid-layout` in a box with a fixed height that relied on the fields scrolling inside it; give that form (or box) the height and the scroll yourself (`max-h-[60vh] overflow-y-auto`), and the actions stick to its bottom. To keep the actions in place, add `static` to `[data-slot="form-actions"]`. An app's own fixed bottom bar or floating button now sits under the sticky actions (`z-index: 10`): give it a z-index above 10. Storybook: `Guides/Forms/Form grid layout`, `Guides/Forms/Form grid layout, overlays` and `Guides/Forms/Form grid layout, dialogs`.
23
+
24
+ ## 0.38.0
25
+
26
+ ### Minor Changes
27
+
28
+ - [#569](https://github.com/softistx/nxgt-material/pull/569) [`37d5114`](https://github.com/softistx/nxgt-material/commit/37d5114cc1bad14c352e0770a511bb842bc71ea5) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Options of `CheckboxGroup`, `RadioGroup` and `SelectChipField` take a `count`: muted `tabular-nums` text after the label, and part of the accessible name ("CE1 24 results", from the new `material.option-count.label` ICU plural, in en and fr). `SelectChipField` in `@nxgt/material-vue` gains `icon` on its options, as in React, and both libraries gain `deselectable` (default `true`): `false` keeps the chosen chip chosen when it is pressed again in single mode.
29
+
30
+ - [#574](https://github.com/softistx/nxgt-material/pull/574) [`c00f8c3`](https://github.com/softistx/nxgt-material/commit/c00f8c366e35b7769560bb86b964ae0705bcc60f) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Add `RepeatableGroup` and `RepeatableGroupFormField` (Storybook
31
+ `Form fields/RepeatableGroup`): rows of fields a user adds, removes and, with
32
+ `reorderable`, moves up and down. `RepeatableGroupFormField` wraps the form
33
+ library's `useFieldArray` (react-hook-form in React, vee-validate in Vue) and
34
+ renders each row from `renderRow` (React) or the `row` slot (Vue), whose
35
+ `path` names the row's fields. The rows are a list (`ul` / `li`) in a group
36
+ named by `label`; each row's buttons are named after it ("Remove period 2",
37
+ "Move period 2 up"), from the new `material.repeatable-group.*` keys in
38
+ English and French. An added row's first field takes the focus, a removed row
39
+ hands it to its neighbour or to Add, and a moved row keeps it on its move
40
+ button; each change is announced politely. `max` makes Add `aria-disabled`,
41
+ described by "Maximum reached (n)"; `min` disables Remove; `emptyTitle` /
42
+ `emptyDescription` show an `EmptyState` with no row. The array's own error
43
+ shows under the rows and describes the group; each row's fields show their
44
+ own. One column on a phone, a responsive grid wider up, no inline style.
45
+
46
+ `@nxgt/material-core` gains `/repeatable-group`: the focus rules
47
+ (`focusAfterRemove`, `focusAfterMove`, `focusRowTarget`), the limits
48
+ (`canAddRow`, `canRemoveRow`, `rowMoveTarget`) and the `RowAnnouncement`
49
+ descriptor both libraries use.
50
+
51
+ ```tsx
52
+ <RepeatableGroupFormField
53
+ control={control}
54
+ name="periods"
55
+ label="Periods"
56
+ rowLabel="period"
57
+ max={6}
58
+ reorderable
59
+ newRow={() => ({ name: '' })}
60
+ renderRow={({ index }) => (
61
+ <TextFormField control={control} name={`periods.${index}.name`} label="Name" />
62
+ )}
63
+ />
64
+ ```
65
+
66
+ ```vue
67
+ <RepeatableGroupFormField
68
+ name="periods"
69
+ label="Periods"
70
+ row-label="period"
71
+ :max="6"
72
+ reorderable
73
+ :new-row="() => ({ name: '' })"
74
+ >
75
+ <template #row="{ path }">
76
+ <TextFormField :name="`${path}.name`" label="Name" />
77
+ </template>
78
+ </RepeatableGroupFormField>
79
+ ```
80
+
81
+ Fixes [#516](https://github.com/softistx/nxgt-material/issues/516).
82
+
83
+ Migration: an app with a local field-array list marked temporary for this
84
+ request ([#516](https://github.com/softistx/nxgt-material/issues/516)) — a `useFieldArray` whose rows are mapped by hand, with its own
85
+ Add and per-row Remove buttons — can delete it and render
86
+ `RepeatableGroupFormField` instead: the array's `name`, `newRow` for what Add
87
+ appends, and the row's fields moved into `renderRow` / the `row` slot. Pass no
88
+ `shouldFocus` to `append`: the group moves the focus itself.
89
+
90
+ - [#568](https://github.com/softistx/nxgt-material/pull/568) [`d694897`](https://github.com/softistx/nxgt-material/commit/d694897134f52b5d39f775d3ddc1bbaf24d26360) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `SearchField` takes `shortcut` (for example `"/"`): a `Kbd` hint at the end while the field is empty (also hidden while it is `loading` or `disabled`), hidden from assistive tech, and `aria-keyshortcuts` on the input. It is a hint only and binds no key; the page owns the listener. In Vue the component also exposes `focus()`.
91
+
92
+ `CommandItem` takes `checked`, which sets `aria-checked` and shows a checkbox indicator, and `CommandList` takes `multiselectable`, which sets `aria-multiselectable`. `aria-selected` keeps its meaning in each library (React: the highlighted item; Vue: the selected value, `multiple` is not used).
93
+
94
+ - [#567](https://github.com/softistx/nxgt-material/pull/567) [`8f8530a`](https://github.com/softistx/nxgt-material/commit/8f8530a1fec64f45407d526769890f656eb395b4) Thanks [@SteveGT96](https://github.com/SteveGT96)! - feat: `Typography` takes a `tone` (`default`, `muted`, `primary`, `error`), so secondary text is `tone="muted"` instead of a hand-written `text-muted-foreground`. Fix: `Typography` no longer adds `overflow-auto`, which made every block a scroll region (axe `scrollable-region-focusable` in Firefox). Behaviour change: a `Typography` that relied on scrolling its text now overflows; wrap it in an element with `overflow-auto`, `tabIndex={0}` and an accessible name (see the troubleshooting entry "Long text in Typography no longer scrolls"). A block `Typography` is also no longer a block formatting context, so its margins can collapse. An unbreakable string can overflow its box: add `wrap-anywhere`. Block text in a flex or grid row needs `min-w-0` to shrink, as the library's own flex rows now have. Components that put a `Typography` inside a `<button>` (stepper, inline edit, chat conversation item, list tile, event chip) render it as a `span`.
95
+
96
+ ### Patch Changes
97
+
98
+ - [#572](https://github.com/softistx/nxgt-material/pull/572) [`0a4b707`](https://github.com/softistx/nxgt-material/commit/0a4b7078eaf2d8e9c3bf15556ecff7f13e03d11d) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Sidebar: a link entry (`SidebarMenuItem` with `href`, so every `AppSidebar` and `ActivityLayout` entry) now looks exactly like a button entry. The global link style (underline, info tint on hover and focus) no longer reaches it, so in the collapsed rail hover tints only the icon pill again, not the whole entry ([#566](https://github.com/softistx/nxgt-material/issues/566)).
99
+
100
+ The selected entry no longer looks disabled ([#571](https://github.com/softistx/nxgt-material/issues/571)): its icon and label are in primary on the translucent pill, where the icon used to be white, and its label is semibold. In the dark theme, where primary itself reads at 2.5:1, they take a saturated lavender of primary's hue (`oklch(from primary 0.72 0.15 h)`), at 6.3:1 on a denser pill (`bg-primary/30`). In light the contrast is 5.8:1. Both layers of a duotone icon follow it. An unselected entry's icon takes its label's colour instead of the link blue. This covers the collapsed rail, the expanded sidebar and the phone sheet, for link and button entries alike.
101
+ - Updated dependencies [[`c00f8c3`](https://github.com/softistx/nxgt-material/commit/c00f8c366e35b7769560bb86b964ae0705bcc60f)]:
102
+ - @nxgt/material-core@0.11.0
103
+
3
104
  ## 0.37.1
4
105
 
5
106
  ### Patch Changes
package/README.md CHANGED
@@ -405,6 +405,7 @@ React-only for now: `StepperIndicator` ([roadmap](https://cdn.jsdelivr.net/npm/@
405
405
  | --- | --- | --- | --- |
406
406
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-field.webp" width="120" alt="Field"> | [`Field`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#field) | Renders the field matching a config `type` (text, select, date, upload, otp…). | `Field`, `FormField` |
407
407
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-formsection.webp" width="120" alt="FormSection"> | [`FormSection`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#formsection) | A titled section of a form (an `h2` by default) with an optional description and actions, its fields in the form grid's columns, one column on a phone. | `FormSection` |
408
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-repeatablegroup.webp" width="120" alt="RepeatableGroup"> | [`RepeatableGroup`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#repeatablegroup) · `RepeatableGroupFormField` | Rows of fields a user adds, removes and reorders (`useFieldArray`), a list for assistive tech, focus that follows each change, one column on a phone. | `RepeatableGroup`, `RepeatableGroupFormField` |
408
409
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-textfield.webp" width="120" alt="TextField"> | [`TextField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#textfield) · `TextFormField` | Labelled input with leading / trailing adornments and helper text. | `TextField`, `TextFormField` |
409
410
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-textareafield.webp" width="120" alt="TextareaField"> | [`TextareaField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#textareafield) · `TextareaFormField` | Labelled textarea with row sizing and a `maxLength` counter. | `TextareaField`, `TextareaFormField` |
410
411
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/previews/form-fields-emailfield.webp" width="120" alt="EmailField"> | [`EmailField`](https://cdn.jsdelivr.net/npm/@nxgt/material-vue@0/docs/components/form-fields.md#emailfield) · `EmailFormField` | Validates on blur; shows a `mailto:` button once the address is valid. | `EmailField`, `EmailFormField` |
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./utils-CykWQ0iJ.js";
2
- import { t } from "./use-material-translation-DRB6oPdF.js";
2
+ import { t } from "./use-material-translation-C6xccbic.js";
3
3
  import { Comment as n, Fragment as r, Text as i, computed as a, createBlock as o, createElementBlock as s, createElementVNode as c, createTextVNode as l, createVNode as u, defineComponent as d, guardReactiveProps as f, h as p, inject as ee, isVNode as m, mergeProps as h, normalizeClass as g, normalizeProps as _, onBeforeUnmount as v, openBlock as y, provide as b, ref as x, renderSlot as S, shallowRef as C, unref as w, useAttrs as te, useSlots as ne, watch as T, withCtx as E } from "vue";
4
4
  import { Primitive as D, TooltipArrow as O, TooltipContent as k, TooltipPortal as A, TooltipProvider as re, TooltipRoot as j, TooltipTrigger as M, useForwardPropsEmits as N } from "reka-ui";
5
5
  import { cva as P } from "class-variance-authority";
@@ -1,12 +1,12 @@
1
1
  import { t as e } from "./utils-CykWQ0iJ.js";
2
- import { t } from "./use-inert-others-CtGqZKR8.js";
3
- import { createBlock as n, createElementVNode as r, createVNode as i, defineComponent as a, guardReactiveProps as o, mergeProps as s, normalizeProps as c, openBlock as l, renderSlot as u, unref as d, withCtx as f } from "vue";
4
- import { Circle as p } from "@lucide/vue";
5
- import { DropdownMenuContent as m, DropdownMenuItemIndicator as h, DropdownMenuPortal as g, DropdownMenuRadioGroup as _, DropdownMenuRadioItem as v, DropdownMenuRoot as y, DropdownMenuSeparator as b, DropdownMenuTrigger as x, injectDropdownMenuRootContext as S, useForwardProps as C, useForwardPropsEmits as w } from "reka-ui";
6
- import { reactiveOmit as T } from "@vueuse/core";
2
+ import { r as t, t as n } from "./in-dialog-Blhwwbyb.js";
3
+ import { createBlock as r, createElementVNode as i, createVNode as a, defineComponent as o, guardReactiveProps as s, mergeProps as c, normalizeProps as l, openBlock as u, renderSlot as d, unref as f, withCtx as p } from "vue";
4
+ import { Circle as m } from "@lucide/vue";
5
+ import { DropdownMenuContent as h, DropdownMenuItemIndicator as g, DropdownMenuPortal as _, DropdownMenuRadioGroup as v, DropdownMenuRadioItem as y, DropdownMenuRoot as b, DropdownMenuSeparator as x, DropdownMenuTrigger as S, injectDropdownMenuRootContext as C, useForwardProps as w, useForwardPropsEmits as T } from "reka-ui";
6
+ import { reactiveOmit as E } from "@vueuse/core";
7
7
  //#endregion
8
8
  //#region lib/components/ui/overlays/dropdown-menu/DropdownMenu.vue
9
- var E = /* @__PURE__ */ a({
9
+ var D = /* @__PURE__ */ o({
10
10
  __name: "DropdownMenu",
11
11
  props: {
12
12
  defaultOpen: { type: Boolean },
@@ -19,13 +19,13 @@ var E = /* @__PURE__ */ a({
19
19
  },
20
20
  emits: ["update:open"],
21
21
  setup(e, { emit: t }) {
22
- let r = e, i = w(r, t);
23
- return (e, t) => (l(), n(d(y), s({ "data-slot": "dropdown-menu" }, d(i), { modal: r.modal }), {
24
- default: f((t) => [u(e.$slots, "default", c(o(t)))]),
22
+ let n = e, i = T(n, t);
23
+ return (e, t) => (u(), r(f(b), c({ "data-slot": "dropdown-menu" }, f(i), { modal: n.modal }), {
24
+ default: p((t) => [d(e.$slots, "default", l(s(t)))]),
25
25
  _: 3
26
26
  }, 16, ["modal"]));
27
27
  }
28
- }), D = /* @__PURE__ */ a({
28
+ }), O = /* @__PURE__ */ o({
29
29
  inheritAttrs: !1,
30
30
  __name: "DropdownMenuContent",
31
31
  props: {
@@ -68,23 +68,23 @@ var E = /* @__PURE__ */ a({
68
68
  "interactOutside",
69
69
  "closeAutoFocus"
70
70
  ],
71
- setup(r, { emit: a }) {
72
- let o = r, c = a, p = w(T(o, "class", "to"), c), h = S();
73
- return t("content", () => h.modal.value && h.open.value), (t, a) => (l(), n(d(g), { to: r.to }, {
74
- default: f(() => [i(d(m), s({
71
+ setup(i, { emit: o }) {
72
+ let s = i, l = o, m = T(E(s, "class", "to"), l), g = C();
73
+ return t("content", () => g.modal.value && g.open.value), n(!1), (t, n) => (u(), r(f(_), { to: i.to }, {
74
+ default: p(() => [a(f(h), c({
75
75
  ref: "content",
76
76
  "data-slot": "dropdown-menu-content"
77
77
  }, {
78
78
  ...t.$attrs,
79
- ...d(p)
80
- }, { class: d(e)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 max-h-(--reka-dropdown-menu-content-available-height) min-w-[8rem] origin-(--reka-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", o.class) }), {
81
- default: f(() => [u(t.$slots, "default")]),
79
+ ...f(m)
80
+ }, { class: f(e)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 max-h-(--reka-dropdown-menu-content-available-height) min-w-[8rem] origin-(--reka-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", s.class) }), {
81
+ default: p(() => [d(t.$slots, "default")]),
82
82
  _: 3
83
83
  }, 16, ["class"])]),
84
84
  _: 3
85
85
  }, 8, ["to"]));
86
86
  }
87
- }), O = /* @__PURE__ */ a({
87
+ }), k = /* @__PURE__ */ o({
88
88
  __name: "DropdownMenuRadioGroup",
89
89
  props: {
90
90
  modelValue: {},
@@ -93,13 +93,13 @@ var E = /* @__PURE__ */ a({
93
93
  },
94
94
  emits: ["update:modelValue"],
95
95
  setup(e, { emit: t }) {
96
- let r = w(e, t);
97
- return (e, t) => (l(), n(d(_), s({ "data-slot": "dropdown-menu-radio-group" }, d(r)), {
98
- default: f(() => [u(e.$slots, "default")]),
96
+ let n = T(e, t);
97
+ return (e, t) => (u(), r(f(v), c({ "data-slot": "dropdown-menu-radio-group" }, f(n)), {
98
+ default: p(() => [d(e.$slots, "default")]),
99
99
  _: 3
100
100
  }, 16));
101
101
  }
102
- }), k = { class: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center" }, A = /* @__PURE__ */ a({
102
+ }), A = { class: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center" }, j = /* @__PURE__ */ o({
103
103
  __name: "DropdownMenuRadioItem",
104
104
  props: {
105
105
  value: {},
@@ -116,17 +116,17 @@ var E = /* @__PURE__ */ a({
116
116
  ] }
117
117
  },
118
118
  emits: ["select"],
119
- setup(t, { emit: a }) {
120
- let o = t, c = a, m = w(T(o, "class"), c);
121
- return (t, a) => (l(), n(d(v), s({ "data-slot": "dropdown-menu-radio-item" }, d(m), { class: d(e)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", o.class) }), {
122
- default: f(() => [r("span", k, [i(d(h), null, {
123
- default: f(() => [u(t.$slots, "indicator-icon", {}, () => [i(d(p), { class: "size-2 fill-current" })])]),
119
+ setup(t, { emit: n }) {
120
+ let o = t, s = n, l = T(E(o, "class"), s);
121
+ return (t, n) => (u(), r(f(y), c({ "data-slot": "dropdown-menu-radio-item" }, f(l), { class: f(e)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", o.class) }), {
122
+ default: p(() => [i("span", A, [a(f(g), null, {
123
+ default: p(() => [d(t.$slots, "indicator-icon", {}, () => [a(f(m), { class: "size-2 fill-current" })])]),
124
124
  _: 3
125
- })]), u(t.$slots, "default")]),
125
+ })]), d(t.$slots, "default")]),
126
126
  _: 3
127
127
  }, 16, ["class"]));
128
128
  }
129
- }), j = /* @__PURE__ */ a({
129
+ }), M = /* @__PURE__ */ o({
130
130
  __name: "DropdownMenuSeparator",
131
131
  props: {
132
132
  asChild: { type: Boolean },
@@ -140,10 +140,10 @@ var E = /* @__PURE__ */ a({
140
140
  ] }
141
141
  },
142
142
  setup(t) {
143
- let r = t, i = T(r, "class");
144
- return (t, a) => (l(), n(d(b), s({ "data-slot": "dropdown-menu-separator" }, d(i), { class: d(e)("bg-border -mx-1 my-1 h-px", r.class) }), null, 16, ["class"]));
143
+ let n = t, i = E(n, "class");
144
+ return (t, a) => (u(), r(f(x), c({ "data-slot": "dropdown-menu-separator" }, f(i), { class: f(e)("bg-border -mx-1 my-1 h-px", n.class) }), null, 16, ["class"]));
145
145
  }
146
- }), M = /* @__PURE__ */ a({
146
+ }), N = /* @__PURE__ */ o({
147
147
  __name: "DropdownMenuTrigger",
148
148
  props: {
149
149
  disabled: { type: Boolean },
@@ -151,12 +151,12 @@ var E = /* @__PURE__ */ a({
151
151
  as: {}
152
152
  },
153
153
  setup(e) {
154
- let t = C(e);
155
- return (e, r) => (l(), n(d(x), s({ "data-slot": "dropdown-menu-trigger" }, d(t)), {
156
- default: f(() => [u(e.$slots, "default")]),
154
+ let t = w(e);
155
+ return (e, n) => (u(), r(f(S), c({ "data-slot": "dropdown-menu-trigger" }, f(t)), {
156
+ default: p(() => [d(e.$slots, "default")]),
157
157
  _: 3
158
158
  }, 16));
159
159
  }
160
160
  });
161
161
  //#endregion
162
- export { D as a, O as i, j as n, E as o, A as r, M as t };
162
+ export { O as a, k as i, M as n, D as o, j as r, N as t };