@imaginario27/air-ui-ds 1.15.1 → 1.15.3

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,28 @@ 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.2 - 2026-07-02
9
+
10
+ Release type: patch.
11
+ Commits found in range: 1.
12
+
13
+ ### Fixed
14
+
15
+ 1. close notifications popover on view-all and item click ([9c1c041](https://github.com/imaginario27/air-ui/commit/9c1c04193f63767785504892dc2e19c2efec07e2))
16
+
17
+ - Package: @imaginario27/air-ui-ds.
18
+
19
+ ## 1.15.1 - 2026-07-01
20
+
21
+ Release type: patch.
22
+ Commits found in range: 1.
23
+
24
+ ### Added
25
+
26
+ 1. pass unit prop verbatim and add limit prop to NotificationsPopover ([3fe78ba](https://github.com/imaginario27/air-ui/commit/3fe78ba2f4b2d42a16205e08b9669bddc2eabdeb))
27
+
28
+ - Package: @imaginario27/air-ui-ds.
29
+
8
30
  ## 1.15.0 - 2026-06-30
9
31
 
10
32
  Release type: minor.
@@ -15,6 +15,7 @@
15
15
  props.disabled ? 'opacity-50 hover:cursor-not-allowed hover:bg-transparent' : 'hover:cursor-pointer'
16
16
  ]"
17
17
  :disabled="props.disabled"
18
+ :aria-label="ariaLabel"
18
19
  @click="emitClick"
19
20
  >
20
21
  <slot />
@@ -33,6 +34,10 @@ const props = defineProps({
33
34
  type: Boolean as PropType<boolean>,
34
35
  default: false,
35
36
  },
37
+ ariaLabel: {
38
+ type: String as PropType<string>,
39
+ default: 'Navigation button',
40
+ },
36
41
  })
37
42
 
38
43
  // Emits
@@ -41,9 +41,11 @@
41
41
  {{ title }}
42
42
  </span>
43
43
 
44
- <slot name="description" />
44
+ <div v-if="$slots.description" class="max-w-[800px]">
45
+ <slot name="description" />
46
+ </div>
45
47
 
46
- <p v-if="!$slots.description" class="text-sm text-text-default">
48
+ <p v-if="!$slots.description" class="text-sm text-text-default max-w-[800px]">
47
49
  {{ description }}
48
50
  </p>
49
51
  </div>
@@ -53,8 +55,9 @@
53
55
  <Icon
54
56
  :name="timeAgoIcon"
55
57
  :size="IconSize.XS"
58
+ iconClass="text-icon-neutral-subtle"
56
59
  />
57
- <span class="text-xs text-text-neutral-subtle">
60
+ <span class="text-xs text-text-neutral-subtle whitespace-nowrap select-none">
58
61
  {{ timeAgo }}
59
62
  </span>
60
63
  </div>
@@ -62,8 +65,9 @@
62
65
  <Icon
63
66
  :name="authorIcon"
64
67
  :size="IconSize.XS"
68
+ iconClass="text-icon-neutral-subtle"
65
69
  />
66
- <span class="text-xs text-text-neutral-subtle">
70
+ <span class="text-xs text-text-neutral-subtle whitespace-nowrap select-none">
67
71
  {{ author }}
68
72
  </span>
69
73
  </div>
@@ -152,11 +156,12 @@ const props = defineProps({
152
156
  },
153
157
  })
154
158
 
155
- const emit = defineEmits(['update:modelValue', 'remove'])
159
+ const emit = defineEmits(['update:modelValue', 'remove', 'itemClick'])
156
160
 
157
- function onItemClick() {
161
+ const onItemClick = () => {
158
162
  if (!props.modelValue) {
159
163
  emit('update:modelValue', true)
160
164
  }
165
+ emit('itemClick')
161
166
  }
162
167
  </script>
@@ -5,9 +5,9 @@
5
5
  :trigger
6
6
  :popoverClass="['px-0 py-3', popoverClass]"
7
7
  >
8
- <template #content>
8
+ <template #content="{ onClose }">
9
9
  <div
10
- v-if="isLoading && !hasError"
10
+ v-if="isLoading && !hasError"
11
11
  class="w-full flex justify-center py-3"
12
12
  >
13
13
  <Loading
@@ -52,6 +52,7 @@
52
52
  :text="viewAllText"
53
53
  :to="viewAllLink"
54
54
  textClass="text-text-default text-sm! hover:text-text-primary-brand-hover font-normal"
55
+ @click="onViewAllClick($event, onClose)"
55
56
  />
56
57
  </div>
57
58
 
@@ -92,6 +93,7 @@
92
93
  :removeAriaLabel="listRemoveItemAriaLabel"
93
94
  @update:model-value="onReadStatusChange(notification.id, $event)"
94
95
  @remove="onRemoveNotification(notification.id)"
96
+ @itemClick="onClose"
95
97
  />
96
98
  </template>
97
99
 
@@ -309,6 +311,11 @@ const filteredList = computed(() => {
309
311
  })
310
312
 
311
313
  // Handlers
314
+ const onViewAllClick = (event: MouseEvent, onClose: () => void) => {
315
+ if (!props.viewAllLink) event.preventDefault()
316
+ onClose()
317
+ }
318
+
312
319
  const onRemoveNotification = (id: string) => {
313
320
  internalList.value = internalList.value.filter(notification => notification.id !== id)
314
321
  emit('remove', { id })
@@ -53,9 +53,10 @@
53
53
  ]"
54
54
  >
55
55
  <!-- Previous Button -->
56
- <PaginationButton
56
+ <PaginationButton
57
57
  :styleType
58
- :disabled="modelValue === 1"
58
+ :disabled="modelValue === 1"
59
+ :ariaLabel="ariaLabelPrevious"
59
60
  @click="goToPreviousPage"
60
61
  >
61
62
  <Icon
@@ -69,6 +70,8 @@
69
70
  v-for="page in visiblePages"
70
71
  :key="page"
71
72
  :styleType
73
+ :ariaLabel="pageAriaLabel(page)"
74
+ :aria-current="page === modelValue ? 'page' : undefined"
72
75
  :class="[
73
76
  styleType === ButtonPaginationStyle.BUTTON && 'border border-border-default',
74
77
  page === modelValue ? [
@@ -111,9 +114,10 @@
111
114
  </PaginationButton>
112
115
 
113
116
  <!-- Next Button -->
114
- <PaginationButton
117
+ <PaginationButton
115
118
  :styleType
116
119
  :disabled="modelValue === totalPages"
120
+ :ariaLabel="ariaLabelNext"
117
121
  @click="goToNextPage"
118
122
  >
119
123
  <Icon
@@ -168,6 +172,18 @@ const props = defineProps({
168
172
  type: Number as PropType<number>,
169
173
  default: 1024,
170
174
  },
175
+ ariaLabelPrevious: {
176
+ type: String as PropType<string>,
177
+ default: 'Previous page',
178
+ },
179
+ ariaLabelNext: {
180
+ type: String as PropType<string>,
181
+ default: 'Next page',
182
+ },
183
+ ariaLabelPage: {
184
+ type: String as PropType<string>,
185
+ default: 'Page {page}',
186
+ },
171
187
  })
172
188
 
173
189
  // Composables
@@ -262,6 +278,11 @@ const handlePageClick = (page: string | number) => {
262
278
  emit("update:modelValue", page)
263
279
  }
264
280
 
281
+ const pageAriaLabel = (page: string | number) => {
282
+ if (page === '...') return undefined
283
+ return props.ariaLabelPage.replace('{page}', page.toString())
284
+ }
285
+
265
286
  // Watchers
266
287
  watch(itemsPerPage, (newVal) => {
267
288
  emit('update:modelValue', 1) // Reset to page 1 when rows per page changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imaginario27/air-ui-ds",
3
- "version": "1.15.1",
3
+ "version": "1.15.3",
4
4
  "author": "imaginario27",
5
5
  "type": "module",
6
6
  "homepage": "https://air-ui.netlify.app/",