@orbitkit/components 0.3.0 → 0.4.0

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 (73) hide show
  1. package/dist/astro/ambient-image/AmbientFigcaption.astro +15 -0
  2. package/dist/astro/ambient-image/AmbientImage.astro +70 -0
  3. package/dist/astro/ambient-image/index.ts +4 -0
  4. package/dist/astro/button-group/ButtonGroup.astro +21 -0
  5. package/dist/astro/button-group/buttonGroupVariants.ts +34 -0
  6. package/dist/astro/button-group/index.ts +3 -0
  7. package/dist/astro/diff/Diff.astro +55 -0
  8. package/dist/astro/diff/DiffItem.astro +21 -0
  9. package/dist/astro/diff/index.ts +4 -0
  10. package/dist/astro/loader/Loader.astro +16 -0
  11. package/dist/astro/loader/index.ts +6 -0
  12. package/dist/astro/loader/loaders/12-dots-scale-rotate.svg +1 -0
  13. package/dist/astro/loader/loaders/180-ring-with-bg.svg +1 -0
  14. package/dist/astro/loader/loaders/180-ring.svg +1 -0
  15. package/dist/astro/loader/loaders/270-ring-with-bg.svg +1 -0
  16. package/dist/astro/loader/loaders/270-ring.svg +1 -0
  17. package/dist/astro/loader/loaders/3-dots-bounce.svg +1 -0
  18. package/dist/astro/loader/loaders/3-dots-fade.svg +1 -0
  19. package/dist/astro/loader/loaders/3-dots-move.svg +1 -0
  20. package/dist/astro/loader/loaders/3-dots-rotate.svg +1 -0
  21. package/dist/astro/loader/loaders/3-dots-scale-middle.svg +1 -0
  22. package/dist/astro/loader/loaders/3-dots-scale.svg +1 -0
  23. package/dist/astro/loader/loaders/6-dots-rotate.svg +1 -0
  24. package/dist/astro/loader/loaders/6-dots-scale-middle.svg +1 -0
  25. package/dist/astro/loader/loaders/6-dots-scale.svg +1 -0
  26. package/dist/astro/loader/loaders/8-dots-rotate.svg +1 -0
  27. package/dist/astro/loader/loaders/90-ring-with-bg.svg +1 -0
  28. package/dist/astro/loader/loaders/90-ring.svg +1 -0
  29. package/dist/astro/loader/loaders/bars-fade.svg +1 -0
  30. package/dist/astro/loader/loaders/bars-rotate-fade.svg +1 -0
  31. package/dist/astro/loader/loaders/bars-scale-fade.svg +1 -0
  32. package/dist/astro/loader/loaders/bars-scale-middle.svg +1 -0
  33. package/dist/astro/loader/loaders/bars-scale.svg +1 -0
  34. package/dist/astro/loader/loaders/blocks-scale.svg +1 -0
  35. package/dist/astro/loader/loaders/blocks-shuffle-2.svg +1 -0
  36. package/dist/astro/loader/loaders/blocks-shuffle-3.svg +1 -0
  37. package/dist/astro/loader/loaders/blocks-wave.svg +1 -0
  38. package/dist/astro/loader/loaders/bouncing-ball.svg +1 -0
  39. package/dist/astro/loader/loaders/clock.svg +1 -0
  40. package/dist/astro/loader/loaders/dot-revolve.svg +1 -0
  41. package/dist/astro/loader/loaders/eclipse-half.svg +1 -0
  42. package/dist/astro/loader/loaders/eclipse.svg +1 -0
  43. package/dist/astro/loader/loaders/gooey-balls-1.svg +1 -0
  44. package/dist/astro/loader/loaders/gooey-balls-2.svg +1 -0
  45. package/dist/astro/loader/loaders/index.ts +99 -0
  46. package/dist/astro/loader/loaders/pulse-2.svg +1 -0
  47. package/dist/astro/loader/loaders/pulse-3.svg +1 -0
  48. package/dist/astro/loader/loaders/pulse-multiple.svg +1 -0
  49. package/dist/astro/loader/loaders/pulse-ring.svg +1 -0
  50. package/dist/astro/loader/loaders/pulse-rings-2.svg +1 -0
  51. package/dist/astro/loader/loaders/pulse-rings-3.svg +1 -0
  52. package/dist/astro/loader/loaders/pulse-rings-multiple.svg +1 -0
  53. package/dist/astro/loader/loaders/pulse.svg +1 -0
  54. package/dist/astro/loader/loaders/ring-resize.svg +1 -0
  55. package/dist/astro/loader/loaders/tadpole.svg +1 -0
  56. package/dist/astro/loader/loaders/wifi-fade.svg +1 -0
  57. package/dist/astro/loader/loaders/wifi.svg +1 -0
  58. package/dist/astro/loader/loaders/wind-toy.svg +1 -0
  59. package/dist/astro/marquee/Marquee.astro +53 -53
  60. package/dist/astro/marquee/index.ts +3 -3
  61. package/dist/astro/scroll-progress/ScrollProgress.astro +41 -41
  62. package/dist/astro/scroll-progress/ScrollProgressBar.astro +19 -19
  63. package/dist/astro/scroll-progress/index.ts +4 -4
  64. package/dist/astro/toast/Toast.astro +36 -36
  65. package/dist/astro/toast/ToastDescription.astro +10 -10
  66. package/dist/astro/toast/ToastTitle.astro +18 -18
  67. package/dist/astro/toast/Toaster.astro +78 -78
  68. package/dist/astro/toast/assets.ts +6 -6
  69. package/dist/astro/toast/index.ts +30 -30
  70. package/dist/astro/toast/toast.ts +277 -277
  71. package/dist/index.js +18 -2
  72. package/dist/index.js.map +1 -1
  73. package/package.json +55 -54
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><circle cx="12" cy="12" r="0" fill="currentColor"><animate id="SVGPW9ARccz" fill="freeze" attributeName="r" begin="0;SVGaeu34cWL.end" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="0;11"/><animate fill="freeze" attributeName="opacity" begin="0;SVGaeu34cWL.end" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="1;0"/></circle><circle cx="12" cy="12" r="0" fill="currentColor"><animate id="SVGODvPjeTJ" fill="freeze" attributeName="r" begin="SVGPW9ARccz.begin+0.2s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="0;11"/><animate fill="freeze" attributeName="opacity" begin="SVGPW9ARccz.begin+0.2s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="1;0"/></circle><circle cx="12" cy="12" r="0" fill="currentColor"><animate id="SVGaeu34cWL" fill="freeze" attributeName="r" begin="SVGPW9ARccz.begin+0.4s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="0;11"/><animate fill="freeze" attributeName="opacity" begin="SVGPW9ARccz.begin+0.4s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="1;0"/></circle></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,20a9,9,0,1,1,9-9A9,9,0,0,1,12,21Z" transform="matrix(0 0 0 0 12 12)"><animateTransform attributeName="transform" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" repeatCount="indefinite" type="translate" values="12 12;0 0"/><animateTransform additive="sum" attributeName="transform" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" repeatCount="indefinite" type="scale" values="0;1"/><animate attributeName="opacity" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" repeatCount="indefinite" values="1;0"/></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,20a9,9,0,1,1,9-9A9,9,0,0,1,12,21Z" transform="matrix(0 0 0 0 12 12)"><animateTransform id="SVGk7g6Ie5D" attributeName="transform" begin="0;SVGADuEYsSK.begin+0.6s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="translate" values="12 12;0 0"/><animateTransform additive="sum" attributeName="transform" begin="0;SVGADuEYsSK.begin+0.6s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="scale" values="0;1"/><animate attributeName="opacity" begin="0;SVGADuEYsSK.begin+0.6s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="1;0"/></path><path fill="currentColor" d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,20a9,9,0,1,1,9-9A9,9,0,0,1,12,21Z" transform="matrix(0 0 0 0 12 12)"><animateTransform id="SVGADuEYsSK" attributeName="transform" begin="SVGk7g6Ie5D.begin+0.6s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="translate" values="12 12;0 0"/><animateTransform additive="sum" attributeName="transform" begin="SVGk7g6Ie5D.begin+0.6s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="scale" values="0;1"/><animate attributeName="opacity" begin="SVGk7g6Ie5D.begin+0.6s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="1;0"/></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,20a9,9,0,1,1,9-9A9,9,0,0,1,12,21Z" transform="matrix(0 0 0 0 12 12)"><animateTransform id="SVGr0dxBdJO" attributeName="transform" begin="0;SVG7Xy0ecki.begin+0.4s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="translate" values="12 12;0 0"/><animateTransform additive="sum" attributeName="transform" begin="0;SVG7Xy0ecki.begin+0.4s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="scale" values="0;1"/><animate attributeName="opacity" begin="0;SVG7Xy0ecki.begin+0.4s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="1;0"/></path><path fill="currentColor" d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,20a9,9,0,1,1,9-9A9,9,0,0,1,12,21Z" transform="matrix(0 0 0 0 12 12)"><animateTransform id="SVGp2dhBhxA" attributeName="transform" begin="SVGr0dxBdJO.begin+0.4s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="translate" values="12 12;0 0"/><animateTransform additive="sum" attributeName="transform" begin="SVGr0dxBdJO.begin+0.4s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="scale" values="0;1"/><animate attributeName="opacity" begin="SVGr0dxBdJO.begin+0.4s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="1;0"/></path><path fill="currentColor" d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,20a9,9,0,1,1,9-9A9,9,0,0,1,12,21Z" transform="matrix(0 0 0 0 12 12)"><animateTransform id="SVG7Xy0ecki" attributeName="transform" begin="SVGr0dxBdJO.begin+0.8s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="translate" values="12 12;0 0"/><animateTransform additive="sum" attributeName="transform" begin="SVGr0dxBdJO.begin+0.8s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="scale" values="0;1"/><animate attributeName="opacity" begin="SVGr0dxBdJO.begin+0.8s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="1;0"/></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,20a9,9,0,1,1,9-9A9,9,0,0,1,12,21Z" transform="matrix(0 0 0 0 12 12)"><animateTransform id="SVGBGG9rcpE" attributeName="transform" begin="0;SVGryjChH5y.end" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="translate" values="12 12;0 0"/><animateTransform additive="sum" attributeName="transform" begin="0;SVGryjChH5y.end" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="scale" values="0;1"/><animate attributeName="opacity" begin="0;SVGryjChH5y.end" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="1;0"/></path><path fill="currentColor" d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,20a9,9,0,1,1,9-9A9,9,0,0,1,12,21Z" transform="matrix(0 0 0 0 12 12)"><animateTransform id="SVG0KQtjdtU" attributeName="transform" begin="SVGBGG9rcpE.begin+0.2s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="translate" values="12 12;0 0"/><animateTransform additive="sum" attributeName="transform" begin="SVGBGG9rcpE.begin+0.2s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="scale" values="0;1"/><animate attributeName="opacity" begin="SVGBGG9rcpE.begin+0.2s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="1;0"/></path><path fill="currentColor" d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,20a9,9,0,1,1,9-9A9,9,0,0,1,12,21Z" transform="matrix(0 0 0 0 12 12)"><animateTransform id="SVGryjChH5y" attributeName="transform" begin="SVGBGG9rcpE.begin+0.4s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="translate" values="12 12;0 0"/><animateTransform additive="sum" attributeName="transform" begin="SVGBGG9rcpE.begin+0.4s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" type="scale" values="0;1"/><animate attributeName="opacity" begin="SVGBGG9rcpE.begin+0.4s" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" values="1;0"/></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><circle cx="12" cy="12" r="0" fill="currentColor"><animate attributeName="r" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" repeatCount="indefinite" values="0;11"/><animate attributeName="opacity" calcMode="spline" dur="1.2s" keySplines=".52,.6,.25,.99" repeatCount="indefinite" values="1;0"/></circle></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g stroke="currentColor" stroke-width="1"><circle cx="12" cy="12" r="9.5" fill="none" stroke-linecap="round" stroke-width="3"><animate attributeName="stroke-dasharray" calcMode="spline" dur="1.5s" keySplines="0.42,0,0.58,1;0.42,0,0.58,1;0.42,0,0.58,1" keyTimes="0;0.475;0.95;1" repeatCount="indefinite" values="0 150;42 150;42 150;42 150"/><animate attributeName="stroke-dashoffset" calcMode="spline" dur="1.5s" keySplines="0.42,0,0.58,1;0.42,0,0.58,1;0.42,0,0.58,1" keyTimes="0;0.475;0.95;1" repeatCount="indefinite" values="0;-16;-59;-59"/></circle><animateTransform attributeName="transform" dur="2s" repeatCount="indefinite" type="rotate" values="0 12 12;360 12 12"/></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12,23a9.63,9.63,0,0,1-8-9.5,9.51,9.51,0,0,1,6.79-9.1A1.66,1.66,0,0,0,12,2.81h0a1.67,1.67,0,0,0-1.94-1.64A11,11,0,0,0,12,23Z"><animateTransform attributeName="transform" dur="0.75s" repeatCount="indefinite" type="rotate" values="0 12 12;360 12 12"/></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12,21L15.6,16.2C14.6,15.45 13.35,15 12,15C10.65,15 9.4,15.45 8.4,16.2L12,21" opacity="0"><animate id="SVGkbUu7KtW" fill="freeze" attributeName="opacity" begin="0;SVGAiUxzdjl.end+0.2s" dur="0.25s" values="0;1"/><animate id="SVGAiUxzdjl" fill="freeze" attributeName="opacity" begin="SVGV9fG3lbe.end+0.5s" dur="0.1s" values="1;0"/></path><path fill="currentColor" d="M12,9C9.3,9 6.81,9.89 4.8,11.4L6.6,13.8C8.1,12.67 9.97,12 12,12C14.03,12 15.9,12.67 17.4,13.8L19.2,11.4C17.19,9.89 14.7,9 12,9Z" opacity="0"><animate id="SVG2sZSgdIQ" fill="freeze" attributeName="opacity" begin="SVGkbUu7KtW.end" dur="0.25s" values="0;1"/><animate fill="freeze" attributeName="opacity" begin="SVGV9fG3lbe.end+0.5s" dur="0.1s" values="1;0"/></path><path fill="currentColor" d="M12,3C7.95,3 4.21,4.34 1.2,6.6L3,9C5.5,7.12 8.62,6 12,6C15.38,6 18.5,7.12 21,9L22.8,6.6C19.79,4.34 16.05,3 12,3" opacity="0"><animate id="SVGV9fG3lbe" fill="freeze" attributeName="opacity" begin="SVG2sZSgdIQ.end" dur="0.25s" values="0;1"/><animate fill="freeze" attributeName="opacity" begin="SVGV9fG3lbe.end+0.5s" dur="0.1s" values="1;0"/></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12,21L15.6,16.2C14.6,15.45 13.35,15 12,15C10.65,15 9.4,15.45 8.4,16.2L12,21" opacity="0"><animate id="SVGKYQAHd9H" fill="freeze" attributeName="opacity" begin="0;SVGiICzmYiD.end+0.2s" calcMode="discrete" dur="0.25s" values="0;1"/><animate id="SVGiICzmYiD" fill="freeze" attributeName="opacity" begin="SVGqTmLtDFc.end+0.5s" dur="0.001s" values="1;0"/></path><path fill="currentColor" d="M12,9C9.3,9 6.81,9.89 4.8,11.4L6.6,13.8C8.1,12.67 9.97,12 12,12C14.03,12 15.9,12.67 17.4,13.8L19.2,11.4C17.19,9.89 14.7,9 12,9Z" opacity="0"><animate id="SVGPRCC2btp" fill="freeze" attributeName="opacity" begin="SVGKYQAHd9H.end" calcMode="discrete" dur="0.25s" values="0;1"/><animate fill="freeze" attributeName="opacity" begin="SVGqTmLtDFc.end+0.5s" dur="0.001s" values="1;0"/></path><path fill="currentColor" d="M12,3C7.95,3 4.21,4.34 1.2,6.6L3,9C5.5,7.12 8.62,6 12,6C15.38,6 18.5,7.12 21,9L22.8,6.6C19.79,4.34 16.05,3 12,3" opacity="0"><animate id="SVGqTmLtDFc" fill="freeze" attributeName="opacity" begin="SVGPRCC2btp.end" calcMode="discrete" dur="0.25s" values="0;1"/><animate fill="freeze" attributeName="opacity" begin="SVGqTmLtDFc.end+0.5s" dur="0.001s" values="1;0"/></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M20.27,4.74a4.93,4.93,0,0,1,1.52,4.61,5.32,5.32,0,0,1-4.1,4.51,5.12,5.12,0,0,1-5.2-1.5,5.53,5.53,0,0,0,6.13-1.48A5.66,5.66,0,0,0,20.27,4.74ZM12.32,11.53a5.49,5.49,0,0,0-1.47-6.2A5.57,5.57,0,0,0,4.71,3.72,5.17,5.17,0,0,1,9.53,2.2,5.52,5.52,0,0,1,13.9,6.45,5.28,5.28,0,0,1,12.32,11.53ZM19.2,20.29a4.92,4.92,0,0,1-4.72,1.49,5.32,5.32,0,0,1-4.34-4.05A5.2,5.2,0,0,1,11.6,12.5a5.6,5.6,0,0,0,1.51,6.13A5.63,5.63,0,0,0,19.2,20.29ZM3.79,19.38A5.18,5.18,0,0,1,2.32,14a5.3,5.3,0,0,1,4.59-4,5,5,0,0,1,4.58,1.61,5.55,5.55,0,0,0-6.32,1.69A5.46,5.46,0,0,0,3.79,19.38ZM12.23,12a5.11,5.11,0,0,0,3.66-5,5.75,5.75,0,0,0-3.18-6,5,5,0,0,1,4.42,2.3,5.21,5.21,0,0,1,.24,5.92A5.4,5.4,0,0,1,12.23,12ZM11.76,12a5.18,5.18,0,0,0-3.68,5.09,5.58,5.58,0,0,0,3.19,5.79c-1,.35-2.9-.46-4-1.68A5.51,5.51,0,0,1,11.76,12ZM23,12.63a5.07,5.07,0,0,1-2.35,4.52,5.23,5.23,0,0,1-5.91.2,5.24,5.24,0,0,1-2.67-4.77,5.51,5.51,0,0,0,5.45,3.33A5.52,5.52,0,0,0,23,12.63ZM1,11.23a5,5,0,0,1,2.49-4.5,5.23,5.23,0,0,1,5.81-.06,5.3,5.3,0,0,1,2.61,4.74A5.56,5.56,0,0,0,6.56,8.06,5.71,5.71,0,0,0,1,11.23Z"><animateTransform attributeName="transform" dur="1.5s" repeatCount="indefinite" type="rotate" values="0 12 12;360 12 12"/></path></svg>
@@ -1,53 +1,53 @@
1
- ---
2
- import { cn } from "@/utils/cn";
3
-
4
- interface Props {
5
- duration?: number;
6
- gap?: number;
7
- repeat?: number;
8
- pauseOnHover?: boolean;
9
- vertical?: boolean;
10
- reverse?: boolean;
11
- }
12
-
13
- const {
14
- duration = 10,
15
- gap = 1,
16
- repeat = 4,
17
- pauseOnHover = true,
18
- vertical = false,
19
- reverse = false,
20
- } = Astro.props;
21
- ---
22
-
23
- <div
24
- class={cn(
25
- "group flex overflow-hidden max-w-max p-2 gap-(--gap)",
26
- vertical ? "flex-col" : "flex-row",
27
- )}
28
- style={{
29
- "--gap": `${gap}rem`,
30
- "--duration": `${duration}s`,
31
- }}
32
- >
33
- {
34
- Array(repeat)
35
- .fill(0)
36
- .map(() => (
37
- <div
38
- class={cn(
39
- "gap-(--gap) flex shrink-0 justify-around",
40
- {
41
- "group-hover:[animation-play-state:paused]": pauseOnHover,
42
- "[animation-direction:reverse]": reverse,
43
- },
44
- vertical
45
- ? "animate-marquee-vertical flex-col"
46
- : "animate-marquee-horizontal flex-row",
47
- )}
48
- >
49
- <slot />
50
- </div>
51
- ))
52
- }
53
- </div>
1
+ ---
2
+ import { cn } from "@/utils/cn";
3
+
4
+ interface Props {
5
+ duration?: number;
6
+ gap?: number;
7
+ repeat?: number;
8
+ pauseOnHover?: boolean;
9
+ vertical?: boolean;
10
+ reverse?: boolean;
11
+ }
12
+
13
+ const {
14
+ duration = 10,
15
+ gap = 1,
16
+ repeat = 4,
17
+ pauseOnHover = true,
18
+ vertical = false,
19
+ reverse = false,
20
+ } = Astro.props;
21
+ ---
22
+
23
+ <div
24
+ class={cn(
25
+ "group flex overflow-hidden max-w-max p-2 gap-(--gap)",
26
+ vertical ? "flex-col" : "flex-row",
27
+ )}
28
+ style={{
29
+ "--gap": `${gap}rem`,
30
+ "--duration": `${duration}s`,
31
+ }}
32
+ >
33
+ {
34
+ Array(repeat)
35
+ .fill(0)
36
+ .map(() => (
37
+ <div
38
+ class={cn(
39
+ "gap-(--gap) flex shrink-0 justify-around",
40
+ {
41
+ "group-hover:[animation-play-state:paused]": pauseOnHover,
42
+ "[animation-direction:reverse]": reverse,
43
+ },
44
+ vertical
45
+ ? "animate-marquee-vertical flex-col"
46
+ : "animate-marquee-horizontal flex-row",
47
+ )}
48
+ >
49
+ <slot />
50
+ </div>
51
+ ))
52
+ }
53
+ </div>
@@ -1,3 +1,3 @@
1
- import Marquee from "./Marquee.astro";
2
-
3
- export { Marquee };
1
+ import Marquee from "./Marquee.astro";
2
+
3
+ export { Marquee };
@@ -1,41 +1,41 @@
1
- ---
2
- import ScrollProgressBar from "./ScrollProgressBar.astro";
3
- import { cn } from "@/utils/cn";
4
- import type { HTMLAttributes } from "astro/types";
5
-
6
- interface Props extends HTMLAttributes<"div"> {}
7
-
8
- const { class: className, ...attrs } = Astro.props;
9
- ---
10
-
11
- <div
12
- class={cn("fixed top-0 left-0 w-full h-[2px] bg-muted z-[1000]", className)}
13
- {...attrs}
14
- >
15
- <slot>
16
- <ScrollProgressBar />
17
- </slot>
18
- </div>
19
-
20
- <script>
21
- function initScrollProgress() {
22
- const bar = document.querySelector<HTMLElement>(
23
- "[data-scroll-progress-bar]",
24
- );
25
- if (!bar) return;
26
-
27
- function updateBar() {
28
- const total = document.documentElement.scrollHeight - window.innerHeight;
29
- const progress = (window.scrollY / total) * 100;
30
- bar!.style.width = `${progress}%`;
31
- }
32
-
33
- window.addEventListener("scroll", updateBar);
34
- updateBar();
35
- }
36
-
37
- initScrollProgress();
38
- document.addEventListener("astro:after-swap", () => {
39
- initScrollProgress();
40
- });
41
- </script>
1
+ ---
2
+ import ScrollProgressBar from "./ScrollProgressBar.astro";
3
+ import { cn } from "@/utils/cn";
4
+ import type { HTMLAttributes } from "astro/types";
5
+
6
+ interface Props extends HTMLAttributes<"div"> {}
7
+
8
+ const { class: className, ...attrs } = Astro.props;
9
+ ---
10
+
11
+ <div
12
+ class={cn("fixed top-0 left-0 w-full h-[2px] bg-muted z-[1000]", className)}
13
+ {...attrs}
14
+ >
15
+ <slot>
16
+ <ScrollProgressBar />
17
+ </slot>
18
+ </div>
19
+
20
+ <script>
21
+ function initScrollProgress() {
22
+ const bar = document.querySelector<HTMLElement>(
23
+ "[data-scroll-progress-bar]",
24
+ );
25
+ if (!bar) return;
26
+
27
+ function updateBar() {
28
+ const total = document.documentElement.scrollHeight - window.innerHeight;
29
+ const progress = (window.scrollY / total) * 100;
30
+ bar!.style.width = `${progress}%`;
31
+ }
32
+
33
+ window.addEventListener("scroll", updateBar);
34
+ updateBar();
35
+ }
36
+
37
+ initScrollProgress();
38
+ document.addEventListener("astro:after-swap", () => {
39
+ initScrollProgress();
40
+ });
41
+ </script>
@@ -1,19 +1,19 @@
1
- ---
2
- import { cn } from "@/utils/cn";
3
- import type { HTMLAttributes } from "astro/types";
4
-
5
- interface Props extends HTMLAttributes<"div"> {}
6
-
7
- const { class: className, ...attrs } = Astro.props;
8
- ---
9
-
10
- <div
11
- data-scroll-progress-bar
12
- class={cn(
13
- "h-full bg-primary transition-all duration-100 ease-out",
14
- className,
15
- )}
16
- style="width: 0%;"
17
- {...attrs}
18
- >
19
- </div>
1
+ ---
2
+ import { cn } from "@/utils/cn";
3
+ import type { HTMLAttributes } from "astro/types";
4
+
5
+ interface Props extends HTMLAttributes<"div"> {}
6
+
7
+ const { class: className, ...attrs } = Astro.props;
8
+ ---
9
+
10
+ <div
11
+ data-scroll-progress-bar
12
+ class={cn(
13
+ "h-full bg-primary transition-all duration-100 ease-out",
14
+ className,
15
+ )}
16
+ style="width: 0%;"
17
+ {...attrs}
18
+ >
19
+ </div>
@@ -1,4 +1,4 @@
1
- import ScrollProgress from "./ScrollProgress.astro";
2
- import ScrollProgressBar from "./ScrollProgressBar.astro";
3
-
4
- export { ScrollProgress, ScrollProgressBar };
1
+ import ScrollProgress from "./ScrollProgress.astro";
2
+ import ScrollProgressBar from "./ScrollProgressBar.astro";
3
+
4
+ export { ScrollProgress, ScrollProgressBar };
@@ -1,36 +1,36 @@
1
- ---
2
- import { cn } from "@/utils/cn";
3
- import type { HTMLAttributes } from "astro/types";
4
-
5
- interface Props extends HTMLAttributes<"div"> {}
6
-
7
- const { class: className, ...attrs } = Astro.props;
8
- ---
9
-
10
- <div
11
- data-toast
12
- class={cn(
13
- "fixed z-[1000] p-4 bg-background text-foreground border border-border rounded-lg shadow-lg flex flex-row items-start gap-2 overflow-hidden opacity-0 duration-500 transition-all ease-in-out min-w-xs max-w-md data-[state=showing]:opacity-100 data-[state=hide]:pointer-events-none ",
14
- className,
15
- )}
16
- {...attrs}
17
- >
18
- <slot />
19
- </div>
20
-
21
- <style>
22
- @reference "@/styles/global.css";
23
-
24
- [data-toast][data-toast-type="success"] {
25
- @apply border-green-500 bg-green-50 text-green-800;
26
- }
27
- [data-toast][data-toast-type="error"] {
28
- @apply border-red-500 bg-red-50 text-red-800;
29
- }
30
- [data-toast][data-toast-type="warning"] {
31
- @apply border-orange-400 bg-orange-50 text-orange-800;
32
- }
33
- [data-toast][data-toast-type="info"] {
34
- @apply border-blue-500 bg-blue-50 text-blue-800;
35
- }
36
- </style>
1
+ ---
2
+ import { cn } from "@/utils/cn";
3
+ import type { HTMLAttributes } from "astro/types";
4
+
5
+ interface Props extends HTMLAttributes<"div"> {}
6
+
7
+ const { class: className, ...attrs } = Astro.props;
8
+ ---
9
+
10
+ <div
11
+ data-toast
12
+ class={cn(
13
+ "fixed z-[1000] p-4 bg-background text-foreground border border-border rounded-lg shadow-lg flex flex-row items-start gap-2 overflow-hidden opacity-0 duration-500 transition-all ease-in-out min-w-xs max-w-md data-[state=showing]:opacity-100 data-[state=hide]:pointer-events-none ",
14
+ className,
15
+ )}
16
+ {...attrs}
17
+ >
18
+ <slot />
19
+ </div>
20
+
21
+ <style>
22
+ @reference "@/styles/global.css";
23
+
24
+ [data-toast][data-toast-type="success"] {
25
+ @apply border-green-500 bg-green-50 text-green-800;
26
+ }
27
+ [data-toast][data-toast-type="error"] {
28
+ @apply border-red-500 bg-red-50 text-red-800;
29
+ }
30
+ [data-toast][data-toast-type="warning"] {
31
+ @apply border-orange-400 bg-orange-50 text-orange-800;
32
+ }
33
+ [data-toast][data-toast-type="info"] {
34
+ @apply border-blue-500 bg-blue-50 text-blue-800;
35
+ }
36
+ </style>
@@ -1,10 +1,10 @@
1
- ---
2
- import { cn } from "@/utils/cn";
3
- import { type HTMLAttributes } from "astro/types";
4
-
5
- interface Props extends HTMLAttributes<"p"> {}
6
-
7
- const { class: className, ...attrs } = Astro.props;
8
- ---
9
-
10
- <p data-toast-description class={cn("text-sm", className)} {...attrs}></p>
1
+ ---
2
+ import { cn } from "@/utils/cn";
3
+ import { type HTMLAttributes } from "astro/types";
4
+
5
+ interface Props extends HTMLAttributes<"p"> {}
6
+
7
+ const { class: className, ...attrs } = Astro.props;
8
+ ---
9
+
10
+ <p data-toast-description class={cn("text-sm", className)} {...attrs}></p>
@@ -1,18 +1,18 @@
1
- ---
2
- import { cn } from "@/utils/cn";
3
- import type { HTMLAttributes } from "astro/types";
4
-
5
- interface Props extends HTMLAttributes<"h5"> {}
6
-
7
- const { class: className, ...attrs } = Astro.props;
8
- ---
9
-
10
- <h5
11
- data-toast-title
12
- class={cn(
13
- "font-medium flex items-center justify-start gap-2 text-sm",
14
- className,
15
- )}
16
- {...attrs}
17
- >
18
- </h5>
1
+ ---
2
+ import { cn } from "@/utils/cn";
3
+ import type { HTMLAttributes } from "astro/types";
4
+
5
+ interface Props extends HTMLAttributes<"h5"> {}
6
+
7
+ const { class: className, ...attrs } = Astro.props;
8
+ ---
9
+
10
+ <h5
11
+ data-toast-title
12
+ class={cn(
13
+ "font-medium flex items-center justify-start gap-2 text-sm",
14
+ className,
15
+ )}
16
+ {...attrs}
17
+ >
18
+ </h5>
@@ -1,78 +1,78 @@
1
- ---
2
- import Toast from "./Toast.astro";
3
- import ToastDescription from "./ToastDescription.astro";
4
- import ToastTitle from "./ToastTitle.astro";
5
-
6
- interface Props {
7
- offset?: number;
8
- gap?: number;
9
- position?:
10
- | "top-right"
11
- | "top-center"
12
- | "top-left"
13
- | "bottom-right"
14
- | "bottom-center"
15
- | "bottom-left";
16
- visibleToasts?: number;
17
- dismissible?: boolean;
18
- autoClose?: boolean;
19
- }
20
-
21
- const {
22
- offset = 24,
23
- gap = 16,
24
- position = "bottom-right",
25
- visibleToasts = 3,
26
- dismissible = true,
27
- autoClose = true,
28
- } = Astro.props;
29
- ---
30
-
31
- <section
32
- tabindex="-1"
33
- data-toaster
34
- data-position={position}
35
- data-visible-toasts={visibleToasts}
36
- data-offset={offset}
37
- data-dismissible={dismissible}
38
- data-position={position}
39
- data-gap={gap}
40
- data-auto-close={autoClose}
41
- >
42
- <template id="toast-template">
43
- <slot>
44
- <Toast>
45
- <div data-toast-icon></div>
46
-
47
- <div>
48
- <ToastTitle />
49
- <ToastDescription />
50
- </div>
51
-
52
- <button
53
- class="absolute right-1 top-1 cursor-pointer rounded-lg p-1 transition-colors duration-150"
54
- aria-label="close toast"
55
- data-close
56
- data-dismissible-button
57
- >
58
- <svg
59
- xmlns="http://www.w3.org/2000/svg"
60
- viewBox="0 0 24 24"
61
- fill="none"
62
- stroke="currentColor"
63
- stroke-width="2"
64
- stroke-linecap="round"
65
- stroke-linejoin="round"
66
- class="size-4"
67
- >
68
- <>
69
- <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
70
- <path d="M18 6l-12 12"></path>
71
- <path d="M6 6l12 12"></path>
72
- </>
73
- </svg>
74
- </button>
75
- </Toast>
76
- </slot>
77
- </template>
78
- </section>
1
+ ---
2
+ import Toast from "./Toast.astro";
3
+ import ToastDescription from "./ToastDescription.astro";
4
+ import ToastTitle from "./ToastTitle.astro";
5
+
6
+ interface Props {
7
+ offset?: number;
8
+ gap?: number;
9
+ position?:
10
+ | "top-right"
11
+ | "top-center"
12
+ | "top-left"
13
+ | "bottom-right"
14
+ | "bottom-center"
15
+ | "bottom-left";
16
+ visibleToasts?: number;
17
+ dismissible?: boolean;
18
+ autoClose?: boolean;
19
+ }
20
+
21
+ const {
22
+ offset = 24,
23
+ gap = 16,
24
+ position = "bottom-right",
25
+ visibleToasts = 3,
26
+ dismissible = true,
27
+ autoClose = true,
28
+ } = Astro.props;
29
+ ---
30
+
31
+ <section
32
+ tabindex="-1"
33
+ data-toaster
34
+ data-position={position}
35
+ data-visible-toasts={visibleToasts}
36
+ data-offset={offset}
37
+ data-dismissible={dismissible}
38
+ data-position={position}
39
+ data-gap={gap}
40
+ data-auto-close={autoClose}
41
+ >
42
+ <template id="toast-template">
43
+ <slot>
44
+ <Toast>
45
+ <div data-toast-icon></div>
46
+
47
+ <div>
48
+ <ToastTitle />
49
+ <ToastDescription />
50
+ </div>
51
+
52
+ <button
53
+ class="absolute right-1 top-1 cursor-pointer rounded-lg p-1 transition-colors duration-150"
54
+ aria-label="close toast"
55
+ data-close
56
+ data-dismissible-button
57
+ >
58
+ <svg
59
+ xmlns="http://www.w3.org/2000/svg"
60
+ viewBox="0 0 24 24"
61
+ fill="none"
62
+ stroke="currentColor"
63
+ stroke-width="2"
64
+ stroke-linecap="round"
65
+ stroke-linejoin="round"
66
+ class="size-4"
67
+ >
68
+ <>
69
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
70
+ <path d="M18 6l-12 12"></path>
71
+ <path d="M6 6l12 12"></path>
72
+ </>
73
+ </svg>
74
+ </button>
75
+ </Toast>
76
+ </slot>
77
+ </template>
78
+ </section>
@@ -1,6 +1,6 @@
1
- export const toastIcons: Record<string, string> = {
2
- success: `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M17 3.34a10 10 0 1 1 -14.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 14.995 -8.336zm-1.293 5.953a1 1 0 0 0 -1.32 -.083l-.094 .083l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.403 1.403l.083 .094l2 2l.094 .083a1 1 0 0 0 1.226 0l.094 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z" /></svg>`,
3
- error: `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="icon icon-tabler icons-tabler-filled icon-tabler-alert-circle"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 2c5.523 0 10 4.477 10 10a10 10 0 0 1 -19.995 .324l-.005 -.324l.004 -.28c.148 -5.393 4.566 -9.72 9.996 -9.72zm.01 13l-.127 .007a1 1 0 0 0 0 1.986l.117 .007l.127 -.007a1 1 0 0 0 0 -1.986l-.117 -.007zm-.01 -8a1 1 0 0 0 -.993 .883l-.007 .117v4l.007 .117a1 1 0 0 0 1.986 0l.007 -.117v-4l-.007 -.117a1 1 0 0 0 -.993 -.883z" /></svg>`,
4
- warning: `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 1.67c.955 0 1.845 .467 2.39 1.247l.105 .16l8.114 13.548a2.914 2.914 0 0 1 -2.307 4.363l-.195 .008h-16.225a2.914 2.914 0 0 1 -2.582 -4.2l.099 -.185l8.11 -13.538a2.914 2.914 0 0 1 2.491 -1.403zm.01 13.33l-.127 .007a1 1 0 0 0 0 1.986l.117 .007l.127 -.007a1 1 0 0 0 0 -1.986l-.117 -.007zm-.01 -7a1 1 0 0 0 -.993 .883l-.007 .117v4l.007 .117a1 1 0 0 0 1.986 0l.007 -.117v-4l-.007 -.117a1 1 0 0 0 -.993 -.883z" /></svg>`,
5
- info: `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 2c5.523 0 10 4.477 10 10a10 10 0 0 1 -19.995 .324l-.005 -.324l.004 -.28c.148 -5.393 4.566 -9.72 9.996 -9.72zm0 9h-1l-.117 .007a1 1 0 0 0 0 1.986l.117 .007v3l.007 .117a1 1 0 0 0 .876 .876l.117 .007h1l.117 -.007a1 1 0 0 0 .876 -.876l.007 -.117l-.007 -.117a1 1 0 0 0 -.764 -.857l-.112 -.02l-.117 -.006v-3l-.007 -.117a1 1 0 0 0 -.876 -.876l-.117 -.007zm.01 -3l-.127 .007a1 1 0 0 0 0 1.986l.117 .007l.127 -.007a1 1 0 0 0 0 -1.986l-.117 -.007z" /></svg>`,
6
- };
1
+ export const toastIcons: Record<string, string> = {
2
+ success: `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M17 3.34a10 10 0 1 1 -14.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 14.995 -8.336zm-1.293 5.953a1 1 0 0 0 -1.32 -.083l-.094 .083l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.403 1.403l.083 .094l2 2l.094 .083a1 1 0 0 0 1.226 0l.094 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z" /></svg>`,
3
+ error: `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="icon icon-tabler icons-tabler-filled icon-tabler-alert-circle"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 2c5.523 0 10 4.477 10 10a10 10 0 0 1 -19.995 .324l-.005 -.324l.004 -.28c.148 -5.393 4.566 -9.72 9.996 -9.72zm.01 13l-.127 .007a1 1 0 0 0 0 1.986l.117 .007l.127 -.007a1 1 0 0 0 0 -1.986l-.117 -.007zm-.01 -8a1 1 0 0 0 -.993 .883l-.007 .117v4l.007 .117a1 1 0 0 0 1.986 0l.007 -.117v-4l-.007 -.117a1 1 0 0 0 -.993 -.883z" /></svg>`,
4
+ warning: `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 1.67c.955 0 1.845 .467 2.39 1.247l.105 .16l8.114 13.548a2.914 2.914 0 0 1 -2.307 4.363l-.195 .008h-16.225a2.914 2.914 0 0 1 -2.582 -4.2l.099 -.185l8.11 -13.538a2.914 2.914 0 0 1 2.491 -1.403zm.01 13.33l-.127 .007a1 1 0 0 0 0 1.986l.117 .007l.127 -.007a1 1 0 0 0 0 -1.986l-.117 -.007zm-.01 -7a1 1 0 0 0 -.993 .883l-.007 .117v4l.007 .117a1 1 0 0 0 1.986 0l.007 -.117v-4l-.007 -.117a1 1 0 0 0 -.993 -.883z" /></svg>`,
5
+ info: `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 2c5.523 0 10 4.477 10 10a10 10 0 0 1 -19.995 .324l-.005 -.324l.004 -.28c.148 -5.393 4.566 -9.72 9.996 -9.72zm0 9h-1l-.117 .007a1 1 0 0 0 0 1.986l.117 .007v3l.007 .117a1 1 0 0 0 .876 .876l.117 .007h1l.117 -.007a1 1 0 0 0 .876 -.876l.007 -.117l-.007 -.117a1 1 0 0 0 -.764 -.857l-.112 -.02l-.117 -.006v-3l-.007 -.117a1 1 0 0 0 -.876 -.876l-.117 -.007zm.01 -3l-.127 .007a1 1 0 0 0 0 1.986l.117 .007l.127 -.007a1 1 0 0 0 0 -1.986l-.117 -.007z" /></svg>`,
6
+ };