@quaffui/quaff 0.1.0-prealpha9 → 1.0.0-alpha1

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 (387) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +47 -14
  3. package/dist/classes/QContext.svelte.d.ts +42 -0
  4. package/dist/classes/QContext.svelte.js +63 -0
  5. package/dist/classes/QScrollObserver.svelte.d.ts +48 -0
  6. package/dist/classes/QScrollObserver.svelte.js +107 -0
  7. package/dist/classes/QTheme.svelte.d.ts +13 -0
  8. package/dist/classes/QTheme.svelte.js +62 -0
  9. package/dist/classes/Quaff.svelte.d.ts +15 -0
  10. package/dist/classes/Quaff.svelte.js +45 -0
  11. package/dist/components/avatar/QAvatar.scss +101 -0
  12. package/dist/components/avatar/QAvatar.svelte +42 -42
  13. package/dist/components/avatar/QAvatar.svelte.d.ts +4 -17
  14. package/dist/components/avatar/docs.d.ts +2 -2
  15. package/dist/components/avatar/docs.js +3 -8
  16. package/dist/components/avatar/docs.props.d.ts +3 -8
  17. package/dist/components/avatar/docs.props.js +68 -15
  18. package/dist/components/avatar/index.scss +5 -3
  19. package/dist/components/avatar/props.d.ts +51 -8
  20. package/dist/components/breadcrumbs/QBreadcrumbs.scss +10 -0
  21. package/dist/components/breadcrumbs/QBreadcrumbs.svelte +32 -14
  22. package/dist/components/breadcrumbs/QBreadcrumbs.svelte.d.ts +4 -13
  23. package/dist/components/breadcrumbs/QBreadcrumbsEl.scss +10 -0
  24. package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte +65 -48
  25. package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte.d.ts +4 -16
  26. package/dist/components/breadcrumbs/docs.d.ts +2 -2
  27. package/dist/components/breadcrumbs/docs.js +3 -8
  28. package/dist/components/breadcrumbs/docs.props.d.ts +5 -16
  29. package/dist/components/breadcrumbs/docs.props.js +105 -45
  30. package/dist/components/breadcrumbs/props.d.ts +26 -24
  31. package/dist/components/button/QBtn.scss +136 -0
  32. package/dist/components/button/QBtn.svelte +156 -52
  33. package/dist/components/button/QBtn.svelte.d.ts +4 -23
  34. package/dist/components/button/docs.d.ts +2 -2
  35. package/dist/components/button/docs.js +3 -8
  36. package/dist/components/button/docs.props.d.ts +3 -8
  37. package/dist/components/button/docs.props.js +174 -37
  38. package/dist/components/button/props.d.ts +48 -11
  39. package/dist/components/card/QCard.scss +25 -0
  40. package/dist/components/card/QCard.svelte +34 -19
  41. package/dist/components/card/QCard.svelte.d.ts +4 -16
  42. package/dist/components/card/QCardActions.scss +10 -0
  43. package/dist/components/card/QCardActions.svelte +23 -15
  44. package/dist/components/card/QCardActions.svelte.d.ts +4 -12
  45. package/dist/components/card/QCardSection.scss +10 -0
  46. package/dist/components/card/QCardSection.svelte +15 -11
  47. package/dist/components/card/QCardSection.svelte.d.ts +4 -13
  48. package/dist/components/card/docs.d.ts +4 -4
  49. package/dist/components/card/docs.js +7 -22
  50. package/dist/components/card/docs.props.d.ts +7 -24
  51. package/dist/components/card/docs.props.js +57 -30
  52. package/dist/components/card/props.d.ts +11 -16
  53. package/dist/components/checkbox/QCheckbox.svelte +15 -9
  54. package/dist/components/checkbox/QCheckbox.svelte.d.ts +3 -10
  55. package/dist/components/checkbox/docs.d.ts +2 -2
  56. package/dist/components/checkbox/docs.js +3 -3
  57. package/dist/components/checkbox/docs.props.d.ts +3 -8
  58. package/dist/components/checkbox/docs.props.js +24 -9
  59. package/dist/components/checkbox/index.scss +3 -1
  60. package/dist/components/checkbox/props.d.ts +2 -2
  61. package/dist/components/chip/QChip.scss +179 -0
  62. package/dist/components/chip/QChip.svelte +130 -60
  63. package/dist/components/chip/QChip.svelte.d.ts +4 -25
  64. package/dist/components/chip/docs.d.ts +2 -2
  65. package/dist/components/chip/docs.js +3 -16
  66. package/dist/components/chip/docs.props.d.ts +3 -8
  67. package/dist/components/chip/docs.props.js +96 -49
  68. package/dist/components/chip/props.d.ts +27 -29
  69. package/dist/components/codeBlock/QCodeBlock.svelte +90 -44
  70. package/dist/components/codeBlock/QCodeBlock.svelte.d.ts +3 -10
  71. package/dist/components/codeBlock/docs.props.d.ts +3 -8
  72. package/dist/components/codeBlock/docs.props.js +61 -12
  73. package/dist/components/codeBlock/props.d.ts +12 -2
  74. package/dist/components/dialog/{index.scss → QDialog.scss} +12 -14
  75. package/dist/components/dialog/QDialog.svelte +85 -78
  76. package/dist/components/dialog/QDialog.svelte.d.ts +9 -24
  77. package/dist/components/dialog/docs.d.ts +2 -2
  78. package/dist/components/dialog/docs.js +3 -3
  79. package/dist/components/dialog/docs.props.d.ts +3 -16
  80. package/dist/components/dialog/docs.props.js +37 -128
  81. package/dist/components/dialog/props.d.ts +4 -19
  82. package/dist/components/drawer/QDrawer.scss +39 -0
  83. package/dist/components/drawer/QDrawer.svelte +138 -90
  84. package/dist/components/drawer/QDrawer.svelte.d.ts +9 -28
  85. package/dist/components/drawer/docs.d.ts +2 -2
  86. package/dist/components/drawer/docs.js +3 -3
  87. package/dist/components/drawer/docs.props.d.ts +3 -8
  88. package/dist/components/drawer/docs.props.js +94 -39
  89. package/dist/components/drawer/props.d.ts +4 -3
  90. package/dist/components/footer/QFooter.scss +42 -0
  91. package/dist/components/footer/QFooter.svelte +99 -24
  92. package/dist/components/footer/QFooter.svelte.d.ts +4 -14
  93. package/dist/components/footer/docs.d.ts +2 -2
  94. package/dist/components/footer/docs.js +3 -3
  95. package/dist/components/footer/docs.props.d.ts +3 -8
  96. package/dist/components/footer/docs.props.js +47 -16
  97. package/dist/components/footer/props.d.ts +15 -9
  98. package/dist/components/header/QHeader.scss +53 -0
  99. package/dist/components/header/QHeader.svelte +90 -23
  100. package/dist/components/header/QHeader.svelte.d.ts +4 -14
  101. package/dist/components/header/docs.d.ts +2 -0
  102. package/dist/components/header/docs.js +11 -0
  103. package/dist/components/header/docs.props.d.ts +7 -0
  104. package/dist/components/header/docs.props.js +131 -0
  105. package/dist/components/header/props.d.ts +13 -5
  106. package/dist/components/icon/{index.scss → QIcon.scss} +2 -4
  107. package/dist/components/icon/QIcon.svelte +44 -28
  108. package/dist/components/icon/QIcon.svelte.d.ts +4 -18
  109. package/dist/components/icon/docs.d.ts +2 -2
  110. package/dist/components/icon/docs.js +3 -3
  111. package/dist/components/icon/docs.props.d.ts +3 -8
  112. package/dist/components/icon/docs.props.js +65 -24
  113. package/dist/components/icon/props.d.ts +9 -8
  114. package/dist/components/index.d.ts +5 -2
  115. package/dist/components/index.js +5 -2
  116. package/dist/components/input/QInput.svelte +106 -72
  117. package/dist/components/input/QInput.svelte.d.ts +4 -22
  118. package/dist/components/input/docs.d.ts +2 -2
  119. package/dist/components/input/docs.js +5 -71
  120. package/dist/components/input/docs.props.d.ts +3 -8
  121. package/dist/components/input/docs.props.js +129 -57
  122. package/dist/components/input/index.scss +1 -3
  123. package/dist/components/input/props.d.ts +81 -21
  124. package/dist/components/input/props.js +1 -13
  125. package/dist/components/layout/QLayout.scss +174 -0
  126. package/dist/components/layout/QLayout.svelte +178 -79
  127. package/dist/components/layout/QLayout.svelte.d.ts +12 -45
  128. package/dist/components/layout/docs.d.ts +2 -2
  129. package/dist/components/layout/docs.js +3 -3
  130. package/dist/components/layout/docs.props.d.ts +3 -8
  131. package/dist/components/layout/docs.props.js +62 -39
  132. package/dist/components/layout/props.d.ts +29 -21
  133. package/dist/components/list/QItem.scss +69 -0
  134. package/dist/components/list/QItem.svelte +99 -51
  135. package/dist/components/list/QItem.svelte.d.ts +4 -24
  136. package/dist/components/list/QItemSection.scss +59 -0
  137. package/dist/components/list/QItemSection.svelte +63 -37
  138. package/dist/components/list/QItemSection.svelte.d.ts +4 -15
  139. package/dist/components/list/QList.scss +30 -0
  140. package/dist/components/list/QList.svelte +43 -20
  141. package/dist/components/list/QList.svelte.d.ts +4 -26
  142. package/dist/components/list/docs.d.ts +4 -2
  143. package/dist/components/list/docs.js +23 -3
  144. package/dist/components/list/docs.props.d.ts +11 -40
  145. package/dist/components/list/docs.props.js +344 -136
  146. package/dist/components/list/props.d.ts +126 -28
  147. package/dist/components/list/props.js +1 -25
  148. package/dist/components/private/ContextReseter.svelte +15 -11
  149. package/dist/components/private/ContextReseter.svelte.d.ts +4 -8
  150. package/dist/components/private/QApi.svelte +264 -113
  151. package/dist/components/private/QApi.svelte.d.ts +3 -6
  152. package/dist/components/private/QDocs.svelte +119 -68
  153. package/dist/components/private/QDocs.svelte.d.ts +4 -11
  154. package/dist/components/private/QDocsSection.svelte +48 -18
  155. package/dist/components/private/QDocsSection.svelte.d.ts +9 -24
  156. package/dist/components/private/QIconSnippet.svelte +22 -0
  157. package/dist/components/private/QIconSnippet.svelte.d.ts +14 -0
  158. package/dist/components/private/index.d.ts +6 -0
  159. package/dist/components/private/index.js +6 -0
  160. package/dist/components/progress/QCircularProgress.scss +63 -0
  161. package/dist/components/progress/QCircularProgress.svelte +134 -21
  162. package/dist/components/progress/QCircularProgress.svelte.d.ts +3 -11
  163. package/dist/components/progress/QLinearProgress.scss +75 -0
  164. package/dist/components/progress/QLinearProgress.svelte +80 -23
  165. package/dist/components/progress/QLinearProgress.svelte.d.ts +3 -11
  166. package/dist/components/progress/docs.d.ts +3 -2
  167. package/dist/components/progress/docs.js +15 -5
  168. package/dist/components/progress/docs.props.d.ts +5 -16
  169. package/dist/components/progress/docs.props.js +287 -41
  170. package/dist/components/progress/props.d.ts +126 -14
  171. package/dist/components/radio/QRadio.svelte +16 -9
  172. package/dist/components/radio/QRadio.svelte.d.ts +3 -11
  173. package/dist/components/radio/docs.d.ts +2 -2
  174. package/dist/components/radio/docs.js +4 -26
  175. package/dist/components/radio/docs.props.d.ts +3 -8
  176. package/dist/components/radio/docs.props.js +39 -20
  177. package/dist/components/radio/index.scss +3 -1
  178. package/dist/components/radio/props.d.ts +26 -6
  179. package/dist/components/radio/props.js +1 -8
  180. package/dist/components/railbar/QRailbar.scss +54 -0
  181. package/dist/components/railbar/QRailbar.svelte +71 -65
  182. package/dist/components/railbar/QRailbar.svelte.d.ts +4 -13
  183. package/dist/components/railbar/docs.d.ts +2 -2
  184. package/dist/components/railbar/docs.js +3 -3
  185. package/dist/components/railbar/docs.props.d.ts +3 -8
  186. package/dist/components/railbar/docs.props.js +36 -15
  187. package/dist/components/railbar/props.d.ts +13 -6
  188. package/dist/components/select/QSelect.svelte +222 -146
  189. package/dist/components/select/QSelect.svelte.d.ts +4 -24
  190. package/dist/components/select/docs.d.ts +2 -2
  191. package/dist/components/select/docs.js +5 -83
  192. package/dist/components/select/docs.props.d.ts +3 -8
  193. package/dist/components/select/docs.props.js +156 -64
  194. package/dist/components/select/index.scss +25 -10
  195. package/dist/components/select/props.d.ts +100 -20
  196. package/dist/components/select/props.js +1 -14
  197. package/dist/components/separator/QSeparator.scss +54 -0
  198. package/dist/components/separator/QSeparator.svelte +50 -57
  199. package/dist/components/separator/QSeparator.svelte.d.ts +3 -14
  200. package/dist/components/separator/docs.d.ts +3 -2
  201. package/dist/components/separator/docs.js +14 -4
  202. package/dist/components/separator/docs.props.d.ts +5 -16
  203. package/dist/components/separator/docs.props.js +152 -72
  204. package/dist/components/separator/props.d.ts +84 -16
  205. package/dist/components/separator/props.js +1 -9
  206. package/dist/components/switch/QSwitch.scss +305 -0
  207. package/dist/components/switch/QSwitch.svelte +115 -0
  208. package/dist/components/switch/QSwitch.svelte.d.ts +14 -0
  209. package/dist/components/switch/docs.d.ts +2 -0
  210. package/dist/components/switch/docs.js +17 -0
  211. package/dist/components/switch/docs.props.d.ts +3 -0
  212. package/dist/components/switch/docs.props.js +119 -0
  213. package/dist/components/switch/props.d.ts +53 -0
  214. package/dist/components/switch/props.js +1 -0
  215. package/dist/components/table/QTable.svelte +133 -97
  216. package/dist/components/table/QTable.svelte.d.ts +4 -19
  217. package/dist/components/table/docs.d.ts +2 -2
  218. package/dist/components/table/docs.js +3 -3
  219. package/dist/components/table/docs.props.d.ts +3 -8
  220. package/dist/components/table/docs.props.js +67 -15
  221. package/dist/components/table/index.scss +3 -1
  222. package/dist/components/table/props.d.ts +14 -3
  223. package/dist/components/tabs/QTab.scss +71 -0
  224. package/dist/components/tabs/QTab.svelte +101 -88
  225. package/dist/components/tabs/QTab.svelte.d.ts +4 -16
  226. package/dist/components/tabs/QTabs.scss +53 -0
  227. package/dist/components/tabs/QTabs.svelte +163 -46
  228. package/dist/components/tabs/QTabs.svelte.d.ts +9 -13
  229. package/dist/components/tabs/docs.d.ts +3 -2
  230. package/dist/components/tabs/docs.js +13 -3
  231. package/dist/components/tabs/docs.props.d.ts +5 -16
  232. package/dist/components/tabs/docs.props.js +64 -30
  233. package/dist/components/tabs/index.scss +36 -24
  234. package/dist/components/tabs/props.d.ts +38 -9
  235. package/dist/components/tabs/props.js +1 -13
  236. package/dist/components/toolbar/{index.scss → QToolbar.scss} +10 -16
  237. package/dist/components/toolbar/QToolbar.svelte +26 -21
  238. package/dist/components/toolbar/QToolbar.svelte.d.ts +4 -15
  239. package/dist/components/toolbar/QToolbarTitle.svelte +10 -7
  240. package/dist/components/toolbar/QToolbarTitle.svelte.d.ts +4 -12
  241. package/dist/components/toolbar/docs.d.ts +3 -2
  242. package/dist/components/toolbar/docs.js +13 -3
  243. package/dist/components/toolbar/docs.props.d.ts +5 -16
  244. package/dist/components/toolbar/docs.props.js +55 -15
  245. package/dist/components/toolbar/props.d.ts +19 -9
  246. package/dist/components/tooltip/QTooltip.scss +40 -0
  247. package/dist/components/tooltip/QTooltip.svelte +200 -10
  248. package/dist/components/tooltip/QTooltip.svelte.d.ts +17 -18
  249. package/dist/components/tooltip/QTooltipBase.svelte +86 -0
  250. package/dist/components/tooltip/QTooltipBase.svelte.d.ts +14 -0
  251. package/dist/components/tooltip/docs.d.ts +2 -2
  252. package/dist/components/tooltip/docs.js +3 -2
  253. package/dist/components/tooltip/docs.props.d.ts +3 -8
  254. package/dist/components/tooltip/docs.props.js +69 -10
  255. package/dist/components/tooltip/props.d.ts +36 -4
  256. package/dist/components/tooltip/props.js +1 -6
  257. package/dist/composables/index.d.ts +3 -0
  258. package/dist/composables/index.js +3 -1
  259. package/dist/composables/{use-align.d.ts → useAlign.d.ts} +1 -1
  260. package/dist/composables/{use-align.js → useAlign.js} +1 -1
  261. package/dist/composables/{use-router-link.d.ts → useRouterLink.d.ts} +3 -3
  262. package/dist/composables/{use-router-link.js → useRouterLink.js} +4 -4
  263. package/dist/composables/useSize.d.ts +10 -0
  264. package/dist/composables/useSize.js +37 -0
  265. package/dist/css/_components.scss +31 -0
  266. package/dist/css/_disabled.scss +18 -0
  267. package/dist/css/{ripple.scss → _ripple.scss} +10 -3
  268. package/dist/css/_variables.scss +73 -0
  269. package/dist/css/classes/_design.scss +57 -0
  270. package/dist/css/{flex.scss → classes/_flex.scss} +23 -2
  271. package/dist/css/classes/_grid.scss +35 -0
  272. package/dist/css/classes/_index.scss +7 -0
  273. package/dist/css/classes/_overflow.scss +7 -0
  274. package/dist/css/classes/_position.scss +7 -0
  275. package/dist/css/classes/_select.scss +6 -0
  276. package/dist/css/classes/_spaces.scss +23 -0
  277. package/dist/css/fonts.scss +18 -4
  278. package/dist/css/index.css +1 -1
  279. package/dist/css/index.scss +16 -92
  280. package/dist/css/mixins/_design.scss +64 -0
  281. package/dist/css/mixins/_field.scss +64 -0
  282. package/dist/css/mixins/_image.scss +64 -0
  283. package/dist/css/mixins/_index.scss +10 -0
  284. package/dist/css/mixins/_layout.scss +20 -0
  285. package/dist/css/mixins/{menu.scss → _menu.scss} +4 -2
  286. package/dist/css/mixins/{selection.scss → _selection.scss} +10 -70
  287. package/dist/css/mixins/_spaces.scss +36 -0
  288. package/dist/css/mixins/_toolbar.scss +7 -0
  289. package/dist/css/mixins/_typography.scss +7 -0
  290. package/dist/css/shared/q-field.scss +348 -0
  291. package/dist/css/theme/_color-classes.scss +332 -0
  292. package/dist/css/theme/_colors.scss +205 -0
  293. package/dist/css/theme/_css-variables.scss +5 -0
  294. package/dist/css/theme/_index.scss +12 -0
  295. package/dist/css/theme/_page.scss +17 -0
  296. package/dist/css/theme/{palette.scss → _palette.scss} +27 -5
  297. package/dist/css/theme/{reset.scss → _reset.scss} +11 -2
  298. package/dist/css/theme/_typography-variables.scss +107 -0
  299. package/dist/global.d.ts +1 -1
  300. package/dist/helpers/clickOutside.d.ts +2 -2
  301. package/dist/helpers/clickOutside.js +5 -4
  302. package/dist/helpers/index.d.ts +2 -1
  303. package/dist/helpers/index.js +2 -1
  304. package/dist/helpers/pageTitle.d.ts +1 -0
  305. package/dist/helpers/pageTitle.js +3 -0
  306. package/dist/helpers/ripple.d.ts +1 -0
  307. package/dist/helpers/ripple.js +31 -16
  308. package/dist/helpers/version.d.ts +1 -1
  309. package/dist/helpers/version.js +1 -1
  310. package/dist/index.d.ts +4 -1
  311. package/dist/index.js +4 -1
  312. package/dist/stores/index.d.ts +0 -0
  313. package/dist/stores/index.js +1 -0
  314. package/dist/utils/clipboard.d.ts +1 -1
  315. package/dist/utils/clipboard.js +3 -4
  316. package/dist/utils/colors.d.ts +69 -0
  317. package/dist/utils/colors.js +141 -15
  318. package/dist/utils/context.d.ts +33 -0
  319. package/dist/utils/context.js +33 -0
  320. package/dist/utils/dom.d.ts +3 -0
  321. package/dist/utils/dom.js +14 -4
  322. package/dist/utils/events.d.ts +24 -0
  323. package/dist/utils/events.js +24 -0
  324. package/dist/utils/index.d.ts +11 -0
  325. package/dist/utils/index.js +11 -1
  326. package/dist/utils/number.d.ts +2 -0
  327. package/dist/utils/number.js +9 -0
  328. package/dist/utils/props.d.ts +4 -4
  329. package/dist/utils/props.js +8 -6
  330. package/dist/utils/router.d.ts +16 -0
  331. package/dist/utils/router.js +20 -0
  332. package/dist/utils/string.d.ts +2 -0
  333. package/dist/utils/string.js +12 -1
  334. package/dist/utils/types.d.ts +12 -18
  335. package/dist/utils/types.js +0 -3
  336. package/dist/utils/types.json +31 -1
  337. package/package.json +44 -39
  338. package/dist/components/breadcrumbs/index.scss +0 -20
  339. package/dist/components/button/index.scss +0 -98
  340. package/dist/components/card/index.scss +0 -56
  341. package/dist/components/chip/index.scss +0 -86
  342. package/dist/components/drawer/index.scss +0 -59
  343. package/dist/components/footer/index.scss +0 -28
  344. package/dist/components/layout/index.scss +0 -387
  345. package/dist/components/list/index.scss +0 -121
  346. package/dist/components/progress/index.scss +0 -65
  347. package/dist/components/railbar/index.scss +0 -39
  348. package/dist/components/toggle/QToggle.svelte +0 -35
  349. package/dist/components/toggle/QToggle.svelte.d.ts +0 -23
  350. package/dist/components/toggle/docs.d.ts +0 -2
  351. package/dist/components/toggle/docs.js +0 -47
  352. package/dist/components/toggle/docs.props.d.ts +0 -8
  353. package/dist/components/toggle/docs.props.js +0 -42
  354. package/dist/components/toggle/index.scss +0 -31
  355. package/dist/components/toggle/props.d.ts +0 -9
  356. package/dist/components/toggle/props.js +0 -9
  357. package/dist/components/tooltip/index.scss +0 -82
  358. package/dist/composables/use-index.d.ts +0 -2
  359. package/dist/composables/use-index.js +0 -17
  360. package/dist/composables/use-size.d.ts +0 -9
  361. package/dist/composables/use-size.js +0 -25
  362. package/dist/css/grid.scss +0 -50
  363. package/dist/css/mixins/field.scss +0 -432
  364. package/dist/css/mixins.scss +0 -136
  365. package/dist/css/states.scss +0 -75
  366. package/dist/css/theme/bridge.scss +0 -15
  367. package/dist/css/theme/colors.module.scss +0 -180
  368. package/dist/css/theme/page.scss +0 -16
  369. package/dist/css/theme/theme.dark.scss +0 -37
  370. package/dist/css/theme/theme.light.scss +0 -37
  371. package/dist/css/theme/theme.scss +0 -11
  372. package/dist/css/theme/tokens.scss +0 -266
  373. package/dist/css/variables-sass.scss +0 -16
  374. package/dist/helpers/activationHandler.d.ts +0 -9
  375. package/dist/helpers/activationHandler.js +0 -23
  376. package/dist/stores/QTheme.d.ts +0 -42
  377. package/dist/stores/QTheme.js +0 -53
  378. package/dist/stores/Quaff.d.ts +0 -32
  379. package/dist/stores/Quaff.js +0 -53
  380. package/dist/utils/fields.d.ts +0 -1
  381. package/dist/utils/fields.js +0 -14
  382. package/dist/utils/watchable.d.ts +0 -3
  383. package/dist/utils/watchable.js +0 -22
  384. /package/dist/css/mixins/{table.scss → _table.scss} +0 -0
  385. /package/dist/css/theme/{elevate.scss → _elevate.scss} +0 -0
  386. /package/dist/css/theme/{typography.module.scss → _typography-classes.scss} +0 -0
  387. /package/dist/css/theme/{typography.scss → _typography.scss} +0 -0
@@ -1,106 +1,119 @@
1
- <script>import { Quaff } from "../../stores/Quaff";
2
- import { getContext, hasContext } from "svelte";
3
- import { createClasses } from "../../utils/props";
4
- import QIcon from "../icon/QIcon.svelte";
5
- import { isRouteActive } from "../../composables/use-router-link";
6
- import { getDirection, isActivationKey, isArrowKey, isTabKey } from "../../utils/events";
7
- import { ripple } from "../../helpers/ripple";
8
- import { getClosestFocusableBlock, getClosestFocusableSibling } from "../../utils/dom";
9
- export let name = void 0, to = void 0, icon = void 0, userClasses = void 0;
10
- export { userClasses as class };
11
- let index = 1;
12
- let qTab;
13
- if (!hasContext("QTabCount")) {
14
- console.warn("QTab should be used inside QTabs");
15
- }
16
- const variant = getContext("variant");
17
- let indexContext = getContext("QTabCount");
18
- $:
19
- if (indexContext) {
20
- index = indexContext.index();
21
- }
22
- let activeStore = getContext("activeTab");
23
- $:
24
- isActive = to !== void 0 ? isRouteActive($Quaff.router, to) : name === $activeStore.name;
25
- $:
26
- if (isActive && qTab) {
27
- setActive(qTab);
28
- }
29
- let tag;
30
- $:
31
- tag = to === void 0 ? "button" : "a";
32
- $:
33
- classes = createClasses([isActive && "active"], {
34
- component: "q-tab",
35
- userClasses
36
- });
37
- function setActive(el) {
38
- let rect;
39
- if (variant === "primary") {
40
- rect = el.firstElementChild.getBoundingClientRect();
41
- } else {
42
- rect = el.getBoundingClientRect();
43
- }
44
- let indicatorWidth = variant === "vertical" ? rect.height : rect.width;
45
- let buttonWidth = el.offsetWidth;
46
- if (index !== $activeStore.index) {
47
- $activeStore = {
48
- name,
49
- index,
50
- position: variant === "vertical" ? `${el.offsetTop}px` : variant === "secondary" ? `${el.offsetLeft}px` : `calc(${el.offsetLeft}px + ${buttonWidth}px / 2)`,
51
- size: indicatorWidth
52
- };
53
- }
54
- }
55
- function onClick(e) {
56
- setActive(e.target);
57
- }
58
- function onKeydown(e) {
59
- if (isActivationKey(e)) {
60
- e.preventDefault();
61
- const click = new MouseEvent("click");
62
- qTab.dispatchEvent(click);
63
- return;
1
+ <script lang="ts">
2
+ import { getContext, hasContext } from "svelte";
3
+ import { QIcon } from "../..";
4
+ import { QContext } from "../../classes/QContext.svelte";
5
+ import { ripple } from "../../helpers";
6
+ import {
7
+ getClosestFocusableBlock,
8
+ getClosestFocusableSibling,
9
+ getDirection,
10
+ isActivationKey,
11
+ isArrowKey,
12
+ isRouteActive,
13
+ isTabKey,
14
+ QTabsCtxName,
15
+ type Direction,
16
+ type QEvent,
17
+ } from "../../utils";
18
+
19
+ import type { QTabEl } from "./QTabs.svelte";
20
+ import type { QTabProps, QTabsVariants } from "./props";
21
+
22
+ type QTabEvent<T> = QEvent<T, QTabEl>;
23
+
24
+ let { name, to, icon, children, ...props }: QTabProps = $props();
25
+
26
+ let qTab: QTabEl;
27
+
28
+ const tag = $derived(to ? "a" : "button");
29
+
30
+ if (!hasContext(QTabsCtxName.value)) {
31
+ console.warn("QTab should be use inside QTabs.");
64
32
  }
65
- if (isArrowKey(e)) {
66
- e.preventDefault();
67
- const direction = getDirection(e);
68
- const targetTab = getClosestFocusableSibling(qTab, direction);
69
- if (targetTab === qTab) {
33
+
34
+ const qTabsRequestCtx = QContext.get<string | null>(QTabsCtxName.request)!;
35
+
36
+ const qTabsValueCtx = QContext.get<string | undefined | null>(
37
+ QTabsCtxName.value,
38
+ )!;
39
+ const variant = getContext<QTabsVariants>(QTabsCtxName.variant);
40
+ const isActive = $derived(
41
+ to ? isRouteActive(to) : name === qTabsValueCtx.value,
42
+ );
43
+
44
+ function onclick(e: QTabEvent<MouseEvent>) {
45
+ props.onclick?.(e);
46
+
47
+ if (e.defaultPrevented || isActive) {
70
48
  return;
71
49
  }
72
- targetTab?.focus();
73
- return;
50
+
51
+ qTabsRequestCtx.update(name);
74
52
  }
75
- if (isTabKey(e)) {
76
- e.preventDefault();
77
- const direction = e.shiftKey ? "previous" : "next";
78
- const targetBlock = getClosestFocusableBlock(qTab, direction);
79
- targetBlock?.focus();
53
+
54
+ function onkeydown(e: QTabEvent<KeyboardEvent>) {
55
+ props.onkeydown?.(e);
56
+
57
+ if (isActivationKey(e)) {
58
+ e.preventDefault();
59
+
60
+ const click = new MouseEvent("click") as QTabEvent<MouseEvent>;
61
+ return onclick(click);
62
+ }
63
+
64
+ if (isArrowKey(e)) {
65
+ e.preventDefault();
66
+ const direction = getDirection(e);
67
+ const targetTab = getClosestFocusableSibling(qTab, direction);
68
+
69
+ if (targetTab === qTab) {
70
+ return;
71
+ }
72
+
73
+ return targetTab?.focus();
74
+ }
75
+
76
+ if (isTabKey(e)) {
77
+ e.preventDefault();
78
+ const direction: Direction = e.shiftKey ? "previous" : "next";
79
+ const targetBlock = getClosestFocusableBlock(qTab, direction);
80
+
81
+ targetBlock?.focus();
82
+ }
80
83
  }
81
- return;
82
- }
83
84
  </script>
84
85
 
85
86
  <svelte:element
86
87
  this={tag}
88
+ bind:this={qTab}
87
89
  use:ripple
90
+ {...props}
91
+ class={["q-tab", props.class, isActive && "q-tab--active"]}
88
92
  href={to}
89
- class={classes}
90
93
  role={tag === "a" ? "button" : undefined}
91
94
  aria-current={isActive || undefined}
92
- on:click
93
- on:click={onClick}
94
- on:keydown={onKeydown}
95
- {...$$restProps}
96
- bind:this={qTab}
95
+ aria-label={name}
96
+ {onclick}
97
+ {onkeydown}
98
+ data-quaff
97
99
  >
98
- <div>
99
- {#if icon}
100
+ <div class="q-tab__content">
101
+ {#if typeof icon === "string"}
100
102
  <QIcon name={icon} class="q-tab__icon" />
101
- {:else if $$slots.icon}
102
- <slot name="icon" />
103
+ {:else}
104
+ {@render icon?.()}
105
+ {/if}
106
+
107
+ {#if children}
108
+ <span>{@render children?.()}</span>
109
+ {/if}
110
+
111
+ {#if variant === "primary"}
112
+ <div class="q-tab__indicator"></div>
103
113
  {/if}
104
- <slot />
105
114
  </div>
115
+
116
+ {#if variant !== "primary"}
117
+ <div class="q-tab__indicator"></div>
118
+ {/if}
106
119
  </svelte:element>
@@ -1,26 +1,14 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { QTabProps } from "./props";
1
+ import { SvelteComponentTyped } from "svelte";
3
2
  declare const __propDef: {
4
- props: {
5
- [x: string]: any;
6
- name?: QTabProps["name"];
7
- to?: QTabProps["to"];
8
- icon?: QTabProps["icon"];
9
- class?: string | undefined;
10
- };
3
+ props: Record<string, never>;
11
4
  events: {
12
- click: MouseEvent;
13
- } & {
14
5
  [evt: string]: CustomEvent<any>;
15
6
  };
16
- slots: {
17
- icon: {};
18
- default: {};
19
- };
7
+ slots: {};
20
8
  };
21
9
  type QTabProps_ = typeof __propDef.props;
22
10
  export { QTabProps_ as QTabProps };
23
11
  export type QTabEvents = typeof __propDef.events;
24
12
  export type QTabSlots = typeof __propDef.slots;
25
- export default class QTab extends SvelteComponent<QTabProps, QTabEvents, QTabSlots> {
13
+ export default class QTab extends SvelteComponentTyped<QTabProps_, QTabEvents, QTabSlots> {
26
14
  }
@@ -0,0 +1,53 @@
1
+ @use "$css/mixins";
2
+
3
+ .q-tabs {
4
+ position: relative;
5
+ display: flex;
6
+ align-items: center;
7
+ gap: 0;
8
+ max-width: 100%;
9
+ overflow: auto;
10
+ scroll-behavior: smooth;
11
+ border-radius: 0;
12
+ border-bottom: solid 0.0625rem var(--outline);
13
+
14
+ &::-webkit-scrollbar {
15
+ display: none;
16
+ }
17
+
18
+ &.q-tabs--no-separator {
19
+ border: unset;
20
+ }
21
+
22
+ &.q-tabs--secondary .q-tab .q-tab__indicator {
23
+ border-radius: 0;
24
+ height: 0.125rem;
25
+ }
26
+
27
+ &.q-tabs--vertical {
28
+ flex-direction: column;
29
+ width: fit-content;
30
+ align-items: stretch;
31
+ border-bottom: unset;
32
+ border-right: solid 0.0625rem var(--outline);
33
+
34
+ &.q-tabs--no-separator {
35
+ border: unset;
36
+ }
37
+
38
+ & > .q-tab {
39
+ @include mixins.padding("x-md");
40
+
41
+ &:has(.q-tab__icon) {
42
+ justify-content: flex-start;
43
+ }
44
+ }
45
+
46
+ & .q-tab .q-tab__indicator {
47
+ inset: 0 0 0 auto;
48
+ border-radius: 0;
49
+ height: unset;
50
+ width: 0.125rem;
51
+ }
52
+ }
53
+ }
@@ -1,51 +1,168 @@
1
- <script>import { onMount, setContext } from "svelte";
2
- import { createClasses, createStyles } from "../../utils/props";
3
- import { derived, writable } from "svelte/store";
4
- export let value = void 0, variant = "primary", round = false, userClasses = void 0, userStyles = void 0;
5
- export { userClasses as class, userStyles as style };
6
- let hidden = true;
7
- onMount(() => {
8
- setTimeout(() => {
9
- hidden = false;
10
- }, 200);
11
- });
12
- let QTabCount = 0;
13
- setContext("QTabCount", {
14
- index: () => {
15
- QTabCount += 1;
16
- return QTabCount;
17
- }
18
- });
19
- let activeTabStore = writable({ name: value, index: 0, size: 0, position: 0 });
20
- $:
21
- activeTabStore.update(($active) => {
22
- $active.name = value;
23
- return $active;
1
+ <script module lang="ts">
2
+ export type QTabEl = HTMLAnchorElement | HTMLButtonElement;
3
+ export type QTabsElementsContext = {
4
+ previous: QTabEl | null;
5
+ active: QTabEl | null;
6
+ };
7
+ </script>
8
+
9
+ <script lang="ts">
10
+ import { setContext, untrack } from "svelte";
11
+ import { QContext } from "../../classes/QContext.svelte";
12
+ import { QTabsCtxName, shouldReduceMotion } from "../../utils";
13
+ import type { QTabsProps } from "./props";
14
+
15
+ let {
16
+ value = $bindable(),
17
+ variant = "primary",
18
+ noSeparator = false,
19
+ children,
20
+ ...props
21
+ }: QTabsProps = $props();
22
+
23
+ let qTabs: HTMLElement;
24
+ let tabList: HTMLElement[];
25
+
26
+ const valueContext = new QContext<string | undefined | null>(
27
+ QTabsCtxName.value,
28
+ value,
29
+ );
30
+ const requestContext = new QContext<string | null>(
31
+ QTabsCtxName.request,
32
+ null,
33
+ );
34
+
35
+ // Set the variant context
36
+ setContext(QTabsCtxName.variant, variant);
37
+
38
+ $effect(() => {
39
+ tabList = Array.from(qTabs.querySelectorAll(".q-tab"));
24
40
  });
25
- setContext("activeTab", activeTabStore);
26
- setContext("variant", variant);
27
- $:
28
- value = $activeTabStore.name;
29
- $:
30
- classes = createClasses([variant, round && "rounded", hidden && "hidden-indicator"], {
31
- component: "q-tabs",
32
- userClasses
41
+
42
+ // Update the context when "value" changes
43
+ $effect(() => {
44
+ if (!value) {
45
+ return;
46
+ }
47
+
48
+ untrack(() => {
49
+ const newTab = getResquetingTab(value!);
50
+ animateIndicator(newTab);
51
+
52
+ valueContext.update(value);
53
+ });
33
54
  });
34
- let indicatorWidth = derived(activeTabStore, ($activeTabStore2) => {
35
- return variant === "primary" ? `calc(${$activeTabStore2.size}px + 8px)` : `${$activeTabStore2.size}px`;
36
- });
37
- $:
38
- style = createStyles(
39
- {
40
- "--tab-count": QTabCount || 1,
41
- "--indicator-size": $indicatorWidth,
42
- "--active-tab-index": $activeTabStore.index - 1,
43
- "--indicator-position": $activeTabStore.position
44
- },
45
- userStyles
46
- );
55
+
56
+ // Try to update "value" when context changes from a QTab
57
+ $effect(() => {
58
+ const request = requestContext.value;
59
+
60
+ if (!request) {
61
+ return;
62
+ }
63
+
64
+ const defaultPrevented = !dispatchEvent(
65
+ new Event("change", { bubbles: true, cancelable: true }),
66
+ );
67
+ const requester = getResquetingTab(request);
68
+ if (defaultPrevented || !requester) {
69
+ return;
70
+ }
71
+
72
+ untrack(() => {
73
+ value = request;
74
+ });
75
+ });
76
+
77
+ function getResquetingTab(requestingTabName: string) {
78
+ return (
79
+ tabList.find(
80
+ (tab) => tab.getAttribute("aria-label") === requestingTabName,
81
+ ) ?? null
82
+ );
83
+ }
84
+
85
+ function getActiveTab() {
86
+ return (
87
+ tabList.find((tab) => tab.getAttribute("aria-current") === "true") ?? null
88
+ );
89
+ }
90
+
91
+ function animateIndicator(newTab: HTMLElement | null) {
92
+ const qIndicator = newTab?.querySelector(".q-tab__indicator");
93
+
94
+ if (!qIndicator) {
95
+ return;
96
+ }
97
+
98
+ const previousTab = getActiveTab();
99
+
100
+ qIndicator.getAnimations().forEach((animation) => animation.cancel());
101
+ const frames = getKeyframes(previousTab, newTab!);
102
+ if (frames) {
103
+ qIndicator.animate(frames, {
104
+ duration: 600,
105
+ easing: "cubic-bezier(.18,.77,0,1)",
106
+ });
107
+ }
108
+ }
109
+
110
+ function getKeyframes(oldTab: HTMLElement | null, newTab: HTMLElement) {
111
+ const reduceMotion = shouldReduceMotion();
112
+ if (!oldTab) {
113
+ return reduceMotion ? [{ opacity: 1 }, { transform: "none" }] : null;
114
+ }
115
+
116
+ const previousEl =
117
+ variant === "primary" ? oldTab?.querySelector(".q-tab__content") : oldTab;
118
+ const activeEl =
119
+ variant === "primary" ? newTab?.querySelector(".q-tab__content") : newTab;
120
+
121
+ const pos = variant === "vertical" ? "top" : "left";
122
+ const extent = variant === "vertical" ? "height" : "width";
123
+ const axis = variant === "vertical" ? "Y" : "X";
124
+
125
+ const fromRect = previousEl?.getBoundingClientRect() ?? ({} as DOMRect);
126
+ const fromPos = fromRect[pos];
127
+ const fromExtent = fromRect[extent];
128
+
129
+ const toRect = activeEl?.getBoundingClientRect() ?? ({} as DOMRect);
130
+ const toPos = toRect[pos];
131
+ const toExtent = toRect[extent];
132
+
133
+ const scale = fromExtent / toExtent;
134
+
135
+ const keyframe: Keyframe = {};
136
+
137
+ if (
138
+ !reduceMotion &&
139
+ fromPos !== undefined &&
140
+ toPos !== undefined &&
141
+ !isNaN(scale)
142
+ ) {
143
+ const translateAnimation = (fromPos - toPos).toFixed(4);
144
+ const scaleAnimation = scale.toFixed(4);
145
+ keyframe.transform = `translate${axis}(${translateAnimation}px) scale${axis}(${scaleAnimation})`;
146
+ } else {
147
+ keyframe.opacity = 0;
148
+ }
149
+
150
+ // Including `transform: none` avoids quirky Safari behavior
151
+ // that can hide the animation.
152
+ return [keyframe, { transform: "none" }];
153
+ }
47
154
  </script>
48
155
 
49
- <nav class={classes} {style}>
50
- <slot />
156
+ <nav
157
+ {...props}
158
+ bind:this={qTabs}
159
+ class={[
160
+ "q-tabs",
161
+ props.class,
162
+ `q-tabs--${variant}`,
163
+ noSeparator && "q-tabs--no-separator",
164
+ ]}
165
+ data-quaff
166
+ >
167
+ {@render children?.()}
51
168
  </nav>
@@ -1,23 +1,19 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { QTabsProps } from "./props";
1
+ import { SvelteComponentTyped } from "svelte";
2
+ export type QTabEl = HTMLAnchorElement | HTMLButtonElement;
3
+ export type QTabsElementsContext = {
4
+ previous: QTabEl | null;
5
+ active: QTabEl | null;
6
+ };
3
7
  declare const __propDef: {
4
- props: {
5
- value?: QTabsProps["value"];
6
- variant?: import("./props").QTabsVariants | undefined;
7
- round?: boolean | undefined;
8
- class?: string | undefined;
9
- style?: string | undefined;
10
- };
8
+ props: Record<string, never>;
11
9
  events: {
12
10
  [evt: string]: CustomEvent<any>;
13
11
  };
14
- slots: {
15
- default: {};
16
- };
12
+ slots: {};
17
13
  };
18
14
  type QTabsProps_ = typeof __propDef.props;
19
15
  export { QTabsProps_ as QTabsProps };
20
16
  export type QTabsEvents = typeof __propDef.events;
21
17
  export type QTabsSlots = typeof __propDef.slots;
22
- export default class QTabs extends SvelteComponent<QTabsProps, QTabsEvents, QTabsSlots> {
18
+ export default class QTabs extends SvelteComponentTyped<QTabsProps_, QTabsEvents, QTabsSlots> {
23
19
  }
@@ -1,2 +1,3 @@
1
- import type { QComponentDocs } from "../../utils/types";
2
- export declare let QTabsDocs: QComponentDocs;
1
+ import type { QComponentDocs } from "../../utils";
2
+ export declare const QTabsDocs: QComponentDocs;
3
+ export declare const QTabDocs: QComponentDocs;
@@ -1,10 +1,20 @@
1
- import { QTabsDocsProps } from "./docs.props";
2
- export let QTabsDocs = {
1
+ import { QTabDocsProps, QTabDocsSnippets, QTabsDocsProps, QTabsDocsSnippets } from "./docs.props";
2
+ export const QTabsDocs = {
3
3
  name: "QTabs",
4
4
  description: "Tabs allow creating navigational tabs, enabling users to switch between different views or functional aspects.",
5
5
  docs: {
6
6
  props: QTabsDocsProps,
7
- slots: [],
7
+ snippets: QTabsDocsSnippets,
8
+ methods: [],
9
+ events: [],
10
+ },
11
+ };
12
+ export const QTabDocs = {
13
+ name: "QTabs",
14
+ description: "Tabs allow creating navigational tabs, enabling users to switch between different views or functional aspects.",
15
+ docs: {
16
+ props: QTabDocsProps,
17
+ snippets: QTabDocsSnippets,
8
18
  methods: [],
9
19
  events: [],
10
20
  },
@@ -1,16 +1,5 @@
1
- export declare const QTabsDocsProps: {
2
- name: string;
3
- type: string;
4
- optional: boolean;
5
- clickableType: boolean;
6
- description: string;
7
- default: string;
8
- }[];
9
- export declare const QTabDocsProps: {
10
- name: string;
11
- type: string;
12
- optional: boolean;
13
- clickableType: boolean;
14
- description: string;
15
- default: string;
16
- }[];
1
+ import { ParsedProp, ParsedSnippet } from "../../../../docgen/props/parseInterface";
2
+ export declare const QTabsDocsProps: ParsedProp[];
3
+ export declare const QTabsDocsSnippets: ParsedSnippet[];
4
+ export declare const QTabDocsProps: ParsedProp[];
5
+ export declare const QTabDocsSnippets: ParsedSnippet[];