@baklavue/ui 1.0.0-preview.4 → 1.0.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 (287) hide show
  1. package/dist/accordion/Accordion.vue.d.ts +51 -0
  2. package/dist/accordion/Accordion.vue.d.ts.map +1 -0
  3. package/dist/accordion/accordion.types.d.ts +97 -0
  4. package/dist/accordion/accordion.types.d.ts.map +1 -0
  5. package/dist/accordion/index.d.ts +3 -0
  6. package/dist/accordion/index.d.ts.map +1 -0
  7. package/dist/alert/Alert.vue.d.ts +49 -0
  8. package/dist/alert/Alert.vue.d.ts.map +1 -0
  9. package/dist/alert/alert.types.d.ts +52 -0
  10. package/dist/alert/alert.types.d.ts.map +1 -0
  11. package/dist/alert/index.d.ts +3 -0
  12. package/dist/alert/index.d.ts.map +1 -0
  13. package/dist/badge/Badge.vue.d.ts +22 -0
  14. package/dist/badge/Badge.vue.d.ts.map +1 -0
  15. package/dist/badge/badge.types.d.ts +7 -0
  16. package/dist/badge/badge.types.d.ts.map +1 -0
  17. package/dist/badge/index.d.ts +3 -0
  18. package/dist/badge/index.d.ts.map +1 -0
  19. package/dist/banner/Banner.vue.d.ts +36 -0
  20. package/dist/banner/Banner.vue.d.ts.map +1 -0
  21. package/dist/banner/banner.types.d.ts +70 -0
  22. package/dist/banner/banner.types.d.ts.map +1 -0
  23. package/dist/banner/index.d.ts +3 -0
  24. package/dist/banner/index.d.ts.map +1 -0
  25. package/dist/button/Button.vue.d.ts +36 -0
  26. package/dist/button/Button.vue.d.ts.map +1 -0
  27. package/dist/button/button.types.d.ts +24 -0
  28. package/dist/button/button.types.d.ts.map +1 -0
  29. package/dist/button/index.d.ts +3 -0
  30. package/dist/button/index.d.ts.map +1 -0
  31. package/dist/checkbox/Checkbox.vue.d.ts +39 -0
  32. package/dist/checkbox/Checkbox.vue.d.ts.map +1 -0
  33. package/dist/checkbox/checkbox.types.d.ts +95 -0
  34. package/dist/checkbox/checkbox.types.d.ts.map +1 -0
  35. package/dist/checkbox/index.d.ts +3 -0
  36. package/dist/checkbox/index.d.ts.map +1 -0
  37. package/dist/chip/Chip.vue.d.ts +29 -0
  38. package/dist/chip/Chip.vue.d.ts.map +1 -0
  39. package/dist/chip/chip.types.d.ts +59 -0
  40. package/dist/chip/chip.types.d.ts.map +1 -0
  41. package/dist/chip/index.d.ts +3 -0
  42. package/dist/chip/index.d.ts.map +1 -0
  43. package/dist/datepicker/Datepicker.vue.d.ts +41 -0
  44. package/dist/datepicker/Datepicker.vue.d.ts.map +1 -0
  45. package/dist/datepicker/datepicker.types.d.ts +38 -0
  46. package/dist/datepicker/datepicker.types.d.ts.map +1 -0
  47. package/dist/datepicker/index.d.ts +3 -0
  48. package/dist/datepicker/index.d.ts.map +1 -0
  49. package/dist/dialog/Dialog.vue.d.ts +44 -0
  50. package/dist/dialog/Dialog.vue.d.ts.map +1 -0
  51. package/dist/dialog/dialog.types.d.ts +18 -0
  52. package/dist/dialog/dialog.types.d.ts.map +1 -0
  53. package/dist/dialog/index.d.ts +3 -0
  54. package/dist/dialog/index.d.ts.map +1 -0
  55. package/dist/drawer/Drawer.vue.d.ts +42 -0
  56. package/dist/drawer/Drawer.vue.d.ts.map +1 -0
  57. package/dist/drawer/drawer.types.d.ts +18 -0
  58. package/dist/drawer/drawer.types.d.ts.map +1 -0
  59. package/dist/drawer/index.d.ts +3 -0
  60. package/dist/drawer/index.d.ts.map +1 -0
  61. package/dist/dropdown/Dropdown.vue.d.ts +59 -0
  62. package/dist/dropdown/Dropdown.vue.d.ts.map +1 -0
  63. package/dist/dropdown/dropdown.types.d.ts +92 -0
  64. package/dist/dropdown/dropdown.types.d.ts.map +1 -0
  65. package/dist/dropdown/index.d.ts +3 -0
  66. package/dist/dropdown/index.d.ts.map +1 -0
  67. package/dist/file-upload/FileUpload.vue.d.ts +44 -0
  68. package/dist/file-upload/FileUpload.vue.d.ts.map +1 -0
  69. package/dist/file-upload/file-upload.types.d.ts +76 -0
  70. package/dist/file-upload/file-upload.types.d.ts.map +1 -0
  71. package/dist/file-upload/index.d.ts +3 -0
  72. package/dist/file-upload/index.d.ts.map +1 -0
  73. package/dist/icon/Icon.vue.d.ts +29 -0
  74. package/dist/icon/Icon.vue.d.ts.map +1 -0
  75. package/dist/icon/icon.types.d.ts +23 -0
  76. package/dist/icon/icon.types.d.ts.map +1 -0
  77. package/dist/icon/index.d.ts +3 -0
  78. package/dist/icon/index.d.ts.map +1 -0
  79. package/dist/image/Image.vue.d.ts +30 -0
  80. package/dist/image/Image.vue.d.ts.map +1 -0
  81. package/dist/image/image.types.d.ts +48 -0
  82. package/dist/image/image.types.d.ts.map +1 -0
  83. package/dist/image/index.d.ts +3 -0
  84. package/dist/image/index.d.ts.map +1 -0
  85. package/dist/index.css +474 -0
  86. package/dist/index.d.ts +42 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +2404 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/input/Input.vue.d.ts +39 -0
  91. package/dist/input/Input.vue.d.ts.map +1 -0
  92. package/dist/input/index.d.ts +3 -0
  93. package/dist/input/index.d.ts.map +1 -0
  94. package/dist/input/input.types.d.ts +122 -0
  95. package/dist/input/input.types.d.ts.map +1 -0
  96. package/dist/link/Link.vue.d.ts +38 -0
  97. package/dist/link/Link.vue.d.ts.map +1 -0
  98. package/dist/link/index.d.ts +3 -0
  99. package/dist/link/index.d.ts.map +1 -0
  100. package/dist/link/link.types.d.ts +40 -0
  101. package/dist/link/link.types.d.ts.map +1 -0
  102. package/dist/notification/Notification.vue.d.ts +7 -0
  103. package/dist/notification/Notification.vue.d.ts.map +1 -0
  104. package/dist/notification/index.d.ts +3 -0
  105. package/dist/notification/index.d.ts.map +1 -0
  106. package/dist/notification/notification.types.d.ts +25 -0
  107. package/dist/notification/notification.types.d.ts.map +1 -0
  108. package/dist/pagination/Pagination.vue.d.ts +34 -0
  109. package/dist/pagination/Pagination.vue.d.ts.map +1 -0
  110. package/dist/pagination/index.d.ts +3 -0
  111. package/dist/pagination/index.d.ts.map +1 -0
  112. package/dist/pagination/pagination.types.d.ts +54 -0
  113. package/dist/pagination/pagination.types.d.ts.map +1 -0
  114. package/dist/radio/Radio.vue.d.ts +42 -0
  115. package/dist/radio/Radio.vue.d.ts.map +1 -0
  116. package/dist/radio/index.d.ts +3 -0
  117. package/dist/radio/index.d.ts.map +1 -0
  118. package/dist/radio/radio.types.d.ts +84 -0
  119. package/dist/radio/radio.types.d.ts.map +1 -0
  120. package/dist/scroll-to-top/ScrollToTop.vue.d.ts +14 -0
  121. package/dist/scroll-to-top/ScrollToTop.vue.d.ts.map +1 -0
  122. package/dist/scroll-to-top/index.d.ts +3 -0
  123. package/dist/scroll-to-top/index.d.ts.map +1 -0
  124. package/dist/scroll-to-top/scroll-to-top.types.d.ts +33 -0
  125. package/dist/scroll-to-top/scroll-to-top.types.d.ts.map +1 -0
  126. package/dist/select/Select.vue.d.ts +42 -0
  127. package/dist/select/Select.vue.d.ts.map +1 -0
  128. package/dist/select/index.d.ts +3 -0
  129. package/dist/select/index.d.ts.map +1 -0
  130. package/dist/select/select.types.d.ts +52 -0
  131. package/dist/select/select.types.d.ts.map +1 -0
  132. package/dist/skeleton/Skeleton.vue.d.ts +9 -0
  133. package/dist/skeleton/Skeleton.vue.d.ts.map +1 -0
  134. package/dist/skeleton/index.d.ts +3 -0
  135. package/dist/skeleton/index.d.ts.map +1 -0
  136. package/dist/skeleton/skeleton.types.d.ts +30 -0
  137. package/dist/skeleton/skeleton.types.d.ts.map +1 -0
  138. package/dist/spinner/Spinner.vue.d.ts +8 -0
  139. package/dist/spinner/Spinner.vue.d.ts.map +1 -0
  140. package/dist/spinner/index.d.ts +3 -0
  141. package/dist/spinner/index.d.ts.map +1 -0
  142. package/dist/spinner/spinner.types.d.ts +12 -0
  143. package/dist/spinner/spinner.types.d.ts.map +1 -0
  144. package/dist/split-button/SplitButton.vue.d.ts +25 -0
  145. package/dist/split-button/SplitButton.vue.d.ts.map +1 -0
  146. package/dist/split-button/index.d.ts +3 -0
  147. package/dist/split-button/index.d.ts.map +1 -0
  148. package/dist/split-button/split-button.types.d.ts +19 -0
  149. package/dist/split-button/split-button.types.d.ts.map +1 -0
  150. package/dist/stepper/Stepper.vue.d.ts +30 -0
  151. package/dist/stepper/Stepper.vue.d.ts.map +1 -0
  152. package/dist/stepper/index.d.ts +3 -0
  153. package/dist/stepper/index.d.ts.map +1 -0
  154. package/dist/stepper/stepper.types.d.ts +29 -0
  155. package/dist/stepper/stepper.types.d.ts.map +1 -0
  156. package/dist/switch/Switch.vue.d.ts +32 -0
  157. package/dist/switch/Switch.vue.d.ts.map +1 -0
  158. package/dist/switch/index.d.ts +3 -0
  159. package/dist/switch/index.d.ts.map +1 -0
  160. package/dist/switch/switch.types.d.ts +14 -0
  161. package/dist/switch/switch.types.d.ts.map +1 -0
  162. package/dist/tab/Tab.vue.d.ts +31 -0
  163. package/dist/tab/Tab.vue.d.ts.map +1 -0
  164. package/dist/tab/index.d.ts +3 -0
  165. package/dist/tab/index.d.ts.map +1 -0
  166. package/dist/tab/tab.types.d.ts +17 -0
  167. package/dist/tab/tab.types.d.ts.map +1 -0
  168. package/dist/table/Table.vue.d.ts +181 -0
  169. package/dist/table/Table.vue.d.ts.map +1 -0
  170. package/dist/table/index.d.ts +3 -0
  171. package/dist/table/index.d.ts.map +1 -0
  172. package/dist/table/table.types.d.ts +61 -0
  173. package/dist/table/table.types.d.ts.map +1 -0
  174. package/dist/tag/Tag.vue.d.ts +31 -0
  175. package/dist/tag/Tag.vue.d.ts.map +1 -0
  176. package/dist/tag/index.d.ts +3 -0
  177. package/dist/tag/index.d.ts.map +1 -0
  178. package/dist/tag/tag.types.d.ts +22 -0
  179. package/dist/tag/tag.types.d.ts.map +1 -0
  180. package/dist/textarea/Textarea.vue.d.ts +35 -0
  181. package/dist/textarea/Textarea.vue.d.ts.map +1 -0
  182. package/dist/textarea/index.d.ts +3 -0
  183. package/dist/textarea/index.d.ts.map +1 -0
  184. package/dist/textarea/textarea.types.d.ts +37 -0
  185. package/dist/textarea/textarea.types.d.ts.map +1 -0
  186. package/dist/tooltip/Tooltip.vue.d.ts +33 -0
  187. package/dist/tooltip/Tooltip.vue.d.ts.map +1 -0
  188. package/dist/tooltip/index.d.ts +3 -0
  189. package/dist/tooltip/index.d.ts.map +1 -0
  190. package/dist/tooltip/tooltip.types.d.ts +17 -0
  191. package/dist/tooltip/tooltip.types.d.ts.map +1 -0
  192. package/dist/utils/loadBaklavaResources.d.ts +2 -0
  193. package/dist/utils/loadBaklavaResources.d.ts.map +1 -0
  194. package/package.json +28 -4
  195. package/.releaserc.json +0 -14
  196. package/CHANGELOG.md +0 -56
  197. package/index.ts +0 -1
  198. package/src/accordion/Accordion.vue +0 -206
  199. package/src/accordion/accordion.types.ts +0 -109
  200. package/src/accordion/index.ts +0 -3
  201. package/src/alert/Alert.vue +0 -199
  202. package/src/alert/alert.types.ts +0 -58
  203. package/src/alert/index.ts +0 -2
  204. package/src/badge/Badge.vue +0 -20
  205. package/src/badge/badge.types.ts +0 -7
  206. package/src/badge/index.ts +0 -2
  207. package/src/button/Button.vue +0 -45
  208. package/src/button/button.types.ts +0 -30
  209. package/src/button/index.ts +0 -3
  210. package/src/checkbox/Checkbox.vue +0 -148
  211. package/src/checkbox/checkbox.types.ts +0 -108
  212. package/src/checkbox/index.ts +0 -2
  213. package/src/datepicker/Datepicker.vue +0 -172
  214. package/src/datepicker/datepicker.types.ts +0 -39
  215. package/src/datepicker/index.ts +0 -2
  216. package/src/dialog/Dialog.vue +0 -178
  217. package/src/dialog/dialog.types.ts +0 -17
  218. package/src/dialog/index.ts +0 -2
  219. package/src/drawer/Drawer.vue +0 -162
  220. package/src/drawer/drawer.types.ts +0 -17
  221. package/src/drawer/index.ts +0 -2
  222. package/src/dropdown/Dropdown.vue +0 -231
  223. package/src/dropdown/dropdown.types.ts +0 -110
  224. package/src/dropdown/index.ts +0 -2
  225. package/src/file-upload/FileUpload.vue +0 -440
  226. package/src/file-upload/file-upload.types.ts +0 -89
  227. package/src/file-upload/index.ts +0 -7
  228. package/src/icon/Icon.vue +0 -102
  229. package/src/icon/icon.types.ts +0 -25
  230. package/src/icon/index.ts +0 -2
  231. package/src/image/Image.vue +0 -144
  232. package/src/image/image.types.ts +0 -57
  233. package/src/image/index.ts +0 -3
  234. package/src/index.ts +0 -41
  235. package/src/input/Input.vue +0 -148
  236. package/src/input/index.ts +0 -3
  237. package/src/input/input.types.ts +0 -156
  238. package/src/link/Link.vue +0 -133
  239. package/src/link/index.ts +0 -2
  240. package/src/link/link.types.ts +0 -42
  241. package/src/notification/Notification.vue +0 -57
  242. package/src/notification/index.ts +0 -2
  243. package/src/notification/notification.types.ts +0 -25
  244. package/src/pagination/Pagination.vue +0 -137
  245. package/src/pagination/index.ts +0 -2
  246. package/src/pagination/pagination.types.ts +0 -61
  247. package/src/radio/Radio.vue +0 -205
  248. package/src/radio/index.ts +0 -2
  249. package/src/radio/radio.types.ts +0 -95
  250. package/src/scroll-to-top/ScrollToTop.vue +0 -130
  251. package/src/scroll-to-top/index.ts +0 -2
  252. package/src/scroll-to-top/scroll-to-top.types.ts +0 -42
  253. package/src/select/Select.vue +0 -147
  254. package/src/select/index.ts +0 -2
  255. package/src/select/select.types.ts +0 -53
  256. package/src/skeleton/Skeleton.vue +0 -115
  257. package/src/skeleton/index.ts +0 -2
  258. package/src/skeleton/skeleton.types.ts +0 -33
  259. package/src/spinner/Spinner.vue +0 -49
  260. package/src/spinner/index.ts +0 -2
  261. package/src/spinner/spinner.types.ts +0 -11
  262. package/src/split-button/SplitButton.vue +0 -73
  263. package/src/split-button/index.ts +0 -2
  264. package/src/split-button/split-button.types.ts +0 -19
  265. package/src/stepper/Stepper.vue +0 -100
  266. package/src/stepper/index.ts +0 -2
  267. package/src/stepper/stepper.types.ts +0 -29
  268. package/src/switch/Switch.vue +0 -80
  269. package/src/switch/index.ts +0 -2
  270. package/src/switch/switch.types.ts +0 -13
  271. package/src/tab/Tab.vue +0 -99
  272. package/src/tab/index.ts +0 -2
  273. package/src/tab/tab.types.ts +0 -17
  274. package/src/table/Table.vue +0 -264
  275. package/src/table/index.ts +0 -7
  276. package/src/table/table.types.ts +0 -62
  277. package/src/tag/Tag.vue +0 -83
  278. package/src/tag/index.ts +0 -2
  279. package/src/tag/tag.types.ts +0 -24
  280. package/src/textarea/Textarea.vue +0 -84
  281. package/src/textarea/index.ts +0 -2
  282. package/src/textarea/textarea.types.ts +0 -37
  283. package/src/tooltip/Tooltip.vue +0 -81
  284. package/src/tooltip/index.ts +0 -3
  285. package/src/tooltip/tooltip.types.ts +0 -29
  286. package/src/utils/loadBaklavaResources.ts +0 -24
  287. package/tsconfig.json +0 -28
@@ -1,130 +0,0 @@
1
- <script setup lang="ts">
2
- /**
3
- * ScrollToTop Component
4
- *
5
- * A floating button that appears when the user scrolls past a threshold.
6
- * Clicking it scrolls smoothly to the top of the page.
7
- *
8
- * @component
9
- * @example
10
- * ```vue
11
- * <template>
12
- * <BvScrollToTop />
13
- * </template>
14
- * ```
15
- */
16
- import { onMounted, onUnmounted, ref } from "vue";
17
- import BvButton from "../button/Button.vue";
18
- import { loadBaklavaResources } from "../utils/loadBaklavaResources";
19
- import type { ScrollToTopProps } from "./scroll-to-top.types";
20
-
21
- const props = withDefaults(defineProps<ScrollToTopProps>(), {
22
- threshold: 300,
23
- position: "bottom-right",
24
- label: "Scroll to top",
25
- size: "medium",
26
- variant: "primary",
27
- });
28
-
29
- const emit = defineEmits<{
30
- click: [];
31
- }>();
32
-
33
- const isVisible = ref(false);
34
- let rafId: number | null = null;
35
-
36
- const checkVisibility = () => {
37
- isVisible.value = window.scrollY > props.threshold;
38
- };
39
-
40
- const handleScroll = () => {
41
- if (rafId !== null) return;
42
- rafId = requestAnimationFrame(() => {
43
- checkVisibility();
44
- rafId = null;
45
- });
46
- };
47
-
48
- const scrollToTop = () => {
49
- window.scrollTo({ top: 0, behavior: "smooth" });
50
- emit("click");
51
- };
52
-
53
- const positionClasses: Record<
54
- NonNullable<ScrollToTopProps["position"]>,
55
- string
56
- > = {
57
- "bottom-right": "scroll-to-top--bottom-right",
58
- "bottom-left": "scroll-to-top--bottom-left",
59
- "top-right": "scroll-to-top--top-right",
60
- "top-left": "scroll-to-top--top-left",
61
- };
62
-
63
- onMounted(() => {
64
- loadBaklavaResources();
65
- checkVisibility();
66
- window.addEventListener("scroll", handleScroll, { passive: true });
67
- });
68
-
69
- onUnmounted(() => {
70
- window.removeEventListener("scroll", handleScroll);
71
- if (rafId !== null) cancelAnimationFrame(rafId);
72
- });
73
- </script>
74
-
75
- <template>
76
- <Transition name="scroll-to-top-fade">
77
- <div
78
- v-show="isVisible"
79
- :class="['scroll-to-top', positionClasses[position]]"
80
- role="complementary"
81
- aria-label="Scroll to top"
82
- >
83
- <BvButton
84
- :variant="variant"
85
- :size="size"
86
- :label="label"
87
- icon="arrow_up"
88
- @click="scrollToTop"
89
- >
90
- <template #default></template>
91
- </BvButton>
92
- </div>
93
- </Transition>
94
- </template>
95
-
96
- <style scoped>
97
- .scroll-to-top {
98
- position: fixed;
99
- z-index: 1000;
100
- }
101
-
102
- .scroll-to-top--bottom-right {
103
- bottom: 1.5rem;
104
- right: 1.5rem;
105
- }
106
-
107
- .scroll-to-top--bottom-left {
108
- bottom: 1.5rem;
109
- left: 1.5rem;
110
- }
111
-
112
- .scroll-to-top--top-right {
113
- top: 1.5rem;
114
- right: 1.5rem;
115
- }
116
-
117
- .scroll-to-top--top-left {
118
- top: 1.5rem;
119
- left: 1.5rem;
120
- }
121
-
122
- .scroll-to-top-fade-enter-active,
123
- .scroll-to-top-fade-leave-active {
124
- transition: opacity 0.2s ease;
125
- }
126
- .scroll-to-top-fade-enter-from,
127
- .scroll-to-top-fade-leave-to {
128
- opacity: 0;
129
- }
130
- </style>
@@ -1,2 +0,0 @@
1
- export { default as BvScrollToTop } from "./ScrollToTop.vue";
2
- export type { ScrollToTopProps, ScrollToTopPosition } from "./scroll-to-top.types";
@@ -1,42 +0,0 @@
1
- import type { ButtonSize, ButtonVariant } from "@trendyol/baklava/dist/components/button/bl-button";
2
-
3
- /**
4
- * Position of the scroll-to-top button.
5
- */
6
- export type ScrollToTopPosition =
7
- | "bottom-right"
8
- | "bottom-left"
9
- | "top-right"
10
- | "top-left";
11
-
12
- export interface ScrollToTopProps {
13
- /**
14
- * Scroll threshold in pixels. Button becomes visible when user scrolls past this.
15
- * @default 300
16
- */
17
- threshold?: number;
18
-
19
- /**
20
- * Fixed position of the button.
21
- * @default "bottom-right"
22
- */
23
- position?: ScrollToTopPosition;
24
-
25
- /**
26
- * Accessible label for screen readers.
27
- * @default "Scroll to top"
28
- */
29
- label?: string;
30
-
31
- /**
32
- * Button size.
33
- * @default "medium"
34
- */
35
- size?: ButtonSize;
36
-
37
- /**
38
- * Button variant.
39
- * @default "primary"
40
- */
41
- variant?: ButtonVariant;
42
- }
@@ -1,147 +0,0 @@
1
- <script setup lang="ts">
2
- /**
3
- * Select Component
4
- *
5
- * A Vue UI kit component for Baklava's `bl-select` web component with v-model support.
6
- * Supports both slot-based options and the `options` prop for programmatic rendering.
7
- *
8
- * @component
9
- * @example
10
- * ```vue
11
- * <!-- Basic single select with slot -->
12
- * <template>
13
- * <BvSelect v-model="selected" label="Choose an option">
14
- * <bl-select-option value="a">Option A</bl-select-option>
15
- * <bl-select-option value="b">Option B</bl-select-option>
16
- * </BvSelect>
17
- * </template>
18
- * ```
19
- *
20
- * @example
21
- * ```vue
22
- * <!-- Options array -->
23
- * <template>
24
- * <BvSelect v-model="country" label="Country" :options="countries" />
25
- * </template>
26
- * ```
27
- *
28
- * @example
29
- * ```vue
30
- * <!-- Multiple select -->
31
- * <template>
32
- * <BvSelect v-model="selected" label="Select multiple" :multiple="true" :options="items" />
33
- * </template>
34
- * ```
35
- */
36
- import { computed, onMounted } from "vue";
37
- import { loadBaklavaResources } from "../utils/loadBaklavaResources";
38
- import type { SelectProps } from "./select.types";
39
-
40
- /**
41
- * Component props with default values.
42
- */
43
- const props = withDefaults(defineProps<SelectProps>(), {
44
- modelValue: undefined,
45
- options: undefined,
46
- label: undefined,
47
- placeholder: undefined,
48
- name: undefined,
49
- required: undefined,
50
- disabled: undefined,
51
- multiple: undefined,
52
- size: undefined,
53
- clearable: undefined,
54
- helpText: undefined,
55
- customInvalidText: undefined,
56
- searchBar: undefined,
57
- searchBarPlaceholder: undefined,
58
- });
59
-
60
- /**
61
- * Component events.
62
- */
63
- const emit = defineEmits<{
64
- /**
65
- * Emitted when the selection changes. Use with v-model.
66
- *
67
- * @param {string | string[] | null} value - The selected value(s). Array when multiple.
68
- */
69
- "update:modelValue": [value: string | string[] | null];
70
- /**
71
- * Emitted when selection changes (bl-change event).
72
- *
73
- * @param {CustomEvent} event - The native bl-change event from bl-select.
74
- */
75
- change: [event: CustomEvent];
76
- /**
77
- * Emitted on input (bl-input event).
78
- *
79
- * @param {CustomEvent} event - The native bl-input event from bl-select.
80
- */
81
- input: [event: CustomEvent];
82
- }>();
83
-
84
- /**
85
- * Handles the bl-change event from the underlying bl-select component.
86
- * Syncs v-model and forwards the change event.
87
- * The bl-select element (event.target) exposes a .value property for the selected value.
88
- *
89
- * @param {CustomEvent} event - The bl-change event from bl-select.
90
- */
91
- const handleChange = (event: CustomEvent) => {
92
- emit("change", event);
93
- const target = event.target as HTMLSelectElement & {
94
- value?: string | string[] | null;
95
- };
96
- emit("update:modelValue", target?.value ?? null);
97
- };
98
-
99
- /**
100
- * Lifecycle hook: Component mounted.
101
- *
102
- * Loads Baklava resources when the component is mounted.
103
- */
104
- /**
105
- * Props to pass to bl-select. Excludes modelValue (we use :value) and options
106
- * (we render bl-select-option children from options in the template).
107
- */
108
- const selectProps = computed(() => {
109
- const { modelValue: _, options: __, ...rest } = props;
110
- return {
111
- ...rest,
112
- disabled: rest.disabled === true ? true : undefined,
113
- multiple: rest.multiple === true ? true : undefined,
114
- "help-text": rest.helpText ?? undefined,
115
- "invalid-text": rest.customInvalidText ?? undefined,
116
- "search-bar": rest.searchBar === true ? true : undefined,
117
- "search-bar-placeholder": rest.searchBarPlaceholder ?? undefined,
118
- };
119
- });
120
-
121
- onMounted(() => {
122
- loadBaklavaResources();
123
- });
124
- </script>
125
-
126
- <template>
127
- <bl-select
128
- v-bind="selectProps"
129
- :value="props.modelValue"
130
- @bl-change="handleChange"
131
- @bl-input="emit('input', $event)"
132
- >
133
- <!-- Render options from options prop when provided -->
134
- <template v-if="options">
135
- <bl-select-option
136
- v-for="option in options"
137
- :key="option.value"
138
- :value="option.value"
139
- :disabled="option.disabled"
140
- >
141
- {{ option.label }}
142
- </bl-select-option>
143
- </template>
144
- <!-- Default slot for custom bl-select-option children -->
145
- <slot />
146
- </bl-select>
147
- </template>
@@ -1,2 +0,0 @@
1
- export { default as BvSelect } from "./Select.vue";
2
- export type { SelectProps, SelectOption, SelectSize } from "./select.types";
@@ -1,53 +0,0 @@
1
- /**
2
- * Size variants for the Select component.
3
- * @see {@link https://baklavastyle.trendyol.com/components/select | Baklava Select}
4
- */
5
- export type SelectSize = "small" | "medium" | "large";
6
-
7
- /**
8
- * Option shape for the Select component's `options` prop.
9
- * Each option can have a value, display label, and optional disabled state.
10
- */
11
- export interface SelectOption {
12
- /** The value submitted with the form or bound via v-model */
13
- value: string;
14
- /** The label displayed to the user */
15
- label: string;
16
- /** Whether the option is disabled */
17
- disabled?: boolean;
18
- }
19
-
20
- /**
21
- * Props for the Select Vue UI kit component.
22
- * Wraps Baklava's `bl-select` web component with v-model support.
23
- */
24
- export interface SelectProps {
25
- /** Selected value(s) - use with v-model. Single value or array when multiple. */
26
- modelValue?: string | string[] | null;
27
- /** Array of options for programmatic option rendering. Alternative to default slot. */
28
- options?: SelectOption[];
29
- /** Label displayed above or as placeholder for the select */
30
- label?: string;
31
- /** Placeholder text when no value is selected */
32
- placeholder?: string;
33
- /** Select name attribute for form submission */
34
- name?: string;
35
- /** Whether the select is required (shows error state when empty) */
36
- required?: boolean;
37
- /** Whether the select is disabled */
38
- disabled?: boolean;
39
- /** Whether multiple options can be selected */
40
- multiple?: boolean;
41
- /** Size of the select: small, medium, or large */
42
- size?: SelectSize;
43
- /** Whether the selected value can be cleared */
44
- clearable?: boolean;
45
- /** Help text displayed below the select */
46
- helpText?: string;
47
- /** Custom error message for validation */
48
- customInvalidText?: string;
49
- /** Enable search/filter for options in the dropdown */
50
- searchBar?: boolean;
51
- /** Placeholder text for the search input */
52
- searchBarPlaceholder?: string;
53
- }
@@ -1,115 +0,0 @@
1
- <script setup lang="ts">
2
- /**
3
- * Skeleton Component
4
- *
5
- * Animated placeholder for content loading states.
6
- * Displays a shimmer effect with configurable variants.
7
- *
8
- * @component
9
- * @example
10
- * ```vue
11
- * <template>
12
- * <BvSkeleton />
13
- * </template>
14
- * ```
15
- *
16
- * @example
17
- * ```vue
18
- * <template>
19
- * <BvSkeleton variant="text" :count="3" />
20
- * </template>
21
- * ```
22
- */
23
- import { computed, onMounted } from "vue";
24
- import { loadBaklavaResources } from "../utils/loadBaklavaResources";
25
- import type { SkeletonProps } from "./skeleton.types";
26
-
27
- const props = withDefaults(defineProps<SkeletonProps>(), {
28
- variant: "rectangle",
29
- width: undefined,
30
- height: undefined,
31
- count: 1,
32
- });
33
-
34
- const effectiveWidth = computed(() => {
35
- if (props.width) return props.width;
36
- if (props.variant === "circle") return "40px";
37
- return "100%";
38
- });
39
-
40
- const effectiveHeight = computed(() => {
41
- if (props.height) return props.height;
42
- if (props.variant === "circle") return "40px";
43
- return "1rem";
44
- });
45
-
46
-
47
- onMounted(() => {
48
- loadBaklavaResources();
49
- });
50
- </script>
51
-
52
- <template>
53
- <div
54
- class="skeleton-wrapper"
55
- :class="`skeleton-wrapper--${props.variant}`"
56
- role="status"
57
- aria-label="Loading"
58
- >
59
- <div
60
- v-for="n in count"
61
- :key="n"
62
- class="skeleton"
63
- :class="['skeleton--' + props.variant]"
64
- :style="{
65
- width: effectiveWidth,
66
- height: effectiveHeight,
67
- }"
68
- />
69
- </div>
70
- </template>
71
-
72
- <style scoped>
73
- .skeleton-wrapper {
74
- display: flex;
75
- flex-direction: column;
76
- gap: 0.5rem;
77
- }
78
-
79
- .skeleton {
80
- background: var(--bl-color-neutral-light, #e5e7eb);
81
- border-radius: var(--bl-border-radius-s, 0.25rem);
82
- position: relative;
83
- overflow: hidden;
84
- }
85
-
86
- .skeleton::after {
87
- content: "";
88
- position: absolute;
89
- inset: 0;
90
- background: linear-gradient(
91
- 90deg,
92
- transparent 0%,
93
- rgba(255, 255, 255, 0.4) 50%,
94
- transparent 100%
95
- );
96
- animation: skeleton-shimmer 1.5s ease-in-out infinite;
97
- }
98
-
99
- .skeleton--circle {
100
- border-radius: var(--bl-border-radius-circle, 50%);
101
- }
102
-
103
- .skeleton--text {
104
- height: 1rem;
105
- }
106
-
107
- @keyframes skeleton-shimmer {
108
- 0% {
109
- transform: translateX(-100%);
110
- }
111
- 100% {
112
- transform: translateX(100%);
113
- }
114
- }
115
- </style>
@@ -1,2 +0,0 @@
1
- export { default as BvSkeleton } from "./Skeleton.vue";
2
- export type { SkeletonProps, SkeletonVariant } from "./skeleton.types";
@@ -1,33 +0,0 @@
1
- /**
2
- * Skeleton shape variant.
3
- */
4
- export type SkeletonVariant = "text" | "rectangle" | "circle";
5
-
6
- export interface SkeletonProps {
7
- /**
8
- * Shape variant of the skeleton.
9
- * - text: Line shape for text placeholders
10
- * - rectangle: Default block shape
11
- * - circle: Circular shape for avatars
12
- * @default "rectangle"
13
- */
14
- variant?: SkeletonVariant;
15
-
16
- /**
17
- * Width as CSS value (e.g. "100%", "200px", "5rem").
18
- * @default "100%" for text/rectangle, "40px" for circle
19
- */
20
- width?: string;
21
-
22
- /**
23
- * Height as CSS value (e.g. "1rem", "20px").
24
- * @default "1rem" for text, "1rem" for rectangle, "40px" for circle
25
- */
26
- height?: string;
27
-
28
- /**
29
- * Number of skeleton elements to render (for text lines).
30
- * @default 1
31
- */
32
- count?: number;
33
- }
@@ -1,49 +0,0 @@
1
- <script setup lang="ts">
2
- /**
3
- * Spinner Component
4
- *
5
- * A Vue UI kit component for Baklava's `bl-spinner` web component for loading indicators.
6
- * Displays an animated spinner with configurable size and variant.
7
- *
8
- * @component
9
- * @example
10
- * ```vue
11
- * <template>
12
- * <BvSpinner />
13
- * </template>
14
- * ```
15
- *
16
- * @example
17
- * ```vue
18
- * <template>
19
- * <BvSpinner size="large" label="Loading..." />
20
- * </template>
21
- * ```
22
- */
23
- import { computed, onMounted } from "vue";
24
- import { loadBaklavaResources } from "../utils/loadBaklavaResources";
25
- import type { SpinnerProps } from "./spinner.types";
26
-
27
- /**
28
- * Component props with default values.
29
- */
30
- const props = withDefaults(defineProps<SpinnerProps>(), {
31
- size: undefined,
32
- variant: undefined,
33
- label: undefined,
34
- });
35
-
36
- /** Props to pass to bl-spinner (excludes label, which is used for aria-label) */
37
- const spinnerProps = computed(() => {
38
- const { label: _, ...rest } = props;
39
- return rest;
40
- });
41
-
42
- onMounted(() => {
43
- loadBaklavaResources();
44
- });
45
- </script>
46
-
47
- <template>
48
- <bl-spinner v-bind="spinnerProps" :aria-label="label" />
49
- </template>
@@ -1,2 +0,0 @@
1
- export { default as BvSpinner } from "./Spinner.vue";
2
- export type { SpinnerProps } from "./spinner.types";
@@ -1,11 +0,0 @@
1
- /**
2
- * Props for the Spinner component.
3
- */
4
- export interface SpinnerProps {
5
- /** Spinner size (e.g. CSS variable or length like var(--bl-font-size-m)) */
6
- size?: string;
7
- /** Spinner variant/style */
8
- variant?: string;
9
- /** Accessible label for screen readers */
10
- label?: string;
11
- }
@@ -1,73 +0,0 @@
1
- <script setup lang="ts">
2
- /**
3
- * SplitButton Component
4
- *
5
- * A Vue UI kit component for Baklava's `bl-split-button` web component.
6
- * A button with a primary action and a dropdown for secondary actions.
7
- * Dropdown content is provided via the `dropdown-content` slot.
8
- *
9
- * @component
10
- * @example
11
- * ```vue
12
- * <template>
13
- * <BvSplitButton label="Actions" @click="handleClick">
14
- * <template #dropdown-content>
15
- * <bl-dropdown-item>Action 1</bl-dropdown-item>
16
- * <bl-dropdown-item>Action 2</bl-dropdown-item>
17
- * </template>
18
- * </BvSplitButton>
19
- * </template>
20
- * ```
21
- *
22
- * @example
23
- * ```vue
24
- * <template>
25
- * <BvSplitButton label="Save" icon="check" variant="primary" @click="save" />
26
- * </template>
27
- * ```
28
- */
29
- import { onMounted } from "vue";
30
- import { loadBaklavaResources } from "../utils/loadBaklavaResources";
31
- import type { SplitButtonProps } from "./split-button.types";
32
-
33
- const props = defineProps<SplitButtonProps>();
34
-
35
- /**
36
- * Component events.
37
- */
38
- const emit = defineEmits<{
39
- /**
40
- * Emitted when the main button is clicked.
41
- *
42
- * @param {CustomEvent} event - The native click event from bl-split-button.
43
- */
44
- click: [event: CustomEvent];
45
- /**
46
- * Emitted when the dropdown button is clicked.
47
- *
48
- * @param {CustomEvent} event - The native dropdown-click event from bl-split-button.
49
- */
50
- "dropdown-click": [event: CustomEvent];
51
- }>();
52
-
53
- onMounted(() => {
54
- loadBaklavaResources();
55
- });
56
- </script>
57
-
58
- <template>
59
- <bl-split-button
60
- v-bind="{
61
- variant: props.variant,
62
- size: props.size,
63
- disabled: props.disabled === true ? true : undefined,
64
- loading: props.loading === true ? true : undefined,
65
- label: props.label,
66
- icon: props.icon,
67
- }"
68
- @bl-click="emit('click', $event)"
69
- @bl-dropdown-click="emit('dropdown-click', $event)"
70
- >
71
- <slot v-if="$slots['dropdown-content']" name="dropdown-content" />
72
- </bl-split-button>
73
- </template>
@@ -1,2 +0,0 @@
1
- export { default as BvSplitButton } from "./SplitButton.vue";
2
- export type { SplitButtonProps } from "./split-button.types";
@@ -1,19 +0,0 @@
1
- import type { BaklavaIcon } from "@trendyol/baklava-icons";
2
-
3
- /**
4
- * Props for the SplitButton component.
5
- */
6
- export interface SplitButtonProps {
7
- /** Button variant (primary, secondary) */
8
- variant?: string;
9
- /** Button size (small, medium, large) */
10
- size?: string;
11
- /** Whether the main button is disabled */
12
- disabled?: boolean;
13
- /** Loading state of the main button */
14
- loading?: boolean;
15
- /** Button label */
16
- label?: string;
17
- /** Icon name for the main button */
18
- icon?: BaklavaIcon;
19
- }