@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,42 +0,0 @@
1
- /** Link variant - inline (text within content) or standalone (button-like). */
2
- export type LinkVariant = "inline" | "standalone";
3
-
4
- /** Link size - only applies to standalone variant. */
5
- export type LinkSize = "small" | "medium" | "large";
6
-
7
- /** Link kind - only applies to standalone variant. */
8
- export type LinkKind = "primary" | "neutral";
9
-
10
- /**
11
- * Props for the Link component.
12
- *
13
- * @interface LinkProps
14
- */
15
- export interface LinkProps {
16
- /** URL that the hyperlink points to. */
17
- href?: string;
18
- /** Where to display the linked URL (e.g. "_self", "_blank"). */
19
- target?: string;
20
- /** Whether the link is disabled. */
21
- disabled?: boolean;
22
- /** Link variant - inline or standalone. */
23
- variant?: LinkVariant;
24
- /** Link size - only applies to standalone variant. */
25
- size?: LinkSize;
26
- /** Link kind - only applies to standalone variant. */
27
- kind?: LinkKind;
28
- /** Aria label for the link. */
29
- ariaLabel?: string;
30
- /** Relationship between the current document and the linked document (e.g. "noopener noreferrer"). */
31
- rel?: string;
32
- /** Language of the linked document. */
33
- hreflang?: string;
34
- /** MIME type of the linked document. */
35
- type?: string;
36
- /** Referrer policy for the link. */
37
- referrerPolicy?: string;
38
- /** Whether to download the resource instead of navigating to it. */
39
- download?: string;
40
- /** Ping URLs to be notified when following the link. */
41
- ping?: string;
42
- }
@@ -1,57 +0,0 @@
1
- <script setup lang="ts">
2
- /**
3
- * Notification Component
4
- *
5
- * A Vue UI kit component for Baklava's `bl-notification` web component for toast notifications.
6
- * Place this component once in your app (typically at root or layout level). Notifications
7
- * are triggered programmatically via the `useNotification` composable.
8
- *
9
- * @component
10
- * @example
11
- * ```vue
12
- * <!-- Basic usage: place in app root -->
13
- * <template>
14
- * <div>
15
- * <RouterView />
16
- * <BvNotification />
17
- * </div>
18
- * </template>
19
- * ```
20
- *
21
- * @example
22
- * ```vue
23
- * <!-- With useNotification composable -->
24
- * <template>
25
- * <div>
26
- * <BvButton @click="showSuccess">Show Success</BvButton>
27
- * <BvNotification />
28
- * </div>
29
- * </template>
30
- * ```
31
- */
32
- import { onMounted } from "vue";
33
- import { loadBaklavaResources } from "../utils/loadBaklavaResources";
34
- import type { NotificationProps } from "./notification.types";
35
-
36
- /**
37
- * Component props with default values.
38
- */
39
- const props = withDefaults(defineProps<NotificationProps>(), {
40
- duration: 7,
41
- noAnimation: false,
42
- });
43
-
44
- /**
45
- * Lifecycle hook: Component mounted.
46
- * Loads Baklava resources required for the web component.
47
- */
48
- onMounted(() => {
49
- loadBaklavaResources();
50
- });
51
- </script>
52
-
53
- <template>
54
- <bl-notification v-bind="props" />
55
- </template>
56
-
57
- <style lang="css" scoped></style>
@@ -1,2 +0,0 @@
1
- export { default as BvNotification } from "./Notification.vue";
2
- export type { NotificationProps } from "./notification.types";
@@ -1,25 +0,0 @@
1
- /**
2
- * Props for the Notification component.
3
- *
4
- * The Notification component is a Vue UI kit component for Baklava's `bl-notification` web component.
5
- * It acts as a container for toast notifications triggered via the `useNotification` composable.
6
- *
7
- * @interface NotificationProps
8
- */
9
- export interface NotificationProps {
10
- /**
11
- * Default duration of notifications in seconds.
12
- * Individual notifications can override this via the `useNotification` options.
13
- *
14
- * @default 7
15
- */
16
- duration?: number;
17
-
18
- /**
19
- * Whether to disable animations.
20
- * Respects user's reduced-motion preferences.
21
- *
22
- * @default false
23
- */
24
- noAnimation?: boolean;
25
- }
@@ -1,137 +0,0 @@
1
- <script setup lang="ts">
2
- /**
3
- * Pagination Component
4
- *
5
- * A Vue UI kit component for Baklava's `bl-pagination` web component for page navigation.
6
- * Supports v-model:currentPage for two-way binding and emits change events when
7
- * the user navigates to a different page.
8
- *
9
- * @component
10
- * @example
11
- * ```vue
12
- * <!-- Basic pagination -->
13
- * <template>
14
- * <BvPagination
15
- * v-model:current-page="currentPage"
16
- * :total-items="100"
17
- * :page-size="10"
18
- * @change="handlePageChange"
19
- * />
20
- * </template>
21
- * ```
22
- *
23
- * @example
24
- * ```vue
25
- * <!-- With jumper - jump directly to a page -->
26
- * <template>
27
- * <BvPagination
28
- * v-model:current-page="currentPage"
29
- * :total-items="250"
30
- * :page-size="25"
31
- * :has-jumper="true"
32
- * jumper-label="Go to page"
33
- * />
34
- * </template>
35
- * ```
36
- *
37
- * @example
38
- * ```vue
39
- * <!-- With items-per-page select -->
40
- * <template>
41
- * <BvPagination
42
- * v-model:current-page="currentPage"
43
- * :total-items="100"
44
- * :page-size="10"
45
- * :has-select="true"
46
- * select-label="Items per page"
47
- * :items-per-page-options="[
48
- * { text: '10 Items', value: 10 },
49
- * { text: '25 Items', value: 25 },
50
- * { text: '50 Items', value: 50 }
51
- * ]"
52
- * />
53
- * </template>
54
- * ```
55
- */
56
- import { onMounted } from "vue";
57
- import { loadBaklavaResources } from "../utils/loadBaklavaResources";
58
- import type { PaginationProps } from "./pagination.types";
59
-
60
- /**
61
- * Component props with default values.
62
- */
63
- const props = withDefaults(defineProps<PaginationProps>(), {
64
- currentPage: undefined,
65
- totalItems: undefined,
66
- pageSize: undefined,
67
- hasJumper: false,
68
- jumperLabel: undefined,
69
- hasSelect: false,
70
- selectLabel: undefined,
71
- itemsPerPageOptions: undefined,
72
- });
73
-
74
- /**
75
- * Component events.
76
- */
77
- const emit = defineEmits<{
78
- /**
79
- * Emitted when the current page changes.
80
- * Use v-model:currentPage for two-way binding.
81
- *
82
- * @param {number} page - The new current page number.
83
- */
84
- "update:currentPage": [page: number];
85
-
86
- /**
87
- * Emitted when the user navigates to a different page.
88
- * Payload contains selectedPage, prevPage, and itemsPerPage.
89
- *
90
- * @param {CustomEvent<{ selectedPage: number; prevPage: number; itemsPerPage: number }>} event - The change event from bl-pagination.
91
- */
92
- change: [event: CustomEvent];
93
- }>();
94
-
95
- /**
96
- * Handles the bl-change event from the underlying bl-pagination component.
97
- * Extracts selectedPage from event.detail and emits update:currentPage and change.
98
- *
99
- * @param {CustomEvent} event - The bl-change event from bl-pagination.
100
- */
101
- const handleChange = (event: CustomEvent) => {
102
- emit("change", event);
103
- const detail = event.detail as
104
- | { selectedPage?: number; prevPage?: number; itemsPerPage?: number }
105
- | undefined;
106
- const page = detail?.selectedPage;
107
- if (page !== undefined) {
108
- emit("update:currentPage", page);
109
- }
110
- };
111
-
112
- /**
113
- * Lifecycle hook: Component mounted.
114
- * Loads Baklava resources required for bl-pagination.
115
- */
116
- onMounted(() => {
117
- loadBaklavaResources();
118
- });
119
- </script>
120
-
121
- <template>
122
- <bl-pagination
123
- v-bind="{
124
- 'current-page': props.currentPage,
125
- 'total-items': props.totalItems,
126
- 'items-per-page': props.pageSize,
127
- 'has-jumper': props.hasJumper === true ? true : undefined,
128
- 'jumper-label': props.jumperLabel,
129
- 'has-select': props.hasSelect === true ? true : undefined,
130
- 'select-label': props.selectLabel,
131
- 'items-per-page-options': props.itemsPerPageOptions,
132
- }"
133
- @bl-change="handleChange"
134
- >
135
- <slot />
136
- </bl-pagination>
137
- </template>
@@ -1,2 +0,0 @@
1
- export { default as BvPagination } from "./Pagination.vue";
2
- export type { PaginationProps, ItemsPerPageOption } from "./pagination.types";
@@ -1,61 +0,0 @@
1
- /**
2
- * Options for the items-per-page select element.
3
- */
4
- export interface ItemsPerPageOption {
5
- /** Display text for the option */
6
- text: string;
7
- /** Numeric value for the option */
8
- value: number;
9
- }
10
-
11
- /**
12
- * Props for the Pagination component.
13
- * Maps to Baklava's bl-pagination attributes.
14
- *
15
- * @see https://github.com/Trendyol/baklava
16
- */
17
- export interface PaginationProps {
18
- /**
19
- * Current page number (1-based).
20
- * Supports v-model:currentPage.
21
- */
22
- currentPage?: number;
23
-
24
- /**
25
- * Total number of items to be paginated.
26
- * Baklava uses this to compute the total number of pages.
27
- */
28
- totalItems?: number;
29
-
30
- /**
31
- * Number of items per page.
32
- * Maps to Baklava's items-per-page attribute.
33
- */
34
- pageSize?: number;
35
-
36
- /**
37
- * When true, adds a jumper input to jump directly to a page.
38
- */
39
- hasJumper?: boolean;
40
-
41
- /**
42
- * Label for the jumper input.
43
- */
44
- jumperLabel?: string;
45
-
46
- /**
47
- * When true, adds a select element to choose items per page.
48
- */
49
- hasSelect?: boolean;
50
-
51
- /**
52
- * Label for the items-per-page select.
53
- */
54
- selectLabel?: string;
55
-
56
- /**
57
- * Options for the items-per-page select element.
58
- * Each option has `text` (display) and `value` (number).
59
- */
60
- itemsPerPageOptions?: ItemsPerPageOption[];
61
- }
@@ -1,205 +0,0 @@
1
- <script setup lang="ts">
2
- /**
3
- * Radio Component
4
- *
5
- * A Vue UI kit component for Baklava's `bl-radio` and `bl-radio-group` web components.
6
- * Can be used as either a single radio option or as a group container for multiple radios.
7
- *
8
- * @component
9
- * @example
10
- * ```vue
11
- * <!-- Single radio in a group -->
12
- * <template>
13
- * <bl-radio-group :value="choice" @bl-radio-change="choice = $event.detail">
14
- * <BvRadio v-model="choice" value="yes" label="Yes" name="choice" />
15
- * <BvRadio v-model="choice" value="no" label="No" name="choice" />
16
- * </bl-radio-group>
17
- * </template>
18
- * ```
19
- *
20
- * @example
21
- * ```vue
22
- * <!-- Radio group with items -->
23
- * <template>
24
- * <BvRadio v-model="choice" :items="items">
25
- * <template #item="{ item }">{{ item.label }}</template>
26
- * </BvRadio>
27
- * </template>
28
- * ```
29
- *
30
- * @example
31
- * ```vue
32
- * <!-- Explicit checked control -->
33
- * <template>
34
- * <BvRadio :checked="isSelected" @update:checked="isSelected = $event" label="Option" />
35
- * </template>
36
- * ```
37
- */
38
- import { computed, onMounted } from "vue";
39
- import { loadBaklavaResources } from "../utils/loadBaklavaResources";
40
- import type { RadioProps } from "./radio.types";
41
-
42
- /**
43
- * Component props with default values.
44
- */
45
- const props = withDefaults(defineProps<RadioProps>(), {
46
- modelValue: undefined,
47
- value: undefined,
48
- name: undefined,
49
- label: undefined,
50
- checked: undefined,
51
- disabled: undefined,
52
- required: undefined,
53
- items: undefined,
54
- });
55
-
56
- /**
57
- * Component events.
58
- */
59
- const emit = defineEmits<{
60
- /**
61
- * Emitted when selection changes (for v-model with modelValue).
62
- * Payload is this radio's value when it becomes selected (single mode) or the selected value (group mode).
63
- *
64
- * @param {string | number} value - The selected value.
65
- */
66
- "update:modelValue": [value: string | number];
67
-
68
- /**
69
- * Emitted when checked state changes (for explicit checked control).
70
- *
71
- * @param {boolean} checked - The new checked state.
72
- */
73
- "update:checked": [checked: boolean];
74
-
75
- /**
76
- * Emitted when the radio state changes (native bl-change / bl-radio-change event).
77
- *
78
- * @param {CustomEvent} event - The change event from bl-radio or bl-radio-group.
79
- */
80
- change: [event: CustomEvent];
81
-
82
- /**
83
- * Emitted on input (native bl-input event).
84
- *
85
- * @param {CustomEvent} event - The bl-input event from bl-radio.
86
- */
87
- input: [event: CustomEvent];
88
- }>();
89
-
90
- /**
91
- * Determines if the component should act as a group container.
92
- * When `items` prop is provided and is an array, it acts as a group.
93
- */
94
- const isGroupMode = computed(
95
- () => props.items !== undefined && Array.isArray(props.items),
96
- );
97
-
98
- /**
99
- * Normalized model value for group mode (string for bl-radio-group).
100
- */
101
- const groupValue = computed(() => {
102
- const val = props.modelValue;
103
- if (val === undefined || val === null) return "";
104
- return String(val);
105
- });
106
-
107
- /**
108
- * Computed checked state for bl-radio (single mode).
109
- * Uses explicit checked prop when provided, otherwise modelValue === value for v-model.
110
- */
111
- const computedChecked = computed(() => {
112
- if (props.checked === true || props.checked === false) {
113
- return props.checked;
114
- }
115
- if (props.modelValue !== undefined && props.value !== undefined) {
116
- return String(props.modelValue) === String(props.value);
117
- }
118
- return undefined;
119
- });
120
-
121
- /**
122
- * Handles the bl-change event from the underlying bl-radio (single mode).
123
- * Emits update:modelValue with this radio's value when selected, or update:checked.
124
- */
125
- const handleSingleChange = (event: CustomEvent) => {
126
- emit("change", event);
127
- const target = event.target as { checked?: boolean; value?: string | number };
128
- const checked = target?.checked;
129
- if (checked === true && props.value !== undefined) {
130
- emit("update:modelValue", props.value);
131
- }
132
- if (checked === true || checked === false) {
133
- emit("update:checked", checked);
134
- }
135
- };
136
-
137
- /**
138
- * Handles the bl-radio-change event from the underlying bl-radio-group (group mode).
139
- * Emits update:modelValue with the selected value (preserves original type from items).
140
- */
141
- const handleGroupChange = (event: CustomEvent) => {
142
- emit("change", event);
143
- const detail = event.detail as string | undefined;
144
- if (detail === undefined || detail === "") return;
145
- const item = props.items?.find(
146
- (i) => String(i.value) === String(detail),
147
- );
148
- const newValue = item !== undefined ? item.value : detail;
149
- emit("update:modelValue", newValue);
150
- };
151
-
152
- /**
153
- * Lifecycle hook: Component mounted.
154
- * Loads Baklava resources for bl-radio and bl-radio-group.
155
- */
156
- onMounted(() => {
157
- loadBaklavaResources();
158
- });
159
- </script>
160
-
161
- <template>
162
- <!-- Group mode: render as bl-radio-group -->
163
- <bl-radio-group
164
- v-if="isGroupMode"
165
- :value="groupValue"
166
- :required="props.required === true ? true : undefined"
167
- :label="props.label"
168
- @bl-radio-change="handleGroupChange"
169
- >
170
- <bl-radio
171
- v-for="(item, index) in props.items"
172
- :key="String(item.value)"
173
- v-bind="{
174
- value: String(item.value),
175
- disabled: item.disabled === true ? true : undefined,
176
- name: item.name ?? props.name,
177
- }"
178
- >
179
- <slot name="item" :item="item" :index="index">
180
- {{ item.label }}
181
- </slot>
182
- </bl-radio>
183
- </bl-radio-group>
184
-
185
- <!-- Single radio mode: render as bl-radio -->
186
- <bl-radio
187
- v-else
188
- v-bind="{
189
- value: props.value !== undefined ? String(props.value) : undefined,
190
- name: props.name,
191
- disabled: props.disabled === true ? true : undefined,
192
- required: props.required === true ? true : undefined,
193
- checked:
194
- computedChecked === true
195
- ? true
196
- : computedChecked === false
197
- ? false
198
- : undefined,
199
- }"
200
- @bl-change="handleSingleChange"
201
- @bl-input="emit('input', $event)"
202
- >
203
- <slot>{{ label }}</slot>
204
- </bl-radio>
205
- </template>
@@ -1,2 +0,0 @@
1
- export { default as BvRadio } from "./Radio.vue";
2
- export type { RadioProps, RadioItem } from "./radio.types";
@@ -1,95 +0,0 @@
1
- /**
2
- * Properties for a single radio item when used in group mode.
3
- *
4
- * @interface RadioItem
5
- */
6
- export interface RadioItem {
7
- /**
8
- * The value of the radio (used for v-model in group mode).
9
- */
10
- value: string | number;
11
-
12
- /**
13
- * The label text displayed next to the radio.
14
- */
15
- label?: string;
16
-
17
- /**
18
- * Whether the radio is disabled.
19
- *
20
- * @default false
21
- */
22
- disabled?: boolean;
23
-
24
- /**
25
- * The name attribute for the radio group.
26
- */
27
- name?: string;
28
-
29
- /**
30
- * Additional custom data for use in the #item scoped slot.
31
- */
32
- [key: string]: unknown;
33
- }
34
-
35
- /**
36
- * Props for the Radio component.
37
- *
38
- * When `items` prop is provided, the component acts as a radio group container.
39
- * Otherwise, it acts as a single radio option.
40
- *
41
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/radio
42
- */
43
- export interface RadioProps {
44
- /**
45
- * Selected value (single mode or group mode).
46
- * Use v-model for two-way binding.
47
- * - Single mode: used with value prop for comparison
48
- * - Group mode: the selected item's value
49
- */
50
- modelValue?: string | number;
51
-
52
- /**
53
- * This radio option's value. Used for v-model comparison and form submission.
54
- * Only used when component is in single radio mode.
55
- */
56
- value?: string | number;
57
-
58
- /**
59
- * Name attribute for the radio group. All radios in the same group must share the same name.
60
- * Only used when component is in single radio mode.
61
- */
62
- name?: string;
63
-
64
- /**
65
- * Label text displayed next to the radio. Can be overridden by the default slot.
66
- * Only used when component is in single radio mode.
67
- */
68
- label?: string;
69
-
70
- /**
71
- * Boolean to explicitly control checked state.
72
- * When provided, overrides modelValue === value logic.
73
- * Only used when component is in single radio mode.
74
- */
75
- checked?: boolean;
76
-
77
- /**
78
- * Whether the radio is disabled.
79
- * Only used when component is in single radio mode.
80
- */
81
- disabled?: boolean;
82
-
83
- /**
84
- * Whether the radio group is required (for form validation).
85
- * Used in group mode on bl-radio-group.
86
- */
87
- required?: boolean;
88
-
89
- /**
90
- * Array of radio items to render when in group mode.
91
- * Each item will be rendered as a bl-radio element inside bl-radio-group.
92
- * Only used when component is in group mode.
93
- */
94
- items?: RadioItem[];
95
- }