@winkintel/bootstrap-svelte 0.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 (471) hide show
  1. package/LICENSE.md +202 -0
  2. package/README.md +221 -0
  3. package/dist/Accordion/accordion-body.svelte +8 -0
  4. package/dist/Accordion/accordion-body.svelte.d.ts +4 -0
  5. package/dist/Accordion/accordion-button.svelte +25 -0
  6. package/dist/Accordion/accordion-button.svelte.d.ts +4 -0
  7. package/dist/Accordion/accordion-collapse.svelte +18 -0
  8. package/dist/Accordion/accordion-collapse.svelte.d.ts +4 -0
  9. package/dist/Accordion/accordion-header.svelte +8 -0
  10. package/dist/Accordion/accordion-header.svelte.d.ts +4 -0
  11. package/dist/Accordion/accordion-item.svelte +33 -0
  12. package/dist/Accordion/accordion-item.svelte.d.ts +4 -0
  13. package/dist/Accordion/accordion.svelte +65 -0
  14. package/dist/Accordion/accordion.svelte.d.ts +51 -0
  15. package/dist/Accordion/accordion.svelte.js +139 -0
  16. package/dist/Accordion/composition.d.ts +7 -0
  17. package/dist/Accordion/composition.js +6 -0
  18. package/dist/Accordion/index.d.ts +1 -0
  19. package/dist/Accordion/index.js +1 -0
  20. package/dist/Accordion/types.d.ts +15 -0
  21. package/dist/Accordion/types.js +1 -0
  22. package/dist/Alert/alert.svelte +73 -0
  23. package/dist/Alert/alert.svelte.d.ts +46 -0
  24. package/dist/Alert/index.d.ts +2 -0
  25. package/dist/Alert/index.js +2 -0
  26. package/dist/Alert/types.d.ts +11 -0
  27. package/dist/Alert/types.js +1 -0
  28. package/dist/Badge/badge.svelte +42 -0
  29. package/dist/Badge/badge.svelte.d.ts +36 -0
  30. package/dist/Badge/index.d.ts +2 -0
  31. package/dist/Badge/index.js +2 -0
  32. package/dist/Badge/types.d.ts +28 -0
  33. package/dist/Badge/types.js +24 -0
  34. package/dist/Breadcrumb/breadcrumb-item.svelte +66 -0
  35. package/dist/Breadcrumb/breadcrumb-item.svelte.d.ts +30 -0
  36. package/dist/Breadcrumb/breadcrumb.svelte +57 -0
  37. package/dist/Breadcrumb/breadcrumb.svelte.d.ts +34 -0
  38. package/dist/Breadcrumb/breadcrumb.svelte.js +41 -0
  39. package/dist/Breadcrumb/composition.d.ts +3 -0
  40. package/dist/Breadcrumb/composition.js +2 -0
  41. package/dist/Breadcrumb/index.d.ts +1 -0
  42. package/dist/Breadcrumb/index.js +1 -0
  43. package/dist/Breadcrumb/types.d.ts +9 -0
  44. package/dist/Breadcrumb/types.js +1 -0
  45. package/dist/BreakpointListener/breakpoint-listener.svelte +54 -0
  46. package/dist/BreakpointListener/breakpoint-listener.svelte.d.ts +4 -0
  47. package/dist/BreakpointListener/index.d.ts +2 -0
  48. package/dist/BreakpointListener/index.js +2 -0
  49. package/dist/BreakpointListener/types.d.ts +30 -0
  50. package/dist/BreakpointListener/types.js +20 -0
  51. package/dist/Button/button.svelte +87 -0
  52. package/dist/Button/button.svelte.d.ts +59 -0
  53. package/dist/Button/index.d.ts +2 -0
  54. package/dist/Button/index.js +2 -0
  55. package/dist/Button/types.d.ts +26 -0
  56. package/dist/Button/types.js +1 -0
  57. package/dist/ButtonGroup/button-check.svelte +70 -0
  58. package/dist/ButtonGroup/button-check.svelte.d.ts +35 -0
  59. package/dist/ButtonGroup/button-group.svelte +51 -0
  60. package/dist/ButtonGroup/button-group.svelte.d.ts +43 -0
  61. package/dist/ButtonGroup/button-toolbar.svelte +36 -0
  62. package/dist/ButtonGroup/button-toolbar.svelte.d.ts +28 -0
  63. package/dist/ButtonGroup/index.d.ts +4 -0
  64. package/dist/ButtonGroup/index.js +4 -0
  65. package/dist/ButtonGroup/types.d.ts +21 -0
  66. package/dist/ButtonGroup/types.js +1 -0
  67. package/dist/Card/card-body.svelte +10 -0
  68. package/dist/Card/card-body.svelte.d.ts +3 -0
  69. package/dist/Card/card-footer.svelte +10 -0
  70. package/dist/Card/card-footer.svelte.d.ts +3 -0
  71. package/dist/Card/card-group.svelte +10 -0
  72. package/dist/Card/card-group.svelte.d.ts +3 -0
  73. package/dist/Card/card-header.svelte +10 -0
  74. package/dist/Card/card-header.svelte.d.ts +3 -0
  75. package/dist/Card/card-img-overlay.svelte +10 -0
  76. package/dist/Card/card-img-overlay.svelte.d.ts +3 -0
  77. package/dist/Card/card-img.svelte +12 -0
  78. package/dist/Card/card-img.svelte.d.ts +4 -0
  79. package/dist/Card/card-link.svelte +10 -0
  80. package/dist/Card/card-link.svelte.d.ts +4 -0
  81. package/dist/Card/card-subtitle.svelte +11 -0
  82. package/dist/Card/card-subtitle.svelte.d.ts +4 -0
  83. package/dist/Card/card-text.svelte +10 -0
  84. package/dist/Card/card-text.svelte.d.ts +3 -0
  85. package/dist/Card/card-title.svelte +11 -0
  86. package/dist/Card/card-title.svelte.d.ts +4 -0
  87. package/dist/Card/card.svelte +45 -0
  88. package/dist/Card/card.svelte.d.ts +38 -0
  89. package/dist/Card/composition.d.ts +12 -0
  90. package/dist/Card/composition.js +11 -0
  91. package/dist/Card/index.d.ts +1 -0
  92. package/dist/Card/index.js +1 -0
  93. package/dist/Card/types.d.ts +22 -0
  94. package/dist/Card/types.js +1 -0
  95. package/dist/Carousel/carousel-caption.svelte +30 -0
  96. package/dist/Carousel/carousel-caption.svelte.d.ts +22 -0
  97. package/dist/Carousel/carousel-control-next.svelte +35 -0
  98. package/dist/Carousel/carousel-control-next.svelte.d.ts +21 -0
  99. package/dist/Carousel/carousel-control-prev.svelte +35 -0
  100. package/dist/Carousel/carousel-control-prev.svelte.d.ts +21 -0
  101. package/dist/Carousel/carousel-indicator-button.svelte +41 -0
  102. package/dist/Carousel/carousel-indicator-button.svelte.d.ts +21 -0
  103. package/dist/Carousel/carousel-indicators.svelte +33 -0
  104. package/dist/Carousel/carousel-indicators.svelte.d.ts +25 -0
  105. package/dist/Carousel/carousel-inner.svelte +30 -0
  106. package/dist/Carousel/carousel-inner.svelte.d.ts +22 -0
  107. package/dist/Carousel/carousel-item.svelte +138 -0
  108. package/dist/Carousel/carousel-item.svelte.d.ts +28 -0
  109. package/dist/Carousel/carousel.svelte +140 -0
  110. package/dist/Carousel/carousel.svelte.d.ts +46 -0
  111. package/dist/Carousel/carousel.svelte.js +551 -0
  112. package/dist/Carousel/composition.d.ts +9 -0
  113. package/dist/Carousel/composition.js +8 -0
  114. package/dist/Carousel/index.d.ts +1 -0
  115. package/dist/Carousel/index.js +1 -0
  116. package/dist/Carousel/types.d.ts +74 -0
  117. package/dist/Carousel/types.js +1 -0
  118. package/dist/CloseButton/close-button.svelte +32 -0
  119. package/dist/CloseButton/close-button.svelte.d.ts +29 -0
  120. package/dist/CloseButton/index.d.ts +2 -0
  121. package/dist/CloseButton/index.js +2 -0
  122. package/dist/CloseButton/types.d.ts +6 -0
  123. package/dist/CloseButton/types.js +1 -0
  124. package/dist/Col/col.svelte +133 -0
  125. package/dist/Col/col.svelte.d.ts +60 -0
  126. package/dist/Col/index.d.ts +2 -0
  127. package/dist/Col/index.js +2 -0
  128. package/dist/Col/types.d.ts +30 -0
  129. package/dist/Col/types.js +1 -0
  130. package/dist/Collapse/collapse-aria-attachment.svelte.d.ts +3 -0
  131. package/dist/Collapse/collapse-aria-attachment.svelte.js +32 -0
  132. package/dist/Collapse/collapse.svelte +63 -0
  133. package/dist/Collapse/collapse.svelte.d.ts +45 -0
  134. package/dist/Collapse/index.d.ts +3 -0
  135. package/dist/Collapse/index.js +3 -0
  136. package/dist/Collapse/transition.d.ts +5 -0
  137. package/dist/Collapse/transition.js +75 -0
  138. package/dist/Collapse/types.d.ts +18 -0
  139. package/dist/Collapse/types.js +1 -0
  140. package/dist/Container/container.svelte +46 -0
  141. package/dist/Container/container.svelte.d.ts +36 -0
  142. package/dist/Container/index.d.ts +2 -0
  143. package/dist/Container/index.js +2 -0
  144. package/dist/Container/types.d.ts +8 -0
  145. package/dist/Container/types.js +1 -0
  146. package/dist/Dropdown/composition.d.ts +8 -0
  147. package/dist/Dropdown/composition.js +7 -0
  148. package/dist/Dropdown/dropdown-divider.svelte +23 -0
  149. package/dist/Dropdown/dropdown-divider.svelte.d.ts +18 -0
  150. package/dist/Dropdown/dropdown-header.svelte +27 -0
  151. package/dist/Dropdown/dropdown-header.svelte.d.ts +19 -0
  152. package/dist/Dropdown/dropdown-item-text.svelte +26 -0
  153. package/dist/Dropdown/dropdown-item-text.svelte.d.ts +18 -0
  154. package/dist/Dropdown/dropdown-item.svelte +86 -0
  155. package/dist/Dropdown/dropdown-item.svelte.d.ts +24 -0
  156. package/dist/Dropdown/dropdown-menu.svelte +82 -0
  157. package/dist/Dropdown/dropdown-menu.svelte.d.ts +27 -0
  158. package/dist/Dropdown/dropdown-toggle.svelte +67 -0
  159. package/dist/Dropdown/dropdown-toggle.svelte.d.ts +24 -0
  160. package/dist/Dropdown/dropdown.svelte +106 -0
  161. package/dist/Dropdown/dropdown.svelte.d.ts +34 -0
  162. package/dist/Dropdown/dropdown.svelte.js +435 -0
  163. package/dist/Dropdown/index.d.ts +1 -0
  164. package/dist/Dropdown/index.js +1 -0
  165. package/dist/Dropdown/types.d.ts +47 -0
  166. package/dist/Dropdown/types.js +1 -0
  167. package/dist/Form/composition.d.ts +34 -0
  168. package/dist/Form/composition.js +33 -0
  169. package/dist/Form/form-check-input.svelte +92 -0
  170. package/dist/Form/form-check-input.svelte.d.ts +48 -0
  171. package/dist/Form/form-check-label.svelte +26 -0
  172. package/dist/Form/form-check-label.svelte.d.ts +21 -0
  173. package/dist/Form/form-check.svelte +55 -0
  174. package/dist/Form/form-check.svelte.d.ts +50 -0
  175. package/dist/Form/form-color-input.svelte +54 -0
  176. package/dist/Form/form-color-input.svelte.d.ts +30 -0
  177. package/dist/Form/form-date-input.svelte +64 -0
  178. package/dist/Form/form-date-input.svelte.d.ts +46 -0
  179. package/dist/Form/form-datetime-local-input.svelte +60 -0
  180. package/dist/Form/form-datetime-local-input.svelte.d.ts +45 -0
  181. package/dist/Form/form-email-input.svelte +64 -0
  182. package/dist/Form/form-email-input.svelte.d.ts +46 -0
  183. package/dist/Form/form-feedback.svelte +36 -0
  184. package/dist/Form/form-feedback.svelte.d.ts +26 -0
  185. package/dist/Form/form-file-input.svelte +43 -0
  186. package/dist/Form/form-file-input.svelte.d.ts +30 -0
  187. package/dist/Form/form-floating.svelte +44 -0
  188. package/dist/Form/form-floating.svelte.d.ts +38 -0
  189. package/dist/Form/form-helper-text.svelte +35 -0
  190. package/dist/Form/form-helper-text.svelte.d.ts +29 -0
  191. package/dist/Form/form-hidden-input.svelte +18 -0
  192. package/dist/Form/form-hidden-input.svelte.d.ts +16 -0
  193. package/dist/Form/form-image-input.svelte +30 -0
  194. package/dist/Form/form-image-input.svelte.d.ts +26 -0
  195. package/dist/Form/form-input-group-text.svelte +47 -0
  196. package/dist/Form/form-input-group-text.svelte.d.ts +42 -0
  197. package/dist/Form/form-input-group.svelte +52 -0
  198. package/dist/Form/form-input-group.svelte.d.ts +43 -0
  199. package/dist/Form/form-input-label.svelte +33 -0
  200. package/dist/Form/form-input-label.svelte.d.ts +28 -0
  201. package/dist/Form/form-month-input.svelte +63 -0
  202. package/dist/Form/form-month-input.svelte.d.ts +48 -0
  203. package/dist/Form/form-number-input.svelte +62 -0
  204. package/dist/Form/form-number-input.svelte.d.ts +47 -0
  205. package/dist/Form/form-password-input.svelte +60 -0
  206. package/dist/Form/form-password-input.svelte.d.ts +41 -0
  207. package/dist/Form/form-radio-input.svelte +47 -0
  208. package/dist/Form/form-radio-input.svelte.d.ts +41 -0
  209. package/dist/Form/form-radio-label.svelte +41 -0
  210. package/dist/Form/form-radio-label.svelte.d.ts +35 -0
  211. package/dist/Form/form-range-input.svelte +43 -0
  212. package/dist/Form/form-range-input.svelte.d.ts +39 -0
  213. package/dist/Form/form-search-input.svelte +63 -0
  214. package/dist/Form/form-search-input.svelte.d.ts +45 -0
  215. package/dist/Form/form-select.svelte +85 -0
  216. package/dist/Form/form-select.svelte.d.ts +59 -0
  217. package/dist/Form/form-switch-input.svelte +54 -0
  218. package/dist/Form/form-switch-input.svelte.d.ts +41 -0
  219. package/dist/Form/form-switch-label.svelte +25 -0
  220. package/dist/Form/form-switch-label.svelte.d.ts +19 -0
  221. package/dist/Form/form-telephone-input.svelte +129 -0
  222. package/dist/Form/form-telephone-input.svelte.d.ts +55 -0
  223. package/dist/Form/form-text-area.svelte +57 -0
  224. package/dist/Form/form-text-area.svelte.d.ts +38 -0
  225. package/dist/Form/form-text-input.svelte +55 -0
  226. package/dist/Form/form-text-input.svelte.d.ts +37 -0
  227. package/dist/Form/form-time-input.svelte +62 -0
  228. package/dist/Form/form-time-input.svelte.d.ts +47 -0
  229. package/dist/Form/form-url-input.svelte +60 -0
  230. package/dist/Form/form-url-input.svelte.d.ts +45 -0
  231. package/dist/Form/form-week-Input.svelte +62 -0
  232. package/dist/Form/form-week-Input.svelte.d.ts +47 -0
  233. package/dist/Form/form.svelte +37 -0
  234. package/dist/Form/form.svelte.d.ts +23 -0
  235. package/dist/Form/index.d.ts +1 -0
  236. package/dist/Form/index.js +1 -0
  237. package/dist/Form/types.d.ts +168 -0
  238. package/dist/Form/types.js +1 -0
  239. package/dist/ListGroup/composition.d.ts +4 -0
  240. package/dist/ListGroup/composition.js +3 -0
  241. package/dist/ListGroup/index.d.ts +1 -0
  242. package/dist/ListGroup/index.js +1 -0
  243. package/dist/ListGroup/list-group-item-action.svelte +50 -0
  244. package/dist/ListGroup/list-group-item-action.svelte.d.ts +23 -0
  245. package/dist/ListGroup/list-group-item.svelte +58 -0
  246. package/dist/ListGroup/list-group-item.svelte.d.ts +51 -0
  247. package/dist/ListGroup/list-group.svelte +83 -0
  248. package/dist/ListGroup/list-group.svelte.d.ts +68 -0
  249. package/dist/ListGroup/types.d.ts +20 -0
  250. package/dist/ListGroup/types.js +1 -0
  251. package/dist/Modal/composition.d.ts +8 -0
  252. package/dist/Modal/composition.js +7 -0
  253. package/dist/Modal/index.d.ts +1 -0
  254. package/dist/Modal/index.js +1 -0
  255. package/dist/Modal/modal-body.svelte +27 -0
  256. package/dist/Modal/modal-body.svelte.d.ts +19 -0
  257. package/dist/Modal/modal-content.svelte +35 -0
  258. package/dist/Modal/modal-content.svelte.d.ts +27 -0
  259. package/dist/Modal/modal-dialog.svelte +65 -0
  260. package/dist/Modal/modal-dialog.svelte.d.ts +52 -0
  261. package/dist/Modal/modal-footer.svelte +28 -0
  262. package/dist/Modal/modal-footer.svelte.d.ts +20 -0
  263. package/dist/Modal/modal-header.svelte +50 -0
  264. package/dist/Modal/modal-header.svelte.d.ts +29 -0
  265. package/dist/Modal/modal-title.svelte +45 -0
  266. package/dist/Modal/modal-title.svelte.d.ts +26 -0
  267. package/dist/Modal/modal.svelte +233 -0
  268. package/dist/Modal/modal.svelte.d.ts +52 -0
  269. package/dist/Modal/modal.svelte.js +86 -0
  270. package/dist/Modal/types.d.ts +31 -0
  271. package/dist/Modal/types.js +1 -0
  272. package/dist/Nav/composition.d.ts +4 -0
  273. package/dist/Nav/composition.js +3 -0
  274. package/dist/Nav/index.d.ts +1 -0
  275. package/dist/Nav/index.js +1 -0
  276. package/dist/Nav/nav-item.svelte +25 -0
  277. package/dist/Nav/nav-item.svelte.d.ts +18 -0
  278. package/dist/Nav/nav-link.svelte +77 -0
  279. package/dist/Nav/nav-link.svelte.d.ts +22 -0
  280. package/dist/Nav/nav.svelte +93 -0
  281. package/dist/Nav/nav.svelte.d.ts +56 -0
  282. package/dist/Nav/types.d.ts +26 -0
  283. package/dist/Nav/types.js +1 -0
  284. package/dist/Navbar/composition.d.ts +8 -0
  285. package/dist/Navbar/composition.js +7 -0
  286. package/dist/Navbar/index.d.ts +1 -0
  287. package/dist/Navbar/index.js +1 -0
  288. package/dist/Navbar/navbar-brand.svelte +55 -0
  289. package/dist/Navbar/navbar-brand.svelte.d.ts +48 -0
  290. package/dist/Navbar/navbar-collapse.svelte +76 -0
  291. package/dist/Navbar/navbar-collapse.svelte.d.ts +55 -0
  292. package/dist/Navbar/navbar-nav.svelte +66 -0
  293. package/dist/Navbar/navbar-nav.svelte.d.ts +53 -0
  294. package/dist/Navbar/navbar-text.svelte +36 -0
  295. package/dist/Navbar/navbar-text.svelte.d.ts +28 -0
  296. package/dist/Navbar/navbar-toggler-icon.svelte +34 -0
  297. package/dist/Navbar/navbar-toggler-icon.svelte.d.ts +28 -0
  298. package/dist/Navbar/navbar-toggler.svelte +75 -0
  299. package/dist/Navbar/navbar-toggler.svelte.d.ts +48 -0
  300. package/dist/Navbar/navbar.svelte +116 -0
  301. package/dist/Navbar/navbar.svelte.d.ts +88 -0
  302. package/dist/Navbar/types.d.ts +23 -0
  303. package/dist/Navbar/types.js +1 -0
  304. package/dist/Offcanvas/composition.d.ts +5 -0
  305. package/dist/Offcanvas/composition.js +4 -0
  306. package/dist/Offcanvas/index.d.ts +1 -0
  307. package/dist/Offcanvas/index.js +1 -0
  308. package/dist/Offcanvas/offcanvas-body.svelte +25 -0
  309. package/dist/Offcanvas/offcanvas-body.svelte.d.ts +19 -0
  310. package/dist/Offcanvas/offcanvas-header.svelte +39 -0
  311. package/dist/Offcanvas/offcanvas-header.svelte.d.ts +20 -0
  312. package/dist/Offcanvas/offcanvas-title.svelte +31 -0
  313. package/dist/Offcanvas/offcanvas-title.svelte.d.ts +25 -0
  314. package/dist/Offcanvas/offcanvas.svelte +220 -0
  315. package/dist/Offcanvas/offcanvas.svelte.d.ts +61 -0
  316. package/dist/Offcanvas/types.d.ts +25 -0
  317. package/dist/Offcanvas/types.js +1 -0
  318. package/dist/Pagination/composition.d.ts +4 -0
  319. package/dist/Pagination/composition.js +3 -0
  320. package/dist/Pagination/index.d.ts +1 -0
  321. package/dist/Pagination/index.js +1 -0
  322. package/dist/Pagination/pagination-item.svelte +81 -0
  323. package/dist/Pagination/pagination-item.svelte.d.ts +35 -0
  324. package/dist/Pagination/pagination-link.svelte +45 -0
  325. package/dist/Pagination/pagination-link.svelte.d.ts +25 -0
  326. package/dist/Pagination/pagination.svelte +60 -0
  327. package/dist/Pagination/pagination.svelte.d.ts +37 -0
  328. package/dist/Pagination/pagination.svelte.js +117 -0
  329. package/dist/Pagination/types.d.ts +19 -0
  330. package/dist/Pagination/types.js +1 -0
  331. package/dist/Placeholder/composition.d.ts +3 -0
  332. package/dist/Placeholder/composition.js +2 -0
  333. package/dist/Placeholder/index.d.ts +1 -0
  334. package/dist/Placeholder/index.js +1 -0
  335. package/dist/Placeholder/placeholder-item.svelte +53 -0
  336. package/dist/Placeholder/placeholder-item.svelte.d.ts +48 -0
  337. package/dist/Placeholder/placeholder.svelte +37 -0
  338. package/dist/Placeholder/placeholder.svelte.d.ts +32 -0
  339. package/dist/Placeholder/types.d.ts +12 -0
  340. package/dist/Placeholder/types.js +1 -0
  341. package/dist/Popover/composition.d.ts +4 -0
  342. package/dist/Popover/composition.js +3 -0
  343. package/dist/Popover/index.d.ts +1 -0
  344. package/dist/Popover/index.js +1 -0
  345. package/dist/Popover/popover-body.svelte +10 -0
  346. package/dist/Popover/popover-body.svelte.d.ts +3 -0
  347. package/dist/Popover/popover-header.svelte +11 -0
  348. package/dist/Popover/popover-header.svelte.d.ts +4 -0
  349. package/dist/Popover/popover.svelte +74 -0
  350. package/dist/Popover/popover.svelte.d.ts +53 -0
  351. package/dist/Popover/types.d.ts +20 -0
  352. package/dist/Popover/types.js +1 -0
  353. package/dist/Portal/index.d.ts +2 -0
  354. package/dist/Portal/index.js +2 -0
  355. package/dist/Portal/portal-host.svelte +5 -0
  356. package/dist/Portal/portal-host.svelte.d.ts +7 -0
  357. package/dist/Portal/portal.svelte +69 -0
  358. package/dist/Portal/portal.svelte.d.ts +32 -0
  359. package/dist/Portal/types.d.ts +6 -0
  360. package/dist/Portal/types.js +1 -0
  361. package/dist/Progress/index.d.ts +3 -0
  362. package/dist/Progress/index.js +3 -0
  363. package/dist/Progress/progress-bar.svelte +101 -0
  364. package/dist/Progress/progress-bar.svelte.d.ts +39 -0
  365. package/dist/Progress/progress-stacked.svelte +34 -0
  366. package/dist/Progress/progress-stacked.svelte.d.ts +24 -0
  367. package/dist/Progress/progress.svelte.d.ts +31 -0
  368. package/dist/Progress/progress.svelte.js +52 -0
  369. package/dist/Progress/types.d.ts +40 -0
  370. package/dist/Progress/types.js +1 -0
  371. package/dist/Row/index.d.ts +2 -0
  372. package/dist/Row/index.js +2 -0
  373. package/dist/Row/row.svelte +75 -0
  374. package/dist/Row/row.svelte.d.ts +46 -0
  375. package/dist/Row/types.d.ts +12 -0
  376. package/dist/Row/types.js +1 -0
  377. package/dist/Scrollspy/index.d.ts +2 -0
  378. package/dist/Scrollspy/index.js +2 -0
  379. package/dist/Scrollspy/scrollspy-attachment.svelte.d.ts +10 -0
  380. package/dist/Scrollspy/scrollspy-attachment.svelte.js +122 -0
  381. package/dist/Scrollspy/types.d.ts +9 -0
  382. package/dist/Scrollspy/types.js +1 -0
  383. package/dist/Spinner/index.d.ts +2 -0
  384. package/dist/Spinner/index.js +2 -0
  385. package/dist/Spinner/spinner.svelte +77 -0
  386. package/dist/Spinner/spinner.svelte.d.ts +70 -0
  387. package/dist/Spinner/types.d.ts +9 -0
  388. package/dist/Spinner/types.js +1 -0
  389. package/dist/Tab/composition.d.ts +5 -0
  390. package/dist/Tab/composition.js +4 -0
  391. package/dist/Tab/index.d.ts +1 -0
  392. package/dist/Tab/index.js +1 -0
  393. package/dist/Tab/tab-content.svelte +29 -0
  394. package/dist/Tab/tab-content.svelte.d.ts +23 -0
  395. package/dist/Tab/tab-nav-link.svelte +69 -0
  396. package/dist/Tab/tab-nav-link.svelte.d.ts +22 -0
  397. package/dist/Tab/tab-pane.svelte +72 -0
  398. package/dist/Tab/tab-pane.svelte.d.ts +26 -0
  399. package/dist/Tab/tab.svelte +63 -0
  400. package/dist/Tab/tab.svelte.d.ts +50 -0
  401. package/dist/Tab/types.d.ts +18 -0
  402. package/dist/Tab/types.js +1 -0
  403. package/dist/Table/composition.d.ts +9 -0
  404. package/dist/Table/composition.js +8 -0
  405. package/dist/Table/index.d.ts +1 -0
  406. package/dist/Table/index.js +1 -0
  407. package/dist/Table/table-body.svelte +30 -0
  408. package/dist/Table/table-body.svelte.d.ts +23 -0
  409. package/dist/Table/table-caption.svelte +20 -0
  410. package/dist/Table/table-caption.svelte.d.ts +15 -0
  411. package/dist/Table/table-data.svelte +30 -0
  412. package/dist/Table/table-data.svelte.d.ts +19 -0
  413. package/dist/Table/table-foot.svelte +31 -0
  414. package/dist/Table/table-foot.svelte.d.ts +24 -0
  415. package/dist/Table/table-head.svelte +31 -0
  416. package/dist/Table/table-head.svelte.d.ts +24 -0
  417. package/dist/Table/table-header.svelte +38 -0
  418. package/dist/Table/table-header.svelte.d.ts +17 -0
  419. package/dist/Table/table-row.svelte +34 -0
  420. package/dist/Table/table-row.svelte.d.ts +23 -0
  421. package/dist/Table/table.svelte +154 -0
  422. package/dist/Table/table.svelte.d.ts +98 -0
  423. package/dist/Table/table.svelte.js +92 -0
  424. package/dist/Table/types.d.ts +43 -0
  425. package/dist/Table/types.js +1 -0
  426. package/dist/Toast/composition.d.ts +5 -0
  427. package/dist/Toast/composition.js +4 -0
  428. package/dist/Toast/index.d.ts +1 -0
  429. package/dist/Toast/index.js +1 -0
  430. package/dist/Toast/toast-body.svelte +26 -0
  431. package/dist/Toast/toast-body.svelte.d.ts +18 -0
  432. package/dist/Toast/toast-container.svelte +44 -0
  433. package/dist/Toast/toast-container.svelte.d.ts +36 -0
  434. package/dist/Toast/toast-header.svelte +56 -0
  435. package/dist/Toast/toast-header.svelte.d.ts +36 -0
  436. package/dist/Toast/toast.svelte +112 -0
  437. package/dist/Toast/toast.svelte.d.ts +54 -0
  438. package/dist/Toast/toast.svelte.js +83 -0
  439. package/dist/Toast/types.d.ts +53 -0
  440. package/dist/Toast/types.js +19 -0
  441. package/dist/Tooltip/composition.d.ts +3 -0
  442. package/dist/Tooltip/composition.js +2 -0
  443. package/dist/Tooltip/index.d.ts +1 -0
  444. package/dist/Tooltip/index.js +1 -0
  445. package/dist/Tooltip/tooltip-inner.svelte +10 -0
  446. package/dist/Tooltip/tooltip-inner.svelte.d.ts +4 -0
  447. package/dist/Tooltip/tooltip.svelte +213 -0
  448. package/dist/Tooltip/tooltip.svelte.d.ts +54 -0
  449. package/dist/Tooltip/types.d.ts +43 -0
  450. package/dist/Tooltip/types.js +1 -0
  451. package/dist/common/context.d.ts +47 -0
  452. package/dist/common/context.js +70 -0
  453. package/dist/common/css.d.ts +71 -0
  454. package/dist/common/css.js +133 -0
  455. package/dist/common/dom.d.ts +51 -0
  456. package/dist/common/dom.js +98 -0
  457. package/dist/common/index.d.ts +6 -0
  458. package/dist/common/index.js +5 -0
  459. package/dist/common/nav-tab.svelte.d.ts +88 -0
  460. package/dist/common/nav-tab.svelte.js +188 -0
  461. package/dist/common/navbar-offcanvas.svelte.d.ts +101 -0
  462. package/dist/common/navbar-offcanvas.svelte.js +228 -0
  463. package/dist/common/noop.d.ts +4 -0
  464. package/dist/common/noop.js +4 -0
  465. package/dist/common/scrollbar.d.ts +20 -0
  466. package/dist/common/scrollbar.js +53 -0
  467. package/dist/common/types.d.ts +143 -0
  468. package/dist/common/types.js +40 -0
  469. package/dist/index.d.ts +33 -0
  470. package/dist/index.js +33 -0
  471. package/package.json +105 -0
@@ -0,0 +1,122 @@
1
+ import { isDisabled } from '../common/dom.js';
2
+ import { SvelteMap } from 'svelte/reactivity';
3
+ /**
4
+ * Creates a scrollspy attachment that monitors elements matching a target selector
5
+ * and triggers a callback when they intersect with the scrolling container.
6
+ *
7
+ * @param options Configuration options for the scrollspy behavior
8
+ * @returns An Attachment function compatible with Svelte 5's {@attach ...} directive
9
+ */
10
+ export function scrollspy(options) {
11
+ return (element) => {
12
+ // Sanity check the options...
13
+ if (!options || typeof options !== 'object') {
14
+ throw new Error('Scrollspy: options must be an object');
15
+ }
16
+ if (options.targetSelector === undefined) {
17
+ throw new Error('Scrollspy: targetSelector is required in options');
18
+ }
19
+ if (typeof options.callback !== 'function') {
20
+ throw new Error('Scrollspy: callback must be a function');
21
+ }
22
+ // Get the target element from options targetSelector...
23
+ const targetElement = document.querySelector(options.targetSelector);
24
+ if (!targetElement) {
25
+ throw new Error(`Scrollspy: target element not found for selector "${options.targetSelector}"`);
26
+ }
27
+ // Smooth scroll functionality
28
+ const handleClick = (event) => {
29
+ const target = event.target;
30
+ if (!(target instanceof HTMLElement)) {
31
+ return;
32
+ }
33
+ // Only handle clicks on anchor links with hash
34
+ const anchor = target.closest('a[href^="#"]');
35
+ if (!anchor || !anchor.hash) {
36
+ return;
37
+ }
38
+ // Find the target element that corresponds to the clicked link's hash
39
+ const targetElement = element.querySelector(anchor.hash);
40
+ if (targetElement) {
41
+ event.preventDefault();
42
+ // Get the scroll container (root element or window)
43
+ const root = options.observerOptions?.root || element;
44
+ // Calculate the scroll position
45
+ const elementRect = targetElement.getBoundingClientRect();
46
+ const containerRect = root.getBoundingClientRect();
47
+ let scrollTop;
48
+ if (root === element || root instanceof HTMLElement) {
49
+ // Scrolling within a container element
50
+ // Cast targetElement to HTMLElement to use offsetTop
51
+ scrollTop = targetElement.offsetTop - element.offsetTop;
52
+ }
53
+ else {
54
+ // Scrolling the window
55
+ scrollTop = elementRect.top + window.pageYOffset - containerRect.top;
56
+ }
57
+ // Perform smooth scroll
58
+ if (root === element || root instanceof HTMLElement) {
59
+ if (root.scrollTo) {
60
+ root.scrollTo({ top: scrollTop, behavior: 'smooth' });
61
+ }
62
+ else {
63
+ // Fallback for older browsers
64
+ root.scrollTop = scrollTop;
65
+ }
66
+ }
67
+ else {
68
+ // Scroll the window
69
+ if (window.scrollTo) {
70
+ window.scrollTo({ top: scrollTop, behavior: 'smooth' });
71
+ }
72
+ else {
73
+ // Fallback for older browsers
74
+ document.documentElement.scrollTop = scrollTop; // Use document.documentElement.scrollTop instead
75
+ document.body.scrollTop = scrollTop; // For Safari compatibility
76
+ }
77
+ }
78
+ }
79
+ };
80
+ // Maps to store links and their target sections
81
+ const targetLinks = new SvelteMap();
82
+ const observableSections = new SvelteMap();
83
+ // Find all the anchor links within the target element...
84
+ const anchors = targetElement.querySelectorAll('[href]');
85
+ for (const anchor of anchors) {
86
+ // ensure that the anchor has a valid hash and is not disabled
87
+ if (!anchor.hash || ['#', '#!'].includes(anchor.hash) || isDisabled(anchor)) {
88
+ continue;
89
+ }
90
+ const observableSection = document.querySelector(decodeURI(anchor.hash));
91
+ if (observableSection !== null) {
92
+ targetLinks.set(decodeURI(anchor.hash), anchor);
93
+ observableSections.set(anchor.hash, observableSection);
94
+ // attach the click handler to the anchor
95
+ anchor.addEventListener('click', handleClick);
96
+ }
97
+ }
98
+ // Set default options for the IntersectionObserver...
99
+ const defaultBootstrapObserverOptions = {
100
+ root: element,
101
+ rootMargin: '0px 0px -25%',
102
+ threshold: [0.1, 0.5, 1]
103
+ };
104
+ // Ensure observerOptions exists, create it if it doesn't
105
+ options.observerOptions = { ...defaultBootstrapObserverOptions, ...options.observerOptions };
106
+ // Create an IntersectionObserver that will invoke the callback when targets intersect
107
+ const observer = new IntersectionObserver(options.callback, options.observerOptions);
108
+ // Start observing each target element for intersection events
109
+ for (const section of observableSections.values()) {
110
+ observer.observe(section);
111
+ }
112
+ // Return cleanup function that will be called when the attachment is removed
113
+ return () => {
114
+ // Remove click event listener
115
+ for (const anchor of targetLinks.values()) {
116
+ anchor.removeEventListener('click', handleClick);
117
+ }
118
+ // Disconnect the observer to prevent memory leaks
119
+ observer.disconnect();
120
+ };
121
+ };
122
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Configuration options for the Scrollspy component.
3
+ * Used to track when elements enter/exit the viewport and trigger navigation highlights.
4
+ */
5
+ export type ScrollspyOptions = {
6
+ targetSelector: string;
7
+ callback: IntersectionObserverCallback;
8
+ observerOptions?: IntersectionObserverInit;
9
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export { default as Spinner } from './spinner.svelte';
2
+ export * from './types.js';
@@ -0,0 +1,2 @@
1
+ export { default as Spinner } from './spinner.svelte';
2
+ export * from './types.js';
@@ -0,0 +1,77 @@
1
+ <!--
2
+ @component
3
+ ## Spinner
4
+ A component that indicates a loading state using Bootstrap's spinner styling.
5
+
6
+ @example
7
+ ```svelte
8
+ <Spinner />
9
+ ```
10
+
11
+ #### Border spinner (default)
12
+ ```svelte
13
+ <Spinner>
14
+ <span class="visually-hidden">Loading...</span>
15
+ </Spinner>
16
+ ```
17
+
18
+ #### Growing spinner
19
+ ```svelte
20
+ <Spinner type="grow">
21
+ <span class="visually-hidden">Loading...</span>
22
+ </Spinner>
23
+ ```
24
+
25
+ #### Colors variants
26
+ ```svelte
27
+ <Spinner colorVariant="primary">
28
+ <span class="visually-hidden">Loading primary...</span>
29
+ </Spinner>
30
+ <Spinner colorVariant="secondary">
31
+ <span class="visually-hidden">Loading secondary...</span>
32
+ </Spinner>
33
+ <Spinner colorVariant="success">
34
+ <span class="visually-hidden">Loading success...</span>
35
+ </Spinner>
36
+ <Spinner colorVariant="danger">
37
+ <span class="visually-hidden">Loading danger...</span>
38
+ </Spinner>
39
+ <Spinner colorVariant="warning">
40
+ <span class="visually-hidden">Loading warning...</span>
41
+ </Spinner>
42
+ <Spinner colorVariant="info">
43
+ <span class="visually-hidden">Loading info...</span>
44
+ </Spinner>
45
+ <Spinner colorVariant="light">
46
+ <span class="visually-hidden">Loading light...</span>
47
+ </Spinner>
48
+ <Spinner colorVariant="dark">
49
+ <span class="visually-hidden">Loading dark...</span>
50
+ </Spinner>
51
+ ```
52
+
53
+ #### Sizes
54
+ ```svelte
55
+ <Spinner size="sm">
56
+ <span class="visually-hidden">Loading...</span>
57
+ </Spinner>
58
+ ```
59
+
60
+ ### Props
61
+ - `class` (string): Optional. Additional CSS classes.
62
+ - `colorVariant` (string): Optional. Color variant of the spinner ('primary', 'secondary', etc.).
63
+ - `elementRef` (HTMLElement): Optional. Reference to the spinner DOM element.
64
+ - `id` (string): Optional. ID for the spinner. If not provided, a unique ID will be generated.
65
+ - `size` (string): Optional. Size of the spinner ('sm').
66
+ - `type` (string): Optional. Type of spinner ('border' or 'grow'), defaults to 'border'.
67
+ -->
68
+ <script lang="ts">import { uniqueClsx } from '../common/css.js';
69
+ // Generate a unique ID for the spinner element, in case one is not provided...
70
+ const uid = $props.id();
71
+ let { children, class: classValues, colorVariant, elementRef = $bindable(null), id = `spinner-${uid}`, size, type = 'border', ...restOfProps } = $props();
72
+ let classes = $derived(uniqueClsx(`spinner-${type}`, size && `spinner-${type}-${size}`, colorVariant && `text-${colorVariant}`, classValues));
73
+ </script>
74
+
75
+ <div bind:this={elementRef} class={classes} {id} role="status" {...restOfProps}>
76
+ {@render children?.()}
77
+ </div>
@@ -0,0 +1,70 @@
1
+ import type { SpinnerRootProps } from './types.js';
2
+ /**
3
+ * ## Spinner
4
+ * A component that indicates a loading state using Bootstrap's spinner styling.
5
+ *
6
+ * @example
7
+ * ```svelte
8
+ * <Spinner />
9
+ * ```
10
+ *
11
+ * #### Border spinner (default)
12
+ * ```svelte
13
+ * <Spinner>
14
+ * <span class="visually-hidden">Loading...</span>
15
+ * </Spinner>
16
+ * ```
17
+ *
18
+ * #### Growing spinner
19
+ * ```svelte
20
+ * <Spinner type="grow">
21
+ * <span class="visually-hidden">Loading...</span>
22
+ * </Spinner>
23
+ * ```
24
+ *
25
+ * #### Colors variants
26
+ * ```svelte
27
+ * <Spinner colorVariant="primary">
28
+ * <span class="visually-hidden">Loading primary...</span>
29
+ * </Spinner>
30
+ * <Spinner colorVariant="secondary">
31
+ * <span class="visually-hidden">Loading secondary...</span>
32
+ * </Spinner>
33
+ * <Spinner colorVariant="success">
34
+ * <span class="visually-hidden">Loading success...</span>
35
+ * </Spinner>
36
+ * <Spinner colorVariant="danger">
37
+ * <span class="visually-hidden">Loading danger...</span>
38
+ * </Spinner>
39
+ * <Spinner colorVariant="warning">
40
+ * <span class="visually-hidden">Loading warning...</span>
41
+ * </Spinner>
42
+ * <Spinner colorVariant="info">
43
+ * <span class="visually-hidden">Loading info...</span>
44
+ * </Spinner>
45
+ * <Spinner colorVariant="light">
46
+ * <span class="visually-hidden">Loading light...</span>
47
+ * </Spinner>
48
+ * <Spinner colorVariant="dark">
49
+ * <span class="visually-hidden">Loading dark...</span>
50
+ * </Spinner>
51
+ * ```
52
+ *
53
+ * #### Sizes
54
+ * ```svelte
55
+ * <Spinner size="sm">
56
+ * <span class="visually-hidden">Loading...</span>
57
+ * </Spinner>
58
+ * ```
59
+ *
60
+ * ### Props
61
+ * - `class` (string): Optional. Additional CSS classes.
62
+ * - `colorVariant` (string): Optional. Color variant of the spinner ('primary', 'secondary', etc.).
63
+ * - `elementRef` (HTMLElement): Optional. Reference to the spinner DOM element.
64
+ * - `id` (string): Optional. ID for the spinner. If not provided, a unique ID will be generated.
65
+ * - `size` (string): Optional. Size of the spinner ('sm').
66
+ * - `type` (string): Optional. Type of spinner ('border' or 'grow'), defaults to 'border'.
67
+ */
68
+ declare const Spinner: import("svelte").Component<SpinnerRootProps, {}, "elementRef">;
69
+ type Spinner = ReturnType<typeof Spinner>;
70
+ export default Spinner;
@@ -0,0 +1,9 @@
1
+ import type { BaseColorVariant, DivElement } from '../common/types.js';
2
+ export type SpinnerColorVariant = BaseColorVariant;
3
+ export type SpinnerType = 'border' | 'grow';
4
+ export type SpinnerSize = 'sm' | '';
5
+ export type SpinnerRootProps = DivElement & {
6
+ colorVariant?: SpinnerColorVariant;
7
+ size?: SpinnerSize;
8
+ type?: SpinnerType;
9
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export { default as Content } from './tab-content.svelte';
2
+ export { default as NavLink } from './tab-nav-link.svelte';
3
+ export { default as Pane } from './tab-pane.svelte';
4
+ export { default as Root } from './tab.svelte';
5
+ export type { TabContentProps as ContentProps, TabNavLinkProps as NavLinkProps, TabPaneProps as PaneProps, TabRootProps as RootProps } from './types.js';
@@ -0,0 +1,4 @@
1
+ export { default as Content } from './tab-content.svelte';
2
+ export { default as NavLink } from './tab-nav-link.svelte';
3
+ export { default as Pane } from './tab-pane.svelte';
4
+ export { default as Root } from './tab.svelte';
@@ -0,0 +1 @@
1
+ export * as Tab from './composition.js';
@@ -0,0 +1 @@
1
+ export * as Tab from './composition.js';
@@ -0,0 +1,29 @@
1
+ <!--
2
+ @component
3
+ ## Tab.Content
4
+ Content container for tab content. Used with tabs navigation.
5
+
6
+ @example
7
+ ```svelte
8
+ <Tab.Content>
9
+ <Tab.Pane id="home-tab-pane" isActive={true}>
10
+ Content for home tab
11
+ </Tab.Pane>
12
+ <Tab.Pane id="contact-tab-pane">
13
+ Content for contact tab
14
+ </Tab.Pane>
15
+ </Tab.Content>
16
+ ```
17
+
18
+ ### Props
19
+ - `class` (string): Optional. Additional CSS classes
20
+ - `elementRef` (HTMLElement): Optional. Reference to the DOM element
21
+ -->
22
+ <script lang="ts">import { uniqueClsx } from '../common/css.js';
23
+ let { children, class: classValues, elementRef = $bindable(null), ...restOfProps } = $props();
24
+ let classes = $derived(uniqueClsx('tab-content', classValues));
25
+ </script>
26
+
27
+ <div bind:this={elementRef} class={classes} {...restOfProps}>
28
+ {@render children?.()}
29
+ </div>
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ## Tab.Content
3
+ * Content container for tab content. Used with tabs navigation.
4
+ *
5
+ * @example
6
+ * ```svelte
7
+ * <Tab.Content>
8
+ * <Tab.Pane id="home-tab-pane" isActive={true}>
9
+ * Content for home tab
10
+ * </Tab.Pane>
11
+ * <Tab.Pane id="contact-tab-pane">
12
+ * Content for contact tab
13
+ * </Tab.Pane>
14
+ * </Tab.Content>
15
+ * ```
16
+ *
17
+ * ### Props
18
+ * - `class` (string): Optional. Additional CSS classes
19
+ * - `elementRef` (HTMLElement): Optional. Reference to the DOM element
20
+ */
21
+ declare const TabContent: import("svelte").Component<import("../index.js").DivElement, {}, "elementRef">;
22
+ type TabContent = ReturnType<typeof TabContent>;
23
+ export default TabContent;
@@ -0,0 +1,69 @@
1
+ <!--
2
+ @component
3
+ ## Tab.NavLink
4
+ A tab navigation link component specifically used inside a Tab.Root component.
5
+
6
+ @example
7
+ ```svelte
8
+ <Tab.NavLink targetPaneId="#!" isActive={true}>Active Link</Tab.NavLink>
9
+ ```
10
+
11
+ ### Props
12
+ - `class` (string): Optional. Additional CSS classes.
13
+ - `elementRef` (HTMLElement): Optional. Reference to the link DOM element.
14
+ - `id` (string): Optional. Unique ID for the navigation element. Defaults to `tab-nav-link-{uid}`, where `uid` is a unique identifier.
15
+ - `isActive` (boolean): Optional. Whether the link is active.
16
+ - `isDisabled` (boolean): Optional. Whether the link is disabled.
17
+ - `role` (string): Optional. The ARIA role of the link. If not provided, it will be set to "tab" if the link is a tab.
18
+ - `targetPaneId` (string): Optional. The ID of the tab pane to link to.
19
+ -->
20
+ <script lang="ts">import { uniqueClsx } from '../common/css.js';
21
+ import { initNavLinkState, NavLinkState } from '../common/nav-tab.svelte.js';
22
+ import { noop } from '../common/noop.js';
23
+ // Generate a unique ID for the link, in case one is not provided...
24
+ const uid = $props.id();
25
+ let { children, class: classValues, elementRef = $bindable(null), targetPaneId = '#', id = `tab-nav-link-${uid}`, isActive = false, isDisabled = false, onclick = noop, ...restOfProps } = $props();
26
+ const linkState = initNavLinkState({
27
+ get href() {
28
+ return targetPaneId;
29
+ },
30
+ get id() {
31
+ return id;
32
+ },
33
+ get isActive() {
34
+ return isActive;
35
+ }
36
+ });
37
+ let isActiveState = $derived(linkState.isActive);
38
+ let classes = $derived(uniqueClsx('nav-link', { active: isActiveState, disabled: isDisabled }, classValues));
39
+ const handleClick = (event) => {
40
+ linkState.onclick(event);
41
+ onclick(event);
42
+ };
43
+ // Track the previously synchronized isActive value so we only react to
44
+ // genuine prop transitions (not to reads of the live linkState.props.isActive).
45
+ let previousIsActive;
46
+ $effect(() => {
47
+ if (previousIsActive !== undefined && previousIsActive !== isActive && isActive) {
48
+ linkState.onclick(new MouseEvent('click'));
49
+ }
50
+ previousIsActive = isActive;
51
+ });
52
+ </script>
53
+
54
+ <button
55
+ aria-controls={linkState.ariaControls}
56
+ aria-current={isActiveState ? 'page' : undefined}
57
+ aria-disabled={isDisabled ? 'true' : undefined}
58
+ aria-selected={linkState.isTab ? isActiveState : undefined}
59
+ bind:this={elementRef}
60
+ class={classes}
61
+ data-tab-pane-id={targetPaneId}
62
+ {id}
63
+ onclick={handleClick}
64
+ tabindex={isDisabled ? -1 : undefined}
65
+ type="button"
66
+ role="tab"
67
+ {...restOfProps}>
68
+ {@render children?.()}
69
+ </button>
@@ -0,0 +1,22 @@
1
+ import type { Tab } from './index.js';
2
+ /**
3
+ * ## Tab.NavLink
4
+ * A tab navigation link component specifically used inside a Tab.Root component.
5
+ *
6
+ * @example
7
+ * ```svelte
8
+ * <Tab.NavLink targetPaneId="#!" isActive={true}>Active Link</Tab.NavLink>
9
+ * ```
10
+ *
11
+ * ### Props
12
+ * - `class` (string): Optional. Additional CSS classes.
13
+ * - `elementRef` (HTMLElement): Optional. Reference to the link DOM element.
14
+ * - `id` (string): Optional. Unique ID for the navigation element. Defaults to `tab-nav-link-{uid}`, where `uid` is a unique identifier.
15
+ * - `isActive` (boolean): Optional. Whether the link is active.
16
+ * - `isDisabled` (boolean): Optional. Whether the link is disabled.
17
+ * - `role` (string): Optional. The ARIA role of the link. If not provided, it will be set to "tab" if the link is a tab.
18
+ * - `targetPaneId` (string): Optional. The ID of the tab pane to link to.
19
+ */
20
+ declare const TabNavLink: import("svelte").Component<Tab.NavLinkProps, {}, "elementRef">;
21
+ type TabNavLink = ReturnType<typeof TabNavLink>;
22
+ export default TabNavLink;
@@ -0,0 +1,72 @@
1
+ <!--
2
+ @component
3
+ ## Tab.Pane
4
+ Content pane for a tab. Used inside Tab.Root.
5
+
6
+ @example
7
+ ```svelte
8
+ <Tab.Pane id="home" isActive={true} doFade={true}>
9
+ Content for home tab
10
+ </Tab.Pane>
11
+ ```
12
+
13
+ ### Props
14
+ - `class` (string): Optional. Additional CSS classes.
15
+ - `elementRef` (HTMLElement): Optional. Reference to the DOM element.
16
+ - `doFade` (boolean): Optional. Whether to use fade transition. Defaults to false.
17
+ - `id` (string): Required. ID matching the href of a Nav.Link.
18
+ - `isActive` (boolean): Optional. Whether the pane is initially visible.
19
+ - `onHide` (function): Optional. Callback when the pane is about to be hidden.
20
+ - `onHidden` (function): Optional. Callback when the pane has been hidden.
21
+ - `onShow` (function): Optional. Callback when the pane is about to be shown.
22
+ - `onShown` (function): Optional. Callback when the pane has been shown.
23
+ -->
24
+ <script lang="ts">import { uniqueClsx } from '../common/css.js';
25
+ import { noop } from '../common/noop.js';
26
+ import { fade } from 'svelte/transition';
27
+ import { initTabPaneState, TabPaneState } from '../common/nav-tab.svelte.js';
28
+ // Generate a unique ID for the pane element, in case one is not provided...
29
+ const uid = $props.id();
30
+ let { children, class: classValues, doFade = false, elementRef = $bindable(null), id = `tab-pane-${uid}`, isActive = false, onHide = noop, onHidden = noop, onShow = noop, onShown = noop, ...restOfProps } = $props();
31
+ const paneState = initTabPaneState({
32
+ get id() {
33
+ return id;
34
+ },
35
+ get isActive() {
36
+ return isActive;
37
+ }
38
+ });
39
+ let isActiveState = $derived(paneState.root.isTabPaneActive(id));
40
+ let classes = $derived(uniqueClsx('tab-pane', {
41
+ // The "fade" and "show" class is not needed because we are using the Svelte transition
42
+ active: isActiveState
43
+ }, classValues));
44
+ // The active class can only added or removed when the transition is complete.
45
+ const handleShow = (event) => {
46
+ elementRef?.classList.add('active');
47
+ onShow(event);
48
+ };
49
+ const handleHide = (event) => {
50
+ elementRef?.classList.remove('active');
51
+ onHide(event);
52
+ };
53
+ </script>
54
+
55
+ {#if isActiveState}
56
+ <div
57
+ aria-hidden={!isActiveState}
58
+ aria-labelledby={paneState.ariaLabelledBy}
59
+ bind:this={elementRef}
60
+ class={classes}
61
+ hidden={!isActiveState}
62
+ {id}
63
+ onintrostart={doFade ? handleShow : onShow}
64
+ onintroend={onShown}
65
+ onoutrostart={doFade ? handleHide : onHide}
66
+ onoutroend={onHidden}
67
+ role="tabpanel"
68
+ transition:fade={{ duration: doFade ? 500 : 0 }}
69
+ {...restOfProps}>
70
+ {@render children?.()}
71
+ </div>
72
+ {/if}
@@ -0,0 +1,26 @@
1
+ import type { Tab } from './index.js';
2
+ /**
3
+ * ## Tab.Pane
4
+ * Content pane for a tab. Used inside Tab.Root.
5
+ *
6
+ * @example
7
+ * ```svelte
8
+ * <Tab.Pane id="home" isActive={true} doFade={true}>
9
+ * Content for home tab
10
+ * </Tab.Pane>
11
+ * ```
12
+ *
13
+ * ### Props
14
+ * - `class` (string): Optional. Additional CSS classes.
15
+ * - `elementRef` (HTMLElement): Optional. Reference to the DOM element.
16
+ * - `doFade` (boolean): Optional. Whether to use fade transition. Defaults to false.
17
+ * - `id` (string): Required. ID matching the href of a Nav.Link.
18
+ * - `isActive` (boolean): Optional. Whether the pane is initially visible.
19
+ * - `onHide` (function): Optional. Callback when the pane is about to be hidden.
20
+ * - `onHidden` (function): Optional. Callback when the pane has been hidden.
21
+ * - `onShow` (function): Optional. Callback when the pane is about to be shown.
22
+ * - `onShown` (function): Optional. Callback when the pane has been shown.
23
+ */
24
+ declare const TabPane: import("svelte").Component<Tab.PaneProps, {}, "elementRef">;
25
+ type TabPane = ReturnType<typeof TabPane>;
26
+ export default TabPane;
@@ -0,0 +1,63 @@
1
+ <!--
2
+ @component
3
+ ## Tab.Root
4
+ Root component for tab content. Used with tabs navigation.
5
+
6
+ @example
7
+ ```svelte
8
+ <Tab.Root>
9
+ <Nav.Root data-testid="nav-tabs" itemStyle="tabs">
10
+ <Nav.Item>
11
+ <Nav.Link href="#home-tabpane" id="home-navlink" isActive={true}>Home</Nav.Link>
12
+ </Nav.Item>
13
+ <Nav.Item>
14
+ <Nav.Link href="#profile-tabpane" id="profile-navlink">Profile</Nav.Link>
15
+ </Nav.Item>
16
+ <Nav.Item>
17
+ <Nav.Link href="#contact-tabpane" id="contact-navlink">Contact</Nav.Link>
18
+ </Nav.Item>
19
+ <Nav.Item>
20
+ <Nav.Link href="#disabled-tabpane" id="disabled-navlink" isDisabled={true}>Disabled</Nav.Link>
21
+ </Nav.Item>
22
+ </Nav.Root>
23
+ <Tab.Content data-testid="tab-content-container">
24
+ <Tab.Pane data-testid="home-content" id="home-tabpane" isActive={true}>
25
+ <h5 class="mt-3">Home Content</h5>
26
+ <p>This is the home content panel.</p>
27
+ </Tab.Pane>
28
+ <Tab.Pane data-testid="profile-content" id="profile-tabpane">
29
+ <h5 class="mt-3">Profile Content</h5>
30
+ <p>This is the profile content panel.</p>
31
+ </Tab.Pane>
32
+ <Tab.Pane data-testid="contact-content" id="contact-tabpane">
33
+ <h5 class="mt-3">Contact Content</h5>
34
+ <p>This is the contact content panel.</p>
35
+ </Tab.Pane>
36
+ <Tab.Pane data-testid="disabled-content" id="disabled-tabpane">
37
+ <h5 class="mt-3">Disabled Content</h5>
38
+ <p>This is the disabled content panel.</p>
39
+ </Tab.Pane>
40
+ </Tab.Content>
41
+ </Tab.Root>
42
+ ```
43
+ ### Props
44
+ - `class` (string): Optional. Additional CSS classes
45
+ - `elementRef` (HTMLElement): Optional. Reference to the root DOM element
46
+ - `id` (string): Optional. Unique ID for the root element. Defaults to `tab-{uid}`, where `uid` is a unique identifier.
47
+ -->
48
+ <script lang="ts">import { uniqueClsx } from '../common/css.js';
49
+ import { initTabRootState, TabRootState } from '../common/nav-tab.svelte.js';
50
+ // Generate a unique ID for the card element, in case one is not provided...
51
+ const uid = $props.id();
52
+ let { children, class: classValues, elementRef = $bindable(null), id = `tab-${uid}`, ...restOfProps } = $props();
53
+ const _rootState = initTabRootState({
54
+ get id() {
55
+ return id;
56
+ }
57
+ });
58
+ let classes = $derived(uniqueClsx(classValues));
59
+ </script>
60
+
61
+ <div bind:this={elementRef} class={classes} {id} {...restOfProps}>
62
+ {@render children?.()}
63
+ </div>