sprintify-ui 0.2.26 → 0.2.27

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 (42) hide show
  1. package/dist/sprintify-ui.es.js +3985 -3991
  2. package/dist/style.css +1 -1
  3. package/dist/types/src/components/BaseStatistic.vue.d.ts +0 -1
  4. package/dist/types/src/components/BaseToast.vue.d.ts +20 -0
  5. package/dist/types/src/types/TimelineItem.d.ts +1 -2
  6. package/package.json +1 -1
  7. package/src/assets/form.css +1 -1
  8. package/src/components/BaseActionItemButton.vue +3 -1
  9. package/src/components/BaseAlert.vue +20 -20
  10. package/src/components/BaseAppDialogs.vue +6 -7
  11. package/src/components/BaseAppNotifications.vue +11 -47
  12. package/src/components/BaseAvatar.vue +1 -1
  13. package/src/components/BaseBreadcrumbs.vue +3 -3
  14. package/src/components/BaseDataIterator.vue +2 -2
  15. package/src/components/BaseDataIteratorSectionModal.vue +2 -2
  16. package/src/components/BaseDataTable.stories.js +2 -144
  17. package/src/components/BaseDataTable.vue +1 -1
  18. package/src/components/BaseDialog.vue +9 -9
  19. package/src/components/BaseGantt.vue +1 -1
  20. package/src/components/BaseHeader.vue +13 -19
  21. package/src/components/BaseIconPicker.vue +1 -1
  22. package/src/components/BaseInputLabel.vue +2 -2
  23. package/src/components/BaseModalCenter.vue +11 -17
  24. package/src/components/BaseModalSide.vue +11 -17
  25. package/src/components/BaseNavbarSideItem.vue +1 -1
  26. package/src/components/BasePanel.vue +1 -1
  27. package/src/components/BaseRichText.vue +17 -1
  28. package/src/components/BaseShortcut.vue +1 -1
  29. package/src/components/BaseSideNavigation.stories.js +6 -1
  30. package/src/components/BaseSideNavigationItem.vue +1 -1
  31. package/src/components/BaseStatistic.vue +11 -14
  32. package/src/components/BaseTabItem.vue +18 -17
  33. package/src/components/BaseTable.vue +14 -18
  34. package/src/components/BaseTextareaAutoresize.vue +1 -1
  35. package/src/components/BaseTimeline.vue +1 -1
  36. package/src/components/BaseTimelineItem.vue +20 -30
  37. package/src/components/BaseToast.stories.js +50 -0
  38. package/src/components/BaseToast.vue +44 -0
  39. package/src/stories/List.stories.js +132 -0
  40. package/src/stories/Show.stories.js +324 -0
  41. package/src/types/TimelineItem.ts +1 -2
  42. package/src/utils/colors.ts +10 -0
@@ -3,61 +3,24 @@
3
3
  <div
4
4
  class="pointer-events-none fixed inset-0 z-notifications flex items-end justify-end p-6 md:p-8"
5
5
  >
6
- <div class="w-full max-w-sm">
6
+ <div class="w-full">
7
7
  <TransitionGroup
8
8
  enter-active-class="transition duration-300 ease-out transform"
9
- enter-from-class="sm:translate-y-0 sm:translate-x-4 translate-y-2 opacity-0"
10
- enter-to-class="sm:translate-x-0 translate-y-0 opacity-100"
9
+ enter-from-class="translate-y-2 opacity-0"
10
+ enter-to-class="translate-y-0 opacity-100"
11
11
  leave-active-class="transition duration-100 ease-in"
12
- leave-from-class="sm:translate-x-0 translate-y-0 opacity-100"
13
- leave-to-class="sm:translate-y-0 sm:translate-x-4 translate-y-2 opacity-0"
12
+ leave-from-class="translate-y-0 opacity-100"
13
+ leave-to-class="translate-y-2 opacity-0"
14
14
  >
15
15
  <div
16
16
  v-for="notification in notifications"
17
17
  :key="notification.id"
18
18
  >
19
- <div
20
- class="mx-auto mt-4 flex w-full max-w-sm overflow-hidden rounded-lg bg-white shadow-xl"
21
- >
22
- <div
23
- class="flex w-12 items-center justify-center"
24
- :class="{
25
- 'bg-blue-500': notification.color == 'info',
26
- 'bg-red-500': notification.color == 'danger',
27
- 'bg-yellow-500': notification.color == 'warning',
28
- 'bg-green-500': notification.color == 'success',
29
- }"
30
- >
31
- <svg
32
- class="h-6 w-6 fill-current text-white"
33
- viewBox="0 0 40 40"
34
- xmlns="http://www.w3.org/2000/svg"
35
- >
36
- <path
37
- d="M20 3.33331C10.8 3.33331 3.33337 10.8 3.33337 20C3.33337 29.2 10.8 36.6666 20 36.6666C29.2 36.6666 36.6667 29.2 36.6667 20C36.6667 10.8 29.2 3.33331 20 3.33331ZM21.6667 28.3333H18.3334V25H21.6667V28.3333ZM21.6667 21.6666H18.3334V11.6666H21.6667V21.6666Z"
38
- />
39
- </svg>
40
- </div>
41
-
42
- <div class="-mx-3 px-4 pt-2 pb-3">
43
- <div class="mx-3">
44
- <h3
45
- class="mb-1 font-semibold leading-tight"
46
- :class="{
47
- 'text-blue-500': notification.color == 'info',
48
- 'text-red-500': notification.color == 'danger',
49
- 'text-yellow-500': notification.color == 'warning',
50
- 'text-green-500': notification.color == 'success',
51
- }"
52
- >
53
- {{ notification.title }}
54
- </h3>
55
- <p class="text-sm leading-tight text-slate-600">
56
- {{ notification.text }}
57
- </p>
58
- </div>
59
- </div>
60
- </div>
19
+ <BaseToast
20
+ class="mt-4"
21
+ :text="notification.text"
22
+ :color="notification.color"
23
+ />
61
24
  </div>
62
25
  </TransitionGroup>
63
26
  </div>
@@ -67,6 +30,7 @@
67
30
 
68
31
  <script lang="ts" setup>
69
32
  import { useNotificationsStore } from '@/index';
33
+ import BaseToast from './BaseToast.vue';
70
34
 
71
35
  const notificationsStore = useNotificationsStore();
72
36
 
@@ -24,7 +24,7 @@
24
24
  <div class="truncate">
25
25
  {{ user.full_name }}
26
26
  </div>
27
- <div class="truncate opacity-50">
27
+ <div class="truncate font-light opacity-50">
28
28
  {{ user.email }}
29
29
  </div>
30
30
  </div>
@@ -34,7 +34,7 @@
34
34
  { 'ml-2': index > 0 },
35
35
  isExactActive
36
36
  ? 'text-primary-600'
37
- : 'text-slate-500 hover:text-slate-700',
37
+ : 'text-slate-600 hover:text-slate-700',
38
38
  ]"
39
39
  @click.prevent="navigate()"
40
40
  >
@@ -60,11 +60,11 @@
60
60
  <RouterLink
61
61
  v-if="mobileBreadcrumb"
62
62
  :to="mobileBreadcrumb.to"
63
- class="block text-slate-500 sm:hidden"
63
+ class="block text-slate-600 sm:hidden"
64
64
  >
65
65
  <div class="flex items-center">
66
66
  <svg
67
- class="-ml-1 mr-1 h-5 w-5 flex-shrink-0 text-gray-400"
67
+ class="-ml-1 mr-1 h-5 w-5 flex-shrink-0 text-slate-500"
68
68
  viewBox="0 0 20 20"
69
69
  fill="currentColor"
70
70
  aria-hidden="true"
@@ -46,7 +46,7 @@
46
46
  ref="searchInput"
47
47
  v-model="searchQuery"
48
48
  type="text"
49
- class="w-full h-full py-0 overflow-hidden rounded-md border border-slate-300 bg-white shadow-sm"
49
+ class="w-full h-full py-0 overflow-hidden rounded-md border border-slate-300 bg-white shadow-sm placeholder:font-light placeholder:text-sm focus:ring-blue-300 focus:ring-4"
50
50
  :class="{
51
51
  'pl-9 pr-8': size == 'sm',
52
52
  'pl-10 pr-9': size == 'md',
@@ -793,7 +793,7 @@ const sectionsInternal = computed<DataIteratorSection[]>(() => {
793
793
  name: 'filters',
794
794
  title: t('sui.filters'),
795
795
  closeText: t('sui.apply_filters'),
796
- icon: 'heroicons:adjustments-horizontal',
796
+ icon: 'heroicons:funnel',
797
797
  opened: true,
798
798
  },
799
799
  ...sections,
@@ -4,7 +4,7 @@
4
4
  @update:model-value="emit('update:modelValue', $event)"
5
5
  >
6
6
  <div>
7
- <div class="border-b border-slate-300 p-4">
7
+ <div class="border-b border-slate-200 p-4">
8
8
  <h2 class="text-base font-semibold">
9
9
  {{ section.title }}
10
10
  </h2>
@@ -14,7 +14,7 @@
14
14
  <slot />
15
15
  </div>
16
16
 
17
- <div class="border-t border-slate-300 p-4">
17
+ <div class="border-t border-slate-200 p-4">
18
18
  <button
19
19
  class="btn btn-primary w-full sm:w-auto"
20
20
  @click="emit('update:modelValue', false)"
@@ -7,6 +7,7 @@ import BaseAppNotifications from './BaseAppNotifications.vue';
7
7
  import BaseAppDialogs from './BaseAppDialogs.vue';
8
8
  import { onBeforeUnmount } from 'vue';
9
9
  import { DateTime } from 'luxon';
10
+ import { templateDataTable } from '../../.storybook/utils';
10
11
 
11
12
  export default {
12
13
  title: 'Data/BaseDataTable',
@@ -43,150 +44,7 @@ const templateComponents = {
43
44
  const template = `
44
45
  <div class="font-mono text-sm bg-black px-2 py-1 rounded text-white">Last fetch: {{ lastFetch?.getTime() }} (should update on each fetch)</div>
45
46
  <br/>
46
- <BaseDataTable v-bind="args" @cell-click="onCellClick" @fetch="onFetch">
47
- <BaseTableColumn
48
- v-slot="{ row }"
49
- label="Titre"
50
- sortable
51
- field="title->en"
52
- :toggle="false"
53
- >
54
- <div class="font-medium text-slate-900 leading-tight truncate">
55
- {{ row.title.slice(0, 30) }}...
56
- </div>
57
- </BaseTableColumn>
58
-
59
- <BaseTableColumn
60
- v-slot="{ row }"
61
- label="URL"
62
- field="website_url"
63
- sortable
64
- >
65
- <a :href="row.website_url" target="_blank" class="btn btn-xs whitespace-pre space-x-1.5 shadow-sm">
66
- <span class="whitespace-pre">Open website</span>
67
- <BaseIcon icon="heroicons:arrow-top-right-on-square-20-solid" class="w-4 h-4 inline-block" />
68
- </a>
69
- </BaseTableColumn>
70
-
71
- <BaseTableColumn
72
- v-slot="{ row }"
73
- label="Access Level"
74
- field="access_level"
75
- sortable
76
- >
77
- <BaseBadge
78
- contrast="low"
79
- :color="row.access_level == 'public' ? 'green' : 'gray'"
80
- bordered
81
- >
82
- {{ row.access_level }}
83
- </BaseBadge>
84
- </BaseTableColumn>
85
-
86
- <BaseTableColumn
87
- v-slot="{ row }"
88
- label="Vote"
89
- field="votes_avg_score"
90
- sortable
91
- custom-key="votes_avg_score"
92
- :toggle="true"
93
- :toggle-default="false"
94
- >
95
- <BaseBadge color="blue" contrast="low" bordered>
96
- {{ Math.round(row.votes_avg_score) }} / 5
97
- </BaseBadge>
98
- </BaseTableColumn>
99
-
100
- <BaseTableColumn
101
- v-slot="{ row }"
102
- v-if="ownerIsVisible"
103
- label="Owner"
104
- custom-key="owner"
105
- field="owner_id"
106
- :toggle="true"
107
- sortable
108
- >
109
- <span class="text-slate-600 whitespace-pre">{{ row.owner?.name }}</span>
110
- </BaseTableColumn>
111
-
112
- <BaseTableColumn
113
- v-slot="{ row }"
114
- label="Created at"
115
- field="created_at"
116
- sortable
117
- >
118
- <p class="text-slate-600 text-sm">{{ DateTime.fromISO(row.created_at).toLocaleString() }}</p>
119
- </BaseTableColumn>
120
-
121
- <BaseTableColumn
122
- v-slot="{ row }"
123
- label="Select"
124
- :clickable="false"
125
- padding="0px"
126
- >
127
- <select class="select border-none text-sm rounded py-1 text-slate-600 focus:z-10 focus:ring-2 bg-transparent">
128
- <option>Option 1</option>
129
- <option>Option 2</option>
130
- </select>
131
- </BaseTableColumn>
132
-
133
- <template #detail="{ row }">
134
- <div class="p-4 text-xs">
135
- <p>ID : <span class="font-mono">{{ row.id }}</span></p>
136
- <p>Created at : <span class="font-mono">{{ row.created_at }}</span></p>
137
- </div>
138
- </template>
139
-
140
- <template #test>
141
- <div>
142
- Section Test
143
- </div>
144
- </template>
145
-
146
- <template #filters="{ query, updateQueryValue }">
147
- <div class="space-y-3">
148
- <div>
149
- <p class="mb-1 text-sm">
150
- Type
151
- </p>
152
- <BaseSelect
153
- :model-value="query.type ?? null"
154
- class="w-full rounded border-slate-300 text-base sm:text-sm"
155
- placeholder="-"
156
- @update:model-value="updateQueryValue('type', $event)"
157
- >
158
- <option value="video">
159
- Video
160
- </option>
161
- <option value="article">
162
- Article
163
- </option>
164
- </BaseSelect>
165
- </div>
166
- <div>
167
- <p class="mb-1 text-sm">
168
- Access Level
169
- </p>
170
- <BaseSelect
171
- :model-value="query.access_level ?? null"
172
- class="w-full rounded border-slate-300 text-base sm:text-sm"
173
- placeholder="-"
174
- @update:model-value="updateQueryValue('access_level', $event)"
175
- >
176
- <option value="public">
177
- Public
178
- </option>
179
- <option value="member">
180
- Member
181
- </option>
182
- <option value="vip">
183
- VIP
184
- </option>
185
- </BaseSelect>
186
- </div>
187
- </div>
188
- </template>
189
- </BaseDataTable>
47
+ ${templateDataTable}
190
48
  <BaseAppNotifications></BaseAppNotifications>
191
49
  <BaseAppDialogs></BaseAppDialogs>
192
50
  `;
@@ -118,7 +118,7 @@
118
118
  <BaseMenu
119
119
  v-if="showRowActionMenu"
120
120
  :items="rowActionMenuItems(row)"
121
- size="sm"
121
+ :size="size == 'sm' ? 'xs' : 'sm'"
122
122
  :tw-button="[
123
123
  'btn flex p-0 items-center justify-center',
124
124
  {
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div
3
- class="relative transform overflow-hidden rounded-lg bg-white px-4 pt-5 pb-4 text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-lg sm:p-6"
3
+ class="relative transform overflow-hidden rounded-lg bg-white border border-slate-200 p-4 text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-lg"
4
4
  >
5
5
  <div class="sm:flex sm:items-start">
6
6
  <div
@@ -14,22 +14,22 @@
14
14
  >
15
15
  <BaseIcon
16
16
  v-if="color == 'danger'"
17
- class="h-6 w-6 text-red-600"
17
+ class="h-5 w-5 text-red-600"
18
18
  icon="heroicons:exclamation-triangle-20-solid"
19
19
  />
20
20
  <BaseIcon
21
21
  v-else-if="color == 'warning'"
22
- class="h-6 w-6 text-yellow-600"
22
+ class="h-5 w-5 text-yellow-600"
23
23
  icon="heroicons:exclamation-triangle-20-solid"
24
24
  />
25
25
  <BaseIcon
26
26
  v-else-if="color == 'success'"
27
- class="h-6 w-6 text-green-600"
27
+ class="h-5 w-5 text-green-600"
28
28
  icon="heroicons:check-circle-20-solid"
29
29
  />
30
30
  <BaseIcon
31
31
  v-else
32
- class="h-6 w-6 text-primary-600"
32
+ class="h-5 w-5 text-primary-600"
33
33
  icon="heroicons:information-circle-20-solid"
34
34
  />
35
35
  </div>
@@ -37,12 +37,12 @@
37
37
  <slot>
38
38
  <h3
39
39
  id="modal-title"
40
- class="text-lg font-medium leading-6 text-slate-900"
40
+ class="text-base font-medium leading-6 text-slate-900"
41
41
  >
42
42
  {{ title }}
43
43
  </h3>
44
44
  <div class="mt-2">
45
- <p class="text-base font-normal text-slate-600">
45
+ <p class="text-sm font-light text-slate-600">
46
46
  {{ message }}
47
47
  </p>
48
48
  </div>
@@ -53,7 +53,7 @@
53
53
  <button
54
54
  ref="confirm"
55
55
  type="button"
56
- class="btn mb-2 w-full sm:mb-0 sm:w-auto"
56
+ class="btn btn-sm mb-2 w-full sm:mb-0 sm:w-auto"
57
57
  :class="{
58
58
  'btn-primary': color == 'info',
59
59
  'btn-danger': color == 'danger',
@@ -66,7 +66,7 @@
66
66
  </button>
67
67
  <button
68
68
  type="button"
69
- class="btn w-full sm:mr-2 sm:w-auto"
69
+ class="btn btn-sm w-full sm:mr-2 sm:w-auto"
70
70
  @click="$emit('cancel')"
71
71
  >
72
72
  {{ cancelText ?? t('sui.cancel') }}
@@ -102,7 +102,7 @@
102
102
  <text
103
103
  :x="tick.align == 'middle' ? tick.width / 2 : 0"
104
104
  :y="33"
105
- class="text-[11px] font-normal text-slate-600"
105
+ class="text-[11px] font-light text-slate-600"
106
106
  fill="currentColor"
107
107
  text-anchor="middle"
108
108
  >
@@ -3,23 +3,15 @@
3
3
  <BaseBreadcrumbs
4
4
  v-if="breadcrumbs"
5
5
  :breadcrumbs="breadcrumbs"
6
- :size="compactLayout ? 'sm' : 'md'"
7
- class="lg:mb-1 mb-2"
6
+ class="mb-1"
8
7
  />
9
8
 
10
9
  <div class="lg:flex lg:items-top lg:justify-between">
11
10
  <div class="min-w-0 flex-1">
12
11
  <div class="flex flex-col xs:flex-row xs:flex-wrap xs:items-center">
13
- <h2
14
- class="order-2 font-bold text-slate-900 xs:order-1"
15
- :class="[
16
- compactLayout
17
- ? 'mr-2 text-2xl leading-7'
18
- : 'mr-3 truncate text-3xl tracking-tight',
19
- ]"
20
- >
12
+ <h1 class="order-2 font-bold text-slate-900 xs:order-1 mr-3 truncate text-3xl tracking-tight">
21
13
  {{ title }}
22
- </h2>
14
+ </h1>
23
15
 
24
16
  <div
25
17
  v-if="badge"
@@ -34,13 +26,13 @@
34
26
  </BaseBadge>
35
27
  </div>
36
28
  </div>
37
- <h3
29
+ <h2
38
30
  v-if="subtitle"
39
- class="mt-1 leading-tight text-slate-500 text-sm"
40
- :class="[compactLayout ? '' : 'truncate text-base']"
31
+ class="mt-1 leading-tight font-light text-slate-600 text-xs"
32
+ :class="[compactLayout ? '' : 'truncate']"
41
33
  >
42
34
  {{ subtitle }}
43
- </h3>
35
+ </h2>
44
36
  <div
45
37
  v-if="attributes"
46
38
  class="flex"
@@ -53,20 +45,22 @@
53
45
  <div
54
46
  v-for="attribute in attributes"
55
47
  :key="attribute.label"
56
- class="flex items-center text-sm text-slate-500"
48
+ class="flex items-center"
57
49
  >
58
50
  <BaseIcon
59
51
  :icon="attribute.icon"
60
- class="mr-1.5 h-4 w-4 flex-shrink-0 text-slate-400"
52
+ class="mr-1.5 h-4 w-4 shrink-0 text-slate-600"
61
53
  aria-hidden="true"
62
54
  />
63
- {{ attribute.label }}
55
+ <span class="text-sm text-slate-600">
56
+ {{ attribute.label }}
57
+ </span>
64
58
  </div>
65
59
  </div>
66
60
  </div>
67
61
 
68
62
  <div
69
- class="mt-4 lg:mt-0"
63
+ class="mt-3 lg:mt-0 mb-2 lg:mb-0"
70
64
  >
71
65
  <div
72
66
  class="flex gap-2"
@@ -43,7 +43,7 @@
43
43
  :class="[
44
44
  modelValue == icon
45
45
  ? 'bg-primary-600 text-white'
46
- : 'bg-white text-slate-800 hover:bg-slate-200',
46
+ : 'bg-white text-gray-700 hover:bg-gray-200',
47
47
  ]"
48
48
  class="flex items-center justify-center rounded p-1"
49
49
  @click="onClick(icon)"
@@ -10,8 +10,8 @@
10
10
 
11
11
  <BaseIcon
12
12
  v-if="help"
13
- class="relative bottom-px ml-1 inline h-4 w-4 text-slate-400"
14
- icon="heroicons:question-mark-circle-20-solid"
13
+ class="relative bottom-px ml-1 inline h-4 w-4"
14
+ icon="mdi:information-outline"
15
15
  />
16
16
 
17
17
  <span
@@ -23,35 +23,29 @@
23
23
  <div class="pt-safe grow">
24
24
  <transition
25
25
  appear
26
- enter-active-class="duration-300 ease-out"
26
+ enter-active-class="duration-100 ease-out"
27
27
  enter-from-class="opacity-0"
28
28
  enter-to-class="opacity-100"
29
- leave-active-class="duration-200 ease-in"
29
+ leave-active-class="duration-100 ease-in"
30
30
  leave-from-class="opacity-100"
31
31
  leave-to-class="opacity-0"
32
32
  >
33
33
  <div
34
34
  v-if="modelValue"
35
- :class="
36
- twMerge(
37
- 'fixed inset-0 bg-slate-900 bg-opacity-70 transition-opacity',
38
- twBackdrop
39
- )
40
- "
41
- @click="
42
- closeOnOutsideClick
43
- ? modal.close()
44
- : modal.refuseAnimation()
45
- "
35
+ :class="twMerge(
36
+ 'fixed inset-0 bg-slate-300 bg-opacity-60 transition-opacity',
37
+ twBackdrop
38
+ )"
39
+ @click="closeOnOutsideClick ? modal.close() : modal.refuseAnimation()"
46
40
  />
47
41
  </transition>
48
42
 
49
43
  <transition
50
44
  appear
51
- enter-active-class="duration-300 ease-out"
45
+ enter-active-class="duration-100 ease-out"
52
46
  enter-from-class="translate-y-20 opacity-0"
53
47
  enter-to-class="translate-y-0 opacity-100"
54
- leave-active-class="duration-200 ease-in"
48
+ leave-active-class="duration-100 ease-in"
55
49
  leave-from-class="translate-y-0 opacity-100"
56
50
  leave-to-class="translate-y-20 opacity-0"
57
51
  >
@@ -74,12 +68,12 @@
74
68
 
75
69
  <button
76
70
  v-if="showCloseButton"
77
- class="right fixed right-2 top-2 flex h-16 w-16 items-center justify-center rounded-full hover:bg-black hover:bg-opacity-20"
71
+ class="right fixed shadow hover:shadow-lg duration-300 transition-shadow right-2 top-2 flex h-10 w-10 bg-white items-center justify-center rounded-full"
78
72
  type="button"
79
73
  @click="modal.close()"
80
74
  >
81
75
  <BaseIcon
82
- class="h-8 w-8 text-white"
76
+ class="h-5 w-5 text-black"
83
77
  icon="heroicons:x-mark"
84
78
  />
85
79
  </button>
@@ -14,7 +14,7 @@
14
14
  <div class="min-h-full grow">
15
15
  <transition
16
16
  appear
17
- enter-active-class="duration-300 ease-out"
17
+ enter-active-class="duration-200 ease-out"
18
18
  enter-from-class="opacity-0"
19
19
  enter-to-class="opacity-100"
20
20
  leave-active-class="duration-200 ease-in"
@@ -23,26 +23,20 @@
23
23
  >
24
24
  <div
25
25
  v-show="modelValue"
26
- :class="
27
- twMerge(
28
- 'fixed inset-0 bg-slate-900 bg-opacity-70 transition-opacity',
29
- twBackdrop
30
- )
31
- "
32
- @click="
33
- closeOnOutsideClick
34
- ? modal.close()
35
- : modal.refuseAnimation()
36
- "
26
+ :class="twMerge(
27
+ 'fixed inset-0 bg-slate-300 bg-opacity-60 transition-opacity',
28
+ twBackdrop
29
+ )"
30
+ @click="closeOnOutsideClick ? modal.close() : modal.refuseAnimation()"
37
31
  />
38
32
  </transition>
39
33
 
40
34
  <transition
41
35
  appear
42
- enter-active-class="duration-300 ease-out"
36
+ enter-active-class="duration-200 ease-out"
43
37
  enter-from-class="translate-x-20 opacity-0"
44
38
  enter-to-class="translate-x-0 opacity-100"
45
- leave-active-class="duration-200 ease-in"
39
+ leave-active-class="duration-100 ease-in"
46
40
  leave-from-class="translate-x-0 opacity-100"
47
41
  leave-to-class="translate-x-20 opacity-0"
48
42
  >
@@ -51,19 +45,19 @@
51
45
  :style="{
52
46
  maxWidth: realMaxWidth,
53
47
  }"
54
- class="pb-safe py-safe relative z-[1] ml-auto mr-0 flex h-full w-full flex-col rounded-t-lg bg-white text-left shadow-xl sm:rounded-t-none"
48
+ class="pb-safe py-safe relative z-[1] ml-auto mr-0 flex h-full w-full flex-col rounded-t-lg bg-white text-left shadow-2xl sm:rounded-t-none"
55
49
  :class="[
56
50
  modal.animationClasses.value,
57
51
  clipped ? 'overflow-hidden' : '',
58
52
  ]"
59
53
  >
60
54
  <button
61
- class="absolute -top-[4.5rem] right-2 flex h-16 w-16 items-center justify-center rounded-full hover:bg-black hover:bg-opacity-20 sm:-left-[4.5rem] sm:top-2"
55
+ class="absolute -top-[4.5rem] right-2 flex h-10 w-10 items-center justify-center rounded-full bg-white shadow hover:shadow-lg sm:-left-[3rem] sm:top-2 duration-300 transition-shadow"
62
56
  type="button"
63
57
  @click="modal.close()"
64
58
  >
65
59
  <BaseIcon
66
- class="h-8 w-8 text-white"
60
+ class="h-5 w-5 text-black"
67
61
  icon="heroicons:x-mark"
68
62
  />
69
63
  </button>
@@ -93,7 +93,7 @@ const showSubActions = computed((): boolean => {
93
93
  });
94
94
 
95
95
  const subItemClasses = computed((): string[] => {
96
- const classList = ['flex w-full font-normal'];
96
+ const classList = ['flex w-full font-light'];
97
97
 
98
98
  if (props.dark) {
99
99
  classList.push('text-slate-300 hover:text-white');
@@ -9,7 +9,7 @@
9
9
  </h3>
10
10
  <p
11
11
  v-if="description"
12
- class="mt-1 text-sm leading-normal text-slate-600"
12
+ class="mt-1 text-sm leading-normal font-light text-slate-600"
13
13
  >
14
14
  {{ description }}
15
15
  </p>