@imaginario27/air-ui-ds 1.15.3 → 1.17.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/CHANGELOG.md CHANGED
@@ -5,6 +5,17 @@ All notable changes to this package are documented in this file.
5
5
  Historical releases were reconstructed from git history (GitHub repository) and npm publish dates.
6
6
  Future releases will include detailed entries generated with Changesets.
7
7
 
8
+ ## 1.15.3 - 2026-07-03
9
+
10
+ Release type: patch.
11
+ Commits found in range: 1.
12
+
13
+ ### Fixed
14
+
15
+ 1. add accessible aria-labels to pagination buttons ([58b1770](https://github.com/imaginario27/air-ui/commit/58b1770522a70786df5a02e7ad32ed8646b363a9))
16
+
17
+ - Package: @imaginario27/air-ui-ds.
18
+
8
19
  ## 1.15.2 - 2026-07-02
9
20
 
10
21
  Release type: patch.
@@ -13,7 +13,7 @@
13
13
  ],
14
14
  isInteractive && [
15
15
  hoverBorderSizeClass,
16
- 'border-border-primary-brand-hover cursor-pointer'
16
+ 'border-border-primary-brand-hover cursor-pointer transition-[border-width] duration-200 ease-out'
17
17
  ],
18
18
  ]"
19
19
  >
@@ -7,6 +7,7 @@
7
7
  'flex items-center justify-center',
8
8
  isRounded ? 'rounded-full' : 'rounded-button',
9
9
  'text-nowrap',
10
+ 'transition-colors duration-200 ease-out',
10
11
  ...buttonStyleClass,
11
12
  buttonSizeClass,
12
13
  horizontalPaddingClass,
@@ -26,12 +27,7 @@
26
27
  >
27
28
  <!-- Loading State -->
28
29
  <template v-if="isLoading">
29
- <div class="animate-spin">
30
- <Icon
31
- name="mdi:loading"
32
- :iconClass="[iconSizeClass, iconColorClass]"
33
- />
34
- </div>
30
+ <Spinner :class="[iconSizeClass, spinnerColorClass]" />
35
31
 
36
32
  <span :class="['font-semibold', 'leading-none', 'select-none', textSizeClass, textClass]">
37
33
  {{ loadingText }}
@@ -330,6 +326,24 @@ const iconColorClass = computed(() => {
330
326
  return variant[props.styleType as ButtonStyleType] || '!text-text-default'
331
327
  })
332
328
 
329
+ const spinnerColorClass = computed(() => {
330
+ const variant = {
331
+ [ButtonStyleType.PRIMARY_BRAND_FILLED]: 'border-x-border-neutral-on-filled! border-b-border-neutral-on-filled!',
332
+ [ButtonStyleType.PRIMARY_BRAND_SOFT]: 'border-x-border-primary-brand-default! border-b-border-primary-brand-default!',
333
+ [ButtonStyleType.PRIMARY_BRAND_TRANSPARENT]: 'border-x-border-primary-brand-default! border-b-border-primary-brand-default!',
334
+ [ButtonStyleType.SECONDARY_BRAND_FILLED]: 'border-x-border-neutral-on-filled! border-b-border-neutral-on-filled!',
335
+ [ButtonStyleType.NEUTRAL_FILLED]: 'border-x-border-neutral-on-filled! border-b-border-neutral-on-filled!',
336
+ [ButtonStyleType.NEUTRAL_OUTLINED]: 'border-x-border-primary-brand-default! border-b-border-primary-brand-default!',
337
+ [ButtonStyleType.NEUTRAL_TRANSPARENT]: 'border-x-border-primary-brand-default! border-b-border-primary-brand-default!',
338
+ [ButtonStyleType.NEUTRAL_TRANSPARENT_SUBTLE]: 'border-x-border-primary-brand-default! border-b-border-primary-brand-default!',
339
+ [ButtonStyleType.DELETE_FILLED]: 'border-x-border-neutral-on-filled! border-b-border-neutral-on-filled!',
340
+ [ButtonStyleType.DELETE_SOFT]: 'border-x-border-delete-default! border-b-border-delete-default!',
341
+ [ButtonStyleType.DELETE_OUTLINED]: 'border-x-border-delete-default! border-b-border-delete-default!',
342
+ [ButtonStyleType.DELETE_TRANSPARENT]: 'border-x-border-delete-default! border-b-border-delete-default!',
343
+ }
344
+ return variant[props.styleType as ButtonStyleType] || 'border-border-primary-brand-default'
345
+ })
346
+
333
347
  const horizontalPaddingClass = computed(() => {
334
348
  let variant
335
349
 
@@ -7,6 +7,7 @@
7
7
  'flex items-center justify-center rounded-button',
8
8
  isRounded ? 'rounded-full' : 'rounded-button',
9
9
  'aspect-square',
10
+ 'transition-colors duration-200 ease-out',
10
11
  ...buttonStyleClass,
11
12
  buttonSizeClass,
12
13
  disabled && 'opacity-disabled cursor-not-allowed pointer-events-none',
@@ -11,6 +11,7 @@
11
11
  'text-sm',
12
12
  'text-text-default',
13
13
  'font-semibold',
14
+ 'transition-colors duration-200 ease-out',
14
15
  'hover:bg-background-neutral-hover',
15
16
  props.disabled ? 'opacity-50 hover:cursor-not-allowed hover:bg-transparent' : 'hover:cursor-pointer'
16
17
  ]"
@@ -7,6 +7,7 @@
7
7
  :class="[
8
8
  'flex items-center justify-center',
9
9
  'text-nowrap',
10
+ 'transition-colors duration-200 ease-out',
10
11
  ...buttonStyleClass,
11
12
  buttonSizeClass,
12
13
  horizontalPaddingClass,
@@ -8,7 +8,7 @@
8
8
  'rounded-lg',
9
9
  hasShadow ? 'shadow-sm' : undefined,
10
10
  'w-full',
11
- hasBackgroundHover && 'hover:bg-background-neutral-subtlest/40',
11
+ hasBackgroundHover && 'transition-colors duration-200 hover:bg-background-neutral-subtlest/40',
12
12
  ]"
13
13
  >
14
14
  <slot />
@@ -9,7 +9,7 @@
9
9
  :class="[
10
10
  'lg:p-5',
11
11
  selectMode === CardSelectionMode.CARD && isHoverable &&
12
- 'hover:border-border-neutral-hover cursor-pointer transition-shadow duration-300',
12
+ 'hover:border-border-neutral-hover cursor-pointer transition-[box-shadow,border-color] duration-300 ease-out',
13
13
  selectMode === CardSelectionMode.CARD && 'outline-none focus-visible:ring-2 focus-visible:ring-border-primary-brand-default',
14
14
  modelValue && '!border-border-primary-brand-active',
15
15
  disabled && 'opacity-disabled cursor-not-allowed',