Update back-to-top button to accommodate properly,
even if the max-width of the blog post is updated.
Uses `fixed` position on mobile and `sticky` position
on large screens.
* refactor: extract redundant max-width into utility
Extract redundant max-width into a universal tailwind
utility class. By doing so, the width of the layout
in different pages can be customized easily.
* docs: update docs for modifying `max-w-app` utility
* refactor: replace embedded svg with svg icon
* feat: add global and per-post timezone support
- add `SITE.timezone` in config to define a global default timezone.
- allow per-post timezone overrides via `timezone` in frontmatter.
- update date formatting logic to use the correct timezone when rendering timestamps.
- ensure that posts without a timezone fallback to `SITE.timezone`.
- improve consistency between local and deployed timezones.
* refactor: replace `LOCALE` constant with `SITE.lang`
* docs: update guides
* fix: update code word-break inside markdown table
Closes#466
* fix: broken editPost link and update editPost logic
Fixed broken editPost link. Removed the ability to update
the editPost link inside each blog post for consistency.
The editPost button per blog post can still be hidden.
* docs: update docs for editPost
Blog posts can now be structured into subdirectories, which determine their slugs.
Example:
- `/src/data/blog/2025/testing.md` → `/posts/2025/testing`
Directories prefixed with `_` will be excluded from the slug.
Example:
- `/src/data/blog/_examples/tailwind-typography.md` → `/posts/tailwind-typography`
Closes#470, #366
* fix: add an option to disable dynamic OG image generation
Add new `dynamicOgImage` option in the `SITE` object inside
`src/config.ts` file to disable auto og-image generation during build.
Resolves#428
* docs: update guides for `SITE.dynamicOgImage` option
* chore: upgrade ESLint to v9 and update configurations
Upgrade ESLint and configure and update ESLint rules.
* refactor: update code to comply with new ESLint v9 rules
Add trailing slash to links for improved consistency with RSS links and to avoid unnecessary redirects.
---------
Co-authored-by: satnaing <satnaingdev@gmail.com>
Update back button in PostDetails.astro to redirect to home page when
there's no route history.
If a blog post url is pasted in the browser and there's no route history
,prior to this commit, back button did not work as expected.
Now, if there's somewhere to go back, the back button will go back to the
previous route.
If not, the back button will redirect to home page.
* Add share links
* refactor: update and rename Sharebutton to ShareLinks
- rename SOCIALS to shareLinks to avoid confusion with `src/config.ts > SOCIALS`
- fix type error related with shareLinks
- add `linkTitle` in shareLinks for better accessibility
- update styles to looks good in all devices
* refactor: place ShareLinks next to `back to top`
- place ShareLinks at the bottom (next to `back to top`)
- update styles for ShareLinks and Back to Top button
---------
Co-authored-by: Sat Naing <satnaingdev@gmail.com>
* feat: copy button on snippet code
* refactor: update func name, styles and refactor backToTop
Rename the function name `copyButton` to `attachCopyButtons`. Update copy button styles. Fix broken `backToTop` function by attaching `astro:after-swap` event listener.
---------
Co-authored-by: Sat Naing <satnaingdev@gmail.com>
* feat: add pagination in tag posts
Implement pagination in tag posts. Refactor and extract pagination logic and pagination component.
Closes: #152
* fix: update breadcrumbs for updated tag pagination
Update slugified titles to be unslugified in the tag page. This is for better SEO and better a11y. Url and tag elelemnts will still be slugified.
Closes: #179
* feat: add modified datetime in blog posts
Add modDatetime in blogSchema. Update Datetime component to accept modDatetime. Update sorting logic. Rename datetime to pubDatetime in Datetime component.
Closes: #134
* feat: add published_time & modified_time meta tags
* docs: update related blog posts to be up-to-date
* fix: remove extra spaces in breadcrumbs
* feat: use predictable slug for card transition
* feat: enable view transitions in search card
* refactor: use Card.tsx instead of Card.astro
* refactor: handle card styling in component
* refactor: remove unused class name
---------
Co-authored-by: Sat Naing <satnaingdev@gmail.com>