sprintify-ui 0.1.18 → 0.2.1

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 (223) hide show
  1. package/README.md +1 -2
  2. package/dist/sprintify-ui.es.js +15426 -13066
  3. package/dist/style.css +1 -1
  4. package/dist/types/src/components/BaseActionItem.vue.d.ts +3 -3
  5. package/dist/types/src/components/BaseActionItemButton.vue.d.ts +9 -6
  6. package/dist/types/src/components/BaseAddressForm.vue.d.ts +17 -27
  7. package/dist/types/src/components/BaseAlert.vue.d.ts +1 -1
  8. package/dist/types/src/components/BaseApp.vue.d.ts +2 -2
  9. package/dist/types/src/components/BaseAppDialogs.vue.d.ts +1 -1
  10. package/dist/types/src/components/BaseAppNotifications.vue.d.ts +1 -1
  11. package/dist/types/src/components/BaseAutocomplete.vue.d.ts +33 -28
  12. package/dist/types/src/components/BaseAutocompleteDrawer.vue.d.ts +12 -11
  13. package/dist/types/src/components/BaseAutocompleteFetch.vue.d.ts +12 -15
  14. package/dist/types/src/components/BaseAvatar.vue.d.ts +1 -1
  15. package/dist/types/src/components/BaseAvatarGroup.vue.d.ts +1 -1
  16. package/dist/types/src/components/BaseBadge.vue.d.ts +9 -6
  17. package/dist/types/src/components/BaseBelongsTo.vue.d.ts +12 -15
  18. package/dist/types/src/components/BaseBoolean.vue.d.ts +3 -3
  19. package/dist/types/src/components/BaseBreadcrumbs.vue.d.ts +1 -1
  20. package/dist/types/src/components/BaseButton.vue.d.ts +1 -1
  21. package/dist/types/src/components/BaseButtonGroup.vue.d.ts +13 -13
  22. package/dist/types/src/components/BaseCard.vue.d.ts +2 -2
  23. package/dist/types/src/components/BaseCardRow.vue.d.ts +1 -1
  24. package/dist/types/src/components/BaseCharacterCounter.vue.d.ts +1 -1
  25. package/dist/types/src/components/BaseClickOutside.vue.d.ts +2 -2
  26. package/dist/types/src/components/BaseClipboard.vue.d.ts +2 -2
  27. package/dist/types/src/components/BaseColor.vue.d.ts +2 -2
  28. package/dist/types/src/components/BaseContainer.vue.d.ts +1 -1
  29. package/dist/types/src/components/BaseCounter.vue.d.ts +1 -1
  30. package/dist/types/src/components/BaseCropper.vue.d.ts +21 -19
  31. package/dist/types/src/components/BaseCropperModal.vue.d.ts +3 -3
  32. package/dist/types/src/components/BaseDataIterator.vue.d.ts +9 -9
  33. package/dist/types/src/components/BaseDataIteratorSectionBox.vue.d.ts +2 -2
  34. package/dist/types/src/components/BaseDataIteratorSectionButton.vue.d.ts +1 -1
  35. package/dist/types/src/components/BaseDataIteratorSectionColumns.vue.d.ts +141 -169
  36. package/dist/types/src/components/BaseDataIteratorSectionModal.vue.d.ts +2 -2
  37. package/dist/types/src/components/BaseDataTable.vue.d.ts +15 -13
  38. package/dist/types/src/components/BaseDataTableRowAction.vue.d.ts +1 -1
  39. package/dist/types/src/components/BaseDatePicker.vue.d.ts +9 -6
  40. package/dist/types/src/components/BaseDateSelect.vue.d.ts +2 -2
  41. package/dist/types/src/components/BaseDescriptionList.vue.d.ts +2 -2
  42. package/dist/types/src/components/BaseDescriptionListItem.vue.d.ts +3 -3
  43. package/dist/types/src/components/BaseDialog.vue.d.ts +2 -2
  44. package/dist/types/src/components/BaseDisplayRelativeTime.vue.d.ts +3 -3
  45. package/dist/types/src/components/BaseDraggable.vue.d.ts +3 -3
  46. package/dist/types/src/components/BaseDropdown.vue.d.ts +13 -10
  47. package/dist/types/src/components/BaseDropdownAutocomplete.vue.d.ts +7 -7
  48. package/dist/types/src/components/BaseField.vue.d.ts +3 -3
  49. package/dist/types/src/components/BaseFieldI18n.vue.d.ts +9 -12
  50. package/dist/types/src/components/BaseFilePicker.vue.d.ts +13 -10
  51. package/dist/types/src/components/BaseFilePickerCrop.vue.d.ts +13 -10
  52. package/dist/types/src/components/BaseFileUploader.vue.d.ts +40 -13
  53. package/dist/types/src/components/BaseForm.vue.d.ts +24 -21
  54. package/dist/types/src/components/BaseHasMany.vue.d.ts +13 -16
  55. package/dist/types/src/components/BaseHeader.vue.d.ts +7 -4
  56. package/dist/types/src/components/BaseIconPicker.vue.d.ts +6 -3
  57. package/dist/types/src/components/BaseInput.vue.d.ts +5 -5
  58. package/dist/types/src/components/BaseInputError.vue.d.ts +2 -2
  59. package/dist/types/src/components/BaseInputLabel.vue.d.ts +1 -1
  60. package/dist/types/src/components/BaseInputPercent.vue.d.ts +4 -4
  61. package/dist/types/src/components/BaseLayoutNotificationDropdown.vue.d.ts +1 -1
  62. package/dist/types/src/components/BaseLayoutNotificationItem.vue.d.ts +1 -1
  63. package/dist/types/src/components/BaseLayoutNotificationItemContent.vue.d.ts +1 -1
  64. package/dist/types/src/components/BaseLayoutSidebar.vue.d.ts +4 -4
  65. package/dist/types/src/components/BaseLayoutSidebarConfigurable.vue.d.ts +3 -3
  66. package/dist/types/src/components/BaseLayoutStacked.vue.d.ts +4 -4
  67. package/dist/types/src/components/BaseLayoutStackedConfigurable.vue.d.ts +2 -2
  68. package/dist/types/src/components/BaseLoadingCover.vue.d.ts +8 -8
  69. package/dist/types/src/components/BaseMediaGallery.vue.d.ts +2 -2
  70. package/dist/types/src/components/BaseMediaGalleryItem.vue.d.ts +2 -2
  71. package/dist/types/src/components/BaseMediaItem.vue.d.ts +1 -1
  72. package/dist/types/src/components/BaseMediaLibrary.vue.d.ts +26 -8
  73. package/dist/types/src/components/BaseMediaList.vue.d.ts +2 -2
  74. package/dist/types/src/components/BaseMediaListItem.vue.d.ts +2 -2
  75. package/dist/types/src/components/BaseMediaPictures.vue.d.ts +2 -2
  76. package/dist/types/src/components/BaseMediaPicturesItem.vue.d.ts +2 -2
  77. package/dist/types/src/components/BaseMediaPreview.vue.d.ts +1 -1
  78. package/dist/types/src/components/BaseMenu.vue.d.ts +19 -19
  79. package/dist/types/src/components/BaseMenuItem.vue.d.ts +2 -2
  80. package/dist/types/src/components/BaseModalCenter.vue.d.ts +13 -12
  81. package/dist/types/src/components/BaseModalSide.vue.d.ts +13 -12
  82. package/dist/types/src/components/BaseNavbar.vue.d.ts +10 -7
  83. package/dist/types/src/components/BaseNavbarItem.vue.d.ts +1 -1
  84. package/dist/types/src/components/BaseNavbarItemContent.vue.d.ts +1 -1
  85. package/dist/types/src/components/BaseNavbarSideItem.vue.d.ts +1 -1
  86. package/dist/types/src/components/BaseNavbarSideItemContent.vue.d.ts +1 -1
  87. package/dist/types/src/components/BaseNumber.vue.d.ts +4 -4
  88. package/dist/types/src/components/BasePagination.vue.d.ts +1 -1
  89. package/dist/types/src/components/BasePanel.vue.d.ts +1 -1
  90. package/dist/types/src/components/BasePassword.vue.d.ts +3 -3
  91. package/dist/types/src/components/BaseProgressCircle.vue.d.ts +1 -1
  92. package/dist/types/src/components/BaseRadioGroup.vue.d.ts +7 -7
  93. package/dist/types/src/components/BaseReadMore.vue.d.ts +2 -2
  94. package/dist/types/src/components/BaseRichText.vue.d.ts +6 -6
  95. package/dist/types/src/components/BaseSelect.vue.d.ts +8 -7
  96. package/dist/types/src/components/BaseShortcut.vue.d.ts +1 -1
  97. package/dist/types/src/components/BaseSideNavigation.vue.d.ts +8 -5
  98. package/dist/types/src/components/BaseSideNavigationItem.vue.d.ts +9 -6
  99. package/dist/types/src/components/BaseSkeleton.vue.d.ts +8 -7
  100. package/dist/types/src/components/BaseStatistic.vue.d.ts +1 -1
  101. package/dist/types/src/components/BaseStepper.vue.d.ts +1 -1
  102. package/dist/types/src/components/BaseStepperItem.vue.d.ts +1 -1
  103. package/dist/types/src/components/BaseSwitch.vue.d.ts +3 -3
  104. package/dist/types/src/components/BaseSystemAlert.vue.d.ts +5 -5
  105. package/dist/types/src/components/BaseTabItem.vue.d.ts +9 -6
  106. package/dist/types/src/components/BaseTable.vue.d.ts +6 -6
  107. package/dist/types/src/components/BaseTableColumn.vue.d.ts +2 -2
  108. package/dist/types/src/components/BaseTabs.vue.d.ts +8 -5
  109. package/dist/types/src/components/BaseTagAutocomplete.vue.d.ts +39 -34
  110. package/dist/types/src/components/BaseTagAutocompleteFetch.vue.d.ts +12 -15
  111. package/dist/types/src/components/BaseTextarea.vue.d.ts +3 -3
  112. package/dist/types/src/components/BaseTextareaAutoresize.vue.d.ts +13 -3
  113. package/dist/types/src/components/BaseTimeline.vue.d.ts +1 -1
  114. package/dist/types/src/components/BaseTimelineItem.vue.d.ts +1 -1
  115. package/dist/types/src/components/SlotComponent.d.ts +1 -1
  116. package/dist/types/src/svg/BaseEmptyState.vue.d.ts +1 -1
  117. package/dist/types/src/svg/BaseSpinnerLarge.vue.d.ts +1 -1
  118. package/dist/types/src/svg/BaseSpinnerSmall.vue.d.ts +1 -1
  119. package/package.json +5 -8
  120. package/src/assets/main.css +3 -3
  121. package/src/components/BaseActionItem.vue +9 -4
  122. package/src/components/BaseActionItemButton.vue +1 -1
  123. package/src/components/BaseAddressForm.vue +6 -5
  124. package/src/components/BaseAlert.vue +8 -2
  125. package/src/components/BaseAppNotifications.vue +4 -1
  126. package/src/components/BaseAutocomplete.vue +21 -12
  127. package/src/components/BaseAutocompleteDrawer.vue +29 -11
  128. package/src/components/BaseAutocompleteFetch.vue +14 -3
  129. package/src/components/BaseAvatar.vue +1 -1
  130. package/src/components/BaseBadge.vue +1 -2
  131. package/src/components/BaseBelongsTo.vue +12 -3
  132. package/src/components/BaseBreadcrumbs.vue +8 -2
  133. package/src/components/BaseButton.vue +9 -2
  134. package/src/components/BaseButtonGroup.stories.js +5 -4
  135. package/src/components/BaseButtonGroup.vue +9 -6
  136. package/src/components/BaseCharacterCounter.vue +4 -1
  137. package/src/components/BaseClickOutside.vue +1 -1
  138. package/src/components/BaseClipboard.vue +5 -2
  139. package/src/components/BaseColor.vue +7 -4
  140. package/src/components/BaseCropper.vue +17 -5
  141. package/src/components/BaseCropperModal.vue +4 -1
  142. package/src/components/BaseDataIterator.vue +30 -12
  143. package/src/components/BaseDataIteratorSectionBox.vue +5 -2
  144. package/src/components/BaseDataIteratorSectionButton.vue +6 -4
  145. package/src/components/BaseDataIteratorSectionColumns.vue +5 -2
  146. package/src/components/BaseDataTable.stories.js +1 -1
  147. package/src/components/BaseDataTable.vue +44 -21
  148. package/src/components/BaseDataTableRowAction.vue +8 -2
  149. package/src/components/BaseDatePicker.vue +5 -2
  150. package/src/components/BaseDateSelect.vue +33 -6
  151. package/src/components/BaseDisplayRelativeTime.vue +4 -1
  152. package/src/components/BaseDraggable.vue +1 -1
  153. package/src/components/BaseDropdown.vue +16 -5
  154. package/src/components/BaseDropdownAutocomplete.vue +13 -7
  155. package/src/components/BaseField.vue +5 -2
  156. package/src/components/BaseFieldI18n.vue +10 -2
  157. package/src/components/BaseFilePicker.vue +9 -5
  158. package/src/components/BaseFilePickerCrop.stories.js +3 -3
  159. package/src/components/BaseFilePickerCrop.vue +7 -4
  160. package/src/components/BaseFileUploader.stories.js +3 -3
  161. package/src/components/BaseFileUploader.vue +4 -4
  162. package/src/components/BaseForm.vue +14 -6
  163. package/src/components/BaseHasMany.vue +16 -4
  164. package/src/components/BaseHeader.vue +4 -1
  165. package/src/components/BaseIconPicker.vue +14 -4
  166. package/src/components/BaseInput.vue +10 -7
  167. package/src/components/BaseInputError.vue +1 -1
  168. package/src/components/BaseInputLabel.vue +4 -1
  169. package/src/components/BaseInputPercent.vue +1 -1
  170. package/src/components/BaseLayoutNotificationDropdown.vue +12 -6
  171. package/src/components/BaseLayoutNotificationItem.vue +15 -5
  172. package/src/components/BaseLayoutNotificationItemContent.vue +5 -2
  173. package/src/components/BaseLayoutSidebar.vue +22 -5
  174. package/src/components/BaseLayoutSidebarConfigurable.vue +19 -5
  175. package/src/components/BaseLayoutStackedConfigurable.vue +24 -7
  176. package/src/components/BaseLoadingCover.stories.js +2 -2
  177. package/src/components/BaseLoadingCover.vue +14 -7
  178. package/src/components/BaseMediaGallery.vue +4 -1
  179. package/src/components/BaseMediaGalleryItem.vue +13 -4
  180. package/src/components/BaseMediaItem.vue +12 -3
  181. package/src/components/BaseMediaLibrary.vue +11 -6
  182. package/src/components/BaseMediaList.vue +1 -1
  183. package/src/components/BaseMediaListItem.vue +15 -6
  184. package/src/components/BaseMediaPictures.vue +1 -1
  185. package/src/components/BaseMediaPicturesItem.vue +9 -3
  186. package/src/components/BaseMediaPreview.vue +2 -2
  187. package/src/components/BaseMenu.vue +56 -20
  188. package/src/components/BaseMenuItem.vue +14 -3
  189. package/src/components/BaseModalCenter.vue +17 -8
  190. package/src/components/BaseModalSide.vue +12 -6
  191. package/src/components/BaseNavbar.stories.js +1 -1
  192. package/src/components/BaseNavbarItemContent.vue +14 -3
  193. package/src/components/BaseNavbarSideItem.vue +4 -1
  194. package/src/components/BaseNavbarSideItemContent.vue +9 -2
  195. package/src/components/BaseNumber.vue +7 -4
  196. package/src/components/BasePagination.vue +2 -2
  197. package/src/components/BasePanel.vue +4 -1
  198. package/src/components/BasePassword.vue +6 -2
  199. package/src/components/BaseProgressCircle.vue +4 -1
  200. package/src/components/BaseRadioGroup.vue +7 -4
  201. package/src/components/BaseRichText.vue +1 -2
  202. package/src/components/BaseSelect.vue +6 -2
  203. package/src/components/BaseShortcut.vue +11 -4
  204. package/src/components/BaseSideNavigation.vue +4 -1
  205. package/src/components/BaseSideNavigationItem.vue +5 -2
  206. package/src/components/BaseSkeleton.vue +23 -7
  207. package/src/components/BaseStatistic.vue +15 -4
  208. package/src/components/BaseStepper.vue +4 -1
  209. package/src/components/BaseSwitch.stories.js +0 -1
  210. package/src/components/BaseSwitch.vue +8 -2
  211. package/src/components/BaseSystemAlert.vue +4 -1
  212. package/src/components/BaseTabItem.vue +5 -2
  213. package/src/components/BaseTable.vue +19 -9
  214. package/src/components/BaseTagAutocomplete.stories.js +1 -1
  215. package/src/components/BaseTagAutocomplete.vue +19 -9
  216. package/src/components/BaseTagAutocompleteFetch.vue +18 -4
  217. package/src/components/BaseTextarea.vue +2 -2
  218. package/src/components/BaseTextareaAutoresize.stories.js +30 -1
  219. package/src/components/BaseTextareaAutoresize.vue +20 -10
  220. package/src/components/BaseTimeline.vue +8 -2
  221. package/src/svg/BaseEmptyState.vue +5 -1
  222. package/src/svg/BaseSpinnerLarge.vue +15 -3
  223. package/src/svg/BaseSpinnerSmall.vue +8 -2
@@ -8,7 +8,10 @@
8
8
  leave-from-class="transform scale-100 opacity-100"
9
9
  leave-to-class="transform scale-90 opacity-0"
10
10
  >
11
- <div v-if="showInvalidInput" class="absolute left-0 top-full z-[1]">
11
+ <div
12
+ v-if="showInvalidInput"
13
+ class="absolute left-0 top-full z-[1]"
14
+ >
12
15
  <div
13
16
  class="mt-1 ml-1 rounded bg-red-500 px-2 py-1 text-xs font-medium text-white"
14
17
  >
@@ -47,7 +50,7 @@
47
50
  @blur="onBlur"
48
51
  @focus="onFocus"
49
52
  @keydown="onKeydown"
50
- />
53
+ >
51
54
  <div class="border-l border-slate-300">
52
55
  <button
53
56
  type="button"
@@ -56,7 +59,7 @@
56
59
  :disabled="disabled"
57
60
  @click="increment"
58
61
  >
59
- <BaseIcon icon="mdi:chevron-up"></BaseIcon>
62
+ <BaseIcon icon="mdi:chevron-up" />
60
63
  </button>
61
64
  <button
62
65
  type="button"
@@ -65,7 +68,7 @@
65
68
  :disabled="disabled"
66
69
  @click="decrement"
67
70
  >
68
- <BaseIcon icon="mdi:chevron-down"></BaseIcon>
71
+ <BaseIcon icon="mdi:chevron-down" />
69
72
  </button>
70
73
  </div>
71
74
  </div>
@@ -53,7 +53,7 @@
53
53
  @keydown.enter="onManualPageMobileEnter"
54
54
  @input="onManualPageMobileInput"
55
55
  @blur="setPageFromManualPageMobile"
56
- />
56
+ >
57
57
  <span class="ml-2 text-sm font-normal text-slate-500">
58
58
  {{ t('sui.of') }} {{ lastPage }}
59
59
  </span>
@@ -88,7 +88,7 @@
88
88
  @keydown.enter="onManualPageEnter"
89
89
  @input="onManualPageInput"
90
90
  @blur="setPageFromManualPage"
91
- />
91
+ >
92
92
  </div>
93
93
  </nav>
94
94
  </template>
@@ -7,7 +7,10 @@
7
7
  <h3 class="text-base font-semibold leading-6 text-slate-900">
8
8
  {{ title }}
9
9
  </h3>
10
- <p v-if="description" class="mt-1 text-sm leading-normal text-slate-600">
10
+ <p
11
+ v-if="description"
12
+ class="mt-1 text-sm leading-normal text-slate-600"
13
+ >
11
14
  {{ description }}
12
15
  </p>
13
16
  </div>
@@ -16,7 +16,7 @@
16
16
  :required="requiredInternal"
17
17
  class="grow rounded-l rounded-r-none border-none focus:ring-2 focus:ring-primary-500 disabled:cursor-not-allowed"
18
18
  @input="onInput"
19
- />
19
+ >
20
20
  <div class="flex shrink-0 pl-3">
21
21
  <button
22
22
  tabindex="-1"
@@ -30,7 +30,11 @@
30
30
  icon="heroicons:eye-slash-20-solid"
31
31
  class="h-5 w-5"
32
32
  />
33
- <BaseIcon v-else icon="heroicons:eye-20-solid" class="h-5 w-5" />
33
+ <BaseIcon
34
+ v-else
35
+ icon="heroicons:eye-20-solid"
36
+ class="h-5 w-5"
37
+ />
34
38
  </button>
35
39
  </div>
36
40
  </div>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <svg :height="radius * 2" :width="radius * 2">
2
+ <svg
3
+ :height="radius * 2"
4
+ :width="radius * 2"
5
+ >
3
6
  <circle
4
7
  stroke="currentColor"
5
8
  class="text-slate-200"
@@ -18,11 +18,14 @@
18
18
  :required="requiredInternal"
19
19
  :disabled="disabled"
20
20
  :value="option.value"
21
- :class="inputClass"
21
+ :class="twInput"
22
22
  @input="emitUpdate(option.value)"
23
- />
23
+ >
24
24
 
25
- <slot name="option" :option="option">
25
+ <slot
26
+ name="option"
27
+ :option="option"
28
+ >
26
29
  <span class="text-sm">{{ option.label }}</span>
27
30
  </slot>
28
31
  </label>
@@ -72,7 +75,7 @@ const props = defineProps({
72
75
  default: 'flex space-x-2',
73
76
  type: String,
74
77
  },
75
- inputClass: {
78
+ twInput: {
76
79
  default: 'mt-0.5 border-slate-300',
77
80
  type: String,
78
81
  },
@@ -14,8 +14,7 @@
14
14
  :enable="enable"
15
15
  content-type="html"
16
16
  @update:content="emitUpdate(updateChange($event))"
17
- >
18
- </quill-editor>
17
+ />
19
18
  </div>
20
19
  </template>
21
20
 
@@ -13,7 +13,11 @@
13
13
  @change="onChange($event)"
14
14
  >
15
15
  <template v-if="requiredInternal">
16
- <option disabled hidden :value="EMPTY_VALUE_INTERNAL">
16
+ <option
17
+ disabled
18
+ hidden
19
+ :value="EMPTY_VALUE_INTERNAL"
20
+ >
17
21
  {{ placeholder ? placeholder : t('sui.select_an_option') }}
18
22
  </option>
19
23
  </template>
@@ -101,7 +105,7 @@ const { nameInternal, requiredInternal, hasErrorInternal, emitUpdate } =
101
105
  emit: emit,
102
106
  });
103
107
 
104
- const options = ref([] as HTMLOptionElement[]);
108
+ const options = ref<HTMLOptionElement[]>([]);
105
109
 
106
110
  function isEmptyExternal(value: string | number | null | undefined) {
107
111
  if (value === undefined || value === EMPTY_VALUE_EXTERNAL) {
@@ -1,6 +1,11 @@
1
1
  <template>
2
2
  <BaseCard class="flex duration-200 hover:bg-slate-50">
3
- <BaseActionItem :to="to" :href="href" :action="action" class="block w-full">
3
+ <BaseActionItem
4
+ :to="to"
5
+ :href="href"
6
+ :action="action"
7
+ class="block w-full"
8
+ >
4
9
  <section class="whitespace-pre-line p-4">
5
10
  <!-- Icon -->
6
11
  <div
@@ -11,7 +16,7 @@
11
16
  v-if="icon"
12
17
  :icon="icon"
13
18
  :class="iconSizeClasses"
14
- ></BaseIcon>
19
+ />
15
20
  </div>
16
21
  <!-- Title -->
17
22
  <div class="text-md font-semibold">
@@ -29,12 +34,14 @@
29
34
  v-if="linkText"
30
35
  class="flex items-center justify-start text-sm font-medium"
31
36
  >
32
- <div class="mr-1 leading-none">{{ linkText }}</div>
37
+ <div class="mr-1 leading-none">
38
+ {{ linkText }}
39
+ </div>
33
40
  <div>
34
41
  <BaseIcon
35
42
  icon="heroicons:arrow-right-20-solid"
36
43
  class="mt-px h-4 w-4"
37
- ></BaseIcon>
44
+ />
38
45
  </div>
39
46
  </div>
40
47
  </section>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <nav aria-label="Sidebar" class="relative">
2
+ <nav
3
+ aria-label="Sidebar"
4
+ class="relative"
5
+ >
3
6
  <div class="absolute bottom-0 left-0 h-full w-px bg-slate-300" />
4
7
  <div
5
8
  class="relative overflow-x-auto overflow-y-hidden"
@@ -17,7 +17,10 @@
17
17
  ]"
18
18
  @click.prevent="onClick(navigate)"
19
19
  >
20
- <div class="relative flex items-center" :class="[sizeClassInner]">
20
+ <div
21
+ class="relative flex items-center"
22
+ :class="[sizeClassInner]"
23
+ >
21
24
  <div
22
25
  class="absolute left-0 top-0 h-full"
23
26
  :class="[
@@ -25,7 +28,7 @@
25
28
  ? 'w-[2px] bg-primary-600'
26
29
  : 'group-hover:w-px group-hover:bg-slate-700',
27
30
  ]"
28
- ></div>
31
+ />
29
32
  <slot :active="isActiveInternal(isActive, isExactActive)" />
30
33
  </div>
31
34
  </a>
@@ -1,24 +1,40 @@
1
1
  <template>
2
- <div class="relative isolate overflow-hidden rounded" :class="[background]">
2
+ <div
3
+ :class="
4
+ twMerge(
5
+ 'relative isolate overflow-hidden rounded bg-slate-200',
6
+ props.class
7
+ )
8
+ "
9
+ >
3
10
  <div
4
11
  class="absolute inset-0 -translate-x-full animate-shimmer border-t border-white/80 bg-gradient-to-r from-transparent via-white/80 to-transparent"
5
12
  :style="{
6
13
  animationDelay: delay,
7
14
  }"
8
- ></div>
9
- <slot></slot>
15
+ />
16
+ <slot />
10
17
  </div>
11
18
  </template>
12
19
 
20
+ <script lang="ts">
21
+ export default {
22
+ inheritAttrs: false,
23
+ };
24
+ </script>
25
+
13
26
  <script lang="ts" setup>
14
- defineProps({
27
+ import { PropType } from 'vue';
28
+ import { twMerge } from 'tailwind-merge';
29
+
30
+ const props = defineProps({
15
31
  delay: {
16
32
  default: '0s',
17
33
  type: String,
18
34
  },
19
- background: {
20
- default: 'bg-slate-200',
21
- type: String,
35
+ class: {
36
+ default: '',
37
+ type: [String, Array] as PropType<string | string[]>,
22
38
  },
23
39
  });
24
40
  </script>
@@ -1,12 +1,18 @@
1
1
  <template>
2
- <div class="inline-flex rounded-xl p-4" :class="[centerClass]">
2
+ <div
3
+ class="inline-flex rounded-xl p-4"
4
+ :class="[centerClass]"
5
+ >
3
6
  <section>
4
7
  <!-- Label -->
5
8
  <header class="mb-0.5 text-base font-medium">
6
9
  {{ label }}
7
10
  </header>
8
11
  <!-- Content -->
9
- <div class="flex" :class="[centerClass]">
12
+ <div
13
+ class="flex"
14
+ :class="[centerClass]"
15
+ >
10
16
  <div class="text-3xl font-bold leading-tight">
11
17
  {{ primaryValue }}
12
18
  </div>
@@ -18,9 +24,14 @@
18
24
  >
19
25
  <!-- Icon trend -->
20
26
  <div v-if="trend">
21
- <BaseIcon :icon="icon" :class="iconClass" />
27
+ <BaseIcon
28
+ :icon="icon"
29
+ :class="iconClass"
30
+ />
31
+ </div>
32
+ <div class="text-lg">
33
+ {{ secondaryValue }}
22
34
  </div>
23
- <div class="text-lg">{{ secondaryValue }}</div>
24
35
  </div>
25
36
  </div>
26
37
  <!-- Caption -->
@@ -1,6 +1,9 @@
1
1
  <template>
2
2
  <div class="lg:border-t lg:border-b lg:border-gray-200">
3
- <nav class="px-4 mx-auto max-w-7xl sm:px-6 lg:px-8" aria-label="Progress">
3
+ <nav
4
+ class="px-4 mx-auto max-w-7xl sm:px-6 lg:px-8"
5
+ aria-label="Progress"
6
+ >
4
7
  <ol
5
8
  role="list"
6
9
  class="overflow-hidden rounded-md lg:flex lg:rounded-none lg:border-l lg:border-r lg:border-gray-200"
@@ -1,7 +1,6 @@
1
1
  import BaseSwitch from './BaseSwitch.vue';
2
2
  import BaseContainer from './BaseContainer.vue';
3
3
  import { createFieldStory } from '../../.storybook/utils';
4
- import { Icon } from '@iconify/vue';
5
4
 
6
5
  export default {
7
6
  title: 'Form/BaseSwitch',
@@ -24,10 +24,16 @@
24
24
  }"
25
25
  class="flex items-center justify-center transition duration-200 ease-in-out bg-white rounded-full shadow pointer-events-none text-slate-500 ring-0"
26
26
  >
27
- <BaseIcon v-if="icon" :icon="icon" />
27
+ <BaseIcon
28
+ v-if="icon"
29
+ :icon="icon"
30
+ />
28
31
  </span>
29
32
  </Switch>
30
- <SwitchLabel v-if="$slots.default" class="cursor-pointer">
33
+ <SwitchLabel
34
+ v-if="$slots.default"
35
+ class="cursor-pointer"
36
+ >
31
37
  <slot />
32
38
  </SwitchLabel>
33
39
  </div>
@@ -17,7 +17,10 @@
17
17
  </div>
18
18
  </div>
19
19
  </component>
20
- <div v-if="closable" class="absolute top-0 right-0 p-3">
20
+ <div
21
+ v-if="closable"
22
+ class="absolute top-0 right-0 p-3"
23
+ >
21
24
  <button
22
25
  type="button"
23
26
  class="rounded-full bg-black bg-opacity-50 p-1 text-white"
@@ -18,7 +18,10 @@
18
18
  ]"
19
19
  @click.prevent="onClick(navigate)"
20
20
  >
21
- <div class="relative flex" :class="sizeClassInner">
21
+ <div
22
+ class="relative flex"
23
+ :class="sizeClassInner"
24
+ >
22
25
  <div
23
26
  class="absolute left-0 bottom-0 w-full"
24
27
  :class="[
@@ -26,7 +29,7 @@
26
29
  ? 'h-[2px] bg-primary-600'
27
30
  : 'group-hover:h-px group-hover:bg-slate-700',
28
31
  ]"
29
- ></div>
32
+ />
30
33
  <div class="whitespace-nowrap">
31
34
  <slot :active="isActiveInternal(isActive, isExactActive)" />
32
35
  </div>
@@ -3,7 +3,10 @@
3
3
  class="relative w-full overflow-hidden"
4
4
  :class="maxHeight ? 'base-table--has-max-height' : ''"
5
5
  >
6
- <div ref="slot" style="display: none">
6
+ <div
7
+ ref="slot"
8
+ style="display: none"
9
+ >
7
10
  <slot />
8
11
  </div>
9
12
 
@@ -17,7 +20,10 @@
17
20
  <div class="inline-block min-w-full align-middle">
18
21
  <div class="relative min-h-[300px]">
19
22
  <table class="min-w-full border-separate border-spacing-0">
20
- <thead v-if="newColumns.length" ref="thead">
23
+ <thead
24
+ v-if="newColumns.length"
25
+ ref="thead"
26
+ >
21
27
  <tr>
22
28
  <th
23
29
  v-if="showDetailRowIcon"
@@ -38,7 +44,7 @@
38
44
  :checked="isAllChecked"
39
45
  :disabled="isAllUncheckable"
40
46
  :class="checkboxStyle"
41
- />
47
+ >
42
48
  </div>
43
49
  </th>
44
50
  <th
@@ -84,14 +90,14 @@
84
90
  :opacity="!isAsc ? '0.5' : '1'"
85
91
  fill="currentColor"
86
92
  d="M8.71 12.29L11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71z"
87
- ></path>
93
+ />
88
94
  </g>
89
95
  <g transform="translate(0 3)">
90
96
  <path
91
97
  :opacity="isAsc ? '0.5' : '1'"
92
98
  fill="currentColor"
93
99
  d="m8.71 11.71l2.59 2.59c.39.39 1.02.39 1.41 0l2.59-2.59c.63-.63.18-1.71-.71-1.71H9.41c-.89 0-1.33 1.08-.7 1.71z"
94
- ></path>
100
+ />
95
101
  </g>
96
102
  </svg>
97
103
  </div>
@@ -109,7 +115,7 @@
109
115
  :checked="isAllChecked"
110
116
  :disabled="isAllUncheckable"
111
117
  :class="checkboxStyle"
112
- />
118
+ >
113
119
  </th>
114
120
  </tr>
115
121
  </thead>
@@ -156,7 +162,7 @@
156
162
  :disabled="!isRowCheckable(row)"
157
163
  :checked="isRowChecked(row)"
158
164
  :class="checkboxStyle"
159
- />
165
+ >
160
166
  </div>
161
167
  </td>
162
168
 
@@ -197,7 +203,7 @@
197
203
  :disabled="!isRowCheckable(row)"
198
204
  :checked="isRowChecked(row)"
199
205
  :class="checkboxStyle"
200
- />
206
+ >
201
207
  </td>
202
208
  </tr>
203
209
 
@@ -211,7 +217,11 @@
211
217
  class="td"
212
218
  :class="borderBottomDetailClasses(index)"
213
219
  >
214
- <slot name="detail" :row="row" :index="index" />
220
+ <slot
221
+ name="detail"
222
+ :row="row"
223
+ :index="index"
224
+ />
215
225
  </td>
216
226
  </tr>
217
227
  </transition>
@@ -174,7 +174,7 @@ export const SlotBlockItem = (args) => {
174
174
  <BaseTagAutocomplete
175
175
  v-model="value"
176
176
  v-bind="args"
177
- container-class="block"
177
+ tw-container="block"
178
178
  >
179
179
  <template #items="{items, removeOption}">
180
180
  <div
@@ -7,7 +7,7 @@
7
7
  wrapperClass,
8
8
  ]"
9
9
  >
10
- <div :class="containerClass">
10
+ <div :class="twMerge('-m-0.5 flex flex-wrap', twContainer)">
11
11
  <slot
12
12
  name="items"
13
13
  :items="normalizedModelValue"
@@ -55,7 +55,7 @@
55
55
  @click="open"
56
56
  @input="onTextInput"
57
57
  @keydown="onTextKeydown"
58
- />
58
+ >
59
59
  </div>
60
60
  </div>
61
61
  </div>
@@ -76,19 +76,28 @@
76
76
  :size="size"
77
77
  :loading="loading"
78
78
  :loading-bottom="loadingBottom"
79
- :drawer-class="inline ? 'pt-1' : 'p-1'"
79
+ :tw-drawer="inline ? 'pt-1' : 'p-1'"
80
80
  :keywords="keywords"
81
81
  @select="onSelect"
82
82
  @scroll-bottom="emit('scrollBottom')"
83
83
  >
84
84
  <template #empty="emptyProps">
85
- <slot name="empty" v-bind="{ ...emptyProps, ...slotProps }" />
85
+ <slot
86
+ name="empty"
87
+ v-bind="{ ...emptyProps, ...slotProps }"
88
+ />
86
89
  </template>
87
90
  <template #option="optionProps">
88
- <slot name="option" v-bind="{ ...optionProps, ...slotProps }" />
91
+ <slot
92
+ name="option"
93
+ v-bind="{ ...optionProps, ...slotProps }"
94
+ />
89
95
  </template>
90
96
  <template #footer="footerProps">
91
- <slot name="footer" v-bind="{ ...footerProps, ...slotProps }" />
97
+ <slot
98
+ name="footer"
99
+ v-bind="{ ...footerProps, ...slotProps }"
100
+ />
92
101
  </template>
93
102
  </BaseAutocompleteDrawer>
94
103
  </div>
@@ -105,6 +114,7 @@ import { useField } from '@/composables/field';
105
114
  import { useClickOutside } from '@/composables/clickOutside';
106
115
  import { useNotificationsStore } from '@/stores/notifications';
107
116
  import BaseAutocompleteDrawer from './BaseAutocompleteDrawer.vue';
117
+ import { twMerge } from 'tailwind-merge';
108
118
  import { t } from '@/i18n';
109
119
 
110
120
  const notifications = useNotificationsStore();
@@ -175,9 +185,9 @@ const props = defineProps({
175
185
  default: 'focus',
176
186
  type: String as PropType<'focus' | 'always'>,
177
187
  },
178
- containerClass: {
179
- default: '-m-0.5 flex flex-wrap',
180
- type: String,
188
+ twContainer: {
189
+ default: '',
190
+ type: [String, Array] as PropType<string|string[]>,
181
191
  },
182
192
  });
183
193
 
@@ -18,19 +18,33 @@
18
18
  @update:model-value="$emit('update:modelValue', $event)"
19
19
  >
20
20
  <template #items="itemProps">
21
- <slot name="items" v-bind="itemProps" />
21
+ <slot
22
+ name="items"
23
+ v-bind="itemProps"
24
+ />
22
25
  </template>
23
26
 
24
27
  <template #option="optionProps">
25
- <slot name="option" v-bind="optionProps" />
28
+ <slot
29
+ name="option"
30
+ v-bind="optionProps"
31
+ />
26
32
  </template>
27
33
 
28
34
  <template #footer="footerProps">
29
- <slot name="footer" v-bind="footerProps" :keywords="keywords"> </slot>
35
+ <slot
36
+ name="footer"
37
+ v-bind="footerProps"
38
+ :keywords="keywords"
39
+ />
30
40
  </template>
31
41
 
32
42
  <template #empty="emptyProps">
33
- <slot name="empty" v-bind="emptyProps" :first-search="firstSearch">
43
+ <slot
44
+ name="empty"
45
+ v-bind="emptyProps"
46
+ :first-search="firstSearch"
47
+ >
34
48
  <div
35
49
  v-if="firstSearch"
36
50
  class="flex h-[80px] items-center justify-center px-3 text-center text-base leading-tight text-slate-600"
@@ -8,14 +8,14 @@
8
8
  :required="requiredInternal"
9
9
  :rows="rows"
10
10
  :class="[hasErrorInternal ? 'border-red-500' : 'border-slate-300']"
11
- class="block mb-0 rounded disabled:cursor-not-allowed disabled:text-slate-300"
11
+ class="mb-0 block rounded disabled:cursor-not-allowed disabled:text-slate-300"
12
12
  @input="emitUpdate(transformInputValue($event))"
13
13
  />
14
14
  </template>
15
15
 
16
16
  <script lang="ts" setup>
17
17
  import { useField } from '@/composables/field';
18
- import { get, isString, trim } from 'lodash';
18
+ import { get, isString } from 'lodash';
19
19
  import { PropType } from 'vue';
20
20
 
21
21
  const props = defineProps({
@@ -6,7 +6,7 @@ export default {
6
6
  title: 'Form/BaseTextareaAutoresize',
7
7
  component: BaseTextareaAutoresize,
8
8
  args: {
9
- name: 'bio',
9
+ name: 'name',
10
10
  placeholder: 'Describe your complete life in 4 sentences...',
11
11
  },
12
12
  };
@@ -51,6 +51,35 @@ Disabled.args = {
51
51
  disabled: true,
52
52
  };
53
53
 
54
+ const TemplateTWTextarea = (args) => ({
55
+ components: {
56
+ BaseTextareaAutoresize,
57
+ ShowValue,
58
+ },
59
+ setup() {
60
+ function onSubmit() {
61
+ alert('submit');
62
+ }
63
+ const value = ref(null);
64
+ return { args, value, onSubmit };
65
+ },
66
+ template: `
67
+ <form @submit.prevent="onSubmit" class="border-none">
68
+ <BaseTextareaAutoresize
69
+ v-model="value"
70
+ v-bind="args"
71
+ class="w-full shadow rounded"
72
+ tw-textarea="p-5 bg-slate-100 text-slate-700 focus:ring-blue-200 focus:ring-4 text-sm"
73
+ @submit="onSubmit"
74
+ ></BaseTextareaAutoresize>
75
+ </form>
76
+
77
+ <ShowValue :value="value" />
78
+ `,
79
+ });
80
+
81
+ export const TWTextarea = TemplateTWTextarea.bind({});
82
+
54
83
  export const Field = createFieldStory({
55
84
  component: BaseTextareaAutoresize,
56
85
  componentName: 'BaseTextareaAutoresize',