astro-component-kit 0.0.1 → 0.1.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 (353) hide show
  1. package/README.md +218 -119
  2. package/package.json +25 -52
  3. package/src/components/index.ts +207 -0
  4. package/src/components/lib/AnimatedGalaxy.astro +185 -0
  5. package/src/components/lib/Galaxy3D.astro +308 -0
  6. package/src/components/lib/GlassNavbar.astro +13 -11
  7. package/src/components/lib/LogoWithGalaxy.astro +63 -0
  8. package/src/components/lib/buttons/3dPushButton.astro +9 -0
  9. package/src/components/lib/buttons/AnimatedIconButton.astro +10 -0
  10. package/src/components/lib/buttons/BorderDrawButton.astro +9 -0
  11. package/src/components/lib/buttons/CyberpunkButton.astro +10 -0
  12. package/src/components/lib/buttons/DoubleBorderButton.astro +9 -0
  13. package/src/components/lib/buttons/GhostOutlineButton.astro +10 -0
  14. package/src/components/lib/buttons/GlassButton.astro +13 -32
  15. package/src/components/lib/buttons/GlowButton.astro +9 -0
  16. package/src/components/lib/buttons/LiquidButton.astro +9 -0
  17. package/src/components/lib/buttons/LoadingButton.astro +10 -0
  18. package/src/components/lib/buttons/MagneticButton.astro +10 -0
  19. package/src/components/lib/buttons/MinimalPillButton.astro +9 -0
  20. package/src/components/lib/buttons/NeumorphicButton.astro +10 -0
  21. package/src/components/lib/buttons/PulseButton.astro +10 -0
  22. package/src/components/lib/buttons/RetroArcadeButton.astro +9 -0
  23. package/src/components/lib/buttons/RetroShadowButton.astro +9 -0
  24. package/src/components/lib/buttons/ShimmerButton.astro +9 -0
  25. package/src/components/lib/buttons/ShinyButton.astro +9 -0
  26. package/src/components/lib/buttons/TiltGlowButton.astro +10 -0
  27. package/src/components/lib/cards/BlogHorizontalCard.astro +46 -13
  28. package/src/components/lib/cards/CyberFeatureCard.astro +50 -6
  29. package/src/components/lib/cards/EcommerceProductCard.astro +69 -16
  30. package/src/components/lib/cards/GlassCard.astro +8 -0
  31. package/src/components/lib/cards/GlassEventCard.astro +53 -12
  32. package/src/components/lib/cards/GlowPortfolioCard.astro +46 -9
  33. package/src/components/lib/cards/InteractiveTiltCard.astro +47 -7
  34. package/src/components/lib/cards/KanbanItemCard.astro +40 -9
  35. package/src/components/lib/cards/MinimalLinkCard.astro +37 -7
  36. package/src/components/lib/cards/MusicPlayerMini.astro +54 -14
  37. package/src/components/lib/cards/NeumorphicCard.astro +32 -2
  38. package/src/components/lib/cards/NotificationCard.astro +44 -9
  39. package/src/components/lib/cards/PricingCard.astro +47 -9
  40. package/src/components/lib/cards/ProfileCard.astro +50 -11
  41. package/src/components/lib/cards/RetroGameCard.astro +37 -9
  42. package/src/components/lib/cards/StatCard.astro +43 -8
  43. package/src/components/lib/cards/TaskKanbanCard.astro +50 -11
  44. package/src/components/lib/cards/TestimonialCardClean.astro +43 -12
  45. package/src/components/lib/cards/WeatherWidgetCard.astro +36 -10
  46. package/src/components/lib/feedback/AnimatedCheckmark.astro +58 -9
  47. package/src/components/lib/feedback/Badge.astro +47 -12
  48. package/src/components/lib/feedback/CircleProgress.astro +56 -13
  49. package/src/components/lib/feedback/ConfettiFeedback.astro +74 -11
  50. package/src/components/lib/feedback/CyberGlitchAlert.astro +69 -6
  51. package/src/components/lib/feedback/EmptyStateCard.astro +55 -7
  52. package/src/components/lib/feedback/GlassAlert.astro +59 -13
  53. package/src/components/lib/feedback/GlassModal.astro +99 -14
  54. package/src/components/lib/feedback/GlassProgress.astro +39 -5
  55. package/src/components/lib/feedback/IndicatorBadgeMinimal.astro +56 -3
  56. package/src/components/lib/feedback/NeonSpinner.astro +40 -3
  57. package/src/components/lib/feedback/PulseDot.astro +51 -7
  58. package/src/components/lib/feedback/RatingPill.astro +38 -8
  59. package/src/components/lib/feedback/ShakeErrorGroup.astro +44 -3
  60. package/src/components/lib/feedback/SimpleTooltip.astro +53 -4
  61. package/src/components/lib/feedback/SkeletonList.astro +59 -13
  62. package/src/components/lib/feedback/Spotlight.astro +49 -4
  63. package/src/components/lib/feedback/StepProgress.astro +96 -9
  64. package/src/components/lib/feedback/ToastNotif.astro +60 -6
  65. package/src/components/lib/feedback/TypingIndicator.astro +52 -7
  66. package/src/components/lib/forms/AnimatedInput.astro +47 -5
  67. package/src/components/lib/forms/ChipInput.astro +116 -8
  68. package/src/components/lib/forms/ColorPickerInput.astro +53 -6
  69. package/src/components/lib/forms/CurrencyInput.astro +59 -6
  70. package/src/components/lib/forms/CustomRadioGroup.astro +61 -9
  71. package/src/components/lib/forms/CyberpunkCheckbox.astro +64 -8
  72. package/src/components/lib/forms/DragDropUpload.astro +87 -7
  73. package/src/components/lib/forms/ErrorInput.astro +31 -4
  74. package/src/components/lib/forms/FloatingPassword.astro +48 -10
  75. package/src/components/lib/forms/FormGroupVertical.astro +63 -9
  76. package/src/components/lib/forms/GlassSlider.astro +84 -3
  77. package/src/components/lib/forms/GlassTextarea.astro +39 -6
  78. package/src/components/lib/forms/ModernSelect.astro +66 -10
  79. package/src/components/lib/forms/NeumorphicSwitch.astro +54 -26
  80. package/src/components/lib/forms/OTPInput.astro +84 -12
  81. package/src/components/lib/forms/RatingStars.astro +66 -10
  82. package/src/components/lib/forms/SearchReveal.astro +44 -6
  83. package/src/components/lib/forms/SegmentedControl.astro +61 -7
  84. package/src/components/lib/forms/SimpleFileInput.astro +57 -6
  85. package/src/components/lib/forms/StepperInput.astro +101 -9
  86. package/src/components/lib/layout/FeatureHero.astro +70 -6
  87. package/src/components/lib/layout/FooterCenteredMinimal.astro +5 -2
  88. package/src/components/lib/navigation/GlassNavbar.astro +10 -5
  89. package/src/components/lib/navigation/MinimalSidebar.astro +6 -3
  90. package/src/components/lib/navigation/SimpleFooterGlass.astro +6 -2
  91. package/src/components/lib/overlays/SplashIntroOverlay.astro +6 -3
  92. package/src/components/lib/sections/ButtonsShowcase.astro +182 -0
  93. package/src/components/lib/sections/CardsShowcase.astro +376 -0
  94. package/src/components/lib/sections/DataShowcase.astro +329 -0
  95. package/src/components/lib/sections/FeedbackShowcase.astro +320 -0
  96. package/src/components/lib/sections/FormsShowcase.astro +347 -0
  97. package/src/components/lib/sections/HeroGlass.astro +202 -0
  98. package/src/components/lib/sections/HeroGradient.astro +143 -0
  99. package/src/components/lib/sections/HeroSplit.astro +210 -0
  100. package/src/components/lib/sections/LayoutShowcase.astro +317 -0
  101. package/src/components/lib/sections/NavigationShowcase.astro +285 -0
  102. package/src/components/lib/sections/OverlaysShowcase.astro +373 -0
  103. package/src/components/lib/sections/TypographyShowcase.astro +239 -0
  104. package/src/components/lib/sections/index.ts +9 -0
  105. package/src/components/types.d.ts +6 -0
  106. package/{dist → src}/styles/global.css +5 -5
  107. package/dist/AnimatedInput.astro +0 -82
  108. package/dist/Badge.astro +0 -52
  109. package/dist/GlassButton.astro +0 -87
  110. package/dist/GlassCard.astro +0 -72
  111. package/dist/GlassNavbar.astro +0 -65
  112. package/dist/GlowButton.astro +0 -60
  113. package/dist/buttons/3dPushButton.astro +0 -136
  114. package/dist/buttons/AnimatedIconButton.astro +0 -146
  115. package/dist/buttons/BorderDrawButton.astro +0 -112
  116. package/dist/buttons/CyberpunkButton.astro +0 -148
  117. package/dist/buttons/DoubleBorderButton.astro +0 -131
  118. package/dist/buttons/GhostOutlineButton.astro +0 -109
  119. package/dist/buttons/GlassButton.astro +0 -165
  120. package/dist/buttons/GlowButton.astro +0 -119
  121. package/dist/buttons/LiquidButton.astro +0 -167
  122. package/dist/buttons/LoadingButton.astro +0 -148
  123. package/dist/buttons/MagneticButton.astro +0 -134
  124. package/dist/buttons/MinimalPillButton.astro +0 -102
  125. package/dist/buttons/NeumorphicButton.astro +0 -158
  126. package/dist/buttons/PulseButton.astro +0 -111
  127. package/dist/buttons/RetroArcadeButton.astro +0 -105
  128. package/dist/buttons/RetroShadowButton.astro +0 -82
  129. package/dist/buttons/ShimmerButton.astro +0 -113
  130. package/dist/buttons/ShinyButton.astro +0 -121
  131. package/dist/buttons/TiltGlowButton.astro +0 -145
  132. package/dist/buttons/index.mjs +0 -19
  133. package/dist/buttons/index.ts +0 -19
  134. package/dist/cards/BlogHorizontalCard.astro +0 -18
  135. package/dist/cards/CyberFeatureCard.astro +0 -12
  136. package/dist/cards/EcommerceProductCard.astro +0 -24
  137. package/dist/cards/GlassCard.astro +0 -17
  138. package/dist/cards/GlassEventCard.astro +0 -19
  139. package/dist/cards/GlowPortfolioCard.astro +0 -16
  140. package/dist/cards/InteractiveTiltCard.astro +0 -25
  141. package/dist/cards/KanbanItemCard.astro +0 -15
  142. package/dist/cards/MinimalLinkCard.astro +0 -12
  143. package/dist/cards/MusicPlayerMini.astro +0 -21
  144. package/dist/cards/NeumorphicCard.astro +0 -6
  145. package/dist/cards/NotificationCard.astro +0 -15
  146. package/dist/cards/PricingCard.astro +0 -17
  147. package/dist/cards/ProfileCard.astro +0 -17
  148. package/dist/cards/RetroGameCard.astro +0 -15
  149. package/dist/cards/StatCard.astro +0 -15
  150. package/dist/cards/TaskKanbanCard.astro +0 -18
  151. package/dist/cards/TestimonialCardClean.astro +0 -20
  152. package/dist/cards/WeatherWidgetCard.astro +0 -17
  153. package/dist/cards/index.mjs +0 -19
  154. package/dist/cards/index.ts +0 -19
  155. package/dist/data/AccordionGroupGlass.astro +0 -21
  156. package/dist/data/AvatarGroupStack.astro +0 -15
  157. package/dist/data/CalendarGridView.astro +0 -18
  158. package/dist/data/DataChipsGroup.astro +0 -16
  159. package/dist/data/DescriptionListHoriz.astro +0 -14
  160. package/dist/data/FileTreeView.astro +0 -22
  161. package/dist/data/GanttChartMinimal.astro +0 -12
  162. package/dist/data/GlassTable.astro +0 -23
  163. package/dist/data/KeyValuePillGroup.astro +0 -12
  164. package/dist/data/PriceCompareTable.astro +0 -22
  165. package/dist/data/ProgressListSmall.astro +0 -17
  166. package/dist/data/RatingBreakdownBar.astro +0 -13
  167. package/dist/data/SparklineStatCard.astro +0 -16
  168. package/dist/data/StatsGridDashboard.astro +0 -16
  169. package/dist/data/StepperDataVertical.astro +0 -15
  170. package/dist/data/TagCloudData.astro +0 -14
  171. package/dist/data/TimelineHorizSteps.astro +0 -18
  172. package/dist/data/TreeItemInteractive.astro +0 -18
  173. package/dist/data/UserDirectoryItem.astro +0 -15
  174. package/dist/data/VerticalTimeline.astro +0 -21
  175. package/dist/data/index.mjs +0 -20
  176. package/dist/data/index.ts +0 -20
  177. package/dist/feedback/AnimatedCheckmark.astro +0 -13
  178. package/dist/feedback/Badge.astro +0 -19
  179. package/dist/feedback/CircleProgress.astro +0 -22
  180. package/dist/feedback/ConfettiFeedback.astro +0 -18
  181. package/dist/feedback/CyberGlitchAlert.astro +0 -11
  182. package/dist/feedback/EmptyStateCard.astro +0 -13
  183. package/dist/feedback/GlassAlert.astro +0 -20
  184. package/dist/feedback/GlassModal.astro +0 -19
  185. package/dist/feedback/GlassProgress.astro +0 -10
  186. package/dist/feedback/IndicatorBadgeMinimal.astro +0 -10
  187. package/dist/feedback/NeonSpinner.astro +0 -7
  188. package/dist/feedback/PulseDot.astro +0 -12
  189. package/dist/feedback/RatingPill.astro +0 -13
  190. package/dist/feedback/ShakeErrorGroup.astro +0 -7
  191. package/dist/feedback/SimpleTooltip.astro +0 -10
  192. package/dist/feedback/SkeletonList.astro +0 -20
  193. package/dist/feedback/Spotlight.astro +0 -9
  194. package/dist/feedback/StepProgress.astro +0 -14
  195. package/dist/feedback/ToastNotif.astro +0 -11
  196. package/dist/feedback/TypingIndicator.astro +0 -12
  197. package/dist/feedback/index.mjs +0 -20
  198. package/dist/feedback/index.ts +0 -20
  199. package/dist/forms/AnimatedInput.astro +0 -16
  200. package/dist/forms/ChipInput.astro +0 -13
  201. package/dist/forms/ColorPickerInput.astro +0 -13
  202. package/dist/forms/CurrencyInput.astro +0 -11
  203. package/dist/forms/CustomRadioGroup.astro +0 -13
  204. package/dist/forms/CyberpunkCheckbox.astro +0 -15
  205. package/dist/forms/DragDropUpload.astro +0 -12
  206. package/dist/forms/ErrorInput.astro +0 -11
  207. package/dist/forms/FloatingPassword.astro +0 -20
  208. package/dist/forms/FormGroupVertical.astro +0 -14
  209. package/dist/forms/GlassSlider.astro +0 -7
  210. package/dist/forms/GlassTextarea.astro +0 -14
  211. package/dist/forms/ModernSelect.astro +0 -16
  212. package/dist/forms/NeumorphicSwitch.astro +0 -55
  213. package/dist/forms/OTPInput.astro +0 -22
  214. package/dist/forms/RatingStars.astro +0 -15
  215. package/dist/forms/SearchReveal.astro +0 -13
  216. package/dist/forms/SegmentedControl.astro +0 -13
  217. package/dist/forms/SimpleFileInput.astro +0 -11
  218. package/dist/forms/StepperInput.astro +0 -14
  219. package/dist/forms/index.mjs +0 -20
  220. package/dist/forms/index.ts +0 -20
  221. package/dist/index.js +0 -1
  222. package/dist/index.mjs +0 -1
  223. package/dist/layout/BentoGrid3.astro +0 -14
  224. package/dist/layout/CenterFixedBox.astro +0 -6
  225. package/dist/layout/CenteredContainer.astro +0 -8
  226. package/dist/layout/ClusterHorizontal.astro +0 -6
  227. package/dist/layout/FeatureHero.astro +0 -17
  228. package/dist/layout/FooterCenteredMinimal.astro +0 -11
  229. package/dist/layout/FullBleedSection.astro +0 -6
  230. package/dist/layout/GalleryGrid4.astro +0 -7
  231. package/dist/layout/GlassCardGrid.astro +0 -6
  232. package/dist/layout/GlassSectionHeader.astro +0 -15
  233. package/dist/layout/LandingSectionSplit.astro +0 -13
  234. package/dist/layout/MasonryGrid.astro +0 -7
  235. package/dist/layout/MinimalFooterGrid.astro +0 -20
  236. package/dist/layout/ScrollSnapSection.astro +0 -7
  237. package/dist/layout/SectionDividerText.astro +0 -7
  238. package/dist/layout/SidebarLayoutWrapper.astro +0 -11
  239. package/dist/layout/SplitScreenLayout.astro +0 -11
  240. package/dist/layout/StepLayoutVertical.astro +0 -21
  241. package/dist/layout/StickySidebarWrapper.astro +0 -10
  242. package/dist/layout/VerticalStack.astro +0 -8
  243. package/dist/layout/index.mjs +0 -20
  244. package/dist/layout/index.ts +0 -20
  245. package/dist/navigation/AnchorSideNav.astro +0 -13
  246. package/dist/navigation/BottomNavMobile.astro +0 -13
  247. package/dist/navigation/BreadcrumbsMinimal.astro +0 -16
  248. package/dist/navigation/BurgerMorphIcon.astro +0 -12
  249. package/dist/navigation/CommandPaletteUI.astro +0 -17
  250. package/dist/navigation/DotNavigationSlider.astro +0 -13
  251. package/dist/navigation/FloatingTabBar.astro +0 -12
  252. package/dist/navigation/GlassNavbar.astro +0 -19
  253. package/dist/navigation/LangSwitcherPill.astro +0 -17
  254. package/dist/navigation/MegaMenuGlass.astro +0 -25
  255. package/dist/navigation/MinimalSidebar.astro +0 -18
  256. package/dist/navigation/PaginationGlass.astro +0 -20
  257. package/dist/navigation/PaginationInfiniteUI.astro +0 -11
  258. package/dist/navigation/RadialIconMenu.astro +0 -15
  259. package/dist/navigation/RetroArcadeMenu.astro +0 -12
  260. package/dist/navigation/ScrollProgressTop.astro +0 -15
  261. package/dist/navigation/SimpleFooterGlass.astro +0 -21
  262. package/dist/navigation/TabUnderline.astro +0 -14
  263. package/dist/navigation/UserProfileNav.astro +0 -21
  264. package/dist/navigation/VerticalTabs.astro +0 -14
  265. package/dist/navigation/index.mjs +0 -20
  266. package/dist/navigation/index.ts +0 -20
  267. package/dist/overlays/AgeVerificationOverlay.astro +0 -20
  268. package/dist/overlays/BackdropBlurMask.astro +0 -6
  269. package/dist/overlays/BottomSheetMobile.astro +0 -16
  270. package/dist/overlays/CommandDialog.astro +0 -19
  271. package/dist/overlays/ContextMenuOverlay.astro +0 -17
  272. package/dist/overlays/CookieBannerGlass.astro +0 -14
  273. package/dist/overlays/ExitIntentOverlay.astro +0 -19
  274. package/dist/overlays/FloatingTrayActions.astro +0 -13
  275. package/dist/overlays/HelpBubbleOverlay.astro +0 -11
  276. package/dist/overlays/LightboxOverlay.astro +0 -13
  277. package/dist/overlays/LoadingOverlayFull.astro +0 -10
  278. package/dist/overlays/MobileNavOverlay.astro +0 -18
  279. package/dist/overlays/OverlayModal.astro +0 -24
  280. package/dist/overlays/PopoverMenuGlass.astro +0 -17
  281. package/dist/overlays/SearchOverlayFullscreen.astro +0 -15
  282. package/dist/overlays/SideDrawerRight.astro +0 -16
  283. package/dist/overlays/SplashIntroOverlay.astro +0 -11
  284. package/dist/overlays/SpotlightIndicator.astro +0 -6
  285. package/dist/overlays/ToastStackOverlay.astro +0 -12
  286. package/dist/overlays/TooltipActionTray.astro +0 -14
  287. package/dist/overlays/index.mjs +0 -20
  288. package/dist/overlays/index.ts +0 -20
  289. package/dist/typography/AnimatedUnderlineLink.astro +0 -10
  290. package/dist/typography/BackgroundClipMask.astro +0 -7
  291. package/dist/typography/CodeInlineGlass.astro +0 -6
  292. package/dist/typography/CyberpunkGlitchText.astro +0 -20
  293. package/dist/typography/DropCapParagraph.astro +0 -7
  294. package/dist/typography/FadedVerticalText.astro +0 -6
  295. package/dist/typography/FloatingTextLabel.astro +0 -10
  296. package/dist/typography/GlassBlockQuote.astro +0 -13
  297. package/dist/typography/GlassTextReveal.astro +0 -7
  298. package/dist/typography/GradientHeading.astro +0 -9
  299. package/dist/typography/GradientUnderlineLink.astro +0 -7
  300. package/dist/typography/KbdIndicator.astro +0 -6
  301. package/dist/typography/LetterSpacingWide.astro +0 -6
  302. package/dist/typography/MinimalListMarkers.astro +0 -10
  303. package/dist/typography/MonospaceStatLine.astro +0 -6
  304. package/dist/typography/NeonTextHighlight.astro +0 -6
  305. package/dist/typography/ShadowRevealText.astro +0 -7
  306. package/dist/typography/StrokeHeadingOutline.astro +0 -8
  307. package/dist/typography/Text3DLayer.astro +0 -7
  308. package/dist/typography/TypewriterText.astro +0 -15
  309. package/dist/typography/index.mjs +0 -20
  310. package/dist/typography/index.ts +0 -20
  311. package/dist/utilities/AspectRatioBox.astro +0 -11
  312. package/dist/utilities/BackgroundDotPattern.astro +0 -6
  313. package/dist/utilities/CircularMask.astro +0 -7
  314. package/dist/utilities/ClickRippleWrapper.astro +0 -7
  315. package/dist/utilities/FadeInWrapper.astro +0 -11
  316. package/dist/utilities/FixedRatioImage.astro +0 -7
  317. package/dist/utilities/GlassBlurLayer.astro +0 -6
  318. package/dist/utilities/GradientBorderMask.astro +0 -7
  319. package/dist/utilities/HoverLift.astro +0 -7
  320. package/dist/utilities/ResponsiveSpacer.astro +0 -15
  321. package/dist/utilities/ResponsiveVisToggle.astro +0 -11
  322. package/dist/utilities/ScrollLockParent.astro +0 -11
  323. package/dist/utilities/ScrollMarginTarget.astro +0 -10
  324. package/dist/utilities/SlideUpReveal.astro +0 -7
  325. package/dist/utilities/SmoothAnchorLink.astro +0 -22
  326. package/dist/utilities/StackLayering.astro +0 -12
  327. package/dist/utilities/StickyObserver.astro +0 -8
  328. package/dist/utilities/TextTruncate.astro +0 -10
  329. package/dist/utilities/TruncateSingleLine.astro +0 -6
  330. package/dist/utilities/VisuallyHidden.astro +0 -6
  331. package/dist/utilities/index.mjs +0 -20
  332. package/dist/utilities/index.ts +0 -20
  333. package/src/components/lib/utilities/AspectRatioBox.astro +0 -11
  334. package/src/components/lib/utilities/BackgroundDotPattern.astro +0 -6
  335. package/src/components/lib/utilities/CircularMask.astro +0 -7
  336. package/src/components/lib/utilities/ClickRippleWrapper.astro +0 -7
  337. package/src/components/lib/utilities/FadeInWrapper.astro +0 -11
  338. package/src/components/lib/utilities/FixedRatioImage.astro +0 -7
  339. package/src/components/lib/utilities/GlassBlurLayer.astro +0 -6
  340. package/src/components/lib/utilities/GradientBorderMask.astro +0 -7
  341. package/src/components/lib/utilities/HoverLift.astro +0 -7
  342. package/src/components/lib/utilities/ResponsiveSpacer.astro +0 -15
  343. package/src/components/lib/utilities/ResponsiveVisToggle.astro +0 -11
  344. package/src/components/lib/utilities/ScrollLockParent.astro +0 -11
  345. package/src/components/lib/utilities/ScrollMarginTarget.astro +0 -10
  346. package/src/components/lib/utilities/SlideUpReveal.astro +0 -7
  347. package/src/components/lib/utilities/SmoothAnchorLink.astro +0 -22
  348. package/src/components/lib/utilities/StackLayering.astro +0 -12
  349. package/src/components/lib/utilities/StickyObserver.astro +0 -8
  350. package/src/components/lib/utilities/TextTruncate.astro +0 -10
  351. package/src/components/lib/utilities/TruncateSingleLine.astro +0 -6
  352. package/src/components/lib/utilities/VisuallyHidden.astro +0 -6
  353. package/src/components/lib/utilities/index.ts +0 -20
@@ -1,4 +1,14 @@
1
1
  ---
2
+ /**
3
+ * NeumorphicButton — A premium Soft UI button with beveled surface gradients and hue-tinted shadows.
4
+ *
5
+ * @param {string} href - Optional. If provided, renders an <a> tag instead of <button>.
6
+ * @param {'button'|'submit'|'reset'} type - Optional. The HTML button type. Default is 'button'.
7
+ * @param {string} baseColor - Optional. Base surface color. Default is 'var(--c-bg-2, #111827)'.
8
+ * @param {'convex'|'concave'} variant - Optional. The visual style variant. Default is 'convex'.
9
+ * @param {'sm'|'md'|'lg'} size - Optional. The size variant of the button. Default is 'md'.
10
+ * @param {boolean} disabled - Optional. Whether the button is disabled. Default is false.
11
+ */
2
12
  interface Props {
3
13
  href?: string;
4
14
  type?: 'button' | 'submit' | 'reset';
@@ -1,4 +1,14 @@
1
1
  ---
2
+ /**
3
+ * PulseButton — A button with a persistent circular pulse effect to draw attention.
4
+ *
5
+ * @param {string} href - Optional. If provided, renders an <a> tag instead of <button>.
6
+ * @param {'button'|'submit'|'reset'} type - Optional. The HTML button type. Default is 'button'.
7
+ * @param {'primary'|'secondary'|'ghost'} variant - Optional. The visual style variant. Default is 'primary'.
8
+ * @param {'sm'|'md'|'lg'} size - Optional. The size variant of the button. Default is 'md'.
9
+ * @param {string} color - Optional. Brand tone base for pulsating aura.
10
+ * @param {boolean} disabled - Optional. Whether the button is disabled. Default is false.
11
+ */
2
12
  interface Props {
3
13
  href?: string;
4
14
  type?: 'button' | 'submit' | 'reset';
@@ -1,4 +1,13 @@
1
1
  ---
2
+ /**
3
+ * RetroArcadeButton — An 8-bit style arcade button with chunky borders and pixelated interactions.
4
+ *
5
+ * @param {string} href - Optional. If provided, renders an <a> tag instead of <button>.
6
+ * @param {'button'|'submit'|'reset'} type - Optional. The HTML button type. Default is 'button'.
7
+ * @param {'primary'|'secondary'|'ghost'} variant - Optional. The visual style variant. Default is 'primary'.
8
+ * @param {'sm'|'md'|'lg'} size - Optional. The size variant of the button. Default is 'md'.
9
+ * @param {boolean} disabled - Optional. Whether the button is disabled. Default is false.
10
+ */
2
11
  interface Props {
3
12
  href?: string;
4
13
  type?: 'button' | 'submit' | 'reset';
@@ -1,4 +1,13 @@
1
1
  ---
2
+ /**
3
+ * RetroShadowButton — A sharp-edged neo-brutalist button with a thick solid block shadow.
4
+ *
5
+ * @param {string} href - Optional. If provided, renders an <a> tag instead of <button>.
6
+ * @param {'button'|'submit'|'reset'} type - Optional. The HTML button type. Default is 'button'.
7
+ * @param {'pink'|'cyan'|'yellow'|'lime'} variant - Optional. The visual highly saturated retro style variant. Default is 'pink'.
8
+ * @param {'sm'|'md'|'lg'} size - Optional. The size variant of the button. Default is 'md'.
9
+ * @param {boolean} disabled - Optional. Whether the button is disabled. Default is false.
10
+ */
2
11
  interface Props {
3
12
  href?: string;
4
13
  type?: 'button' | 'submit' | 'reset';
@@ -1,4 +1,13 @@
1
1
  ---
2
+ /**
3
+ * ShimmerButton — A clean, elegant button with a continuous diagonal shimmer sweeping animation.
4
+ *
5
+ * @param {string} href - Optional. If provided, renders an <a> tag instead of <button>.
6
+ * @param {'button'|'submit'|'reset'} type - Optional. The HTML button type. Default is 'button'.
7
+ * @param {'primary'|'secondary'|'ghost'} variant - Optional. The visual style variant. Default is 'primary'.
8
+ * @param {'sm'|'md'|'lg'} size - Optional. The size variant of the button. Default is 'md'.
9
+ * @param {boolean} disabled - Optional. Whether the button is disabled. Default is false.
10
+ */
2
11
  interface Props {
3
12
  href?: string;
4
13
  type?: 'button' | 'submit' | 'reset';
@@ -1,4 +1,13 @@
1
1
  ---
2
+ /**
3
+ * ShinyButton — A button with a metallic shine effect that sweeps across on hover.
4
+ *
5
+ * @param {string} href - Optional. If provided, renders an <a> tag instead of <button>.
6
+ * @param {'button'|'submit'|'reset'} type - Optional. The HTML button type. Default is 'button'.
7
+ * @param {'primary'|'secondary'|'ghost'} variant - Optional. The visual style variant. Default is 'primary'.
8
+ * @param {'sm'|'md'|'lg'} size - Optional. The size variant of the button. Default is 'md'.
9
+ * @param {boolean} disabled - Optional. Whether the button is disabled. Default is false.
10
+ */
2
11
  interface Props {
3
12
  href?: string;
4
13
  type?: 'button' | 'submit' | 'reset';
@@ -1,4 +1,14 @@
1
1
  ---
2
+ /**
3
+ * TiltGlowButton — An interactive 3D button that tilts towards the cursor with dynamic lighting.
4
+ *
5
+ * @param {string} href - Optional. If provided, renders an <a> tag instead of <button>.
6
+ * @param {'button'|'submit'|'reset'} type - Optional. The HTML button type. Default is 'button'.
7
+ * @param {string} primaryColor - Optional. The primary light/gradient effect color.
8
+ * @param {string} secondaryColor - Optional. The secondary lighting/gradient reflection color.
9
+ * @param {'sm'|'md'|'lg'} size - Optional. The size variant of the button. Default is 'md'.
10
+ * @param {boolean} disabled - Optional. Whether the button is disabled. Default is false.
11
+ */
2
12
  interface Props {
3
13
  href?: string;
4
14
  type?: 'button' | 'submit' | 'reset';
@@ -1,18 +1,51 @@
1
1
  ---
2
+ /**
3
+ * BlogHorizontalCard — Landscape card layout for blog feeds or news items.
4
+ *
5
+ * @param {string} title - The blog post title.
6
+ * @param {string} description - Brief summary or excerpt.
7
+ * @param {string} tag - Featured label or category (e.g. "Tutorial").
8
+ * @param {string} thumbUrl - Optional thumbnail image URL.
9
+ */
10
+ interface Props {
11
+ title: string;
12
+ description: string;
13
+ tag: string;
14
+ thumbUrl?: string;
15
+ }
16
+
17
+ const { title, description, tag, thumbUrl } = Astro.props;
2
18
  ---
3
- <div class="blog-h-card">
4
- <div class="thumb"></div>
5
- <div class="content">
6
- <span class="tag">Tutorial</span>
7
- <h4>Building with Astro components</h4>
8
- <p>Learn how to scale your project with modular registry files.</p>
19
+
20
+ <article class="blog-h-card">
21
+ <div class="blog-h-card__thumb" style={thumbUrl ? `background-image: url('${thumbUrl}'); background-size: cover;` : ''}></div>
22
+ <div class="blog-h-card__content">
23
+ <span class="blog-h-card__tag">{tag}</span>
24
+ <h4 class="blog-h-card__title">{title}</h4>
25
+ <p class="blog-h-card__desc">{description}</p>
9
26
  </div>
10
- </div>
27
+ </article>
28
+
11
29
  <style>
12
- .blog-h-card { display: flex; gap: 1.5rem; background: rgba(255,255,255,0.02); border: 1px solid rgba(255,255,255,0.1); border-radius: 16px; overflow: hidden; }
13
- .thumb { width: 150px; background: #1e293b; flex-shrink: 0; }
14
- .content { padding: 1.2rem; }
15
- h4 { color: #fff; margin: 0.5rem 0; }
16
- p { font-size: 0.85rem; color: #94a3b8; }
17
- .tag { font-size: 0.7rem; color: #818cf8; font-weight: 700; text-transform: uppercase; }
30
+ .blog-h-card {
31
+ display: flex; gap: var(--sp-6, 1.5rem);
32
+ background: var(--c-bg-elev, rgba(255,255,255,0.02));
33
+ border: 1px solid var(--c-border, rgba(255,255,255,0.1));
34
+ border-radius: var(--r-lg, 16px);
35
+ overflow: hidden;
36
+ }
37
+ .blog-h-card__thumb {
38
+ width: 150px;
39
+ background-color: var(--c-bg, #1e293b);
40
+ flex-shrink: 0;
41
+ }
42
+ .blog-h-card__content { padding: var(--sp-5, 1.2rem); }
43
+ .blog-h-card__title { color: var(--c-text-1, #fff); margin: 0.5rem 0; font-size: 1.1rem; }
44
+ .blog-h-card__desc { font-size: 0.85rem; color: var(--c-text-2, #94a3b8); margin: 0; }
45
+ .blog-h-card__tag { font-size: 0.7rem; color: var(--c-primary, #818cf8); font-weight: 700; text-transform: uppercase; }
46
+
47
+ @media (max-width: 600px) {
48
+ .blog-h-card { flex-direction: column; }
49
+ .blog-h-card__thumb { width: 100%; height: 180px; }
50
+ }
18
51
  </style>
@@ -1,12 +1,56 @@
1
1
  ---
2
+ /**
3
+ * CyberFeatureCard — A feature card with sharp angles and neon stroke animations.
4
+ *
5
+ * @param {string} title - The main headline of the feature card.
6
+ * @param {string} subtitle - Optional description context.
7
+ */
8
+ interface Props {
9
+ title: string;
10
+ subtitle?: string;
11
+ }
12
+
13
+ const { title, subtitle } = Astro.props;
2
14
  ---
15
+
3
16
  <div class="cyber-card">
4
- <div class="glitch-line"></div>
5
- <h3>System Core</h3>
6
- <p>Advanced neural processing activated.</p>
17
+ <div class="cyber-card__glitch-line"></div>
18
+ <h3 class="cyber-card__title">{title}</h3>
19
+ {subtitle && <p class="cyber-card__subtitle">{subtitle}</p>}
20
+ <slot />
7
21
  </div>
22
+
8
23
  <style>
9
- .cyber-card { background: #000; color: #00e0ff; border: 1px solid #ff003c; padding: 1.5rem; clip-path: polygon(0 0, 100% 0, 100% 85%, 85% 100%, 0 100%); position: relative; }
10
- .glitch-line { position: absolute; height: 1px; width: 100%; background: #ff003c; top: 10%; left: 0; opacity: 0.5; animation: glitch 4s infinite; }
11
- @keyframes glitch { 0%, 100% { top: 10%; } 50% { top: 90%; } }
24
+ .cyber-card {
25
+ background: var(--c-bg-elev, #000);
26
+ color: var(--c-text-1, #00e0ff);
27
+ border: 1px solid var(--c-primary, #ff003c);
28
+ padding: var(--sp-6, 1.5rem);
29
+ clip-path: polygon(0 0, 100% 0, 100% 85%, 85% 100%, 0 100%);
30
+ position: relative;
31
+ }
32
+ .cyber-card__glitch-line {
33
+ position: absolute;
34
+ height: 1px;
35
+ width: 100%;
36
+ background: var(--c-primary, #ff003c);
37
+ top: 10%; left: 0;
38
+ opacity: 0.5;
39
+ animation: glitch-anim 4s infinite;
40
+ }
41
+ .cyber-card__title {
42
+ margin: 0 0 0.5rem;
43
+ font-size: 1.25rem;
44
+ color: var(--c-text-1);
45
+ }
46
+ .cyber-card__subtitle {
47
+ margin: 0;
48
+ font-size: 0.9rem;
49
+ color: var(--c-text-2, #ccc);
50
+ }
51
+
52
+ @keyframes glitch-anim {
53
+ 0%, 100% { top: 10%; }
54
+ 50% { top: 90%; }
55
+ }
12
56
  </style>
@@ -1,24 +1,77 @@
1
1
  ---
2
+ /**
3
+ * EcommerceProductCard — Commercial card with price, rating and action buttons.
4
+ *
5
+ * @param {string} title - The product name.
6
+ * @param {string} price - The parsed price string (e.g. "$299").
7
+ * @param {string} imageUrl - The URL mapping to the product's thumbnail.
8
+ * @param {string} tag - Optional. The highlight bubble tag (e.g. "New").
9
+ * @param {string} rating - Optional. Formatted rating string.
10
+ * @param {string} ctaText - Optional. Label for the call to action button. Default is "Add".
11
+ */
12
+ interface Props {
13
+ title: string;
14
+ price: string;
15
+ imageUrl?: string;
16
+ tag?: string;
17
+ rating?: string;
18
+ ctaText?: string;
19
+ }
20
+
21
+ const {
22
+ title,
23
+ price,
24
+ imageUrl,
25
+ tag,
26
+ rating,
27
+ ctaText = 'Add'
28
+ } = Astro.props;
2
29
  ---
30
+
3
31
  <div class="prod-card">
4
- <div class="image"></div>
5
- <div class="info">
6
- <div class="meta"><span>New</span><span>5.0 ★</span></div>
7
- <h4>Premium Headphones</h4>
8
- <div class="bot">
9
- <span class="price">$299</span>
10
- <button>Add</button>
32
+ <div class="prod-card__image" style={imageUrl ? `background-image: url('${imageUrl}'); background-size: cover;` : ''}></div>
33
+ <div class="prod-card__info">
34
+ <div class="prod-card__meta">
35
+ {tag ? <span>{tag}</span> : <span></span>}
36
+ {rating ? <span>{rating}</span> : null}
37
+ </div>
38
+ <h4 class="prod-card__title">{title}</h4>
39
+ <div class="prod-card__bot">
40
+ <span class="prod-card__price">{price}</span>
41
+ <button class="prod-card__cta" type="button">{ctaText}</button>
11
42
  </div>
12
43
  </div>
13
44
  </div>
45
+
14
46
  <style>
15
- .prod-card { background: #0f172a; border-radius: 16px; border: 1px solid rgba(255,255,255,0.1); overflow: hidden; transition: 0.3s; }
16
- .prod-card:hover { border-color: #6366f1; transform: translateY(-3px); }
17
- .image { height: 180px; background: #1e293b; }
18
- .info { padding: 1.25rem; }
19
- .meta { display: flex; justify-content: space-between; font-size: 0.7rem; color: #818cf8; font-weight: 700; margin-bottom: 0.5rem; }
20
- h4 { color: #fff; margin: 0; font-size: 1.1rem; }
21
- .bot { display: flex; justify-content: space-between; align-items: center; margin-top: 1.25rem; }
22
- .price { font-weight: 800; color: #fff; font-size: 1.25rem; }
23
- button { background: #6366f1; border: none; color: #fff; padding: 0.5rem 1rem; border-radius: 8px; font-weight: 600; cursor: pointer; }
47
+ .prod-card {
48
+ background: var(--c-bg-elev, #0f172a);
49
+ border-radius: var(--r-lg, 16px);
50
+ border: 1px solid var(--c-border, rgba(255,255,255,0.1));
51
+ overflow: hidden;
52
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.3s ease;
53
+ }
54
+ .prod-card:hover {
55
+ border-color: var(--c-primary, #6366f1);
56
+ transform: translateY(-3px);
57
+ }
58
+ .prod-card__image {
59
+ height: 180px;
60
+ background-color: var(--c-bg, #1e293b);
61
+ }
62
+ .prod-card__info { padding: var(--sp-5, 1.25rem); }
63
+ .prod-card__meta {
64
+ display: flex; justify-content: space-between;
65
+ font-size: 0.75rem; color: var(--c-primary-light, #818cf8);
66
+ font-weight: 700; margin-bottom: 0.5rem;
67
+ }
68
+ .prod-card__title { color: var(--c-text-1, #fff); margin: 0; font-size: 1.1rem; }
69
+ .prod-card__bot { display: flex; justify-content: space-between; align-items: center; margin-top: 1.25rem; }
70
+ .prod-card__price { font-weight: 800; color: var(--c-text-1, #fff); font-size: 1.25rem; }
71
+ .prod-card__cta {
72
+ background: var(--c-primary, #6366f1); border: none; color: #fff;
73
+ padding: 0.5rem 1.2rem; border-radius: var(--r-md, 8px);
74
+ font-weight: 600; cursor: pointer; transition: 0.2s;
75
+ }
76
+ .prod-card__cta:hover { filter: brightness(1.1); }
24
77
  </style>
@@ -1,4 +1,12 @@
1
1
  ---
2
+ /**
3
+ * GlassCard — A versatile glassmorphism card with hover lift effect and gradient border.
4
+ *
5
+ * @param {string} title - Optional title for the glass card header.
6
+ * @param {string} subtitle - Optional description below the title.
7
+ * @param {boolean} hoverable - Whether the card lifts on hover. Default is true.
8
+ * @param {'sm'|'md'|'lg'} padding - Internal padding control. Default is 'md'.
9
+ */
2
10
  interface Props { title?: string; subtitle?: string; hoverable?: boolean; padding?: 'sm' | 'md' | 'lg'; }
3
11
  const { title, subtitle, hoverable = true, padding = 'md' } = Astro.props;
4
12
  ---
@@ -1,19 +1,60 @@
1
1
  ---
2
+ /**
3
+ * GlassEventCard — Vibrant card for events with date badge and glass effect.
4
+ *
5
+ * @param {string|number} day - The event date numeric segment.
6
+ * @param {string} month - The event month string indicator.
7
+ * @param {string} title - The name of the event.
8
+ * @param {string} details - Additional string metadata (e.g location and time).
9
+ */
10
+ interface Props {
11
+ day: string | number;
12
+ month: string;
13
+ title: string;
14
+ details: string;
15
+ }
16
+
17
+ const { day, month, title, details } = Astro.props;
2
18
  ---
19
+
3
20
  <div class="event-card">
4
- <div class="date-badge"><span>24</span>OCT</div>
5
- <div class="event-info">
6
- <h3>Developer Meetup</h3>
7
- <p>San Francisco, CA · 6:00 PM</p>
21
+ <div class="event-card__badge">
22
+ <span class="event-card__day">{day}</span>
23
+ {month}
8
24
  </div>
9
- <button class="join-btn">+</button>
25
+ <div class="event-card__info">
26
+ <h3 class="event-card__title">{title}</h3>
27
+ <p class="event-card__details">{details}</p>
28
+ </div>
29
+ <button class="event-card__join" type="button" aria-label="Join event">+</button>
10
30
  </div>
31
+
11
32
  <style>
12
- .event-card { display: flex; align-items: center; gap: 1rem; padding: 1.25rem; background: rgba(255,255,255,0.04); backdrop-filter: blur(10px); border: 1px solid rgba(255,255,255,0.1); border-radius: 20px; }
13
- .date-badge { background: #6366f1; color: #fff; width: 50px; height: 60px; display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 0.7rem; font-weight: 800; border-radius: 12px; }
14
- .date-badge span { font-size: 1.2rem; line-height: 1; }
15
- .event-info h3 { font-size: 1rem; color: #fff; margin: 0; }
16
- .event-info p { font-size: 0.8rem; color: #94a3b8; margin: 2px 0 0; }
17
- .join-btn { margin-left: auto; width: 40px; height: 40px; border-radius: 50%; border: 1px solid rgba(255,255,255,0.2); background: none; color: #fff; font-size: 1.2rem; cursor: pointer; transition: 0.2s; }
18
- .join-btn:hover { background: #fff; color: #000; }
33
+ .event-card {
34
+ display: flex; align-items: center; gap: var(--sp-4, 1rem);
35
+ padding: var(--sp-5, 1.25rem);
36
+ background: var(--c-bg-elev, rgba(255,255,255,0.04));
37
+ backdrop-filter: blur(10px);
38
+ border: 1px solid var(--c-border, rgba(255,255,255,0.1));
39
+ border-radius: var(--r-xl, 20px);
40
+ }
41
+ .event-card__badge {
42
+ background: var(--c-primary, #6366f1); color: #fff;
43
+ width: 50px; height: 60px;
44
+ display: flex; flex-direction: column; align-items: center; justify-content: center;
45
+ font-size: 0.7rem; font-weight: 800; border-radius: var(--r-md, 12px);
46
+ text-transform: uppercase;
47
+ }
48
+ .event-card__day { font-size: 1.2rem; line-height: 1; margin-bottom: 2px; }
49
+ .event-card__info { flex: 1; }
50
+ .event-card__title { font-size: 1rem; color: var(--c-text-1, #fff); margin: 0; }
51
+ .event-card__details { font-size: 0.8rem; color: var(--c-text-2, #94a3b8); margin: 2px 0 0; }
52
+ .event-card__join {
53
+ margin-left: auto; width: 40px; height: 40px;
54
+ border-radius: var(--r-full, 50%);
55
+ border: 1px solid var(--c-border, rgba(255,255,255,0.2));
56
+ background: none; color: var(--c-text-1, #fff);
57
+ font-size: 1.2rem; cursor: pointer; transition: 0.2s;
58
+ }
59
+ .event-card__join:hover { background: var(--c-text-1, #fff); color: var(--c-bg, #000); }
19
60
  </style>
@@ -1,16 +1,53 @@
1
1
  ---
2
+ /**
3
+ * GlowPortfolioCard — Card with a hovering background glow that follows the card edges.
4
+ *
5
+ * @param {string} title - Project title heading.
6
+ * @param {string} subtitle - Project metadata (e.g. "Web design / 2024").
7
+ * @param {string} glowColor - Optional. Hex color for the animated border glow. Default is '#6366f1'.
8
+ */
9
+ interface Props {
10
+ title: string;
11
+ subtitle: string;
12
+ glowColor?: string;
13
+ }
14
+
15
+ const { title, subtitle, glowColor = 'var(--c-primary, #6366f1)' } = Astro.props;
2
16
  ---
3
- <div class="glow-wrap">
17
+
18
+ <div class="glow-wrap" style={`--glow-color: ${glowColor};`}>
4
19
  <div class="glow-content">
5
- <h3>Project Title</h3>
6
- <p>Web design / 2024</p>
20
+ <h3 class="glow-content__title">{title}</h3>
21
+ <p class="glow-content__subtitle">{subtitle}</p>
22
+ <slot />
7
23
  </div>
8
24
  </div>
25
+
9
26
  <style>
10
- .glow-wrap { position: relative; padding: 2px; border-radius: 20px; background: rgba(255,255,255,0.1); overflow: hidden; }
11
- .glow-wrap::before { content: ''; position: absolute; inset: -50%; background: conic-gradient(from 0deg, transparent, #6366f1, transparent); animation: rotate 4s linear infinite; }
12
- .glow-content { position: relative; background: #080b14; padding: 2rem; border-radius: 18px; z-index: 1; text-align: center; }
13
- h3 { margin: 0; color: #fff; }
14
- p { color: #94a3b8; font-size: 0.9rem; }
15
- @keyframes rotate { 100% { transform: rotate(360deg); } }
27
+ .glow-wrap {
28
+ position: relative;
29
+ padding: 2px;
30
+ border-radius: var(--r-xl, 20px);
31
+ background: var(--c-border, rgba(255,255,255,0.1));
32
+ overflow: hidden;
33
+ }
34
+ .glow-wrap::before {
35
+ content: '';
36
+ position: absolute;
37
+ inset: -50%;
38
+ background: conic-gradient(from 0deg, transparent, var(--glow-color), transparent);
39
+ animation: rotate-glow 4s linear infinite;
40
+ }
41
+ .glow-content {
42
+ position: relative;
43
+ background: var(--c-bg, #080b14);
44
+ padding: var(--sp-8, 2rem);
45
+ border-radius: calc(var(--r-xl, 20px) - 2px);
46
+ z-index: 1;
47
+ text-align: center;
48
+ }
49
+ .glow-content__title { margin: 0; color: var(--c-text-1, #fff); font-size: 1.25rem; }
50
+ .glow-content__subtitle { color: var(--c-text-2, #94a3b8); font-size: 0.9rem; margin-top: 0.5rem; }
51
+
52
+ @keyframes rotate-glow { 100% { transform: rotate(360deg); } }
16
53
  </style>
@@ -1,17 +1,55 @@
1
1
  ---
2
+ /**
3
+ * InteractiveTiltCard — Card that tilts in 3D space based on mouse position.
4
+ *
5
+ * @param {string} title - The card's heading text.
6
+ * @param {string} description - The descriptive paragraph attached to the card.
7
+ */
8
+ interface Props {
9
+ title: string;
10
+ description: string;
11
+ }
12
+
13
+ const { title, description } = Astro.props;
2
14
  ---
15
+
3
16
  <div class="tilt-card-wrap">
4
17
  <div class="tilt-card-inner">
5
- <h3>3D Hover</h3>
6
- <p>Move your mouse over me to see the magic effect.</p>
18
+ <h3 class="tilt-card__title">{title}</h3>
19
+ <p class="tilt-card__desc">{description}</p>
7
20
  </div>
8
21
  </div>
22
+
9
23
  <style>
10
- .tilt-card-wrap { perspective: 1000px; width: 100%; max-width: 300px; }
11
- .tilt-card-inner { background: #1e293b; padding: 3rem; border-radius: 24px; color: #fff; text-align: center; border: 1px solid rgba(255,255,255,0.1); transform-style: preserve-3d; transition: transform 0.1s; }
12
- h3 { transform: translateZ(50px); font-size: 1.5rem; color: #818cf8; }
13
- p { transform: translateZ(30px); color: #94a3b8; font-size: 0.9rem; margin-top: 1rem; }
24
+ .tilt-card-wrap {
25
+ perspective: 1000px;
26
+ width: 100%;
27
+ max-width: 300px;
28
+ }
29
+ .tilt-card-inner {
30
+ background: var(--c-bg-elev, #1e293b);
31
+ padding: var(--sp-12, 3rem);
32
+ border-radius: var(--r-xl, 24px);
33
+ color: var(--c-text-1, #fff);
34
+ text-align: center;
35
+ border: 1px solid var(--c-border, rgba(255,255,255,0.1));
36
+ transform-style: preserve-3d;
37
+ transition: transform 0.1s;
38
+ }
39
+ .tilt-card__title {
40
+ transform: translateZ(50px);
41
+ font-size: 1.5rem;
42
+ color: var(--c-primary, #818cf8);
43
+ margin: 0;
44
+ }
45
+ .tilt-card__desc {
46
+ transform: translateZ(30px);
47
+ color: var(--c-text-2, #94a3b8);
48
+ font-size: 0.9rem;
49
+ margin-top: 1rem;
50
+ }
14
51
  </style>
52
+
15
53
  <script>
16
54
  document.querySelectorAll('.tilt-card-inner').forEach(card => {
17
55
  card.addEventListener('mousemove', e => {
@@ -20,6 +58,8 @@
20
58
  const y = ((e as MouseEvent).clientY - rect.top - rect.height/2) / -10;
21
59
  (card as HTMLElement).style.transform = `rotateY(${x}deg) rotateX(${y}deg)`;
22
60
  });
23
- card.addEventListener('mouseleave', () => (card as HTMLElement).style.transform = 'rotateY(0deg) rotateX(0deg)');
61
+ card.addEventListener('mouseleave', () => {
62
+ (card as HTMLElement).style.transform = 'rotateY(0deg) rotateX(0deg)';
63
+ });
24
64
  });
25
65
  </script>
@@ -1,15 +1,46 @@
1
1
  ---
2
+ /**
3
+ * KanbanItemCard — Small card optimized for list-based project management.
4
+ *
5
+ * @param {string} title - The description of the ticket/task.
6
+ * @param {string} priority - Priority level label (e.g. "Prio").
7
+ * @param {string} tag - Contextual label tag (e.g. "SEO", "Bug").
8
+ */
9
+ interface Props {
10
+ title: string;
11
+ priority?: string;
12
+ tag?: string;
13
+ }
14
+
15
+ const { title, priority, tag } = Astro.props;
2
16
  ---
17
+
3
18
  <div class="k-item">
4
- <p>Update site SEO metadata</p>
5
- <div class="badges"><span class="b-prio">Prio</span><span class="b-opt">SEO</span></div>
19
+ <p class="k-item__title">{title}</p>
20
+ <div class="k-item__badges">
21
+ {priority && <span class="k-item__badge k-item__badge--prio">{priority}</span>}
22
+ {tag && <span class="k-item__badge k-item__badge--opt">{tag}</span>}
23
+ </div>
6
24
  </div>
25
+
7
26
  <style>
8
- .k-item { background: #111; border: 1px solid #333; padding: 1rem; border-radius: 8px; cursor: pointer; transition: 0.2s; }
9
- .k-item:hover { border-color: #6366f1; transform: scale(1.02); }
10
- p { margin: 0 0 0.75rem; font-size: 0.85rem; color: #fff; font-weight: 500; }
11
- .badges { display: flex; gap: 4px; }
12
- .badges span { font-size: 0.6rem; font-weight: 700; padding: 2px 6px; border-radius: 4px; }
13
- .b-prio { background: rgba(245,158,11,0.1); color: #fbbf24; }
14
- .b-opt { background: rgba(52,211,153,0.1); color: #34d399; }
27
+ .k-item {
28
+ background: var(--c-bg-elev, #111);
29
+ border: 1px solid var(--c-border, #333);
30
+ padding: var(--sp-4, 1rem);
31
+ border-radius: var(--r-md, 8px);
32
+ cursor: pointer;
33
+ transition: 0.2s;
34
+ }
35
+ .k-item:hover {
36
+ border-color: var(--c-primary, #6366f1);
37
+ transform: scale(1.02);
38
+ box-shadow: 0 4px 12px rgba(0,0,0,0.1);
39
+ }
40
+ .k-item__title { margin: 0 0 0.75rem; font-size: 0.85rem; color: var(--c-text-1, #fff); font-weight: 500; line-height: 1.4; }
41
+ .k-item__badges { display: flex; gap: 4px; flex-wrap: wrap; }
42
+ .k-item__badge { font-size: 0.65rem; font-weight: 700; padding: 2px 6px; border-radius: 4px; text-transform: uppercase; }
43
+
44
+ .k-item__badge--prio { background: rgba(245,158,11,0.1); color: #fbbf24; }
45
+ .k-item__badge--opt { background: rgba(52,211,153,0.1); color: #34d399; }
15
46
  </style>