@marwes-ui/vue 1.1.0 → 1.2.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 CHANGED
@@ -1,6 +1,8 @@
1
+ Vue 3 components for the Marwes design system with default styling, typed theme tokens, accessibility contracts, and AI-readable semantics.
2
+
1
3
  <div align="center">
2
4
 
3
- <img alt="Marwes Design System" src="https://raw.githubusercontent.com/niklas-westman/marwes/main/.github/assets/banner.png" width="100%" style="border-radius: 40px;">
5
+ <img alt="Marwes Design System" src="https://raw.githubusercontent.com/niklas-westman/marwes/main/.github/assets/cover-v3.png" width="100%" style="border-radius: 40px;">
4
6
 
5
7
  <br>
6
8
  <br>
@@ -11,7 +13,7 @@
11
13
 
12
14
  Vue 3.4+ • TypeScript-first • Default CSS included • ThemeInput • Google Fonts DX • Purpose components
13
15
 
14
- [Documentation](https://github.com/niklas-westman/marwes/tree/main/docs) • [Storybook](https://d3hobet9plpuvm.cloudfront.net/storybook-react/latest/) • [GitHub](https://github.com/niklas-westman/marwes)
16
+ [Documentation](https://github.com/niklas-westman/marwes/tree/main/docs) • [Vue Storybook](https://storybook-vue.marwes.io/latest/) • [GitHub](https://github.com/niklas-westman/marwes)
15
17
 
16
18
  </div>
17
19
 
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as vue from 'vue';
2
2
  import { ComputedRef, VNodeChild } from 'vue';
3
3
  import * as _marwes_ui_core from '@marwes-ui/core';
4
- import { ThemeInput, ThemePreference, ThemeMode, FontLoadingConfig, ThemeVariableStrategy, ResolvedTheme, ButtonOptions, InputOptions, SelectOptions, SelectAppearance as SelectAppearance$1, SelectOption as SelectOption$1, TextareaOptions, RichTextOptions, InputOtpOptions, CurrencyCode, iconRegistry, IconSize, IconStrokeWidth, AvatarOptions, CheckboxProps as CheckboxProps$1, DividerOptions, DividerSize, DividerOrientation, SpinnerOptions, SpacingOptions, SpacingSize, HeadingOptions, HeadingSize, ParagraphOptions, ParagraphSize, ToastOptions, ToastVariant, ToastIntent, ToastPlacement, TooltipOptions, IconNameType, RadioOptions, BadgeOptions, SwitchOptions, SliderOptions, TabOptions, DialogOptions } from '@marwes-ui/core';
4
+ import { ThemeInput, ThemePreference, ThemeMode, FontLoadingConfig, ThemeVariableStrategy, ResolvedTheme, ButtonOptions, InputOptions, SelectOptions, SelectAppearance as SelectAppearance$1, SelectOption as SelectOption$1, TextareaOptions, RichTextOptions, InputOtpOptions, CurrencyCode, iconRegistry, IconSize, IconStrokeWidth, AvatarOptions, CheckboxProps as CheckboxProps$1, DividerOptions, DividerSize, DividerOrientation, SpinnerOptions, SkeletonOptions, SpacingOptions, SpacingSize, HeadingOptions, HeadingSize, ParagraphOptions, ParagraphSize, StatTileOptions, StatTileTrendDirection, StatTileTone, DatePickerOptions, DatePickerDevice, ToastOptions, ToastVariant, ToastIntent, ToastPlacement, TooltipOptions, IconNameType, RadioOptions, BadgeOptions, SwitchOptions, SliderOptions, TabOptions, DialogOptions } from '@marwes-ui/core';
5
5
  export { AvatarSize, AvatarType, BadgeVariant, ButtonAction, ButtonSize, ButtonVariant, Density, FontLoadingConfig, FontLoadingMode, FontLoadingOptions, IconName, MarwesThemeScriptOptions, MarwesThemeStyleOptions, MwAvailableFont, MwFontFallback, MwGoogleFontFamily, MwStyledTheme, MwThemeVarName, MwThemeVarNames, MwThemeVarReference, MwThemeVars, ResolvedTheme, SpacingSize, Spacings, SwitchSize, Theme, ThemeInput, ThemeMode, ThemeModeAttribute, ThemeModeRootTarget, ThemePreference, ThemeVariableStrategy, ToneName, createFontStack, createMarwesThemeScript, createMarwesThemeStyle, mwAvailableFonts, mwFontFallbacks, mwGoogleFontFamilies, mwStyledTheme, mwThemeVarNames, mwThemeVars, mwVar } from '@marwes-ui/core';
6
6
 
7
7
  type ThemeTarget = "provider" | "html" | "body";
@@ -1198,6 +1198,7 @@ declare const InputOtp: vue.DefineSetupFnComponent<InputOtpProps, ("change" | "u
1198
1198
  "onValue-change"?: (...args: any[]) => any;
1199
1199
  }, vue.PublicProps>;
1200
1200
 
1201
+ type SelectFieldVariant = "default" | "date";
1201
1202
  type SelectFieldProps = {
1202
1203
  id?: string;
1203
1204
  label: string;
@@ -1206,6 +1207,7 @@ type SelectFieldProps = {
1206
1207
  select: SelectProps;
1207
1208
  ariaDescribedBy?: string;
1208
1209
  modelValue?: string;
1210
+ variant?: SelectFieldVariant;
1209
1211
  };
1210
1212
  declare const SelectField: vue.DefineSetupFnComponent<SelectFieldProps, ("update:modelValue" | "value-change")[], {}, SelectFieldProps & {
1211
1213
  "onUpdate:modelValue"?: (...args: any[]) => any;
@@ -1714,6 +1716,15 @@ declare const EmptyStateSpinner: vue.DefineComponent<{
1714
1716
  variant?: any;
1715
1717
  }> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
1716
1718
 
1719
+ type SkeletonProps = SkeletonOptions & {
1720
+ className?: string;
1721
+ dataAttributes?: Record<string, string>;
1722
+ };
1723
+ declare const Skeleton: vue.DefineSetupFnComponent<SkeletonProps, {}, {}, SkeletonOptions & {
1724
+ className?: string;
1725
+ dataAttributes?: Record<string, string>;
1726
+ } & {}, vue.PublicProps>;
1727
+
1717
1728
  type SpacingProps = SpacingOptions & {
1718
1729
  size?: SpacingSize;
1719
1730
  spacing?: SpacingSize;
@@ -1765,6 +1776,31 @@ declare const Paragraph: vue.DefineSetupFnComponent<ParagraphProps, {}, {}, Para
1765
1776
  className?: string;
1766
1777
  } & {}, vue.PublicProps>;
1767
1778
 
1779
+ interface StatTileProps extends Pick<StatTileOptions, "dataAttributes"> {
1780
+ className?: string;
1781
+ label: string;
1782
+ value: string;
1783
+ subtitle?: string;
1784
+ trendValue?: string;
1785
+ trendDirection?: StatTileTrendDirection;
1786
+ tone?: StatTileTone;
1787
+ }
1788
+ declare const StatTile: vue.DefineSetupFnComponent<StatTileProps, {}, {}, StatTileProps & {}, vue.PublicProps>;
1789
+
1790
+ interface DatePickerProps extends Pick<DatePickerOptions, "monthLabel" | "weekdayLabels" | "weeks" | "previousYearLabel" | "previousMonthLabel" | "nextMonthLabel" | "nextYearLabel" | "cancelLabel" | "applyLabel" | "calendarLabel" | "dataAttributes"> {
1791
+ className?: string;
1792
+ device?: DatePickerDevice;
1793
+ }
1794
+ declare const DatePicker: vue.DefineSetupFnComponent<DatePickerProps, ("cancel" | "previousYear" | "previousMonth" | "nextMonth" | "nextYear" | "daySelect" | "apply")[], {}, DatePickerProps & {
1795
+ onCancel?: (...args: any[]) => any;
1796
+ onPreviousYear?: (...args: any[]) => any;
1797
+ onPreviousMonth?: (...args: any[]) => any;
1798
+ onNextMonth?: (...args: any[]) => any;
1799
+ onNextYear?: (...args: any[]) => any;
1800
+ onDaySelect?: (...args: any[]) => any;
1801
+ onApply?: (...args: any[]) => any;
1802
+ }, vue.PublicProps>;
1803
+
1768
1804
  interface CardProps {
1769
1805
  className?: string;
1770
1806
  id?: string;
@@ -2759,6 +2795,7 @@ declare const ConfirmDialog: vue.DefineComponent<{
2759
2795
  onCancel?: any;
2760
2796
  className?: any;
2761
2797
  description?: any;
2798
+ cancelLabel?: any;
2762
2799
  open?: any;
2763
2800
  defaultOpen?: any;
2764
2801
  showFooter?: any;
@@ -2769,7 +2806,6 @@ declare const ConfirmDialog: vue.DefineComponent<{
2769
2806
  portalTarget?: any;
2770
2807
  overlayClassName?: any;
2771
2808
  confirmLabel?: any;
2772
- cancelLabel?: any;
2773
2809
  onConfirm?: any;
2774
2810
  }, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
2775
2811
  [key: string]: any;
@@ -2784,6 +2820,7 @@ declare const ConfirmDialog: vue.DefineComponent<{
2784
2820
  onCancel?: any;
2785
2821
  className?: any;
2786
2822
  description?: any;
2823
+ cancelLabel?: any;
2787
2824
  open?: any;
2788
2825
  defaultOpen?: any;
2789
2826
  showFooter?: any;
@@ -2794,7 +2831,6 @@ declare const ConfirmDialog: vue.DefineComponent<{
2794
2831
  portalTarget?: any;
2795
2832
  overlayClassName?: any;
2796
2833
  confirmLabel?: any;
2797
- cancelLabel?: any;
2798
2834
  onConfirm?: any;
2799
2835
  }> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
2800
2836
  type DestructiveDialogProps = Omit<DialogModalProps, "footer"> & {
@@ -2814,6 +2850,7 @@ declare const DestructiveDialog: vue.DefineComponent<{
2814
2850
  onCancel?: any;
2815
2851
  className?: any;
2816
2852
  description?: any;
2853
+ cancelLabel?: any;
2817
2854
  open?: any;
2818
2855
  defaultOpen?: any;
2819
2856
  showFooter?: any;
@@ -2824,7 +2861,6 @@ declare const DestructiveDialog: vue.DefineComponent<{
2824
2861
  portalTarget?: any;
2825
2862
  overlayClassName?: any;
2826
2863
  confirmLabel?: any;
2827
- cancelLabel?: any;
2828
2864
  onConfirm?: any;
2829
2865
  }, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
2830
2866
  [key: string]: any;
@@ -2839,6 +2875,7 @@ declare const DestructiveDialog: vue.DefineComponent<{
2839
2875
  onCancel?: any;
2840
2876
  className?: any;
2841
2877
  description?: any;
2878
+ cancelLabel?: any;
2842
2879
  open?: any;
2843
2880
  defaultOpen?: any;
2844
2881
  showFooter?: any;
@@ -2849,7 +2886,6 @@ declare const DestructiveDialog: vue.DefineComponent<{
2849
2886
  portalTarget?: any;
2850
2887
  overlayClassName?: any;
2851
2888
  confirmLabel?: any;
2852
- cancelLabel?: any;
2853
2889
  onConfirm?: any;
2854
2890
  }> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
2855
2891
  type InfoDialogProps = Omit<DialogModalProps, "footer"> & {
@@ -2902,4 +2938,4 @@ declare const InfoDialog: vue.DefineComponent<{
2902
2938
  onAcknowledge?: any;
2903
2939
  }> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
2904
2940
 
2905
- export { Accordion, AccordionField, type AccordionFieldItem, type AccordionFieldProps, type AccordionProps, Avatar, AvatarBadge, type AvatarBadgeProps, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarProps, Badge, BadgeGroup, type BadgeGroupProps, type BadgeProps, BrightnessSlider, type BrightnessSliderProps, Button, type ButtonProps, ButtonSpinner, type ButtonSpinnerProps, CancelButton, type CancelButtonProps, Card, type CardProps, Checkbox, CheckboxField, type CheckboxFieldProps, CheckboxGroupField, type CheckboxGroupFieldOption, type CheckboxGroupFieldProps, type CheckboxProps, CloseButton, type CloseButtonProps, ConfirmButton, type ConfirmButtonProps, ConfirmDialog, type ConfirmDialogProps, ContentTabs, type ContentTabsProps, CopyButton, type CopyButtonProps, CreateButton, type CreateButtonProps, CurrencyField, type CurrencyFieldProps, DateOfBirthField, type DateOfBirthFieldProps, DestructiveButton, type DestructiveButtonProps, DestructiveDialog, type DestructiveDialogProps, Dialog, type DialogFooterControls, DialogModal, type DialogModalProps, type DialogProps, Divider, type DividerProps, DownloadButton, type DownloadButtonProps, DropdownButton, type DropdownButtonProps, DropdownField, type DropdownFieldProps, EditButton, type EditButtonProps, EmailField, type EmailFieldProps, EmptyStateSpinner, type EmptyStateSpinnerProps, ErrorToast, type ErrorToastProps, FAQAccordion, type FAQAccordionProps, FeatureToggle, type FeatureToggleProps, FilterButton, type FilterButtonProps, H1, H2, H3, type HeadingLevel, type HeadingProps, Icon, type IconProps, InfoDialog, type InfoDialogProps, InfoToast, type InfoToastProps, Input, InputField, type InputFieldProps, InputOtp, type InputOtpProps, type InputProps, LinkButton, type LinkButtonProps, type ManagedToast, MarwesProvider, type MarwesProviderProps, NavigationTabs, type NavigationTabsProps, NotificationBadge, type NotificationBadgeProps, OptionRadioGroup, type OptionRadioGroupProps, Paragraph, type ParagraphProps, PasswordField, type PasswordFieldProps, PermissionSwitch, type PermissionSwitchProps, PhoneField, type PhoneFieldProps, PreferenceSwitch, type PreferenceSwitchProps, PresenceAvatar, type PresenceAvatarProps, PrimaryButton, type PrimaryButtonProps, PriorityBadge, type PriorityBadgeProps, ProductCard, type ProductCardProps, ProfileAvatar, type ProfileAvatarProps, ProfileCard, type ProfileCardProps, Radio, RadioGroupField, type RadioGroupFieldOption, type RadioGroupFieldProps, type RadioProps, RadiusSlider, type RadiusSliderProps, RatingRadioGroup, type RatingRadioGroupProps, RefreshButton, type RefreshButtonProps, RichText, RichTextField, type RichTextFieldProps, type RichTextProps, SaveButton, type SaveButtonProps, SearchButton, type SearchButtonProps, SearchField, type SearchFieldProps, SecondaryButton, type SecondaryButtonProps, SectionsAccordion, type SectionsAccordionProps, Select, type SelectAppearance, SelectField, type SelectFieldProps, type SelectOption, type SelectProps, SettingsAccordion, type SettingsAccordionProps, SettingsTabs, type SettingsTabsProps, type ShowToastOptions, Slider, SliderField, type SliderFieldProps, type SliderProps, SortButton, type SortButtonProps, Spacer, type SpacerProps, Spacing, type SpacingProps, Spinner, type SpinnerProps, StatCard, type StatCardProps, StatusBadge, type StatusBadgeProps, SubmitButton, type SubmitButtonProps, SuccessButton, type SuccessButtonProps, SuccessToast, type SuccessToastProps, Switch, SwitchField, type SwitchFieldProps, type SwitchProps, Tab, TabGroup, type TabGroupItem, type TabGroupProps, TabPanel, type TabPanelProps, type TabProps, TeamAvatarGroup, type TeamAvatarGroupProps, TextButton, type TextButtonProps, Textarea, TextareaField, type TextareaFieldProps, type TextareaProps, type ThemeModeContextValue, Toast, ToastContainer, type ToastContainerProps, type ToastController, type ToastProps, ToastProvider, type ToastProviderProps, Tooltip, TooltipGroup, type TooltipGroupProps, type TooltipProps, URLField, type URLFieldProps, UploadButton, type UploadButtonProps, VerifyButton, type VerifyButtonProps, VolumeSlider, type VolumeSliderProps, WarningToast, type WarningToastProps, YesNoRadioGroup, type YesNoRadioGroupProps, ZipCodeField, type ZipCodeFieldProps, createHeadingComponent, useTheme, useThemeMode, useToast };
2941
+ export { Accordion, AccordionField, type AccordionFieldItem, type AccordionFieldProps, type AccordionProps, Avatar, AvatarBadge, type AvatarBadgeProps, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarProps, Badge, BadgeGroup, type BadgeGroupProps, type BadgeProps, BrightnessSlider, type BrightnessSliderProps, Button, type ButtonProps, ButtonSpinner, type ButtonSpinnerProps, CancelButton, type CancelButtonProps, Card, type CardProps, Checkbox, CheckboxField, type CheckboxFieldProps, CheckboxGroupField, type CheckboxGroupFieldOption, type CheckboxGroupFieldProps, type CheckboxProps, CloseButton, type CloseButtonProps, ConfirmButton, type ConfirmButtonProps, ConfirmDialog, type ConfirmDialogProps, ContentTabs, type ContentTabsProps, CopyButton, type CopyButtonProps, CreateButton, type CreateButtonProps, CurrencyField, type CurrencyFieldProps, DateOfBirthField, type DateOfBirthFieldProps, DatePicker, type DatePickerProps, DestructiveButton, type DestructiveButtonProps, DestructiveDialog, type DestructiveDialogProps, Dialog, type DialogFooterControls, DialogModal, type DialogModalProps, type DialogProps, Divider, type DividerProps, DownloadButton, type DownloadButtonProps, DropdownButton, type DropdownButtonProps, DropdownField, type DropdownFieldProps, EditButton, type EditButtonProps, EmailField, type EmailFieldProps, EmptyStateSpinner, type EmptyStateSpinnerProps, ErrorToast, type ErrorToastProps, FAQAccordion, type FAQAccordionProps, FeatureToggle, type FeatureToggleProps, FilterButton, type FilterButtonProps, H1, H2, H3, type HeadingLevel, type HeadingProps, Icon, type IconProps, InfoDialog, type InfoDialogProps, InfoToast, type InfoToastProps, Input, InputField, type InputFieldProps, InputOtp, type InputOtpProps, type InputProps, LinkButton, type LinkButtonProps, type ManagedToast, MarwesProvider, type MarwesProviderProps, NavigationTabs, type NavigationTabsProps, NotificationBadge, type NotificationBadgeProps, OptionRadioGroup, type OptionRadioGroupProps, Paragraph, type ParagraphProps, PasswordField, type PasswordFieldProps, PermissionSwitch, type PermissionSwitchProps, PhoneField, type PhoneFieldProps, PreferenceSwitch, type PreferenceSwitchProps, PresenceAvatar, type PresenceAvatarProps, PrimaryButton, type PrimaryButtonProps, PriorityBadge, type PriorityBadgeProps, ProductCard, type ProductCardProps, ProfileAvatar, type ProfileAvatarProps, ProfileCard, type ProfileCardProps, Radio, RadioGroupField, type RadioGroupFieldOption, type RadioGroupFieldProps, type RadioProps, RadiusSlider, type RadiusSliderProps, RatingRadioGroup, type RatingRadioGroupProps, RefreshButton, type RefreshButtonProps, RichText, RichTextField, type RichTextFieldProps, type RichTextProps, SaveButton, type SaveButtonProps, SearchButton, type SearchButtonProps, SearchField, type SearchFieldProps, SecondaryButton, type SecondaryButtonProps, SectionsAccordion, type SectionsAccordionProps, Select, type SelectAppearance, SelectField, type SelectFieldProps, type SelectOption, type SelectProps, SettingsAccordion, type SettingsAccordionProps, SettingsTabs, type SettingsTabsProps, type ShowToastOptions, Skeleton, type SkeletonProps, Slider, SliderField, type SliderFieldProps, type SliderProps, SortButton, type SortButtonProps, Spacer, type SpacerProps, Spacing, type SpacingProps, Spinner, type SpinnerProps, StatCard, type StatCardProps, StatTile, type StatTileProps, StatusBadge, type StatusBadgeProps, SubmitButton, type SubmitButtonProps, SuccessButton, type SuccessButtonProps, SuccessToast, type SuccessToastProps, Switch, SwitchField, type SwitchFieldProps, type SwitchProps, Tab, TabGroup, type TabGroupItem, type TabGroupProps, TabPanel, type TabPanelProps, type TabProps, TeamAvatarGroup, type TeamAvatarGroupProps, TextButton, type TextButtonProps, Textarea, TextareaField, type TextareaFieldProps, type TextareaProps, type ThemeModeContextValue, Toast, ToastContainer, type ToastContainerProps, type ToastController, type ToastProps, ToastProvider, type ToastProviderProps, Tooltip, TooltipGroup, type TooltipGroupProps, type TooltipProps, URLField, type URLFieldProps, UploadButton, type UploadButtonProps, VerifyButton, type VerifyButtonProps, VolumeSlider, type VolumeSliderProps, WarningToast, type WarningToastProps, YesNoRadioGroup, type YesNoRadioGroupProps, ZipCodeField, type ZipCodeFieldProps, createHeadingComponent, useTheme, useThemeMode, useToast };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { createMarwesThemeScript, createMarwesThemeStyle } from './chunk-DVJD5CQS.js';
2
2
  import '@marwes-ui/presets/firstEdition/styles.css';
3
- import { ThemeMode, resolveThemePreference, resolveThemeInput, resolveIconSize, resolveIconStrokeWidth, iconRegistry, resolveIconA11y, createSpinnerRecipe, createButtonRecipe, ButtonAction, ButtonVariant, IconName, createInputRecipe, createSelectRecipe, resolveSelectMode, createTextareaRecipe, createRichTextRecipe, resolveRichTextAllowedFormats, normalizeRichTextHtml, isRichTextHtmlEmpty, paragraphRecipe, buildInputFieldA11yIds, sanitizeInputOtpValue, createInputOtpRecipe, buildRichTextFieldA11yIds, buildCurrencyHelperText, getCurrencySymbol, sanitizeCurrencyValue, createAvatarRecipe, createPurposeSemanticAttributes, checkboxRecipe, buildCheckboxFieldA11yIds, buildCheckboxGroupFieldA11yIds, createDividerRecipe, createSpacingRecipe, createCardRecipe, createToastRecipe, createTooltipRecipe, createAccordionRecipe, buildAccordionFieldA11yIds, radioRecipe, buildRadioGroupFieldA11yIds, createBadgeRecipe, createSwitchRecipe, buildSwitchFieldA11yIds, createSliderRecipe, buildSliderFieldA11yIds, createTabRecipe, resolveTabValue, buildTabGroupA11yIds, createDialogRecipe, isThemePreference, nextThemeMode, themeToCSSVars, richTextCommandByFormat, headingRecipe, moveTabSelection, extractUsedWeights, extractFontFamilyName, shouldLoadGoogleFont, buildGoogleFontsUrl } from '@marwes-ui/core';
3
+ import { ThemeMode, resolveThemePreference, resolveThemeInput, resolveIconSize, resolveIconStrokeWidth, iconRegistry, resolveIconA11y, createSpinnerRecipe, createButtonRecipe, ButtonAction, ButtonVariant, IconName, createInputRecipe, createSelectRecipe, resolveSelectMode, createTextareaRecipe, createRichTextRecipe, resolveRichTextAllowedFormats, normalizeRichTextHtml, isRichTextHtmlEmpty, paragraphRecipe, buildInputFieldA11yIds, sanitizeInputOtpValue, createInputOtpRecipe, buildRichTextFieldA11yIds, buildCurrencyHelperText, getCurrencySymbol, sanitizeCurrencyValue, createAvatarRecipe, createPurposeSemanticAttributes, checkboxRecipe, buildCheckboxFieldA11yIds, buildCheckboxGroupFieldA11yIds, createDividerRecipe, createSkeletonRecipe, createSpacingRecipe, createStatTileRecipe, createDatePickerRecipe, createCardRecipe, createToastRecipe, createTooltipRecipe, createAccordionRecipe, buildAccordionFieldA11yIds, radioRecipe, buildRadioGroupFieldA11yIds, createBadgeRecipe, createSwitchRecipe, buildSwitchFieldA11yIds, createSliderRecipe, buildSliderFieldA11yIds, createTabRecipe, resolveTabValue, buildTabGroupA11yIds, createDialogRecipe, isThemePreference, nextThemeMode, themeToCSSVars, richTextCommandByFormat, headingRecipe, moveTabSelection, extractUsedWeights, extractFontFamilyName, shouldLoadGoogleFont, buildGoogleFontsUrl } from '@marwes-ui/core';
4
4
  export { AvatarSize, AvatarType, BadgeVariant, ButtonAction, ButtonSize, ButtonVariant, IconName, Spacings, SwitchSize, ThemeMode, createFontStack, mwAvailableFonts, mwFontFallbacks, mwGoogleFontFamilies, mwStyledTheme, mwThemeVarNames, mwThemeVars, mwVar } from '@marwes-ui/core';
5
5
  import { defineComponent, ref, computed, onMounted, onUnmounted, watch, provide, h, useAttrs, onBeforeUnmount, shallowRef, Fragment, nextTick, Teleport, inject } from 'vue';
6
6
 
@@ -2277,7 +2277,8 @@ var selectFieldPropKeys = [
2277
2277
  "error",
2278
2278
  "select",
2279
2279
  "ariaDescribedBy",
2280
- "modelValue"
2280
+ "modelValue",
2281
+ "variant"
2281
2282
  ];
2282
2283
  function hasTextContent3(value) {
2283
2284
  return value !== void 0 && value.trim().length > 0;
@@ -2375,11 +2376,15 @@ var SelectField = defineComponent(
2375
2376
  const displayText = computed(
2376
2377
  () => placeholderSelected.value ? sourceSelect.value.placeholder ?? "" : selectedOption.value?.label ?? ""
2377
2378
  );
2379
+ const accessibleName = computed(
2380
+ () => sourceSelect.value.ariaLabel ?? (hasTextContent3(props.label) ? props.label : void 0) ?? (hasTextContent3(displayText.value) ? displayText.value : void 0)
2381
+ );
2378
2382
  const wrapperClass = computed(
2379
2383
  () => mergeClassNames(
2380
2384
  "mw-input-field",
2381
2385
  "mw-input-field--select",
2382
2386
  mode.value === "marwes" && "mw-input-field--select-marwes",
2387
+ props.variant === "date" && "mw-input-field--select-date",
2383
2388
  disabled.value && "mw-input-field--disabled",
2384
2389
  invalid.value && "mw-input-field--invalid"
2385
2390
  )
@@ -2576,6 +2581,7 @@ var SelectField = defineComponent(
2576
2581
  "aria-controls": `${id.value}-listbox`,
2577
2582
  "aria-expanded": open.value ? "true" : "false",
2578
2583
  "aria-haspopup": "listbox",
2584
+ "aria-label": accessibleName.value,
2579
2585
  "aria-describedby": a11yIds.value.describedBy,
2580
2586
  "aria-invalid": invalid.value ? "true" : void 0,
2581
2587
  "aria-required": sourceSelect.value.required ? "true" : void 0,
@@ -2908,9 +2914,9 @@ var SearchField = defineComponent({
2908
2914
  inheritAttrs: false,
2909
2915
  props: [...fieldPropKeys],
2910
2916
  emits: ["update:modelValue", "value-change"],
2911
- setup(_, { attrs, slots, emit }) {
2917
+ setup(rawProps, { slots, emit }) {
2912
2918
  return () => {
2913
- const props = attrs;
2919
+ const props = rawProps;
2914
2920
  return h("div", { "data-purpose": "search" }, [
2915
2921
  h(
2916
2922
  InputField,
@@ -2936,9 +2942,9 @@ var PasswordField = defineComponent({
2936
2942
  inheritAttrs: false,
2937
2943
  props: [...passwordFieldPropKeys],
2938
2944
  emits: ["update:modelValue", "value-change"],
2939
- setup(_, { attrs, slots, emit }) {
2945
+ setup(rawProps, { slots, emit }) {
2940
2946
  return () => {
2941
- const props = attrs;
2947
+ const props = rawProps;
2942
2948
  const autoComplete = props.autoComplete ?? "current-password";
2943
2949
  return h("div", { "data-purpose": "password" }, [
2944
2950
  h(
@@ -2964,9 +2970,9 @@ var EmailField = defineComponent({
2964
2970
  inheritAttrs: false,
2965
2971
  props: [...fieldPropKeys],
2966
2972
  emits: ["update:modelValue", "value-change"],
2967
- setup(_, { attrs, slots, emit }) {
2973
+ setup(rawProps, { slots, emit }) {
2968
2974
  return () => {
2969
- const props = attrs;
2975
+ const props = rawProps;
2970
2976
  return h("div", { "data-purpose": "email" }, [
2971
2977
  h(
2972
2978
  InputField,
@@ -3047,9 +3053,9 @@ var PhoneField = defineComponent({
3047
3053
  inheritAttrs: false,
3048
3054
  props: [...fieldPropKeys],
3049
3055
  emits: ["update:modelValue", "value-change"],
3050
- setup(_, { attrs, slots, emit }) {
3056
+ setup(rawProps, { slots, emit }) {
3051
3057
  return () => {
3052
- const props = attrs;
3058
+ const props = rawProps;
3053
3059
  return h("div", { "data-purpose": "phone" }, [
3054
3060
  h(
3055
3061
  InputField,
@@ -3075,9 +3081,9 @@ var URLField = defineComponent({
3075
3081
  inheritAttrs: false,
3076
3082
  props: [...fieldPropKeys],
3077
3083
  emits: ["update:modelValue", "value-change"],
3078
- setup(_, { attrs, slots, emit }) {
3084
+ setup(rawProps, { slots, emit }) {
3079
3085
  return () => {
3080
- const props = attrs;
3086
+ const props = rawProps;
3081
3087
  return h("div", { "data-purpose": "url" }, [
3082
3088
  h(
3083
3089
  InputField,
@@ -3811,6 +3817,61 @@ var Divider = defineComponent(
3811
3817
  props: [...dividerPropKeys]
3812
3818
  }
3813
3819
  );
3820
+ var skeletonPropKeys = [
3821
+ "variant",
3822
+ "width",
3823
+ "height",
3824
+ "radius",
3825
+ "animation",
3826
+ "decorative",
3827
+ "ariaLabel",
3828
+ "id",
3829
+ "className",
3830
+ "dataAttributes"
3831
+ ];
3832
+ var Skeleton = defineComponent(
3833
+ (props) => {
3834
+ const attrs = useAttrs();
3835
+ const ariaLabelFromAttrs = typeof attrs["aria-label"] === "string" ? attrs["aria-label"] : void 0;
3836
+ const renderKit = computed(
3837
+ () => createSkeletonRecipe({
3838
+ ...props.variant !== void 0 ? { variant: props.variant } : {},
3839
+ ...props.width !== void 0 ? { width: props.width } : {},
3840
+ ...props.height !== void 0 ? { height: props.height } : {},
3841
+ ...props.radius !== void 0 ? { radius: props.radius } : {},
3842
+ ...props.animation !== void 0 ? { animation: props.animation } : {},
3843
+ ...props.decorative !== void 0 ? { decorative: props.decorative } : {},
3844
+ ...props.id !== void 0 ? { id: props.id } : {},
3845
+ ...props.ariaLabel !== void 0 ? { ariaLabel: props.ariaLabel } : ariaLabelFromAttrs !== void 0 ? { ariaLabel: ariaLabelFromAttrs } : {}
3846
+ })
3847
+ );
3848
+ return () => {
3849
+ const skeletonRenderKit = renderKit.value;
3850
+ const passthroughAttrs = omitAttrs(attrs, [
3851
+ "class",
3852
+ "style",
3853
+ "aria-label"
3854
+ ]);
3855
+ return h("span", {
3856
+ ...passthroughAttrs,
3857
+ ...skeletonRenderKit.dataAttributes,
3858
+ ...props.dataAttributes ?? {},
3859
+ class: mergeClassNames(skeletonRenderKit.className, props.className, attrs.class),
3860
+ style: mergeStyles(skeletonRenderKit.vars, attrs.style),
3861
+ role: skeletonRenderKit.a11y.role,
3862
+ id: skeletonRenderKit.a11y.id,
3863
+ "aria-hidden": skeletonRenderKit.a11y.ariaHidden ? "true" : void 0,
3864
+ "aria-label": skeletonRenderKit.a11y.ariaLabel,
3865
+ "aria-live": skeletonRenderKit.a11y.ariaLive
3866
+ });
3867
+ };
3868
+ },
3869
+ {
3870
+ name: "MarwesSkeleton",
3871
+ inheritAttrs: false,
3872
+ props: [...skeletonPropKeys]
3873
+ }
3874
+ );
3814
3875
  var spacingPropKeys = ["size", "spacing", "scale", "className"];
3815
3876
  var Spacing = defineComponent(
3816
3877
  (props) => {
@@ -3881,6 +3942,261 @@ function createHeadingComponent(level) {
3881
3942
  var H1 = createHeadingComponent(1);
3882
3943
  var H2 = createHeadingComponent(2);
3883
3944
  var H3 = createHeadingComponent(3);
3945
+ var statTilePropKeys = [
3946
+ "className",
3947
+ "label",
3948
+ "value",
3949
+ "subtitle",
3950
+ "trendValue",
3951
+ "trendDirection",
3952
+ "tone",
3953
+ "dataAttributes"
3954
+ ];
3955
+ var StatTile = defineComponent(
3956
+ (props) => {
3957
+ const attrs = useAttrs();
3958
+ const renderKit = computed(
3959
+ () => createStatTileRecipe({
3960
+ ...props.tone !== void 0 ? { tone: props.tone } : {},
3961
+ ...props.trendDirection !== void 0 ? { trendDirection: props.trendDirection } : {},
3962
+ ...props.trendValue !== void 0 ? { trendValue: props.trendValue } : {},
3963
+ ...props.dataAttributes !== void 0 ? { dataAttributes: props.dataAttributes } : {}
3964
+ })
3965
+ );
3966
+ return () => {
3967
+ const kit = renderKit.value;
3968
+ const passthroughAttrs = omitAttrs(attrs, ["class", "style"]);
3969
+ return h(
3970
+ "article",
3971
+ {
3972
+ ...passthroughAttrs,
3973
+ ...kit.dataAttributes,
3974
+ class: mergeClassNames(kit.className, props.className, attrs.class)
3975
+ },
3976
+ [
3977
+ h(
3978
+ "div",
3979
+ { class: kit.slots.headerClassName },
3980
+ [
3981
+ h("span", { class: kit.slots.labelClassName }, props.label),
3982
+ props.trendValue ? h(
3983
+ "span",
3984
+ {
3985
+ ...kit.trendDataAttributes,
3986
+ class: kit.slots.trendClassName,
3987
+ "aria-label": kit.a11y.trendAriaLabel
3988
+ },
3989
+ [
3990
+ kit.trendIcon ? h(
3991
+ "span",
3992
+ { class: kit.slots.trendIconClassName, "aria-hidden": "true" },
3993
+ kit.trendIcon
3994
+ ) : null,
3995
+ h("span", { class: kit.slots.trendValueClassName }, props.trendValue)
3996
+ ].filter(Boolean)
3997
+ ) : null
3998
+ ].filter(Boolean)
3999
+ ),
4000
+ h("div", { class: kit.slots.valueClassName }, props.value),
4001
+ props.subtitle ? h("div", { class: kit.slots.subtitleClassName }, props.subtitle) : null
4002
+ ].filter(Boolean)
4003
+ );
4004
+ };
4005
+ },
4006
+ {
4007
+ name: "MarwesStatTile",
4008
+ inheritAttrs: false,
4009
+ props: [...statTilePropKeys]
4010
+ }
4011
+ );
4012
+ var datePickerPropKeys = [
4013
+ "className",
4014
+ "monthLabel",
4015
+ "weekdayLabels",
4016
+ "weeks",
4017
+ "device",
4018
+ "previousYearLabel",
4019
+ "previousMonthLabel",
4020
+ "nextMonthLabel",
4021
+ "nextYearLabel",
4022
+ "cancelLabel",
4023
+ "applyLabel",
4024
+ "calendarLabel",
4025
+ "dataAttributes"
4026
+ ];
4027
+ var DatePicker = defineComponent(
4028
+ (props, { emit }) => {
4029
+ const attrs = useAttrs();
4030
+ const renderKit = computed(
4031
+ () => createDatePickerRecipe({
4032
+ ...props.monthLabel !== void 0 ? { monthLabel: props.monthLabel } : {},
4033
+ ...props.weekdayLabels !== void 0 ? { weekdayLabels: props.weekdayLabels } : {},
4034
+ ...props.weeks !== void 0 ? { weeks: props.weeks } : {},
4035
+ ...props.device !== void 0 ? { device: props.device } : {},
4036
+ ...props.previousYearLabel !== void 0 ? { previousYearLabel: props.previousYearLabel } : {},
4037
+ ...props.previousMonthLabel !== void 0 ? { previousMonthLabel: props.previousMonthLabel } : {},
4038
+ ...props.nextMonthLabel !== void 0 ? { nextMonthLabel: props.nextMonthLabel } : {},
4039
+ ...props.nextYearLabel !== void 0 ? { nextYearLabel: props.nextYearLabel } : {},
4040
+ ...props.cancelLabel !== void 0 ? { cancelLabel: props.cancelLabel } : {},
4041
+ ...props.applyLabel !== void 0 ? { applyLabel: props.applyLabel } : {},
4042
+ ...props.calendarLabel !== void 0 ? { calendarLabel: props.calendarLabel } : {},
4043
+ ...props.dataAttributes !== void 0 ? { dataAttributes: props.dataAttributes } : {}
4044
+ })
4045
+ );
4046
+ return () => {
4047
+ const kit = renderKit.value;
4048
+ const passthroughAttrs = omitAttrs(attrs, ["class", "style"]);
4049
+ return h(
4050
+ "section",
4051
+ {
4052
+ ...passthroughAttrs,
4053
+ ...kit.dataAttributes,
4054
+ class: mergeClassNames(kit.className, props.className, attrs.class),
4055
+ "aria-label": kit.labels.calendar
4056
+ },
4057
+ [
4058
+ h("header", { class: kit.slots.headerClassName }, [
4059
+ h("div", { class: kit.slots.navGroupClassName }, [
4060
+ h(
4061
+ "button",
4062
+ {
4063
+ type: "button",
4064
+ class: kit.slots.navButtonClassName,
4065
+ "aria-label": kit.labels.previousYear,
4066
+ onClick: () => emit("previousYear")
4067
+ },
4068
+ "\xAB"
4069
+ ),
4070
+ h(
4071
+ "button",
4072
+ {
4073
+ type: "button",
4074
+ class: kit.slots.navButtonClassName,
4075
+ "aria-label": kit.labels.previousMonth,
4076
+ onClick: () => emit("previousMonth")
4077
+ },
4078
+ "\u2039"
4079
+ )
4080
+ ]),
4081
+ h("div", { class: kit.slots.monthLabelClassName }, kit.monthLabel),
4082
+ h("div", { class: kit.slots.navGroupClassName }, [
4083
+ h(
4084
+ "button",
4085
+ {
4086
+ type: "button",
4087
+ class: kit.slots.navButtonClassName,
4088
+ "aria-label": kit.labels.nextMonth,
4089
+ onClick: () => emit("nextMonth")
4090
+ },
4091
+ "\u203A"
4092
+ ),
4093
+ h(
4094
+ "button",
4095
+ {
4096
+ type: "button",
4097
+ class: kit.slots.navButtonClassName,
4098
+ "aria-label": kit.labels.nextYear,
4099
+ onClick: () => emit("nextYear")
4100
+ },
4101
+ "\xBB"
4102
+ )
4103
+ ])
4104
+ ]),
4105
+ h("table", { class: kit.slots.gridClassName, "aria-label": kit.monthLabel }, [
4106
+ h("thead", [
4107
+ h(
4108
+ "tr",
4109
+ { class: "mw-date-picker__weekdays" },
4110
+ kit.weekdayLabels.map(
4111
+ (weekday) => h(
4112
+ "th",
4113
+ { key: weekday, class: kit.slots.weekdayClassName, scope: "col" },
4114
+ weekday
4115
+ )
4116
+ )
4117
+ )
4118
+ ]),
4119
+ h(
4120
+ "tbody",
4121
+ kit.weeks.map(
4122
+ (week, weekIndex) => h(
4123
+ "tr",
4124
+ {
4125
+ key: week.map((day) => day.date ?? day.label).join("-"),
4126
+ class: kit.slots.weekClassName
4127
+ },
4128
+ week.map((day, dayIndex) => {
4129
+ const dayKit = kit.dayKits[weekIndex]?.[dayIndex];
4130
+ if (!dayKit) return null;
4131
+ return h(
4132
+ "td",
4133
+ {
4134
+ key: day.date ?? `${weekIndex}-${dayIndex}`,
4135
+ class: kit.slots.cellClassName
4136
+ },
4137
+ [
4138
+ h(
4139
+ "button",
4140
+ {
4141
+ type: "button",
4142
+ ...dayKit.dataAttributes,
4143
+ class: dayKit.className,
4144
+ "aria-label": dayKit.ariaLabel,
4145
+ "aria-pressed": dayKit.selected ? "true" : void 0,
4146
+ disabled: dayKit.disabled,
4147
+ onClick: () => emit("daySelect", day)
4148
+ },
4149
+ day.label
4150
+ )
4151
+ ]
4152
+ );
4153
+ })
4154
+ )
4155
+ )
4156
+ )
4157
+ ]),
4158
+ h("footer", { class: kit.slots.footerClassName }, [
4159
+ h(
4160
+ "button",
4161
+ {
4162
+ type: "button",
4163
+ class: kit.slots.footerButtonClassName,
4164
+ onClick: () => emit("cancel")
4165
+ },
4166
+ kit.labels.cancel
4167
+ ),
4168
+ kit.labels.apply ? h(
4169
+ "button",
4170
+ {
4171
+ type: "button",
4172
+ class: mergeClassNames(
4173
+ kit.slots.footerButtonClassName,
4174
+ "mw-date-picker__footer-button--primary"
4175
+ ),
4176
+ onClick: () => emit("apply")
4177
+ },
4178
+ kit.labels.apply
4179
+ ) : null
4180
+ ])
4181
+ ]
4182
+ );
4183
+ };
4184
+ },
4185
+ {
4186
+ name: "MarwesDatePicker",
4187
+ inheritAttrs: false,
4188
+ props: [...datePickerPropKeys],
4189
+ emits: [
4190
+ "previousYear",
4191
+ "previousMonth",
4192
+ "nextMonth",
4193
+ "nextYear",
4194
+ "daySelect",
4195
+ "cancel",
4196
+ "apply"
4197
+ ]
4198
+ }
4199
+ );
3884
4200
  var cardPropKeys = ["className", "id", "dataAttributes"];
3885
4201
  var Card = defineComponent(
3886
4202
  (props, { slots }) => {
@@ -6434,7 +6750,7 @@ var DialogModal = defineComponent(
6434
6750
  );
6435
6751
  const footerContent = computed(() => {
6436
6752
  if (slots.footer) {
6437
- return slots.footer();
6753
+ return slots.footer({ close });
6438
6754
  }
6439
6755
  if (typeof props.footer === "function") {
6440
6756
  return props.footer({ close });
@@ -6718,6 +7034,6 @@ var InfoDialog = defineComponent({
6718
7034
  }
6719
7035
  });
6720
7036
 
6721
- export { Accordion, AccordionField, Avatar, AvatarBadge, AvatarGroup, Badge, BadgeGroup, BrightnessSlider, Button, ButtonSpinner, CancelButton, Card, Checkbox, CheckboxField, CheckboxGroupField, CloseButton, ConfirmButton, ConfirmDialog, ContentTabs, CopyButton, CreateButton, CurrencyField, DateOfBirthField, DestructiveButton, DestructiveDialog, Dialog, DialogModal, Divider, DownloadButton, DropdownButton, DropdownField, EditButton, EmailField, EmptyStateSpinner, ErrorToast, FAQAccordion, FeatureToggle, FilterButton, H1, H2, H3, Icon, InfoDialog, InfoToast, Input, InputField, InputOtp, LinkButton, MarwesProvider, NavigationTabs, NotificationBadge, OptionRadioGroup, Paragraph, PasswordField, PermissionSwitch, PhoneField, PreferenceSwitch, PresenceAvatar, PrimaryButton, PriorityBadge, ProductCard, ProfileAvatar, ProfileCard, Radio, RadioGroupField, RadiusSlider, RatingRadioGroup, RefreshButton, RichText, RichTextField, SaveButton, SearchButton, SearchField, SecondaryButton, SectionsAccordion, Select, SelectField, SettingsAccordion, SettingsTabs, Slider, SliderField, SortButton, Spacer, Spacing, Spinner, StatCard, StatusBadge, SubmitButton, SuccessButton, SuccessToast, Switch, SwitchField, Tab, TabGroup, TabPanel, TeamAvatarGroup, TextButton, Textarea, TextareaField, Toast, ToastContainer, ToastProvider, Tooltip, TooltipGroup, URLField, UploadButton, VerifyButton, VolumeSlider, WarningToast, YesNoRadioGroup, ZipCodeField, createHeadingComponent, useTheme, useThemeMode, useToast };
7037
+ export { Accordion, AccordionField, Avatar, AvatarBadge, AvatarGroup, Badge, BadgeGroup, BrightnessSlider, Button, ButtonSpinner, CancelButton, Card, Checkbox, CheckboxField, CheckboxGroupField, CloseButton, ConfirmButton, ConfirmDialog, ContentTabs, CopyButton, CreateButton, CurrencyField, DateOfBirthField, DatePicker, DestructiveButton, DestructiveDialog, Dialog, DialogModal, Divider, DownloadButton, DropdownButton, DropdownField, EditButton, EmailField, EmptyStateSpinner, ErrorToast, FAQAccordion, FeatureToggle, FilterButton, H1, H2, H3, Icon, InfoDialog, InfoToast, Input, InputField, InputOtp, LinkButton, MarwesProvider, NavigationTabs, NotificationBadge, OptionRadioGroup, Paragraph, PasswordField, PermissionSwitch, PhoneField, PreferenceSwitch, PresenceAvatar, PrimaryButton, PriorityBadge, ProductCard, ProfileAvatar, ProfileCard, Radio, RadioGroupField, RadiusSlider, RatingRadioGroup, RefreshButton, RichText, RichTextField, SaveButton, SearchButton, SearchField, SecondaryButton, SectionsAccordion, Select, SelectField, SettingsAccordion, SettingsTabs, Skeleton, Slider, SliderField, SortButton, Spacer, Spacing, Spinner, StatCard, StatTile, StatusBadge, SubmitButton, SuccessButton, SuccessToast, Switch, SwitchField, Tab, TabGroup, TabPanel, TeamAvatarGroup, TextButton, Textarea, TextareaField, Toast, ToastContainer, ToastProvider, Tooltip, TooltipGroup, URLField, UploadButton, VerifyButton, VolumeSlider, WarningToast, YesNoRadioGroup, ZipCodeField, createHeadingComponent, useTheme, useThemeMode, useToast };
6722
7038
  //# sourceMappingURL=index.js.map
6723
7039
  //# sourceMappingURL=index.js.map