@thinkpixellab-public/px-vue 4.0.10 → 4.0.11

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 (436) hide show
  1. package/.storybook/main.js +3 -11
  2. package/.storybook/manager.js +2 -2
  3. package/.storybook/preview.js +18 -3
  4. package/.storybook/preview.scss +213 -0
  5. package/.storybook/px-styles.config.scss +26 -0
  6. package/README.md +142 -1
  7. package/assets/feather/activity.svg +1 -1
  8. package/assets/feather/airplay.svg +1 -1
  9. package/assets/feather/alert-circle.svg +1 -1
  10. package/assets/feather/alert-octagon.svg +1 -1
  11. package/assets/feather/alert-triangle.svg +1 -1
  12. package/assets/feather/align-center.svg +1 -1
  13. package/assets/feather/align-justify.svg +1 -1
  14. package/assets/feather/align-left.svg +1 -1
  15. package/assets/feather/align-right.svg +1 -1
  16. package/assets/feather/anchor.svg +1 -1
  17. package/assets/feather/aperture.svg +1 -1
  18. package/assets/feather/archive.svg +1 -1
  19. package/assets/feather/arrow-down-circle.svg +1 -1
  20. package/assets/feather/arrow-down-left.svg +1 -1
  21. package/assets/feather/arrow-down-right.svg +1 -1
  22. package/assets/feather/arrow-down.svg +1 -1
  23. package/assets/feather/arrow-left-circle.svg +1 -1
  24. package/assets/feather/arrow-left.svg +1 -1
  25. package/assets/feather/arrow-right-circle.svg +1 -1
  26. package/assets/feather/arrow-right.svg +1 -1
  27. package/assets/feather/arrow-up-circle.svg +1 -1
  28. package/assets/feather/arrow-up-left.svg +1 -1
  29. package/assets/feather/arrow-up-right.svg +1 -1
  30. package/assets/feather/arrow-up.svg +1 -1
  31. package/assets/feather/at-sign.svg +1 -1
  32. package/assets/feather/award.svg +1 -1
  33. package/assets/feather/bar-chart-2.svg +1 -1
  34. package/assets/feather/bar-chart.svg +1 -1
  35. package/assets/feather/battery-charging.svg +1 -1
  36. package/assets/feather/battery.svg +1 -1
  37. package/assets/feather/bell-off.svg +1 -1
  38. package/assets/feather/bell.svg +1 -1
  39. package/assets/feather/bluetooth.svg +1 -1
  40. package/assets/feather/bold.svg +1 -1
  41. package/assets/feather/book-open.svg +1 -1
  42. package/assets/feather/book.svg +1 -1
  43. package/assets/feather/bookmark.svg +1 -1
  44. package/assets/feather/box.svg +1 -1
  45. package/assets/feather/briefcase.svg +1 -1
  46. package/assets/feather/calendar.svg +1 -1
  47. package/assets/feather/camera-off.svg +1 -1
  48. package/assets/feather/camera.svg +1 -1
  49. package/assets/feather/cast.svg +1 -1
  50. package/assets/feather/check-circle.svg +1 -1
  51. package/assets/feather/check-square.svg +1 -1
  52. package/assets/feather/check.svg +1 -1
  53. package/assets/feather/chevron-down.svg +1 -1
  54. package/assets/feather/chevron-left.svg +1 -1
  55. package/assets/feather/chevron-right.svg +1 -1
  56. package/assets/feather/chevron-up.svg +1 -1
  57. package/assets/feather/chevrons-down.svg +1 -1
  58. package/assets/feather/chevrons-left.svg +1 -1
  59. package/assets/feather/chevrons-right.svg +1 -1
  60. package/assets/feather/chevrons-up.svg +1 -1
  61. package/assets/feather/chrome.svg +1 -1
  62. package/assets/feather/circle.svg +1 -1
  63. package/assets/feather/clipboard.svg +1 -1
  64. package/assets/feather/clock.svg +1 -1
  65. package/assets/feather/cloud-drizzle.svg +1 -1
  66. package/assets/feather/cloud-lightning.svg +1 -1
  67. package/assets/feather/cloud-off.svg +1 -1
  68. package/assets/feather/cloud-rain.svg +1 -1
  69. package/assets/feather/cloud-snow.svg +1 -1
  70. package/assets/feather/cloud.svg +1 -1
  71. package/assets/feather/code.svg +1 -1
  72. package/assets/feather/codepen.svg +1 -1
  73. package/assets/feather/codesandbox.svg +1 -1
  74. package/assets/feather/coffee.svg +1 -1
  75. package/assets/feather/columns.svg +1 -1
  76. package/assets/feather/command.svg +1 -1
  77. package/assets/feather/compass.svg +1 -1
  78. package/assets/feather/copy.svg +1 -1
  79. package/assets/feather/corner-down-left.svg +1 -1
  80. package/assets/feather/corner-down-right.svg +1 -1
  81. package/assets/feather/corner-left-down.svg +1 -1
  82. package/assets/feather/corner-left-up.svg +1 -1
  83. package/assets/feather/corner-right-down.svg +1 -1
  84. package/assets/feather/corner-right-up.svg +1 -1
  85. package/assets/feather/corner-up-left.svg +1 -1
  86. package/assets/feather/corner-up-right.svg +1 -1
  87. package/assets/feather/cpu.svg +1 -1
  88. package/assets/feather/credit-card.svg +1 -1
  89. package/assets/feather/crop.svg +1 -1
  90. package/assets/feather/crosshair.svg +1 -1
  91. package/assets/feather/database.svg +1 -1
  92. package/assets/feather/delete.svg +1 -1
  93. package/assets/feather/disc.svg +1 -1
  94. package/assets/feather/divide-circle.svg +1 -1
  95. package/assets/feather/divide-square.svg +1 -1
  96. package/assets/feather/divide.svg +1 -1
  97. package/assets/feather/dollar-sign.svg +1 -1
  98. package/assets/feather/download-cloud.svg +1 -1
  99. package/assets/feather/download.svg +1 -1
  100. package/assets/feather/dribbble.svg +1 -1
  101. package/assets/feather/droplet.svg +1 -1
  102. package/assets/feather/edit-2.svg +1 -1
  103. package/assets/feather/edit-3.svg +1 -1
  104. package/assets/feather/edit.svg +1 -1
  105. package/assets/feather/external-link.svg +1 -1
  106. package/assets/feather/eye-off.svg +1 -1
  107. package/assets/feather/eye.svg +1 -1
  108. package/assets/feather/facebook.svg +1 -1
  109. package/assets/feather/fast-forward.svg +1 -1
  110. package/assets/feather/feather.svg +1 -1
  111. package/assets/feather/figma.svg +1 -1
  112. package/assets/feather/file-minus.svg +1 -1
  113. package/assets/feather/file-plus.svg +1 -1
  114. package/assets/feather/file-text.svg +1 -1
  115. package/assets/feather/file.svg +1 -1
  116. package/assets/feather/film.svg +1 -1
  117. package/assets/feather/filter.svg +1 -1
  118. package/assets/feather/flag.svg +1 -1
  119. package/assets/feather/folder-minus.svg +1 -1
  120. package/assets/feather/folder-plus.svg +1 -1
  121. package/assets/feather/folder.svg +1 -1
  122. package/assets/feather/framer.svg +1 -1
  123. package/assets/feather/frown.svg +1 -1
  124. package/assets/feather/gift.svg +1 -1
  125. package/assets/feather/git-branch.svg +1 -1
  126. package/assets/feather/git-commit.svg +1 -1
  127. package/assets/feather/git-merge.svg +1 -1
  128. package/assets/feather/git-pull-request.svg +1 -1
  129. package/assets/feather/github.svg +1 -1
  130. package/assets/feather/gitlab.svg +1 -1
  131. package/assets/feather/globe.svg +1 -1
  132. package/assets/feather/grid.svg +1 -1
  133. package/assets/feather/hard-drive.svg +1 -1
  134. package/assets/feather/hash.svg +1 -1
  135. package/assets/feather/headphones.svg +1 -1
  136. package/assets/feather/heart.svg +1 -1
  137. package/assets/feather/help-circle.svg +1 -1
  138. package/assets/feather/hexagon.svg +1 -1
  139. package/assets/feather/home.svg +1 -1
  140. package/assets/feather/image.svg +1 -1
  141. package/assets/feather/inbox.svg +1 -1
  142. package/assets/feather/info.svg +1 -1
  143. package/assets/feather/instagram.svg +1 -1
  144. package/assets/feather/italic.svg +1 -1
  145. package/assets/feather/key.svg +1 -1
  146. package/assets/feather/layers.svg +1 -1
  147. package/assets/feather/layout.svg +1 -1
  148. package/assets/feather/life-buoy.svg +1 -1
  149. package/assets/feather/link-2.svg +1 -1
  150. package/assets/feather/link.svg +1 -1
  151. package/assets/feather/linkedin.svg +1 -1
  152. package/assets/feather/list.svg +1 -1
  153. package/assets/feather/loader.svg +1 -1
  154. package/assets/feather/lock.svg +1 -1
  155. package/assets/feather/log-in.svg +1 -1
  156. package/assets/feather/log-out.svg +1 -1
  157. package/assets/feather/mail.svg +1 -1
  158. package/assets/feather/map-pin.svg +1 -1
  159. package/assets/feather/map.svg +1 -1
  160. package/assets/feather/maximize-2.svg +1 -1
  161. package/assets/feather/maximize.svg +1 -1
  162. package/assets/feather/meh.svg +1 -1
  163. package/assets/feather/menu.svg +1 -1
  164. package/assets/feather/message-circle.svg +1 -1
  165. package/assets/feather/message-square.svg +1 -1
  166. package/assets/feather/mic-off.svg +1 -1
  167. package/assets/feather/mic.svg +1 -1
  168. package/assets/feather/minimize-2.svg +1 -1
  169. package/assets/feather/minimize.svg +1 -1
  170. package/assets/feather/minus-circle.svg +1 -1
  171. package/assets/feather/minus-square.svg +1 -1
  172. package/assets/feather/minus.svg +1 -1
  173. package/assets/feather/monitor.svg +1 -1
  174. package/assets/feather/moon.svg +1 -1
  175. package/assets/feather/more-horizontal.svg +1 -1
  176. package/assets/feather/more-vertical.svg +1 -1
  177. package/assets/feather/mouse-pointer.svg +1 -1
  178. package/assets/feather/move.svg +1 -1
  179. package/assets/feather/music.svg +1 -1
  180. package/assets/feather/navigation-2.svg +1 -1
  181. package/assets/feather/navigation.svg +1 -1
  182. package/assets/feather/octagon.svg +1 -1
  183. package/assets/feather/package.svg +1 -1
  184. package/assets/feather/paperclip.svg +1 -1
  185. package/assets/feather/pause-circle.svg +1 -1
  186. package/assets/feather/pause.svg +1 -1
  187. package/assets/feather/pen-tool.svg +1 -1
  188. package/assets/feather/percent.svg +1 -1
  189. package/assets/feather/phone-call.svg +1 -1
  190. package/assets/feather/phone-forwarded.svg +1 -1
  191. package/assets/feather/phone-incoming.svg +1 -1
  192. package/assets/feather/phone-missed.svg +1 -1
  193. package/assets/feather/phone-off.svg +1 -1
  194. package/assets/feather/phone-outgoing.svg +1 -1
  195. package/assets/feather/phone.svg +1 -1
  196. package/assets/feather/pie-chart.svg +1 -1
  197. package/assets/feather/play-circle.svg +1 -1
  198. package/assets/feather/play.svg +1 -1
  199. package/assets/feather/plus-circle.svg +1 -1
  200. package/assets/feather/plus-square.svg +1 -1
  201. package/assets/feather/plus.svg +1 -1
  202. package/assets/feather/pocket.svg +1 -1
  203. package/assets/feather/power.svg +1 -1
  204. package/assets/feather/printer.svg +1 -1
  205. package/assets/feather/radio.svg +1 -1
  206. package/assets/feather/refresh-ccw.svg +1 -1
  207. package/assets/feather/refresh-cw.svg +1 -1
  208. package/assets/feather/repeat.svg +1 -1
  209. package/assets/feather/rewind.svg +1 -1
  210. package/assets/feather/rotate-ccw.svg +1 -1
  211. package/assets/feather/rotate-cw.svg +1 -1
  212. package/assets/feather/rss.svg +1 -1
  213. package/assets/feather/save.svg +1 -1
  214. package/assets/feather/scissors.svg +1 -1
  215. package/assets/feather/search.svg +1 -1
  216. package/assets/feather/send.svg +1 -1
  217. package/assets/feather/server.svg +1 -1
  218. package/assets/feather/settings.svg +1 -1
  219. package/assets/feather/share-2.svg +1 -1
  220. package/assets/feather/share.svg +1 -1
  221. package/assets/feather/shield-off.svg +1 -1
  222. package/assets/feather/shield.svg +1 -1
  223. package/assets/feather/shopping-bag.svg +1 -1
  224. package/assets/feather/shopping-cart.svg +1 -1
  225. package/assets/feather/shuffle.svg +1 -1
  226. package/assets/feather/sidebar.svg +1 -1
  227. package/assets/feather/skip-back.svg +1 -1
  228. package/assets/feather/skip-forward.svg +1 -1
  229. package/assets/feather/slack.svg +1 -1
  230. package/assets/feather/slash.svg +1 -1
  231. package/assets/feather/sliders.svg +1 -1
  232. package/assets/feather/smartphone.svg +1 -1
  233. package/assets/feather/smile.svg +1 -1
  234. package/assets/feather/speaker.svg +1 -1
  235. package/assets/feather/square.svg +1 -1
  236. package/assets/feather/star.svg +1 -1
  237. package/assets/feather/stop-circle.svg +1 -1
  238. package/assets/feather/sun.svg +1 -1
  239. package/assets/feather/sunrise.svg +1 -1
  240. package/assets/feather/sunset.svg +1 -1
  241. package/assets/feather/table.svg +1 -1
  242. package/assets/feather/tablet.svg +1 -1
  243. package/assets/feather/tag.svg +1 -1
  244. package/assets/feather/target.svg +1 -1
  245. package/assets/feather/terminal.svg +1 -1
  246. package/assets/feather/thermometer.svg +1 -1
  247. package/assets/feather/thumbs-down.svg +1 -1
  248. package/assets/feather/thumbs-up.svg +1 -1
  249. package/assets/feather/toggle-left.svg +1 -1
  250. package/assets/feather/toggle-right.svg +1 -1
  251. package/assets/feather/tool.svg +1 -1
  252. package/assets/feather/trash-2.svg +1 -1
  253. package/assets/feather/trash.svg +1 -1
  254. package/assets/feather/trello.svg +1 -1
  255. package/assets/feather/trending-down.svg +1 -1
  256. package/assets/feather/trending-up.svg +1 -1
  257. package/assets/feather/triangle.svg +1 -1
  258. package/assets/feather/truck.svg +1 -1
  259. package/assets/feather/tv.svg +1 -1
  260. package/assets/feather/twitch.svg +1 -1
  261. package/assets/feather/twitter.svg +1 -1
  262. package/assets/feather/type.svg +1 -1
  263. package/assets/feather/umbrella.svg +1 -1
  264. package/assets/feather/underline.svg +1 -1
  265. package/assets/feather/unlock.svg +1 -1
  266. package/assets/feather/upload-cloud.svg +1 -1
  267. package/assets/feather/upload.svg +1 -1
  268. package/assets/feather/user-check.svg +1 -1
  269. package/assets/feather/user-minus.svg +1 -1
  270. package/assets/feather/user-plus.svg +1 -1
  271. package/assets/feather/user-x.svg +1 -1
  272. package/assets/feather/user.svg +1 -1
  273. package/assets/feather/users.svg +1 -1
  274. package/assets/feather/video-off.svg +1 -1
  275. package/assets/feather/video.svg +1 -1
  276. package/assets/feather/voicemail.svg +1 -1
  277. package/assets/feather/volume-1.svg +1 -1
  278. package/assets/feather/volume-2.svg +1 -1
  279. package/assets/feather/volume-x.svg +1 -1
  280. package/assets/feather/volume.svg +1 -1
  281. package/assets/feather/watch.svg +1 -1
  282. package/assets/feather/wifi-off.svg +1 -1
  283. package/assets/feather/wifi.svg +1 -1
  284. package/assets/feather/wind.svg +1 -1
  285. package/assets/feather/x-circle.svg +1 -1
  286. package/assets/feather/x-octagon.svg +1 -1
  287. package/assets/feather/x-square.svg +1 -1
  288. package/assets/feather/x.svg +1 -1
  289. package/assets/feather/youtube.svg +1 -1
  290. package/assets/feather/zap-off.svg +1 -1
  291. package/assets/feather/zap.svg +1 -1
  292. package/assets/feather/zoom-in.svg +1 -1
  293. package/assets/feather/zoom-out.svg +1 -1
  294. package/assets/icons/drag.svg +1 -0
  295. package/bases/PxBase.vue +13 -14
  296. package/bases/PxBaseDate.vue +0 -5
  297. package/bases/PxBaseItemsSelect.vue +31 -19
  298. package/{components → bases}/PxBaseMobileProvide.vue +2 -10
  299. package/bases/PxBaseResize.vue +29 -25
  300. package/bases/PxBaseSvg.vue +219 -0
  301. package/bases/PxBaseToggle.vue +1 -1
  302. package/bases/PxBaseUniqueId.vue +15 -5
  303. package/bases/PxBaseVariants.vue +30 -29
  304. package/bases/PxBaseVariantsOverride.vue +14 -6
  305. package/components/PxAnimate.vue +106 -0
  306. package/components/PxArrow.vue +42 -13
  307. package/components/PxArrowScroller.vue +86 -29
  308. package/components/PxAspect.vue +12 -3
  309. package/components/PxAutoClamp.vue +11 -5
  310. package/components/PxBalancedText.vue +19 -7
  311. package/components/PxButton.vue +39 -13
  312. package/components/PxCalendar.vue +75 -45
  313. package/components/PxCard.vue +14 -21
  314. package/components/PxCardGrid.vue +5 -6
  315. package/components/PxClock.vue +4 -6
  316. package/components/PxContain.vue +48 -19
  317. package/components/PxCopyText.vue +24 -24
  318. package/components/PxDatePicker.vue +24 -19
  319. package/components/PxDropdown.vue +92 -58
  320. package/components/PxFit.vue +142 -142
  321. package/components/PxFlex.vue +6 -20
  322. package/components/PxFlip.vue +4 -0
  323. package/components/PxFloat.vue +38 -44
  324. package/components/PxIcon.vue +118 -21
  325. package/components/PxIconButton.vue +91 -34
  326. package/components/PxMeasureContainer.vue +18 -7
  327. package/components/PxMenu.vue +20 -47
  328. package/components/PxMenuItem.vue +2 -0
  329. package/components/PxPivot.vue +3 -1
  330. package/components/{PxPopup.vue → PxPopupButton.vue} +21 -11
  331. package/components/PxProgressCircle.vue +70 -12
  332. package/components/PxQrCode.vue +1 -1
  333. package/components/PxRadioButton.vue +2 -1
  334. package/components/PxResizer.vue +35 -15
  335. package/components/PxScrubber.vue +108 -88
  336. package/components/PxSelectionBar.vue +129 -0
  337. package/components/PxSideDrawer.vue +12 -11
  338. package/components/PxSlideTransition.vue +1 -17
  339. package/components/PxSlides.vue +38 -15
  340. package/components/PxSpinner.vue +20 -13
  341. package/components/PxSticky.vue +1 -1
  342. package/components/PxSvg.vue +24 -214
  343. package/components/PxSyncHeight.vue +12 -12
  344. package/components/PxTable.vue +453 -104
  345. package/components/PxTextbox.vue +196 -0
  346. package/components/PxToggle.vue +32 -39
  347. package/components/PxToggleButton.vue +6 -5
  348. package/components/PxTransition.vue +105 -149
  349. package/components/PxTransitionExpand.vue +17 -19
  350. package/components/PxTransitionItem.vue +17 -1
  351. package/components/PxValidator.vue +7 -80
  352. package/components/PxVueTest.vue +6 -6
  353. package/composables/useDebugQuery.js +10 -0
  354. package/composables/useVModelRef.js +25 -0
  355. package/composables/useVariants.js +67 -0
  356. package/dev/data/fruits.js +6 -6
  357. package/dev/demos/Demo-PxMenu.vue +9 -6
  358. package/package.json +29 -16
  359. package/plugins/common.js +2 -0
  360. package/stories/Intro.mdx +1 -0
  361. package/stories/PxAnimate.stories.js +184 -0
  362. package/stories/PxArrow.stories.js +74 -0
  363. package/stories/PxArrowScroller.stories.js +38 -0
  364. package/stories/PxAutoClamp.stories.js +47 -0
  365. package/stories/PxBalancedText.stories.js +9 -2
  366. package/stories/PxButton.stories.js +45 -10
  367. package/stories/PxCalendar.stories.js +36 -0
  368. package/stories/PxCard.stories.js +31 -0
  369. package/stories/PxCardGrid.stories.js +60 -0
  370. package/stories/PxClock.stories.js +36 -0
  371. package/stories/PxContain.stories.js +42 -0
  372. package/stories/PxCopyText.stories.js +35 -0
  373. package/stories/PxDatePicker.stories.js +36 -0
  374. package/stories/PxDropdown.stories.js +6 -1
  375. package/stories/PxFit.stories.js +40 -0
  376. package/stories/PxFlex.stories.js +41 -0
  377. package/stories/PxFlip.stories.js +51 -0
  378. package/stories/PxFloat.stories.js +43 -4
  379. package/stories/PxGsapScrubber.stories.js +36 -0
  380. package/stories/PxIcon.stories.js +129 -7
  381. package/stories/PxIconButton.stories.js +87 -0
  382. package/stories/PxMeasureContainer.stories.js +50 -0
  383. package/stories/PxMenu.stories.js +99 -0
  384. package/stories/PxPopupButton.stories.js +69 -0
  385. package/stories/PxProgressCircle.stories.js +39 -0
  386. package/stories/PxQrCode.stories.js +36 -0
  387. package/stories/PxResizer.stories.js +40 -0
  388. package/stories/PxScrubber.stories.js +58 -0
  389. package/stories/PxSideDrawer.stories.js +36 -0
  390. package/stories/PxSlides.stories.js +65 -0
  391. package/stories/PxSpinner.stories.js +37 -0
  392. package/stories/PxSticky.stories.js +36 -0
  393. package/stories/PxSyncHeight.stories.js +48 -0
  394. package/stories/PxTable.stories.js +145 -0
  395. package/stories/PxTextbox.stories.js +59 -0
  396. package/stories/PxToggle.stories.js +77 -0
  397. package/stories/PxTransition.stories.js +74 -0
  398. package/stories/PxTransitionExpand.stories.js +36 -0
  399. package/stories/PxTransitionItem.stories.js +36 -0
  400. package/stories/PxValidator.stories.js +100 -0
  401. package/stories/helpers/extractArgTypes.js +1 -2
  402. package/stories/helpers/sampleData.js +638 -2
  403. package/stories/makestories.js +65 -0
  404. package/stories/svgIcon.stories.js +67 -0
  405. package/styles/px.scss +1 -5
  406. package/test/MockComponent.vue +12 -0
  407. package/test/PxBaseItems.test.js +6 -3
  408. package/test/PxBaseItemsSelect.test.js +65 -26
  409. package/test/PxBaseUniqueId.test.js +28 -0
  410. package/test/PxBaseVariants.test.js +166 -0
  411. package/test/PxBaseVariantsOverride.test.js +87 -0
  412. package/test/animation.test.js +120 -0
  413. package/test/cssStr.test.js +287 -0
  414. package/test/variants.test.js +92 -0
  415. package/utils/animation.js +263 -0
  416. package/utils/balanceText.js +10 -10
  417. package/utils/bem.js +5 -2
  418. package/utils/caretPosition.js +75 -0
  419. package/utils/cssStr.js +57 -18
  420. package/utils/itemsUtils.js +26 -0
  421. package/utils/points.js +23 -1
  422. package/utils/propsFilter.js +62 -0
  423. package/utils/scrollWatcher.js +293 -0
  424. package/utils/svgIcons.js +270 -0
  425. package/utils/utils.js +20 -8
  426. package/utils/variants.js +18 -13
  427. package/vite.config.js +11 -2
  428. package/.storybook/README.md +0 -7
  429. package/.storybook/px-vue.storybook.theme.js +0 -34
  430. package/components/PxIdUniquer.vue +0 -63
  431. package/components/PxModal.vue +0 -366
  432. package/components/PxNineGrid.vue +0 -96
  433. package/components/PxSwiperSlide.vue +0 -38
  434. package/px-styles.config.scss +0 -12
  435. package/stories/PxIcon.mdx +0 -58
  436. /package/{components → bases}/PxBaseActiveTab.vue +0 -0
@@ -5,17 +5,9 @@ const config = {
5
5
  '@storybook/addon-links',
6
6
  '@storybook/addon-essentials',
7
7
  '@storybook/addon-interactions',
8
- {
9
- name: '@storybook/addon-docs',
10
- options: {
11
- mdxPluginOptions: {
12
- // mdxCompileOptions: {
13
- // remarkPlugins: [remarkGfm],
14
- // },
15
- },
16
- },
17
- },
18
- '@storybook/addon-mdx-gfm'
8
+ '@chromatic-com/storybook',
9
+ 'storybook-addon-pseudo-states',
10
+ 'storybook-dark-mode',
19
11
  ],
20
12
 
21
13
  framework: {
@@ -1,6 +1,6 @@
1
1
  import { addons } from '@storybook/manager-api';
2
- import PxVueTheme from './px-vue.storybook.theme';
2
+ import { themes } from '@storybook/theming';
3
3
 
4
4
  addons.setConfig({
5
- theme: PxVueTheme,
5
+ theme: themes.dark,
6
6
  });
@@ -1,4 +1,5 @@
1
1
  import { setup } from '@storybook/vue3';
2
+ import { themes } from '@storybook/theming';
2
3
  import common from '../plugins/common.js';
3
4
 
4
5
  import './preview.scss';
@@ -10,7 +11,7 @@ setup(app => {
10
11
 
11
12
  const preview = {
12
13
  parameters: {
13
- actions: { argTypesRegex: '^on[A-Z].*' },
14
+ //actions: { argTypesRegex: '^on[A-Z].*' },
14
15
  controls: {
15
16
  matchers: {
16
17
  color: /(background|color)$/i,
@@ -18,11 +19,25 @@ const preview = {
18
19
  string: /(itemsKey|itemsDisabled)$/i,
19
20
  },
20
21
  },
21
-
22
+ order: ['Intro', 'Components'],
23
+ storySort: (a, b) =>
24
+ a.id === b.id ? 0 : a.id.localeCompare(b.id, undefined, { numeric: true }),
22
25
  // theme
26
+ // darkMode: {
27
+ // // Override the default dark theme
28
+ // dark: { ...themes.dark, appBg: '#2A2C2E' },
29
+ // // Override the default light theme
30
+ // light: { ...themes.normal },
31
+
32
+ // darkClass: 'theme-dark',
33
+ // lightClass: 'theme-light',
34
+ // stylePreview: true,
35
+ // classTarget: 'body',
36
+ // },
37
+
23
38
  docs: {
24
39
  // requires import { themes } from '@storybook/theming';
25
- //theme: themes.dark,
40
+ // theme: themes.dark,
26
41
  },
27
42
  },
28
43
  };
@@ -1,5 +1,71 @@
1
+ @use '../styles/px.scss' as *;
2
+ @use '@thinkpixellab-public/px-styles/src/modules/controls' as *;
3
+
1
4
  @import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600&family=Public+Sans:wght@300;400;500;600&family=Work+Sans:wght@400;600&display=swap');
2
5
 
6
+ @if get('is-fluent', false) {
7
+ @font-face {
8
+ font-family: segoe-vf;
9
+ font-weight: 100;
10
+ src:
11
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display-light.e452665.woff2)
12
+ format('woff2'),
13
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display-light.68c90c4.woff)
14
+ format('woff'),
15
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display-light.9d3d90d.ttf)
16
+ format('truetype');
17
+ }
18
+
19
+ @font-face {
20
+ font-family: segoe-vf;
21
+ font-weight: 300;
22
+ src:
23
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display-semilight.1338e9a.woff2)
24
+ format('woff2'),
25
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display-semilight.9c37400.woff)
26
+ format('woff'),
27
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display-semilight.f65cf1c.ttf)
28
+ format('truetype');
29
+ }
30
+
31
+ @font-face {
32
+ font-family: segoe-vf;
33
+ font-weight: 400;
34
+ src:
35
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display.e85854a.woff2)
36
+ format('woff2'),
37
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display.f8bb08f.woff)
38
+ format('woff'),
39
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display.dc5de3f.ttf)
40
+ format('truetype');
41
+ }
42
+
43
+ @font-face {
44
+ font-family: segoe-vf;
45
+ font-weight: 600;
46
+ src:
47
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display-semibold.1977a17.woff2)
48
+ format('woff2'),
49
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display-semibold.3326bd2.woff)
50
+ format('woff'),
51
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display-semibold.0f5cc00.ttf)
52
+ format('truetype');
53
+ }
54
+
55
+ @font-face {
56
+ font-family: segoe-vf;
57
+ font-weight: 700;
58
+ src:
59
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display-bold.2756fcb.woff2)
60
+ format('woff2'),
61
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display-bold.65cd9e3.woff)
62
+ format('woff'),
63
+ url(https://edgestatic.azureedge.net/shared/edgeweb/fonts/segoeui-vf-display-bold.4f8bd09.ttf)
64
+ format('truetype');
65
+ }
66
+ @include fluent-themes();
67
+ }
68
+
3
69
  // .sbdocs-h2,
4
70
  // .sbdocs-h3,
5
71
  // .sbdocs-h4,
@@ -19,6 +85,45 @@
19
85
  // font-family: $font !important;
20
86
  // }
21
87
 
88
+ // Update this to test font inheritance
89
+ .sbdocs {
90
+ font-family: sans-serif;
91
+ perspective: 6000px;
92
+ }
93
+
94
+ body {
95
+ font-family: sans-serif;
96
+ }
97
+
98
+ .story-flex {
99
+ display: flex;
100
+ gap: 1em;
101
+ justify-content: center;
102
+ align-items: center;
103
+ }
104
+
105
+ .story-flex-top {
106
+ display: flex;
107
+ gap: 1em;
108
+ justify-content: center;
109
+ align-items: flex-start;
110
+ }
111
+ .story-flex-vert {
112
+ display: flex;
113
+ gap: 1em;
114
+ justify-content: center;
115
+ align-items: center;
116
+ text-align: center;
117
+ flex-direction: column;
118
+ }
119
+
120
+ .story-flex-bounds {
121
+ @extend .story-flex;
122
+ > * {
123
+ @extend .story-bounds;
124
+ }
125
+ }
126
+
22
127
  .story-bounds {
23
128
  display: inline-block;
24
129
  height: auto;
@@ -27,6 +132,14 @@
27
132
  margin: 0;
28
133
  display: block;
29
134
  border: 1px dashed rgba(black, 0.33);
135
+ perspective: 20em;
136
+ }
137
+
138
+ .story-square {
139
+ background-color: tomato;
140
+ width: 6em;
141
+ height: 6em;
142
+ border-radius: 0.5em;
30
143
  }
31
144
 
32
145
  .story-circle {
@@ -36,9 +149,109 @@
36
149
  border-radius: 100%;
37
150
  }
38
151
 
152
+ .story-orange {
153
+ background-color: tomato;
154
+ padding: 0.5em;
155
+ color: white;
156
+ border-radius: 0.5em;
157
+ }
158
+
39
159
  .story-fill {
40
160
  background-color: tomato;
41
161
  width: 100%;
42
162
  height: 100%;
43
163
  border-radius: 8px;
164
+ color: white;
165
+ }
166
+
167
+ .story-center {
168
+ display: flex;
169
+ align-items: center;
170
+ justify-content: center;
171
+ }
172
+
173
+ .story-aspect-16-9 {
174
+ background-color: tomato;
175
+ width: 100%;
176
+ border-radius: 8px;
177
+ aspect-ratio: 16/9;
178
+ }
179
+
180
+ .story-gradient {
181
+ background-image: repeating-linear-gradient(
182
+ -45deg,
183
+ rgba(black, 0.1) 0 20px,
184
+ rgba(black, 0) 20px 40px
185
+ ),
186
+ linear-gradient(135deg, tomato, purple);
187
+ width: 100%;
188
+ height: 100%;
189
+ border-radius: 8px;
190
+ }
191
+
192
+ .story-state-blue {
193
+ background-color: dodgerblue;
194
+ color: white;
195
+ width: 3em;
196
+ height: 3em;
197
+ border-radius: 8px;
198
+ padding: 1em;
199
+ }
200
+
201
+ .story-state-orange {
202
+ background-color: tomato;
203
+ color: white;
204
+ width: 7em;
205
+ height: 7em;
206
+ border-radius: 8px;
207
+ padding: 1em;
208
+ }
209
+
210
+ .story-size-xs {
211
+ width: 2em;
212
+ height: 2em;
213
+ }
214
+
215
+ .story-size-sm {
216
+ width: 4em;
217
+ height: 4em;
218
+ }
219
+
220
+ .story-size-base {
221
+ width: 6em;
222
+ height: 6em;
223
+ }
224
+ .story-size-md {
225
+ width: 8em;
226
+ height: 8em;
227
+ }
228
+
229
+ .story-popup {
230
+ font-family: sans-serif;
231
+ padding: 1em;
232
+ @include popup();
233
+ }
234
+
235
+ .story-tooltip {
236
+ @include popup(
237
+ (
238
+ font-family: sans-serif,
239
+ padding: 0.5em,
240
+ font-size: 14px,
241
+ background-color: mix(dodgerblue, white, 15%),
242
+ )
243
+ );
244
+ }
245
+
246
+ // icons
247
+
248
+ .story-inline-border {
249
+ display: inline-block;
250
+ border: 1px dotted tomato;
251
+ margin-inline: 0.25em;
252
+ }
253
+
254
+ .theme-dark {
255
+ background-color: #151617;
256
+ color: white;
44
257
  }
@@ -0,0 +1,26 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Default version (uncomment lines to force recognizable color/font)
3
+ // ----------------------------------------------------------------------------
4
+
5
+ @forward '@thinkpixellab-public/px-styles/all.scss';
6
+ @use '@thinkpixellab-public/px-styles/all.scss' as *;
7
+
8
+ // @include config('controls.base.font-family', 'Georgia');
9
+ // @include config('colors.accent', #e4346f);
10
+
11
+ @include init();
12
+
13
+ // ----------------------------------------------------------------------------
14
+ // Fluent version of styles (must be run with dev-px in order to get a reference
15
+ // to the px-styles-fluent.scss file)
16
+ // ----------------------------------------------------------------------------
17
+
18
+ // @forward '@thinkpixellab-public/px-styles/all.scss';
19
+ // @forward '@thinkpixellab/px-edge-shared/styles/px-styles-fluent.scss';
20
+
21
+ // @use '@thinkpixellab-public/px-styles/all.scss' as *;
22
+ // @use '@thinkpixellab/px-edge-shared/styles/px-styles-fluent.scss' as *;
23
+
24
+ // @include fluent-defaults();
25
+
26
+ // @include init();
package/README.md CHANGED
@@ -4,6 +4,144 @@
4
4
 
5
5
  Basic component preview and testing can be done with storybook. Run storybook with `npm run dev-px`.
6
6
 
7
+ ## Migration Notes / Approach
8
+
9
+ ### Two-way Props / v-model
10
+
11
+ Move away from .sync and use v-model with an argument instead
12
+
13
+ #### Minimal v-model Implementation
14
+
15
+ The minimal implementation allows the parent component to "own" data and pass it the child component
16
+ as a prop. If the child component wants to update the value, it does so by emitting an event with
17
+ the preferred value.
18
+
19
+ ```html
20
+ <MyComponent v-model:selected="selected" />
21
+ ```
22
+
23
+ ```js
24
+ {
25
+ emits: ['update:selected'],
26
+ props: {
27
+ selected: { default: null }
28
+ },
29
+ methods: {
30
+ updateSelected(selectedValue) {
31
+ this.$emit('update:selected', selectedValue);
32
+ }
33
+ }
34
+ }
35
+ ```
36
+
37
+ #### Local Data v-model Implementation
38
+
39
+ In many cases a component should be able to update the data without requiring a parent component to
40
+ actually provide the data store. In this case we create a data property and keep it in sync with the
41
+ prop.
42
+
43
+ By convention the internal data field has the same name ast the prop with "Value" appended. If the
44
+ prop were named `selected`, for example, the corresponding data field would be named
45
+ `selectedValue`. Internally the component should always use `selectedValue` instead of `selected`.
46
+
47
+ ```html
48
+ <MyComponent v-model:selected="selected" />
49
+ ```
50
+
51
+ ```js
52
+
53
+ emits: ['update:selected'],
54
+ props: {
55
+ selected: { default: null }
56
+ },
57
+ data() {
58
+ return {
59
+ selectedValue: this.selected
60
+ };
61
+ },
62
+ watch: {
63
+ selected(nv) {
64
+ this.selectedValue = nv;
65
+ },
66
+
67
+ selectedValue(nv) {
68
+ this.$emit('update:selected', nv);
69
+ }
70
+ }
71
+
72
+ ```
73
+
74
+ ## Styles / Customization
75
+
76
+ - **Component Fallbacks** Hardcoded values defined in the component style.
77
+ - **Component Variants** Overrides defined within the component
78
+
79
+ App Defaults App Scoped Defaults App Variants
80
+
81
+ Usage Defaults Usage Class
82
+
83
+ Style
84
+
85
+ ### FAQ
86
+
87
+ #### Where should component styles be defined?
88
+
89
+ TLDR
90
+
91
+ 1. Use expanded (non-mixin) CSS as much as possible right in the component.
92
+
93
+ 2. Repeating styles (e.g. a popup or a button) should generally have their own component and
94
+ variants for that style.
95
+
96
+ Since we use single file components, these should obviously be defined in the component. That said,
97
+ many of our more generic components are currently using px-styles mixins for this (i.e. the whole
98
+ style section could just be something like `@include button()`) and I think we should move away from
99
+ that and instead keep as much of the component's css in an "expanded" state as possible. This makes
100
+ it much easier to understand what's going on.
101
+
102
+ #### Where should styling defaults come from?
103
+
104
+ We want to have a hierarchy that roughly looks like this:
105
+
106
+ 1. The component should provide default values in a way that no external CSS or configuration is
107
+ necessary to get a generic version of the component.
108
+
109
+ 2. It should be straightforward to define app defaults and these can be encapsulated into a
110
+ shareable "theme" file that can be customized / used for projects. It also might make sense to
111
+ have different levels of specificity in that theme. For example a property like "border-radius"
112
+ might be shared by many controls (button, textbox, dropdown, etc.) so it would make sense that
113
+ you can define an app-level default for that. But you should also be able to have different
114
+ values for different components
115
+
116
+ 3. It makes sense that the component can
117
+
118
+ Component Defaults App Defaults (with levels of specificty) Variants App Variants
119
+
120
+ <style>
121
+
122
+ #### When should we use CSS variables in custom components?
123
+
124
+ Is it useful to reexpose CSS variables for properties that already exist like border radius (e.g.
125
+ `px-textbox-border-radius`)? It doesn't seem like it because you would define it at the root as the
126
+ default and then again at usage. Might as well just use `border-radius`. What about for global
127
+ defaults? For that we can use SASS config/vars.
128
+
129
+ On the other hand, it does seem useful to use CSS variables for high level concepts that don't have
130
+ a semantically equivalent CSS property but would make sense to customize. An example of this might
131
+ be something like '--toggle-track-background' or in a toggle switch or '--dropdown-arrow-svg' in a
132
+ dropdown.
133
+
134
+ These can then be treated like other CSS properties where they would take their default from a SCSS
135
+ config (with a fallaback) but then be easily overriden in a local style or class.
136
+
137
+ #### When should we use v-bind to expose style-related properties as props?
138
+
139
+ If the value is likely to change a lot based on usage then maybe it makes sense to do this but I
140
+ think it is rare. Most of the time it's better keep CSS modifications in CSS. Keep styling in
141
+ styles/CSS for the most part. This doesn't mean never use v-bind in CSS, it just means that we don't
142
+ want to arbitraily expose many CSS properties as props on the component because it just becomes
143
+ unclear how you should style or modify the component.
144
+
7
145
  ---
8
146
 
9
147
  ## Default README
@@ -12,7 +150,10 @@ This template should help get you started developing with Vue 3 in Vite.
12
150
 
13
151
  ### Recommended IDE Setup
14
152
 
15
- [VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
153
+ [VSCode](https://code.visualstudio.com/) +
154
+ [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) +
155
+ [TypeScript Vue Plugin
156
+ (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
16
157
 
17
158
  ### Customize configuration
18
159
 
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-activity"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-activity"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-airplay"><path d="M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1"></path><polygon points="12 15 17 21 7 21 12 15"></polygon></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-airplay"><path d="M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1"></path><polygon points="12 15 17 21 7 21 12 15"></polygon></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-circle"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-circle"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-octagon"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-octagon"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-triangle"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-triangle"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-align-center"><line x1="18" y1="10" x2="6" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="18" y1="18" x2="6" y2="18"></line></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-align-center"><line x1="18" y1="10" x2="6" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="18" y1="18" x2="6" y2="18"></line></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-align-justify"><line x1="21" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="3" y2="18"></line></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-align-justify"><line x1="21" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="3" y2="18"></line></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-align-left"><line x1="17" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="17" y1="18" x2="3" y2="18"></line></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-align-left"><line x1="17" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="17" y1="18" x2="3" y2="18"></line></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-align-right"><line x1="21" y1="10" x2="7" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="7" y2="18"></line></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-align-right"><line x1="21" y1="10" x2="7" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="7" y2="18"></line></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-anchor"><circle cx="12" cy="5" r="3"></circle><line x1="12" y1="22" x2="12" y2="8"></line><path d="M5 12H2a10 10 0 0 0 20 0h-3"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-anchor"><circle cx="12" cy="5" r="3"></circle><line x1="12" y1="22" x2="12" y2="8"></line><path d="M5 12H2a10 10 0 0 0 20 0h-3"></path></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-aperture"><circle cx="12" cy="12" r="10"></circle><line x1="14.31" y1="8" x2="20.05" y2="17.94"></line><line x1="9.69" y1="8" x2="21.17" y2="8"></line><line x1="7.38" y1="12" x2="13.12" y2="2.06"></line><line x1="9.69" y1="16" x2="3.95" y2="6.06"></line><line x1="14.31" y1="16" x2="2.83" y2="16"></line><line x1="16.62" y1="12" x2="10.88" y2="21.94"></line></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-aperture"><circle cx="12" cy="12" r="10"></circle><line x1="14.31" y1="8" x2="20.05" y2="17.94"></line><line x1="9.69" y1="8" x2="21.17" y2="8"></line><line x1="7.38" y1="12" x2="13.12" y2="2.06"></line><line x1="9.69" y1="16" x2="3.95" y2="6.06"></line><line x1="14.31" y1="16" x2="2.83" y2="16"></line><line x1="16.62" y1="12" x2="10.88" y2="21.94"></line></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-archive"><polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-archive"><polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-down-circle"><circle cx="12" cy="12" r="10"></circle><polyline points="8 12 12 16 16 12"></polyline><line x1="12" y1="8" x2="12" y2="16"></line></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-down-circle"><circle cx="12" cy="12" r="10"></circle><polyline points="8 12 12 16 16 12"></polyline><line x1="12" y1="8" x2="12" y2="16"></line></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-down-left"><line x1="17" y1="7" x2="7" y2="17"></line><polyline points="17 17 7 17 7 7"></polyline></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-down-left"><line x1="17" y1="7" x2="7" y2="17"></line><polyline points="17 17 7 17 7 7"></polyline></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-down-right"><line x1="7" y1="7" x2="17" y2="17"></line><polyline points="17 7 17 17 7 17"></polyline></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-down-right"><line x1="7" y1="7" x2="17" y2="17"></line><polyline points="17 7 17 17 7 17"></polyline></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-down"><line x1="12" y1="5" x2="12" y2="19"></line><polyline points="19 12 12 19 5 12"></polyline></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-down"><line x1="12" y1="5" x2="12" y2="19"></line><polyline points="19 12 12 19 5 12"></polyline></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-left-circle"><circle cx="12" cy="12" r="10"></circle><polyline points="12 8 8 12 12 16"></polyline><line x1="16" y1="12" x2="8" y2="12"></line></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-left-circle"><circle cx="12" cy="12" r="10"></circle><polyline points="12 8 8 12 12 16"></polyline><line x1="16" y1="12" x2="8" y2="12"></line></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-left"><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-left"><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right-circle"><circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right-circle"><circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-up-circle"><circle cx="12" cy="12" r="10"></circle><polyline points="16 12 12 8 8 12"></polyline><line x1="12" y1="16" x2="12" y2="8"></line></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-up-circle"><circle cx="12" cy="12" r="10"></circle><polyline points="16 12 12 8 8 12"></polyline><line x1="12" y1="16" x2="12" y2="8"></line></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-up-left"><line x1="17" y1="17" x2="7" y2="7"></line><polyline points="7 17 7 7 17 7"></polyline></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-up-left"><line x1="17" y1="17" x2="7" y2="7"></line><polyline points="7 17 7 7 17 7"></polyline></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-up-right"><line x1="7" y1="17" x2="17" y2="7"></line><polyline points="7 7 17 7 17 17"></polyline></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-up-right"><line x1="7" y1="17" x2="17" y2="7"></line><polyline points="7 7 17 7 17 17"></polyline></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-up"><line x1="12" y1="19" x2="12" y2="5"></line><polyline points="5 12 12 5 19 12"></polyline></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-up"><line x1="12" y1="19" x2="12" y2="5"></line><polyline points="5 12 12 5 19 12"></polyline></svg>