@baklavue/ui 1.0.0 → 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 (327) 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 +18 -2
  195. package/.releaserc.json +0 -14
  196. package/CHANGELOG.md +0 -88
  197. package/env.d.ts +0 -5
  198. package/index.ts +0 -1
  199. package/src/accordion/Accordion.spec.ts +0 -75
  200. package/src/accordion/Accordion.vue +0 -206
  201. package/src/accordion/accordion.types.ts +0 -109
  202. package/src/accordion/index.ts +0 -3
  203. package/src/alert/Alert.spec.ts +0 -38
  204. package/src/alert/Alert.vue +0 -199
  205. package/src/alert/alert.types.ts +0 -58
  206. package/src/alert/index.ts +0 -2
  207. package/src/badge/Badge.spec.ts +0 -28
  208. package/src/badge/Badge.vue +0 -20
  209. package/src/badge/badge.types.ts +0 -7
  210. package/src/badge/index.ts +0 -2
  211. package/src/banner/Banner.spec.ts +0 -111
  212. package/src/banner/Banner.vue +0 -265
  213. package/src/banner/banner.types.ts +0 -86
  214. package/src/banner/index.ts +0 -2
  215. package/src/button/Button.spec.ts +0 -51
  216. package/src/button/Button.vue +0 -45
  217. package/src/button/button.types.ts +0 -30
  218. package/src/button/index.ts +0 -3
  219. package/src/checkbox/Checkbox.spec.ts +0 -216
  220. package/src/checkbox/Checkbox.vue +0 -148
  221. package/src/checkbox/checkbox.types.ts +0 -108
  222. package/src/checkbox/index.ts +0 -2
  223. package/src/chip/Chip.spec.ts +0 -49
  224. package/src/chip/Chip.vue +0 -237
  225. package/src/chip/chip.types.ts +0 -77
  226. package/src/chip/index.ts +0 -2
  227. package/src/datepicker/Datepicker.spec.ts +0 -129
  228. package/src/datepicker/Datepicker.vue +0 -172
  229. package/src/datepicker/datepicker.types.ts +0 -39
  230. package/src/datepicker/index.ts +0 -2
  231. package/src/dialog/Dialog.spec.ts +0 -111
  232. package/src/dialog/Dialog.vue +0 -178
  233. package/src/dialog/dialog.types.ts +0 -17
  234. package/src/dialog/index.ts +0 -2
  235. package/src/drawer/Drawer.spec.ts +0 -102
  236. package/src/drawer/Drawer.vue +0 -162
  237. package/src/drawer/drawer.types.ts +0 -17
  238. package/src/drawer/index.ts +0 -2
  239. package/src/dropdown/Dropdown.spec.ts +0 -207
  240. package/src/dropdown/Dropdown.vue +0 -231
  241. package/src/dropdown/dropdown.types.ts +0 -110
  242. package/src/dropdown/index.ts +0 -2
  243. package/src/file-upload/FileUpload.spec.ts +0 -359
  244. package/src/file-upload/FileUpload.vue +0 -440
  245. package/src/file-upload/file-upload.types.ts +0 -89
  246. package/src/file-upload/index.ts +0 -7
  247. package/src/icon/Icon.spec.ts +0 -40
  248. package/src/icon/Icon.vue +0 -102
  249. package/src/icon/icon.types.ts +0 -25
  250. package/src/icon/index.ts +0 -2
  251. package/src/image/Image.spec.ts +0 -23
  252. package/src/image/Image.vue +0 -144
  253. package/src/image/image.types.ts +0 -57
  254. package/src/image/index.ts +0 -3
  255. package/src/index.ts +0 -43
  256. package/src/input/Input.spec.ts +0 -69
  257. package/src/input/Input.vue +0 -148
  258. package/src/input/index.ts +0 -3
  259. package/src/input/input.types.ts +0 -156
  260. package/src/link/Link.spec.ts +0 -69
  261. package/src/link/Link.vue +0 -133
  262. package/src/link/index.ts +0 -2
  263. package/src/link/link.types.ts +0 -42
  264. package/src/notification/Notification.spec.ts +0 -18
  265. package/src/notification/Notification.vue +0 -57
  266. package/src/notification/index.ts +0 -2
  267. package/src/notification/notification.types.ts +0 -25
  268. package/src/pagination/Pagination.spec.ts +0 -39
  269. package/src/pagination/Pagination.vue +0 -137
  270. package/src/pagination/index.ts +0 -2
  271. package/src/pagination/pagination.types.ts +0 -61
  272. package/src/radio/Radio.spec.ts +0 -149
  273. package/src/radio/Radio.vue +0 -205
  274. package/src/radio/index.ts +0 -2
  275. package/src/radio/radio.types.ts +0 -95
  276. package/src/scroll-to-top/ScrollToTop.spec.ts +0 -119
  277. package/src/scroll-to-top/ScrollToTop.vue +0 -130
  278. package/src/scroll-to-top/index.ts +0 -2
  279. package/src/scroll-to-top/scroll-to-top.types.ts +0 -42
  280. package/src/select/Select.spec.ts +0 -47
  281. package/src/select/Select.vue +0 -147
  282. package/src/select/index.ts +0 -2
  283. package/src/select/select.types.ts +0 -53
  284. package/src/skeleton/Skeleton.spec.ts +0 -28
  285. package/src/skeleton/Skeleton.vue +0 -115
  286. package/src/skeleton/index.ts +0 -2
  287. package/src/skeleton/skeleton.types.ts +0 -33
  288. package/src/spinner/Spinner.spec.ts +0 -28
  289. package/src/spinner/Spinner.vue +0 -49
  290. package/src/spinner/index.ts +0 -2
  291. package/src/spinner/spinner.types.ts +0 -11
  292. package/src/split-button/SplitButton.spec.ts +0 -24
  293. package/src/split-button/SplitButton.vue +0 -73
  294. package/src/split-button/index.ts +0 -2
  295. package/src/split-button/split-button.types.ts +0 -19
  296. package/src/stepper/Stepper.spec.ts +0 -37
  297. package/src/stepper/Stepper.vue +0 -100
  298. package/src/stepper/index.ts +0 -2
  299. package/src/stepper/stepper.types.ts +0 -29
  300. package/src/switch/Switch.spec.ts +0 -30
  301. package/src/switch/Switch.vue +0 -80
  302. package/src/switch/index.ts +0 -2
  303. package/src/switch/switch.types.ts +0 -13
  304. package/src/tab/Tab.spec.ts +0 -87
  305. package/src/tab/Tab.vue +0 -99
  306. package/src/tab/index.ts +0 -2
  307. package/src/tab/tab.types.ts +0 -17
  308. package/src/table/Table.spec.ts +0 -185
  309. package/src/table/Table.vue +0 -264
  310. package/src/table/index.ts +0 -7
  311. package/src/table/table.types.ts +0 -62
  312. package/src/tag/Tag.spec.ts +0 -84
  313. package/src/tag/Tag.vue +0 -83
  314. package/src/tag/index.ts +0 -2
  315. package/src/tag/tag.types.ts +0 -24
  316. package/src/textarea/Textarea.spec.ts +0 -105
  317. package/src/textarea/Textarea.vue +0 -84
  318. package/src/textarea/index.ts +0 -2
  319. package/src/textarea/textarea.types.ts +0 -37
  320. package/src/tooltip/Tooltip.spec.ts +0 -46
  321. package/src/tooltip/Tooltip.vue +0 -81
  322. package/src/tooltip/index.ts +0 -3
  323. package/src/tooltip/tooltip.types.ts +0 -29
  324. package/src/utils/loadBaklavaResources.ts +0 -24
  325. package/tests/setup.ts +0 -352
  326. package/tsconfig.json +0 -29
  327. package/vitest.config.ts +0 -32
@@ -0,0 +1,35 @@
1
+ import { TextareaProps } from './textarea.types';
2
+ declare function __VLS_template(): {
3
+ attrs: Partial<{}>;
4
+ slots: {
5
+ default?(_: {}): any;
6
+ };
7
+ refs: {};
8
+ rootEl: any;
9
+ };
10
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
11
+ declare const __VLS_component: import('vue').DefineComponent<TextareaProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
12
+ input: (event: CustomEvent<any>) => any;
13
+ change: (event: CustomEvent<any>) => any;
14
+ "update:modelValue": (value: string | null) => any;
15
+ }, string, import('vue').PublicProps, Readonly<TextareaProps> & Readonly<{
16
+ onInput?: ((event: CustomEvent<any>) => any) | undefined;
17
+ onChange?: ((event: CustomEvent<any>) => any) | undefined;
18
+ "onUpdate:modelValue"?: ((value: string | null) => any) | undefined;
19
+ }>, {
20
+ label: string;
21
+ disabled: boolean;
22
+ placeholder: string;
23
+ modelValue: string | null;
24
+ required: boolean;
25
+ maxlength: number;
26
+ rows: number;
27
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
28
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
29
+ export default _default;
30
+ type __VLS_WithTemplateSlots<T, S> = T & {
31
+ new (): {
32
+ $slots: S;
33
+ };
34
+ };
35
+ //# sourceMappingURL=Textarea.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Textarea.vue.d.ts","sourceRoot":"","sources":["../../src/textarea/Textarea.vue"],"names":[],"mappings":"AAqHA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA+CtD,iBAAS,cAAc;WA4DT,OAAO,IAA6B;;yBAVpB,GAAG;;;;EAehC;AAWD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;6EASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { default as BvTextarea } from './Textarea.vue';
2
+ export type { TextareaProps, TextareaSize } from './textarea.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/textarea/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /** Textarea size */
2
+ export type TextareaSize = "small" | "medium" | "large";
3
+ export interface TextareaProps {
4
+ /** Textarea value (use with v-model) */
5
+ modelValue?: string | null;
6
+ /** Label text */
7
+ label?: string;
8
+ /** Placeholder text */
9
+ placeholder?: string;
10
+ /** Number of visible rows */
11
+ rows?: number;
12
+ /** Maximum character length */
13
+ maxlength?: number;
14
+ /** Minimum character length */
15
+ minlength?: number;
16
+ /** Disabled state */
17
+ disabled?: boolean;
18
+ /** Required field */
19
+ required?: boolean;
20
+ /** Readonly state */
21
+ readonly?: boolean;
22
+ /** Help text below the textarea */
23
+ helpText?: string;
24
+ /** Custom error/invalid message */
25
+ invalidText?: string;
26
+ /** Enable character counter */
27
+ characterCounter?: boolean;
28
+ /** Enable auto-expand up to maxRows */
29
+ expand?: boolean;
30
+ /** Max rows when expand is true */
31
+ maxRows?: number;
32
+ /** Textarea size */
33
+ size?: TextareaSize;
34
+ /** Name attribute for forms */
35
+ name?: string;
36
+ }
37
+ //# sourceMappingURL=textarea.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.types.d.ts","sourceRoot":"","sources":["../../src/textarea/textarea.types.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,33 @@
1
+ import { TooltipProps } from './tooltip.types';
2
+ declare function __VLS_template(): {
3
+ attrs: Partial<{}>;
4
+ slots: {
5
+ default?(_: {}): any;
6
+ default?(_: {}): any;
7
+ content?(_: {}): any;
8
+ };
9
+ refs: {};
10
+ rootEl: any;
11
+ };
12
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
13
+ declare const __VLS_component: import('vue').DefineComponent<TooltipProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
14
+ show: () => any;
15
+ hide: () => any;
16
+ }, string, import('vue').PublicProps, Readonly<TooltipProps> & Readonly<{
17
+ onShow?: (() => any) | undefined;
18
+ onHide?: (() => any) | undefined;
19
+ }>, {
20
+ disabled: boolean;
21
+ placement: import('./tooltip.types').TooltipPlacement;
22
+ trigger: string;
23
+ content: string;
24
+ delay: number;
25
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
26
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
27
+ export default _default;
28
+ type __VLS_WithTemplateSlots<T, S> = T & {
29
+ new (): {
30
+ $slots: S;
31
+ };
32
+ };
33
+ //# sourceMappingURL=Tooltip.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.vue.d.ts","sourceRoot":"","sources":["../../src/tooltip/Tooltip.vue"],"names":[],"mappings":"AAiHA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA6CpD,iBAAS,cAAc;WAoET,OAAO,IAA6B;;yBAZrB,GAAG;yBAEF,GAAG;yBADH,GAAG;;;;EAgBhC;AAYD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;6EAQnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { default as BvTooltip } from './Tooltip.vue';
2
+ export type { TooltipProps, TooltipPlacement } from './tooltip.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tooltip/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /** Tooltip placement relative to trigger */
2
+ export type TooltipPlacement = "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end" | "right" | "right-start" | "right-end";
3
+ export interface TooltipProps {
4
+ /** Tooltip content text */
5
+ content?: string;
6
+ /** Placement of tooltip relative to trigger (default: 'top') */
7
+ placement?: TooltipPlacement;
8
+ /** Target element (selector or Element) when using external trigger */
9
+ target?: string | Element;
10
+ /** Trigger type: 'hover' | 'click' etc. (passed to bl-tooltip) */
11
+ trigger?: string;
12
+ /** Disabled state */
13
+ disabled?: boolean;
14
+ /** Delay before showing tooltip (ms) */
15
+ delay?: number;
16
+ }
17
+ //# sourceMappingURL=tooltip.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.types.d.ts","sourceRoot":"","sources":["../../src/tooltip/tooltip.types.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,MAAM,MAAM,gBAAgB,GACxB,KAAK,GACL,WAAW,GACX,SAAS,GACT,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,MAAM,GACN,YAAY,GACZ,UAAU,GACV,OAAO,GACP,aAAa,GACb,WAAW,CAAC;AAEhB,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export declare const loadBaklavaResources: () => void;
2
+ //# sourceMappingURL=loadBaklavaResources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadBaklavaResources.d.ts","sourceRoot":"","sources":["../../src/utils/loadBaklavaResources.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,oBAAoB,YAyBhC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baklavue/ui",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Vue 3 UI kit for Trendyol Baklava Design System",
5
5
  "author": "erbilnas",
6
6
  "license": "MIT",
@@ -22,18 +22,34 @@
22
22
  "components",
23
23
  "ui"
24
24
  ],
25
- "module": "index.ts",
25
+ "main": "dist/index.js",
26
+ "module": "dist/index.js",
27
+ "types": "dist/index.d.ts",
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/index.d.ts",
31
+ "import": "./dist/index.js",
32
+ "default": "./dist/index.js"
33
+ }
34
+ },
26
35
  "type": "module",
27
36
  "scripts": {
37
+ "build": "bunx vite build",
38
+ "prepublishOnly": "bun run build",
28
39
  "release": "semantic-release -e semantic-release-monorepo",
29
40
  "release:dry-run": "semantic-release --dry-run -e semantic-release-monorepo",
30
41
  "test": "vitest",
31
42
  "test:run": "vitest run",
32
43
  "test:coverage": "vitest run --coverage"
33
44
  },
45
+ "files": [
46
+ "dist"
47
+ ],
34
48
  "devDependencies": {
35
49
  "@types/bun": "latest",
36
50
  "@vitejs/plugin-vue": "^5.2.4",
51
+ "vite": "^6.0.0",
52
+ "vite-plugin-dts": "^4.3.0",
37
53
  "@vitest/coverage-v8": "^4.0.18",
38
54
  "@vue/test-utils": "^2.4.6",
39
55
  "happy-dom": "^20.6.1",
package/.releaserc.json DELETED
@@ -1,14 +0,0 @@
1
- {
2
- "extends": "semantic-release-monorepo",
3
- "tagFormat": "@baklavue/ui-v${version}",
4
- "branches": ["main", { "name": "preview", "prerelease": true, "channel": "beta" }],
5
- "repositoryUrl": "https://github.com/erbilnas/baklavue",
6
- "plugins": [
7
- "@semantic-release/commit-analyzer",
8
- "@semantic-release/release-notes-generator",
9
- "@semantic-release/changelog",
10
- ["@semantic-release/npm", { "npmPublish": true }],
11
- "@semantic-release/github",
12
- "@semantic-release/git"
13
- ]
14
- }
package/CHANGELOG.md DELETED
@@ -1,88 +0,0 @@
1
- # @baklavue/ui-v1.0.0 (2026-02-12)
2
-
3
-
4
- ### Bug Fixes
5
-
6
- * fix package version ([620618d](https://github.com/erbilnas/baklavue/commit/620618df664022f1b68859aee4b374f6586731bb))
7
- * fix release ci ([6c22554](https://github.com/erbilnas/baklavue/commit/6c225541b182c4b8692af000e7c13ca6e546599a))
8
- * fix release ci ([6e23d99](https://github.com/erbilnas/baklavue/commit/6e23d99cac122d033c72d6d98819e0329c92bcdc))
9
-
10
-
11
- ### Features
12
-
13
- * add accordion and alert components ([10b8155](https://github.com/erbilnas/baklavue/commit/10b81556184432deb2772d3489c24be6115e667c))
14
- * add accordion, alert and badge components ([b939941](https://github.com/erbilnas/baklavue/commit/b939941e469a29b10ddcc6196f97700951672f97))
15
- * add file upload component ([7aa41b1](https://github.com/erbilnas/baklavue/commit/7aa41b1766c72572be97c84bddc2ca5dccac9be8))
16
- * add github pages support ([c76dffa](https://github.com/erbilnas/baklavue/commit/c76dffa8eb32b8293aca7c7e1f5d2ee4139802b0))
17
- * add image component ([609eefe](https://github.com/erbilnas/baklavue/commit/609eefe9a4a9f74fc19c7e2a8aa2ab0d7529686f))
18
- * add info for npm package ([8ffbb9f](https://github.com/erbilnas/baklavue/commit/8ffbb9f81d108d633608ebe8d3854a2f6861475a))
19
- * add new components ([b3c535e](https://github.com/erbilnas/baklavue/commit/b3c535e010e1e43b9b04365df2205b69a0777695))
20
- * add new components ([f977070](https://github.com/erbilnas/baklavue/commit/f977070bc1634941a5566f079922410838e1e257))
21
- * add new components ([fa3b4d1](https://github.com/erbilnas/baklavue/commit/fa3b4d1586f7e5b15194d182931e5bc89fd2f1dd))
22
- * add new components ([ec926f0](https://github.com/erbilnas/baklavue/commit/ec926f0e9ba11c1a28a97c8afee4829b38ed8539))
23
- * add new components ([5d3d7e2](https://github.com/erbilnas/baklavue/commit/5d3d7e2e5a040cb57bd964db2cee2178bb574a82))
24
- * add new components ([22a1506](https://github.com/erbilnas/baklavue/commit/22a150681ad8587c92ad5546fbc256d9275b6d00))
25
- * add new composables ([49105ea](https://github.com/erbilnas/baklavue/commit/49105eaa106f1a5b888f9e3f9638ed9776b3d55b))
26
- * add theme customizer tool for docs ([70c08cf](https://github.com/erbilnas/baklavue/commit/70c08cf505ff02b1ab6c3e569055b703674bb822))
27
- * disable npm package-lock for bun ([d91c5ca](https://github.com/erbilnas/baklavue/commit/d91c5ca0d8566aff9c021b1cad431eda86bc2d95))
28
- * disable npm package-lock for bun ([86fd15e](https://github.com/erbilnas/baklavue/commit/86fd15ed42ded4e198ed22845acdb659cdfde191))
29
- * initial commit ([d98b3f9](https://github.com/erbilnas/baklavue/commit/d98b3f9e6cc6e8238f197eaa117a050365987b18))
30
- * remove playground to develop new docs ([043d89c](https://github.com/erbilnas/baklavue/commit/043d89c7944c8b2acff3bb21c571691f21c99162))
31
- * seperate publishing packages ([e8092d8](https://github.com/erbilnas/baklavue/commit/e8092d87a6579cf6d2798053cd6150fc4ccd98a8))
32
-
33
- # [@baklavue/ui-v1.0.0-preview.4](https://github.com/erbilnas/baklavue/compare/@baklavue/ui-v1.0.0-preview.3...@baklavue/ui-v1.0.0-preview.4) (2026-02-11)
34
-
35
-
36
- ### Features
37
-
38
- * add file upload component ([7aa41b1](https://github.com/erbilnas/baklavue/commit/7aa41b1766c72572be97c84bddc2ca5dccac9be8))
39
- * add image component ([609eefe](https://github.com/erbilnas/baklavue/commit/609eefe9a4a9f74fc19c7e2a8aa2ab0d7529686f))
40
-
41
- # [@baklavue/ui-v1.0.0-preview.3](https://github.com/erbilnas/baklavue/compare/@baklavue/ui-v1.0.0-preview.2...@baklavue/ui-v1.0.0-preview.3) (2026-02-11)
42
-
43
-
44
- ### Features
45
-
46
- * add new components ([b3c535e](https://github.com/erbilnas/baklavue/commit/b3c535e010e1e43b9b04365df2205b69a0777695))
47
- * add new composables ([49105ea](https://github.com/erbilnas/baklavue/commit/49105eaa106f1a5b888f9e3f9638ed9776b3d55b))
48
-
49
- # [@baklavue/ui-v1.0.0-preview.2](https://github.com/erbilnas/baklavue/compare/@baklavue/ui-v1.0.0-preview.1...@baklavue/ui-v1.0.0-preview.2) (2026-02-11)
50
-
51
-
52
- ### Features
53
-
54
- * add theme customizer tool for docs ([70c08cf](https://github.com/erbilnas/baklavue/commit/70c08cf505ff02b1ab6c3e569055b703674bb822))
55
-
56
- # @baklavue/ui-v1.0.0-preview.1 (2026-02-11)
57
-
58
-
59
- ### Bug Fixes
60
-
61
- * fix package version ([620618d](https://github.com/erbilnas/baklavue/commit/620618df664022f1b68859aee4b374f6586731bb))
62
- * fix release ci ([6c22554](https://github.com/erbilnas/baklavue/commit/6c225541b182c4b8692af000e7c13ca6e546599a))
63
- * fix release ci ([6e23d99](https://github.com/erbilnas/baklavue/commit/6e23d99cac122d033c72d6d98819e0329c92bcdc))
64
-
65
-
66
- ### Features
67
-
68
- * add accordion and alert components ([10b8155](https://github.com/erbilnas/baklavue/commit/10b81556184432deb2772d3489c24be6115e667c))
69
- * add accordion, alert and badge components ([b939941](https://github.com/erbilnas/baklavue/commit/b939941e469a29b10ddcc6196f97700951672f97))
70
- * add github pages support ([c76dffa](https://github.com/erbilnas/baklavue/commit/c76dffa8eb32b8293aca7c7e1f5d2ee4139802b0))
71
- * add info for npm package ([8ffbb9f](https://github.com/erbilnas/baklavue/commit/8ffbb9f81d108d633608ebe8d3854a2f6861475a))
72
- * add new components ([f977070](https://github.com/erbilnas/baklavue/commit/f977070bc1634941a5566f079922410838e1e257))
73
- * add new components ([fa3b4d1](https://github.com/erbilnas/baklavue/commit/fa3b4d1586f7e5b15194d182931e5bc89fd2f1dd))
74
- * add new components ([ec926f0](https://github.com/erbilnas/baklavue/commit/ec926f0e9ba11c1a28a97c8afee4829b38ed8539))
75
- * add new components ([5d3d7e2](https://github.com/erbilnas/baklavue/commit/5d3d7e2e5a040cb57bd964db2cee2178bb574a82))
76
- * add new components ([22a1506](https://github.com/erbilnas/baklavue/commit/22a150681ad8587c92ad5546fbc256d9275b6d00))
77
- * disable npm package-lock for bun ([d91c5ca](https://github.com/erbilnas/baklavue/commit/d91c5ca0d8566aff9c021b1cad431eda86bc2d95))
78
- * disable npm package-lock for bun ([86fd15e](https://github.com/erbilnas/baklavue/commit/86fd15ed42ded4e198ed22845acdb659cdfde191))
79
- * initial commit ([d98b3f9](https://github.com/erbilnas/baklavue/commit/d98b3f9e6cc6e8238f197eaa117a050365987b18))
80
- * remove playground to develop new docs ([043d89c](https://github.com/erbilnas/baklavue/commit/043d89c7944c8b2acff3bb21c571691f21c99162))
81
- * seperate publishing packages ([e8092d8](https://github.com/erbilnas/baklavue/commit/e8092d87a6579cf6d2798053cd6150fc4ccd98a8))
82
-
83
- # [1.0.0-preview.4](https://github.com/erbilnas/baklavue/compare/v1.0.0-preview.3...v1.0.0-preview.4) (2026-02-09)
84
-
85
-
86
- ### Features
87
-
88
- * remove playground to develop new docs ([043d89c](https://github.com/erbilnas/baklavue/commit/043d89c7944c8b2acff3bb21c571691f21c99162))
package/env.d.ts DELETED
@@ -1,5 +0,0 @@
1
- declare module "*.vue" {
2
- import type { DefineComponent } from "vue";
3
- const component: DefineComponent<object, object, unknown>;
4
- export default component;
5
- }
package/index.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./src";
@@ -1,75 +0,0 @@
1
- import { mount } from "@vue/test-utils";
2
- import { describe, expect, it } from "vitest";
3
- import BvAccordion from "./Accordion.vue";
4
-
5
- describe("BvAccordion", () => {
6
- it("renders single accordion mode", () => {
7
- const wrapper = mount(BvAccordion, {
8
- props: { caption: "Section" },
9
- slots: { default: "Content" },
10
- });
11
- expect(wrapper.find("bl-accordion").exists()).toBe(true);
12
- expect(wrapper.text()).toContain("Content");
13
- expect(wrapper.find("bl-accordion").element.getAttribute("caption")).toBe("Section");
14
- });
15
-
16
- it("renders group mode when items and multiple provided", () => {
17
- const wrapper = mount(BvAccordion, {
18
- props: {
19
- multiple: false,
20
- items: [
21
- { caption: "Q1", content: "A1" },
22
- { caption: "Q2", content: "A2" },
23
- ],
24
- },
25
- slots: { item: "<p>Answer</p>" },
26
- });
27
- expect(wrapper.find("bl-accordion-group").exists()).toBe(true);
28
- expect(wrapper.findAll("bl-accordion").length).toBeGreaterThan(0);
29
- });
30
-
31
- it("emits toggle when single accordion fires bl-toggle", async () => {
32
- const wrapper = mount(BvAccordion, {
33
- props: { caption: "Test" },
34
- slots: { default: "Content" },
35
- });
36
- const el = wrapper.find("bl-accordion").element;
37
- el.dispatchEvent(
38
- new CustomEvent("bl-toggle", { bubbles: true, detail: true }),
39
- );
40
- await wrapper.vm.$nextTick();
41
- expect(wrapper.emitted("toggle")).toEqual([[true]]);
42
- });
43
-
44
- it("emits toggle false when detail is false", async () => {
45
- const wrapper = mount(BvAccordion, {
46
- props: { caption: "Test" },
47
- slots: { default: "Content" },
48
- });
49
- wrapper.find("bl-accordion").element.dispatchEvent(
50
- new CustomEvent("bl-toggle", { bubbles: true, detail: false }),
51
- );
52
- await wrapper.vm.$nextTick();
53
- expect(wrapper.emitted("toggle")).toEqual([[false]]);
54
- });
55
-
56
- it("passes disabled to bl-accordion in single mode", () => {
57
- const wrapper = mount(BvAccordion, {
58
- props: { caption: "Test", disabled: true },
59
- slots: { default: "Content" },
60
- });
61
- expect(wrapper.find("bl-accordion").element.hasAttribute("disabled")).toBe(true);
62
- });
63
-
64
- it("exposes expand and collapse methods", () => {
65
- const wrapper = mount(BvAccordion, {
66
- props: { caption: "Test" },
67
- slots: { default: "Content" },
68
- });
69
- const vm = wrapper.vm as unknown as { expand: () => void; collapse: () => void };
70
- expect(typeof vm.expand).toBe("function");
71
- expect(typeof vm.collapse).toBe("function");
72
- vm.expand();
73
- vm.collapse();
74
- });
75
- });
@@ -1,206 +0,0 @@
1
- <script setup lang="ts">
2
- /**
3
- * Accordion Component
4
- *
5
- * A Vue UI kit component for Baklava's `bl-accordion` and `bl-accordion-group` web components.
6
- * Can be used as either a single accordion or as a group container for multiple accordions.
7
- *
8
- * @component
9
- * @example
10
- * ```vue
11
- * <!-- Single accordion -->
12
- * <template>
13
- * <Accordion :open="isOpen" @toggle="isOpen = $event" caption="Section Title">
14
- * <p>Accordion content goes here</p>
15
- * </Accordion>
16
- * </template>
17
- * ```
18
- *
19
- * @example
20
- * ```vue
21
- * <!-- Accordion group - only one open at a time -->
22
- * <template>
23
- * <Accordion :multiple="false" :items="items">
24
- * <template #item="{ item }">
25
- * <p>{{ item.answer }}</p>
26
- * </template>
27
- * </Accordion>
28
- * </template>
29
- * ```
30
- *
31
- * @example
32
- * ```vue
33
- * <!-- Accordion group - multiple can be open -->
34
- * <template>
35
- * <Accordion :multiple="true" :items="sections">
36
- * <template #item="{ item }">
37
- * <p>{{ item.description }}</p>
38
- * </template>
39
- * </Accordion>
40
- * </template>
41
- * ```
42
- */
43
- import { computed, onMounted, ref, watch } from "vue";
44
- import { loadBaklavaResources } from "../utils/loadBaklavaResources";
45
- import type { AccordionProps } from "./accordion.types";
46
-
47
- /**
48
- * Component props with default values.
49
- */
50
- const props = withDefaults(defineProps<AccordionProps>(), {
51
- open: false,
52
- caption: undefined,
53
- icon: undefined,
54
- disabled: false,
55
- animationDuration: 250,
56
- multiple: undefined,
57
- });
58
-
59
- /**
60
- * Component events.
61
- */
62
- const emit = defineEmits<{
63
- /**
64
- * Emitted when the accordion is toggled (opened or closed).
65
- * Only used when component is in single accordion mode.
66
- *
67
- * @param {boolean} open - The new open state of the accordion.
68
- */
69
- toggle: [open: boolean];
70
- }>();
71
-
72
- /**
73
- * Reference to the underlying web component element.
74
- */
75
- const accordionRef = ref<HTMLElement | null>(null);
76
-
77
- /**
78
- * Determines if the component should act as a group container.
79
- * When `multiple` prop is provided and `items` is defined, it acts as a group.
80
- */
81
- const isGroupMode = computed(
82
- () => props.multiple !== undefined && Array.isArray(props.items),
83
- );
84
-
85
- /**
86
- * Watches for changes to the `open` prop and syncs with the web component.
87
- * Only applies when in single accordion mode.
88
- *
89
- * When the prop changes, it calls the appropriate expand/collapse method
90
- * on the underlying web component.
91
- */
92
- watch(
93
- () => props.open,
94
- (newValue) => {
95
- if (!isGroupMode.value && accordionRef.value) {
96
- const blAccordion = accordionRef.value as any;
97
- if (newValue && !blAccordion.open) {
98
- blAccordion.expand();
99
- } else if (!newValue && blAccordion.open) {
100
- blAccordion.collapse();
101
- }
102
- }
103
- },
104
- { immediate: true },
105
- );
106
-
107
- /**
108
- * Handles the toggle event from the underlying web component.
109
- * Only used when component is in single accordion mode.
110
- *
111
- * @param {CustomEvent<boolean>} event - The toggle event from bl-accordion.
112
- */
113
- const handleToggle = (event: CustomEvent<boolean>): void => {
114
- if (!isGroupMode.value) {
115
- const isOpen = event.detail;
116
- emit("toggle", isOpen);
117
- }
118
- };
119
-
120
- /**
121
- * Lifecycle hook: Component mounted.
122
- *
123
- * Loads Baklava resources and syncs the initial open state with the web component
124
- * (only when in single accordion mode).
125
- */
126
- onMounted(() => {
127
- loadBaklavaResources();
128
-
129
- // Sync initial state (only for single accordion mode)
130
- if (!isGroupMode.value && accordionRef.value) {
131
- const blAccordion = accordionRef.value as any;
132
- if (props.open && !blAccordion.open) {
133
- blAccordion.expand();
134
- } else if (!props.open && blAccordion.open) {
135
- blAccordion.collapse();
136
- }
137
- }
138
- });
139
-
140
- /**
141
- * Exposed methods for programmatic control of the accordion.
142
- * Only available when component is in single accordion mode.
143
- */
144
- defineExpose({
145
- /**
146
- * Expands the accordion programmatically.
147
- *
148
- * @public
149
- */
150
- expand: (): void => {
151
- if (!isGroupMode.value && accordionRef.value) {
152
- (accordionRef.value as any).expand();
153
- }
154
- },
155
-
156
- /**
157
- * Collapses the accordion programmatically.
158
- *
159
- * @public
160
- */
161
- collapse: (): void => {
162
- if (!isGroupMode.value && accordionRef.value) {
163
- (accordionRef.value as any).collapse();
164
- }
165
- },
166
- });
167
- </script>
168
-
169
- <template>
170
- <!-- Group mode: render as bl-accordion-group -->
171
- <!-- Render bl-accordion for each item in props.items. Content via #item slot. -->
172
- <bl-accordion-group
173
- v-if="isGroupMode"
174
- :multiple="props.multiple === true ? true : undefined"
175
- >
176
- <bl-accordion
177
- v-for="(item, index) in props.items"
178
- :key="index"
179
- v-bind="{
180
- open: item.open === true ? true : undefined,
181
- caption: item.caption,
182
- icon: item.icon,
183
- disabled: item.disabled === true ? true : undefined,
184
- animationDuration: item.animationDuration,
185
- }"
186
- >
187
- <slot name="item" :item="item" :index="index" />
188
- </bl-accordion>
189
- </bl-accordion-group>
190
-
191
- <!-- Single accordion mode: render as bl-accordion -->
192
- <bl-accordion
193
- v-else
194
- ref="accordionRef"
195
- v-bind="{
196
- open: props.open === true ? true : undefined,
197
- caption: props.caption,
198
- icon: props.icon,
199
- disabled: props.disabled === true ? true : undefined,
200
- animationDuration: props.animationDuration,
201
- }"
202
- @bl-toggle="handleToggle"
203
- >
204
- <slot />
205
- </bl-accordion>
206
- </template>