@rimelight/ui 0.0.2 → 0.0.3

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 (103) hide show
  1. package/package.json +5 -1
  2. package/src/components/carousel/carousel-script.ts +188 -188
  3. package/src/components/carousel/index.ts +1 -1
  4. package/src/components/input-otp/InputOtpTypes.ts +6 -6
  5. package/src/components/radio-group/RadioGroupTypes.ts +6 -6
  6. package/src/components/select/SelectTypes.ts +13 -13
  7. package/src/components/switch/SwitchTypes.ts +6 -6
  8. package/src/components/toast/index.ts +1 -1
  9. package/src/components/toast/toast-manager.ts +234 -234
  10. package/src/components/toggle/ToggleTypes.ts +14 -14
  11. package/src/config/cookies.ts +5 -5
  12. package/src/config/index.ts +3 -3
  13. package/src/config/links.ts +4 -4
  14. package/src/config/site.config.ts +45 -45
  15. package/src/domain/cms/index.ts +1 -1
  16. package/src/domain/cms/types.ts +20 -20
  17. package/src/domain/i18n/constants.ts +21 -21
  18. package/src/domain/i18n/cookie-storage.ts +13 -13
  19. package/src/domain/i18n/country-to-locale-map.ts +67 -67
  20. package/src/domain/i18n/fetcher.ts +268 -268
  21. package/src/domain/i18n/flags.ts +16 -16
  22. package/src/domain/i18n/format.ts +90 -90
  23. package/src/domain/i18n/index.ts +10 -10
  24. package/src/domain/i18n/middleware/i18n.ts +160 -160
  25. package/src/domain/i18n/resolve-locale.ts +55 -55
  26. package/src/domain/i18n/schema.ts +29 -29
  27. package/src/domain/index.ts +4 -4
  28. package/src/domain/seo/constants.ts +20 -20
  29. package/src/domain/seo/index.ts +3 -3
  30. package/src/domain/seo/services/index.ts +3 -3
  31. package/src/domain/seo/services/llms.ts +53 -53
  32. package/src/domain/seo/services/robots.ts +12 -12
  33. package/src/domain/seo/services/sitemap.ts +56 -56
  34. package/src/domain/seo/utils.ts +37 -37
  35. package/src/domain/theme/constants.ts +6 -6
  36. package/src/domain/theme/index.ts +2 -2
  37. package/src/domain/theme/schema.ts +10 -10
  38. package/src/env.d.ts +49 -49
  39. package/src/integrations/index.ts +1 -0
  40. package/src/integrations/sri.ts +92 -0
  41. package/src/lib/component-preview.ts +73 -73
  42. package/src/lib/index.ts +6 -6
  43. package/src/lib/remark/remark-modified-time.ts +13 -13
  44. package/src/lib/showcase-preview-elements.ts +408 -408
  45. package/src/lib/showcase-renderer.ts +218 -218
  46. package/src/lib/showcase-utils.ts +189 -189
  47. package/src/lib/turnstile.ts +35 -35
  48. package/src/lib/utils/starwind/positioning.ts +318 -318
  49. package/src/locales/de/blog.json +9 -9
  50. package/src/locales/de/common.json +19 -19
  51. package/src/locales/de/errors.json +6 -6
  52. package/src/locales/de/home.json +20 -20
  53. package/src/locales/de/messages.json +8 -8
  54. package/src/locales/de/nav.json +13 -13
  55. package/src/locales/de/projects.json +9 -9
  56. package/src/locales/de/services.json +43 -43
  57. package/src/locales/en/blog.json +9 -9
  58. package/src/locales/en/chat.json +29 -29
  59. package/src/locales/en/common.json +19 -19
  60. package/src/locales/en/cookie_notice.json +11 -11
  61. package/src/locales/en/editor.json +24 -24
  62. package/src/locales/en/errors.json +6 -6
  63. package/src/locales/en/home.json +20 -20
  64. package/src/locales/en/messages.json +8 -8
  65. package/src/locales/en/nav.json +13 -13
  66. package/src/locales/en/projects.json +9 -9
  67. package/src/locales/en/services.json +43 -43
  68. package/src/locales/es/blog.json +9 -9
  69. package/src/locales/es/common.json +19 -19
  70. package/src/locales/es/errors.json +6 -6
  71. package/src/locales/es/home.json +20 -20
  72. package/src/locales/es/messages.json +8 -8
  73. package/src/locales/es/nav.json +13 -13
  74. package/src/locales/es/projects.json +9 -9
  75. package/src/locales/es/services.json +43 -43
  76. package/src/locales/ja/blog.json +9 -9
  77. package/src/locales/ja/common.json +19 -19
  78. package/src/locales/ja/errors.json +6 -6
  79. package/src/locales/ja/home.json +20 -20
  80. package/src/locales/ja/messages.json +8 -8
  81. package/src/locales/ja/nav.json +13 -13
  82. package/src/locales/ja/projects.json +9 -9
  83. package/src/locales/ja/services.json +43 -43
  84. package/src/locales/pt/blog.json +9 -9
  85. package/src/locales/pt/chat.json +29 -29
  86. package/src/locales/pt/common.json +19 -19
  87. package/src/locales/pt/cookie_notice.json +11 -11
  88. package/src/locales/pt/editor.json +24 -24
  89. package/src/locales/pt/errors.json +6 -6
  90. package/src/locales/pt/home.json +20 -20
  91. package/src/locales/pt/messages.json +8 -8
  92. package/src/locales/pt/nav.json +13 -13
  93. package/src/locales/pt/projects.json +9 -9
  94. package/src/locales/pt/services.json +43 -43
  95. package/src/middleware/index.ts +1 -0
  96. package/src/middleware/sri.ts +76 -0
  97. package/src/utils/index.ts +2 -2
  98. package/src/utils/server/cookies.ts +98 -98
  99. package/src/utils/server/index.ts +1 -1
  100. package/src/utils/shared/deep-merge.ts +36 -36
  101. package/src/utils/shared/embed.ts +105 -105
  102. package/src/utils/shared/index.ts +3 -3
  103. package/src/utils/shared/parse-boolean.ts +14 -14
@@ -1,43 +1,43 @@
1
- {
2
- "meta_title": "サービス | ダニエル・マルキ",
3
- "hero_title": "プレミアムサービス",
4
- "hero_description": "ビジネスの成長を支援し、デジタル環境で際立つ高品質な開発・デザインサービスを提供します。",
5
- "capabilities_title": "主要サービス",
6
- "capabilities_description": "クライアントに提供している主要なサービスの概要です。",
7
- "web_dev_title": "ウェブ開発",
8
- "web_dev_description": "Astro、Vue、Nuxt などの最新技術を活用し、高パフォーマンスでアクセシブル、拡張性のあるウェブアプリケーションを構築します。",
9
- "ui_ux_title": "UI/UX デザイン",
10
- "ui_ux_description": "ユーザーエクスペリエンスとブランドアイデンティティに焦点を当て、直感的で視覚的に美しいユーザーインターフェースを作成します。",
11
- "perf_title": "パフォーマンス最適化",
12
- "perf_description": "速度、SEO、アクセシビリティについてウェブサイトを監査および最適化し、完璧な Lighthouse スコアを目指します。",
13
- "perf_security_title": "パフォーマンスとセキュリティ",
14
- "perf_security_description": "ユーザーは高速で安全な体験を受ける権利があります。瞬時に読み込み、すべてのデバイスで完璧に動作するウェブサイトを構築します。",
15
- "testimonials_title": "ユーザーの声",
16
- "testimonials_description": "Astronaut を使って次世代のウェブを構築している何千人もの開発者の仲間入りをしましょう。",
17
- "faq_title": "よくある質問",
18
- "faq_description": "Astronaut について、およびそれを使って素晴らしいものを構築する方法について知っておくべきすべてのこと。",
19
- "cta_title": "始める準備はできましたか?",
20
- "cta_description": "次の大きなプロジェクトで協力しましょう。現在、フリーランスの仕事やコンサルティングを受け付けています。",
21
- "cta_contact": "お問い合わせ",
22
- "cta_portfolio": "ポートフォリオを見る",
23
- "badge_ceo": "CEO",
24
- "badge_founder": "創設者",
25
- "badge_cto": "CTO",
26
- "badge_senior_ui": "シニア UI エンジニア",
27
- "badge_chef": "シェフ",
28
- "badge_product_designer": "プロダクトデザイナー",
29
- "testimonial_1": "Astronaut は間違いなく私がこれまで使った中で最高のボイラープレートです。速度とクリーンなアーキテクチャが、私の構築したい方法と完璧にマッチしています。",
30
- "testimonial_2": "コンポーネントライブラリと Tailwind 4 の扱い方は革新的です。記録的な速さでプロジェクトを立ち上げることができました。",
31
- "testimonial_3": "ついに、肥大化せず、必要なツールをすべて提供してくれるボイラープレートに出会えました。Cloudflare 上での SSR サポートは完璧です。",
32
- "testimonial_4": "あらゆるモダンなウェブプロジェクトにとって最高の出発点です。開発者体験はワールドクラスで、パフォーマンスは他に類を見ません。",
33
- "testimonial_5": "構造への細部へのこだわりが素晴らしいです。不必要な複雑さを加えることなく、すべてのベストプラクティスに従っています。",
34
- "testimonial_6": "すべてがとてもスムーズです!トランジション、コンポーネント、ロジック - すべてがうまく噛み合っています。最新のスタートアップにとって最良の決断でした。",
35
- "faq_category_general": "全般",
36
- "faq_q1": "Astronaut とは何ですか?",
37
- "faq_a1": "Astronaut は、速度、パフォーマンス、ベストプラクティスを念頭に置いて設計された、Astro 用のプロダクション対応ボイラープレートです。Tailwind CSS 4、Nuxt UI パターン、クリーンなアーキテクチャを使用しています。",
38
- "faq_q2": "どのように始めればよいですか?",
39
- "faq_a2": "リポジトリをクローンし、pnpm で依存関係をインストールして、開発サーバーを実行するだけです。プロジェクト構造は標準的な Astro なので、すぐに慣れることができます。",
40
- "faq_category_technical": "技術",
41
- "faq_q3": "サーバーサイドレンダリング (SSR) をサポートしていますか?",
42
- "faq_a3": "はい、Astronaut は SSR を完全にサポートしており、デフォルトで Cloudflare Workers へのデプロイ用に構成されています。静的な速度と動的なパワーの両方の利点を提供します。"
43
- }
1
+ {
2
+ "meta_title": "サービス | ダニエル・マルキ",
3
+ "hero_title": "プレミアムサービス",
4
+ "hero_description": "ビジネスの成長を支援し、デジタル環境で際立つ高品質な開発・デザインサービスを提供します。",
5
+ "capabilities_title": "主要サービス",
6
+ "capabilities_description": "クライアントに提供している主要なサービスの概要です。",
7
+ "web_dev_title": "ウェブ開発",
8
+ "web_dev_description": "Astro、Vue、Nuxt などの最新技術を活用し、高パフォーマンスでアクセシブル、拡張性のあるウェブアプリケーションを構築します。",
9
+ "ui_ux_title": "UI/UX デザイン",
10
+ "ui_ux_description": "ユーザーエクスペリエンスとブランドアイデンティティに焦点を当て、直感的で視覚的に美しいユーザーインターフェースを作成します。",
11
+ "perf_title": "パフォーマンス最適化",
12
+ "perf_description": "速度、SEO、アクセシビリティについてウェブサイトを監査および最適化し、完璧な Lighthouse スコアを目指します。",
13
+ "perf_security_title": "パフォーマンスとセキュリティ",
14
+ "perf_security_description": "ユーザーは高速で安全な体験を受ける権利があります。瞬時に読み込み、すべてのデバイスで完璧に動作するウェブサイトを構築します。",
15
+ "testimonials_title": "ユーザーの声",
16
+ "testimonials_description": "Astronaut を使って次世代のウェブを構築している何千人もの開発者の仲間入りをしましょう。",
17
+ "faq_title": "よくある質問",
18
+ "faq_description": "Astronaut について、およびそれを使って素晴らしいものを構築する方法について知っておくべきすべてのこと。",
19
+ "cta_title": "始める準備はできましたか?",
20
+ "cta_description": "次の大きなプロジェクトで協力しましょう。現在、フリーランスの仕事やコンサルティングを受け付けています。",
21
+ "cta_contact": "お問い合わせ",
22
+ "cta_portfolio": "ポートフォリオを見る",
23
+ "badge_ceo": "CEO",
24
+ "badge_founder": "創設者",
25
+ "badge_cto": "CTO",
26
+ "badge_senior_ui": "シニア UI エンジニア",
27
+ "badge_chef": "シェフ",
28
+ "badge_product_designer": "プロダクトデザイナー",
29
+ "testimonial_1": "Astronaut は間違いなく私がこれまで使った中で最高のボイラープレートです。速度とクリーンなアーキテクチャが、私の構築したい方法と完璧にマッチしています。",
30
+ "testimonial_2": "コンポーネントライブラリと Tailwind 4 の扱い方は革新的です。記録的な速さでプロジェクトを立ち上げることができました。",
31
+ "testimonial_3": "ついに、肥大化せず、必要なツールをすべて提供してくれるボイラープレートに出会えました。Cloudflare 上での SSR サポートは完璧です。",
32
+ "testimonial_4": "あらゆるモダンなウェブプロジェクトにとって最高の出発点です。開発者体験はワールドクラスで、パフォーマンスは他に類を見ません。",
33
+ "testimonial_5": "構造への細部へのこだわりが素晴らしいです。不必要な複雑さを加えることなく、すべてのベストプラクティスに従っています。",
34
+ "testimonial_6": "すべてがとてもスムーズです!トランジション、コンポーネント、ロジック - すべてがうまく噛み合っています。最新のスタートアップにとって最良の決断でした。",
35
+ "faq_category_general": "全般",
36
+ "faq_q1": "Astronaut とは何ですか?",
37
+ "faq_a1": "Astronaut は、速度、パフォーマンス、ベストプラクティスを念頭に置いて設計された、Astro 用のプロダクション対応ボイラープレートです。Tailwind CSS 4、Nuxt UI パターン、クリーンなアーキテクチャを使用しています。",
38
+ "faq_q2": "どのように始めればよいですか?",
39
+ "faq_a2": "リポジトリをクローンし、pnpm で依存関係をインストールして、開発サーバーを実行するだけです。プロジェクト構造は標準的な Astro なので、すぐに慣れることができます。",
40
+ "faq_category_technical": "技術",
41
+ "faq_q3": "サーバーサイドレンダリング (SSR) をサポートしていますか?",
42
+ "faq_a3": "はい、Astronaut は SSR を完全にサポートしており、デフォルトで Cloudflare Workers へのデプロイ用に構成されています。静的な速度と動的なパワーの両方の利点を提供します。"
43
+ }
@@ -1,9 +1,9 @@
1
- {
2
- "meta_title": "Blog | Daniel Marchi",
3
- "hero_title": "Blog",
4
- "hero_description": "Minhas reflexões ao longo da minha jornada como desenvolvedor.",
5
- "latest_article": "Artigo Mais Recente",
6
- "latest": "Último",
7
- "read_article": "Ler Artigo",
8
- "all_posts": "Todos os Artigos"
9
- }
1
+ {
2
+ "meta_title": "Blog | Daniel Marchi",
3
+ "hero_title": "Blog",
4
+ "hero_description": "Minhas reflexões ao longo da minha jornada como desenvolvedor.",
5
+ "latest_article": "Artigo Mais Recente",
6
+ "latest": "Último",
7
+ "read_article": "Ler Artigo",
8
+ "all_posts": "Todos os Artigos"
9
+ }
@@ -1,29 +1,29 @@
1
- {
2
- "title": "Entrar em uma Sala de Chat",
3
- "description": "Entre em uma sala para começar a conversar",
4
- "heading": "Chat em Tempo Real",
5
- "intro": "Entre em um nome de sala abaixo para participar de uma conversa. Cada sala é uma instância única de Durable Object!",
6
- "label": "Nome da Sala",
7
- "placeholder": "ex: geral, ajuda, cafe",
8
- "button": "Entrar na Sala",
9
- "room": {
10
- "title": "Sala de Chat",
11
- "connecting": "Conectando…",
12
- "connected": "Conectado",
13
- "disconnected": "Desconectado",
14
- "placeholder": "Digite uma mensagem…",
15
- "send": "Enviar",
16
- "system": {
17
- "joining": "Entrando na sala…",
18
- "error": "Erro de conexão",
19
- "joined": "entrou na sala",
20
- "left": "saiu da sala",
21
- "reconnecting": "Reconectando em {delay} segundos... (tentativa {attempt}/{max})",
22
- "fail_reconnect": "Falha ao reconectar. Por favor, atualize a página.",
23
- "no_connect": "Não é possível enviar mensagem: não conectado",
24
- "prompt_user": "Digite seu nome de usuário:",
25
- "you": "(Você)",
26
- "online_users": "Usuários Online:"
27
- }
28
- }
29
- }
1
+ {
2
+ "title": "Entrar em uma Sala de Chat",
3
+ "description": "Entre em uma sala para começar a conversar",
4
+ "heading": "Chat em Tempo Real",
5
+ "intro": "Entre em um nome de sala abaixo para participar de uma conversa. Cada sala é uma instância única de Durable Object!",
6
+ "label": "Nome da Sala",
7
+ "placeholder": "ex: geral, ajuda, cafe",
8
+ "button": "Entrar na Sala",
9
+ "room": {
10
+ "title": "Sala de Chat",
11
+ "connecting": "Conectando…",
12
+ "connected": "Conectado",
13
+ "disconnected": "Desconectado",
14
+ "placeholder": "Digite uma mensagem…",
15
+ "send": "Enviar",
16
+ "system": {
17
+ "joining": "Entrando na sala…",
18
+ "error": "Erro de conexão",
19
+ "joined": "entrou na sala",
20
+ "left": "saiu da sala",
21
+ "reconnecting": "Reconectando em {delay} segundos... (tentativa {attempt}/{max})",
22
+ "fail_reconnect": "Falha ao reconectar. Por favor, atualize a página.",
23
+ "no_connect": "Não é possível enviar mensagem: não conectado",
24
+ "prompt_user": "Digite seu nome de usuário:",
25
+ "you": "(Você)",
26
+ "online_users": "Usuários Online:"
27
+ }
28
+ }
29
+ }
@@ -1,19 +1,19 @@
1
- {
2
- "seo": {
3
- "title": "Zero-JS i18n Astro Starter para Cloudflare Workers",
4
- "description": "Lance apps multilíngues mais rápido sem o peso da hidratação. Integração total com Cloudflare Workers & KV, geração TypeScript automatizada e cache no edge configurado."
5
- },
6
- "nav": {
7
- "home": "Componentes & islands do Astro",
8
- "blog": "Exemplos de i18n com Markdown",
9
- "mobileButton": "Menu"
10
- },
11
- "footer": {
12
- "license": "Sob a licença MIT."
13
- },
14
- "notFound": {
15
- "title": "404 — Página não encontrada",
16
- "message": "A página que você procura não existe ou foi movida.",
17
- "backToHome": "Voltar para a página inicial"
18
- }
19
- }
1
+ {
2
+ "seo": {
3
+ "title": "Zero-JS i18n Astro Starter para Cloudflare Workers",
4
+ "description": "Lance apps multilíngues mais rápido sem o peso da hidratação. Integração total com Cloudflare Workers & KV, geração TypeScript automatizada e cache no edge configurado."
5
+ },
6
+ "nav": {
7
+ "home": "Componentes & islands do Astro",
8
+ "blog": "Exemplos de i18n com Markdown",
9
+ "mobileButton": "Menu"
10
+ },
11
+ "footer": {
12
+ "license": "Sob a licença MIT."
13
+ },
14
+ "notFound": {
15
+ "title": "404 — Página não encontrada",
16
+ "message": "A página que você procura não existe ou foi movida.",
17
+ "backToHome": "Voltar para a página inicial"
18
+ }
19
+ }
@@ -1,11 +1,11 @@
1
- {
2
- "title": "Política de Cookies",
3
- "description": "Este site não utiliza cookies, isto é um exemplo de como poderia funcionar no seu site de acordo com a sua",
4
- "privacy_policy": "Política de Privacidade",
5
- "reject_all": "Rejeitar Tudo",
6
- "accept_all": "Aceitar Tudo",
7
- "accepted_toast": "Cookies Aceitos",
8
- "accepted_description": "Você aceitou todos os cookies.",
9
- "rejected_toast": "Cookies Rejeitados",
10
- "rejected_description": "Você rejeitou todos os cookies."
11
- }
1
+ {
2
+ "title": "Política de Cookies",
3
+ "description": "Este site não utiliza cookies, isto é um exemplo de como poderia funcionar no seu site de acordo com a sua",
4
+ "privacy_policy": "Política de Privacidade",
5
+ "reject_all": "Rejeitar Tudo",
6
+ "accept_all": "Aceitar Tudo",
7
+ "accepted_toast": "Cookies Aceitos",
8
+ "accepted_description": "Você aceitou todos os cookies.",
9
+ "rejected_toast": "Cookies Rejeitados",
10
+ "rejected_description": "Você rejeitou todos os cookies."
11
+ }
@@ -1,24 +1,24 @@
1
- {
2
- "title": "Editor",
3
- "description": "Editor de documentos colaborativo em tempo real",
4
- "collaborative_editor": "Editor Colaborativo",
5
- "status": {
6
- "connecting": "Conectando…",
7
- "connected": "Conectado",
8
- "disconnected": "Desconectado"
9
- },
10
- "history": "Histórico",
11
- "version_history": "Histórico de Versões",
12
- "no_versions": "Nenhuma versão ainda.",
13
- "placeholder": "Comece a digitar... suas mudanças são sincronizadas em tempo real.",
14
- "word_count": {
15
- "word": "palavra",
16
- "words": "palavras",
17
- "character": "caractere",
18
- "characters": "caracteres"
19
- },
20
- "save": {
21
- "saved": "Salvo"
22
- },
23
- "restore_confirm": "Restaurar esta versão? O conteúdo atual será substituído."
24
- }
1
+ {
2
+ "title": "Editor",
3
+ "description": "Editor de documentos colaborativo em tempo real",
4
+ "collaborative_editor": "Editor Colaborativo",
5
+ "status": {
6
+ "connecting": "Conectando…",
7
+ "connected": "Conectado",
8
+ "disconnected": "Desconectado"
9
+ },
10
+ "history": "Histórico",
11
+ "version_history": "Histórico de Versões",
12
+ "no_versions": "Nenhuma versão ainda.",
13
+ "placeholder": "Comece a digitar... suas mudanças são sincronizadas em tempo real.",
14
+ "word_count": {
15
+ "word": "palavra",
16
+ "words": "palavras",
17
+ "character": "caractere",
18
+ "characters": "caracteres"
19
+ },
20
+ "save": {
21
+ "saved": "Salvo"
22
+ },
23
+ "restore_confirm": "Restaurar esta versão? O conteúdo atual será substituído."
24
+ }
@@ -1,6 +1,6 @@
1
- {
2
- "404_title": "Página Não Encontrada",
3
- "404_description": "A página que você está procurando não existe.",
4
- "500_title": "Erro Interno do Servidor",
5
- "500_description": "Algo deu errado do nosso lado. Por favor, tente novamente mais tarde."
6
- }
1
+ {
2
+ "404_title": "Página Não Encontrada",
3
+ "404_description": "A página que você está procurando não existe.",
4
+ "500_title": "Erro Interno do Servidor",
5
+ "500_description": "Algo deu errado do nosso lado. Por favor, tente novamente mais tarde."
6
+ }
@@ -1,20 +1,20 @@
1
- {
2
- "meta_title": "Daniel Marchi | Desenvolvedor Web",
3
- "meta_description": "Sou um desenvolvedor web especializado em Astro e websites de alta performance.",
4
- "hero_title": "Olá, eu sou Daniel Marchi",
5
- "hero_description": "Sou um desenvolvedor web especializado em Astro e websites de alta performance.",
6
- "hero_view_components": "Ver Componentes",
7
- "hero_contact_me": "Fale Comigo",
8
- "stack_title": "Web Moderna, Stack Moderna",
9
- "stack_description": "Ajudo indivíduos e empresas a construir aplicações web de alta performance distribuídas no edge. Da arquitetura ao deployment, garanto que o seu projeto seja construído para escala.",
10
- "stack_view_services": "Ver Serviços",
11
- "stack_resume": "Currículo",
12
- "marquee_title": "Construído e implementado com estas tecnologias incríveis:",
13
- "projects_title": "Projetos Recentes",
14
- "projects_description": "Uma seleção dos meus trabalhos técnicos mais recentes e projetos de código aberto.",
15
- "projects_view_all": "Ver Todos os Projetos",
16
- "cta_title": "Pronto para Construir Algo Incrível?",
17
- "cta_description": "Estou disponível para novos projetos e consultoria. Vamos trabalhar juntos para dar vida à sua visão.",
18
- "cta_contact": "Entre em Contato",
19
- "cta_resume": "Baixar Currículo"
20
- }
1
+ {
2
+ "meta_title": "Daniel Marchi | Desenvolvedor Web",
3
+ "meta_description": "Sou um desenvolvedor web especializado em Astro e websites de alta performance.",
4
+ "hero_title": "Olá, eu sou Daniel Marchi",
5
+ "hero_description": "Sou um desenvolvedor web especializado em Astro e websites de alta performance.",
6
+ "hero_view_components": "Ver Componentes",
7
+ "hero_contact_me": "Fale Comigo",
8
+ "stack_title": "Web Moderna, Stack Moderna",
9
+ "stack_description": "Ajudo indivíduos e empresas a construir aplicações web de alta performance distribuídas no edge. Da arquitetura ao deployment, garanto que o seu projeto seja construído para escala.",
10
+ "stack_view_services": "Ver Serviços",
11
+ "stack_resume": "Currículo",
12
+ "marquee_title": "Construído e implementado com estas tecnologias incríveis:",
13
+ "projects_title": "Projetos Recentes",
14
+ "projects_description": "Uma seleção dos meus trabalhos técnicos mais recentes e projetos de código aberto.",
15
+ "projects_view_all": "Ver Todos os Projetos",
16
+ "cta_title": "Pronto para Construir Algo Incrível?",
17
+ "cta_description": "Estou disponível para novos projetos e consultoria. Vamos trabalhar juntos para dar vida à sua visão.",
18
+ "cta_contact": "Entre em Contato",
19
+ "cta_resume": "Baixar Currículo"
20
+ }
@@ -1,8 +1,8 @@
1
- {
2
- "errors": {
3
- "ui": {
4
- "MISSING_TRANSLATED_UI": "Desculpe, esta página ainda não está totalmente disponível no idioma selecionado.",
5
- "MISSING_TRANSLATED_CONTENT": "Desculpe, este artigo ainda não está disponível no idioma selecionado."
6
- }
7
- }
8
- }
1
+ {
2
+ "errors": {
3
+ "ui": {
4
+ "MISSING_TRANSLATED_UI": "Desculpe, esta página ainda não está totalmente disponível no idioma selecionado.",
5
+ "MISSING_TRANSLATED_CONTENT": "Desculpe, este artigo ainda não está disponível no idioma selecionado."
6
+ }
7
+ }
8
+ }
@@ -1,13 +1,13 @@
1
- {
2
- "home": "Início",
3
- "projects": "Projetos",
4
- "blog": "Blog",
5
- "about": "Sobre",
6
- "services": "Serviços",
7
- "resume": "Currículo",
8
- "contact": "Contato",
9
- "components": "Componentes",
10
- "privacy_policy": "Política de Privacidade",
11
- "terms_of_service": "Termos de Serviço",
12
- "cookie_policy": "Política de Cookies"
13
- }
1
+ {
2
+ "home": "Início",
3
+ "projects": "Projetos",
4
+ "blog": "Blog",
5
+ "about": "Sobre",
6
+ "services": "Serviços",
7
+ "resume": "Currículo",
8
+ "contact": "Contato",
9
+ "components": "Componentes",
10
+ "privacy_policy": "Política de Privacidade",
11
+ "terms_of_service": "Termos de Serviço",
12
+ "cookie_policy": "Política de Cookies"
13
+ }
@@ -1,9 +1,9 @@
1
- {
2
- "meta_title": "Projetos | Daniel Marchi",
3
- "hero_title": "Projetos",
4
- "hero_description": "Uma vitrine do meu trabalho e contribuições de código aberto.",
5
- "latest": "Projeto Mais Recente",
6
- "latest_badge": "Último",
7
- "view_project": "Ver Projeto",
8
- "all": "Todos os Projetos"
9
- }
1
+ {
2
+ "meta_title": "Projetos | Daniel Marchi",
3
+ "hero_title": "Projetos",
4
+ "hero_description": "Uma vitrine do meu trabalho e contribuições de código aberto.",
5
+ "latest": "Projeto Mais Recente",
6
+ "latest_badge": "Último",
7
+ "view_project": "Ver Projeto",
8
+ "all": "Todos os Projetos"
9
+ }
@@ -1,43 +1,43 @@
1
- {
2
- "meta_title": "Serviços | Daniel Marchi",
3
- "hero_title": "Serviços Premium",
4
- "hero_description": "Eu forneço serviços de desenvolvimento e design de alta qualidade para ajudar o seu negócio a crescer e se destacar no cenário digital.",
5
- "capabilities_title": "Capacidades",
6
- "capabilities_description": "Uma visão geral dos principais serviços que ofereço aos meus clientes.",
7
- "web_dev_title": "Desenvolvimento Web",
8
- "web_dev_description": "Criando aplicações web de alta performance, acessíveis e escaláveis usando tecnologias modernas como Astro, Vue e Nuxt.",
9
- "ui_ux_title": "Design UI/UX",
10
- "ui_ux_description": "Criando interfaces de usuário intuitivas e visualmente deslumbrantes, focando na experiência do usuário e na identidade da marca.",
11
- "perf_title": "Otimização de Performance",
12
- "perf_description": "Auditando e otimizando o seu site para velocidade, SEO e acessibilidade para alcançar pontuações perfeitas no Lighthouse.",
13
- "perf_security_title": "Performance e Segurança",
14
- "perf_security_description": "Seus usuários merecem uma experiência rápida e segura. Eu construo sites que carregam instantaneamente e funcionam perfeitamente em todos os dispositivos.",
15
- "testimonials_title": "O que Nossos Usuários Dizem",
16
- "testimonials_description": "Junte-se a milhares de desenvolvedores construindo a próxima geração da web com Astronaut.",
17
- "faq_title": "Perguntas Frequentes",
18
- "faq_description": "Tudo o que você precisa saber sobre o Astronaut e como construir coisas incríveis com ele.",
19
- "cta_title": "Pronto para Começar?",
20
- "cta_description": "Vamos colaborar no seu próximo grande projeto. Estou atualmente disponível para trabalho freelance e consultoria.",
21
- "cta_contact": "Entre em Contato",
22
- "cta_portfolio": "Ver Portfólio",
23
- "badge_ceo": "CEO",
24
- "badge_founder": "Fundador",
25
- "badge_cto": "CTO",
26
- "badge_senior_ui": "Engenheiro UI Sênior",
27
- "badge_chef": "Chef",
28
- "badge_product_designer": "Product Designer",
29
- "testimonial_1": "O Astronaut é, sem dúvida, o melhor boilerplate que já usei. A velocidade e a arquitetura limpa combinam perfeitamente com o modo como quero construir.",
30
- "testimonial_2": "A biblioteca de componentes e o modo como ela lida com o Tailwind 4 é um divisor de águas. Consegui lançar meu projeto em tempo recorde.",
31
- "testimonial_3": "Finalmente um boilerplate que não parece inchado, mas me dá todas as ferramentas de que preciso. O suporte SSR no Cloudflare é impecável.",
32
- "testimonial_4": "O melhor ponto de partida para qualquer projeto web moderno. A experiência do desenvolvedor é de classe mundial e a performance é imbatível.",
33
- "testimonial_5": "Atenção incrível aos detalhes na estrutura. Segue todas as melhores práticas sem adicionar complexidade desnecessária.",
34
- "testimonial_6": "Tudo é tão suave! Transições, componentes, lógica - tudo simplesmente funciona. Melhor decisão para minha startup mais recente.",
35
- "faq_category_general": "Geral",
36
- "faq_q1": "O que é o Astronaut?",
37
- "faq_a1": "O Astronaut é um boilerplate pronto para produção para o Astro, projetado com foco em velocidade, performance e melhores práticas. Ele usa Tailwind CSS 4, padrões Nuxt UI e uma arquitetura limpa.",
38
- "faq_q2": "Como eu começo?",
39
- "faq_a2": "Você pode simplesmente clonar o repositório, instalar as dependências com pnpm e rodar o servidor de desenvolvimento. A estrutura do projeto é o padrão do Astro, então você se sentirá em casa.",
40
- "faq_category_technical": "Técnico",
41
- "faq_q3": "Ele suporta Server-Side Rendering (SSR)?",
42
- "faq_a3": "Sim, o Astronaut suporta totalmente SSR e está configurado para implementação no Cloudflare Workers por padrão, oferecendo o melhor dos dois mundos: velocidade de estático e poder de dinâmico."
43
- }
1
+ {
2
+ "meta_title": "Serviços | Daniel Marchi",
3
+ "hero_title": "Serviços Premium",
4
+ "hero_description": "Eu forneço serviços de desenvolvimento e design de alta qualidade para ajudar o seu negócio a crescer e se destacar no cenário digital.",
5
+ "capabilities_title": "Capacidades",
6
+ "capabilities_description": "Uma visão geral dos principais serviços que ofereço aos meus clientes.",
7
+ "web_dev_title": "Desenvolvimento Web",
8
+ "web_dev_description": "Criando aplicações web de alta performance, acessíveis e escaláveis usando tecnologias modernas como Astro, Vue e Nuxt.",
9
+ "ui_ux_title": "Design UI/UX",
10
+ "ui_ux_description": "Criando interfaces de usuário intuitivas e visualmente deslumbrantes, focando na experiência do usuário e na identidade da marca.",
11
+ "perf_title": "Otimização de Performance",
12
+ "perf_description": "Auditando e otimizando o seu site para velocidade, SEO e acessibilidade para alcançar pontuações perfeitas no Lighthouse.",
13
+ "perf_security_title": "Performance e Segurança",
14
+ "perf_security_description": "Seus usuários merecem uma experiência rápida e segura. Eu construo sites que carregam instantaneamente e funcionam perfeitamente em todos os dispositivos.",
15
+ "testimonials_title": "O que Nossos Usuários Dizem",
16
+ "testimonials_description": "Junte-se a milhares de desenvolvedores construindo a próxima geração da web com Astronaut.",
17
+ "faq_title": "Perguntas Frequentes",
18
+ "faq_description": "Tudo o que você precisa saber sobre o Astronaut e como construir coisas incríveis com ele.",
19
+ "cta_title": "Pronto para Começar?",
20
+ "cta_description": "Vamos colaborar no seu próximo grande projeto. Estou atualmente disponível para trabalho freelance e consultoria.",
21
+ "cta_contact": "Entre em Contato",
22
+ "cta_portfolio": "Ver Portfólio",
23
+ "badge_ceo": "CEO",
24
+ "badge_founder": "Fundador",
25
+ "badge_cto": "CTO",
26
+ "badge_senior_ui": "Engenheiro UI Sênior",
27
+ "badge_chef": "Chef",
28
+ "badge_product_designer": "Product Designer",
29
+ "testimonial_1": "O Astronaut é, sem dúvida, o melhor boilerplate que já usei. A velocidade e a arquitetura limpa combinam perfeitamente com o modo como quero construir.",
30
+ "testimonial_2": "A biblioteca de componentes e o modo como ela lida com o Tailwind 4 é um divisor de águas. Consegui lançar meu projeto em tempo recorde.",
31
+ "testimonial_3": "Finalmente um boilerplate que não parece inchado, mas me dá todas as ferramentas de que preciso. O suporte SSR no Cloudflare é impecável.",
32
+ "testimonial_4": "O melhor ponto de partida para qualquer projeto web moderno. A experiência do desenvolvedor é de classe mundial e a performance é imbatível.",
33
+ "testimonial_5": "Atenção incrível aos detalhes na estrutura. Segue todas as melhores práticas sem adicionar complexidade desnecessária.",
34
+ "testimonial_6": "Tudo é tão suave! Transições, componentes, lógica - tudo simplesmente funciona. Melhor decisão para minha startup mais recente.",
35
+ "faq_category_general": "Geral",
36
+ "faq_q1": "O que é o Astronaut?",
37
+ "faq_a1": "O Astronaut é um boilerplate pronto para produção para o Astro, projetado com foco em velocidade, performance e melhores práticas. Ele usa Tailwind CSS 4, padrões Nuxt UI e uma arquitetura limpa.",
38
+ "faq_q2": "Como eu começo?",
39
+ "faq_a2": "Você pode simplesmente clonar o repositório, instalar as dependências com pnpm e rodar o servidor de desenvolvimento. A estrutura do projeto é o padrão do Astro, então você se sentirá em casa.",
40
+ "faq_category_technical": "Técnico",
41
+ "faq_q3": "Ele suporta Server-Side Rendering (SSR)?",
42
+ "faq_a3": "Sim, o Astronaut suporta totalmente SSR e está configurado para implementação no Cloudflare Workers por padrão, oferecendo o melhor dos dois mundos: velocidade de estático e poder de dinâmico."
43
+ }
@@ -0,0 +1 @@
1
+ export * from "./sri"
@@ -0,0 +1,76 @@
1
+ import { defineMiddleware } from "astro:middleware"
2
+ // @ts-ignore - virtual module generated by the SRI integration
3
+ import { manifest } from "virtual:sri-manifest"
4
+
5
+ function assertManifest(obj: unknown): asserts obj is Record<string, string> {
6
+ if (!obj || typeof obj !== "object") throw new Error("Expected manifest")
7
+ }
8
+
9
+ /**
10
+ * SRI Middleware Injects integrity attributes into script tags based on the pre-generated manifest.
11
+ * Handles both SSR streaming (via HTMLRewriter) and post-rendering fallback.
12
+ */
13
+ export const sri = defineMiddleware(async (_, next) => {
14
+ const response = await next()
15
+ const contentType = response.headers.get("content-type") || ""
16
+
17
+ // Only process HTML responses
18
+ if (!contentType.includes("text/html")) {
19
+ return response
20
+ }
21
+
22
+ // Use Cloudflare's HTMLRewriter if available (SSR Production/Preview)
23
+ if (typeof HTMLRewriter !== "undefined") {
24
+ return new HTMLRewriter()
25
+ .on("script[src]", {
26
+ element(el) {
27
+ const src = el.getAttribute("src")
28
+ if (src && manifest[src]) {
29
+ el.setAttribute("integrity", manifest[src])
30
+ el.setAttribute("crossorigin", "anonymous")
31
+ }
32
+ }
33
+ })
34
+ .on('link[rel="stylesheet"][href]', {
35
+ element(el) {
36
+ const href = el.getAttribute("href")
37
+ if (href && manifest[href]) {
38
+ el.setAttribute("integrity", manifest[href])
39
+ el.setAttribute("crossorigin", "anonymous")
40
+ }
41
+ }
42
+ })
43
+ .transform(response)
44
+ }
45
+
46
+ // Fallback for Dev
47
+ let modifiedHtml = await response.text()
48
+
49
+ // Simple RegEx replacement for Dev inspection
50
+ assertManifest(manifest)
51
+
52
+ const entries = Object.entries(manifest)
53
+ for (const [url, hash] of entries) {
54
+ if (!hash) continue
55
+
56
+ // Look for script tags with the specific URL
57
+ const scriptRegex = new RegExp(`(<script[^>]+src=["']${url}["'][^>]*)(/?>)`, "g")
58
+ modifiedHtml = modifiedHtml.replace(
59
+ scriptRegex,
60
+ `$1 integrity="${String(hash)}" crossorigin="anonymous"$2`
61
+ )
62
+
63
+ // Look for link tags with the specific URL
64
+ const linkRegex = new RegExp(`(<link[^>]+href=["']${url}["'][^>]*)(/?>)`, "g")
65
+ modifiedHtml = modifiedHtml.replace(
66
+ linkRegex,
67
+ `$1 integrity="${String(hash)}" crossorigin="anonymous"$2`
68
+ )
69
+ }
70
+
71
+ return new Response(modifiedHtml, {
72
+ status: response.status,
73
+ statusText: response.statusText,
74
+ headers: response.headers
75
+ })
76
+ })
@@ -1,2 +1,2 @@
1
- export * from "./server"
2
- export * from "./shared"
1
+ export * from "./server"
2
+ export * from "./shared"