starlight-theme-celestia 0.2.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 (68) hide show
  1. package/lib/aside.css +13 -0
  2. package/lib/badge.css +23 -0
  3. package/lib/card.css +42 -0
  4. package/lib/fonts.css +4 -0
  5. package/lib/layer.css +31 -0
  6. package/lib/markdown.css +71 -0
  7. package/lib/shiki.css +79 -0
  8. package/lib/styles.css +6 -0
  9. package/lib/tailwind.build.css +2 -0
  10. package/lib/tailwind.css +29 -0
  11. package/lib/tailwind.gen.css +1197 -0
  12. package/lib/theme.css +94 -0
  13. package/package.json +56 -0
  14. package/src/astro.d.ts +6 -0
  15. package/src/components/Code.astro +12 -0
  16. package/src/components/CodeCopy.astro +39 -0
  17. package/src/components/CodeFile.astro +64 -0
  18. package/src/components/CodePackageManagers.astro +55 -0
  19. package/src/components/CodeTabItem.astro +13 -0
  20. package/src/components/CodeTabs.astro +67 -0
  21. package/src/components/Head.astro +7 -0
  22. package/src/components/Header.astro +91 -0
  23. package/src/components/Hero.astro +169 -0
  24. package/src/components/LanguageSelect.astro +5 -0
  25. package/src/components/LinkButton.astro +47 -0
  26. package/src/components/LinkButtonIcon.astro +22 -0
  27. package/src/components/LinkCard.astro +32 -0
  28. package/src/components/MarkdownContent.astro +22 -0
  29. package/src/components/MobileMenuFooter.astro +11 -0
  30. package/src/components/MobileMenuToggle.astro +23 -0
  31. package/src/components/MobileTableOfContents.astro +26 -0
  32. package/src/components/PageFrame.astro +50 -0
  33. package/src/components/Pagination.astro +34 -0
  34. package/src/components/PaginationLink.astro +30 -0
  35. package/src/components/Search.astro +645 -0
  36. package/src/components/SiteTitle.astro +47 -0
  37. package/src/components/SiteTitleVersioned.astro +62 -0
  38. package/src/components/SocialIcons.astro +31 -0
  39. package/src/components/ThemeProvider.astro +102 -0
  40. package/src/components/ThemeSelect.astro +188 -0
  41. package/src/components/TwoColumnContent.astro +44 -0
  42. package/src/components/VersionSelect.astro +261 -0
  43. package/src/components/get-i18n-text.ts +39 -0
  44. package/src/components/index.ts +7 -0
  45. package/src/components/mobile-menu-toggle.ts +49 -0
  46. package/src/components/rehype-code-tabs.ts +52 -0
  47. package/src/constants.ts +7 -0
  48. package/src/content.config.ts +16 -0
  49. package/src/content.d.ts +22 -0
  50. package/src/icons/lucide-arrow-left.svg +1 -0
  51. package/src/icons/lucide-arrow-right.svg +1 -0
  52. package/src/icons/lucide-check.svg +1 -0
  53. package/src/icons/lucide-chevron-left.svg +1 -0
  54. package/src/icons/lucide-chevron-right.svg +1 -0
  55. package/src/icons/lucide-clipboard.svg +1 -0
  56. package/src/icons/lucide-menu.svg +1 -0
  57. package/src/icons/lucide-search.svg +1 -0
  58. package/src/icons/lucide-x.svg +1 -0
  59. package/src/icons/tabler-moon-filled.svg +1 -0
  60. package/src/icons/tabler-sun-high-filled.svg +1 -0
  61. package/src/index.ts +112 -0
  62. package/src/shiki-config.ts +49 -0
  63. package/src/shiki-meta-title.ts +6 -0
  64. package/src/shiki-transformer-container.ts +85 -0
  65. package/src/types.d.ts +2 -0
  66. package/src/user-options.ts +37 -0
  67. package/src/virtual-internal.d.ts +44 -0
  68. package/src/virtual-user-config.ts +44 -0
package/lib/aside.css ADDED
@@ -0,0 +1,13 @@
1
+ .starlight-aside {
2
+ border: 1px solid var(--sl-color-asides-border);
3
+ border-radius: 0.5rem;
4
+ }
5
+
6
+ .starlight-aside,
7
+ .starlight-aside a {
8
+ color: color-mix(in srgb, var(--sl-color-asides-text-accent) 50%, var(--sl-color-white));
9
+ }
10
+
11
+ .starlight-aside a:is(:hover, :focus-visible) {
12
+ color: var(--sl-color-asides-text-accent);
13
+ }
package/lib/badge.css ADDED
@@ -0,0 +1,23 @@
1
+ .sl-badge {
2
+ --sl-badge-default-border: var(--sl-color-accent);
3
+ --sl-badge-default-bg: var(--sl-color-accent-low);
4
+ --sl-badge-default-text: var(--sl-color-accent-high);
5
+ --sl-badge-tip-text: var(--sl-color-purple-high);
6
+ --sl-badge-caution-text: var(--sl-color-orange-high);
7
+ --sl-badge-note-text: var(--sl-color-blue-high);
8
+ --sl-badge-success-text: var(--sl-color-green-high);
9
+ --sl-badge-danger-text: var(--sl-color-red-high);
10
+ }
11
+
12
+ [data-theme="light"] .sl-badge {
13
+ --sl-badge-tip-bg: var(--sl-color-purple-low);
14
+ --sl-badge-tip-text: var(--sl-color-purple-high);
15
+ --sl-badge-caution-bg: var(--sl-color-orange-low);
16
+ --sl-badge-caution-text: var(--sl-color-orange-high);
17
+ --sl-badge-note-bg: var(--sl-color-blue-low);
18
+ --sl-badge-note-text: var(--sl-color-blue-high);
19
+ --sl-badge-success-bg: var(--sl-color-green-low);
20
+ --sl-badge-success-text: var(--sl-color-green-high);
21
+ --sl-badge-danger-bg: var(--sl-color-red-low);
22
+ --sl-badge-danger-text: var(--sl-color-red-high);
23
+ }
package/lib/card.css ADDED
@@ -0,0 +1,42 @@
1
+ .sl-markdown-content .card-grid.stagger {
2
+ --stagger-height: 2.5rem;
3
+ }
4
+
5
+ .sl-markdown-content .card {
6
+ --sl-text-h1: var(--sl-text-4xl);
7
+ --sl-text-h2: var(--sl-text-3xl);
8
+ --sl-text-h3: var(--sl-text-2xl);
9
+ --sl-text-h4: var(--sl-text-xl);
10
+ --sl-text-h5: var(--sl-text-lg);
11
+
12
+ border-radius: 0.5rem;
13
+ padding: clamp(1rem, calc(0.125rem + 1.5vw), 2.5rem);
14
+ }
15
+
16
+ .sl-markdown-content .card .title .icon {
17
+ font-size: 1.875rem;
18
+ }
19
+
20
+ .sl-markdown-content .sl-link-card {
21
+ box-shadow: none;
22
+ }
23
+
24
+ .sl-markdown-content .sl-link-card:hover {
25
+ background: initial;
26
+ }
27
+
28
+ .sl-markdown-content .sl-link-card .title {
29
+ color: var(--sl-color-white);
30
+ }
31
+
32
+ .sl-markdown-content .sl-link-card .description {
33
+ color: var(--sl-color-gray-3);
34
+ }
35
+
36
+ .sl-markdown-content .sl-link-card:is(:hover, :focus-visible) .description {
37
+ color: var(--sl-color-gray-2);
38
+ }
39
+
40
+ .sl-markdown-content .sl-link-card .icon {
41
+ color: var(--sl-color-gray-2);
42
+ }
package/lib/fonts.css ADDED
@@ -0,0 +1,4 @@
1
+ @import "@fontsource/inter/latin-400.css";
2
+ @import "@fontsource/inter/latin-500.css";
3
+ @import "@fontsource/inter/latin-600.css";
4
+ @import "@fontsource/inter/latin-700.css";
package/lib/layer.css ADDED
@@ -0,0 +1,31 @@
1
+ @layer base, starlight, celestia, theme, components, utilities;
2
+
3
+ :root,
4
+ ::backdrop {
5
+ font-size: 14px;
6
+ --sl-text-body: 0.9rem;
7
+ --sl-text-h1: 1.45rem;
8
+ --sl-text-h2: 1.2rem;
9
+ --sl-text-h3: 1.05rem;
10
+ --sl-text-h4: 0.95rem;
11
+ --sl-text-h5: 0.85rem;
12
+ --sl-text-h6: 0.8rem;
13
+ --sl-text-code: 0.8rem;
14
+ --sl-text-code-sm: 0.75rem;
15
+
16
+ --celestia-secondary-light: #c2410c;
17
+ --celestia-secondary-dark: #fb923c;
18
+ }
19
+
20
+ /* Dark mode accents — must load first to prevent flash */
21
+ :root {
22
+ --sl-color-accent-low: color-mix(in oklch, #fb923c 15%, #030712);
23
+ --sl-color-accent: #fb923c;
24
+ --sl-color-accent-high: #fb923c;
25
+ }
26
+
27
+ :root[data-theme="light"] {
28
+ --sl-color-accent-low: color-mix(in oklch, #c2410c 10%, #f3f4f6);
29
+ --sl-color-accent: #c2410c;
30
+ --sl-color-accent-high: #c2410c;
31
+ }
@@ -0,0 +1,71 @@
1
+ .sl-markdown-content {
2
+ /* Style the Markdown heading links. */
3
+ :is(h1, h2, h3, h4, h5, h6):not(:where(.not-content *)) > a {
4
+ color: var(--sl-color-white);
5
+ text-decoration: none;
6
+
7
+ &:hover {
8
+ text-decoration: underline;
9
+ }
10
+ }
11
+
12
+ ul:not(:where(.not-content *)):not(.sl-steps) {
13
+ padding-inline-start: 1.6em;
14
+
15
+ & > li:not(.task-list-item):not(:where(.not-content *)) {
16
+ list-style-type: disc;
17
+ list-style-position: outside;
18
+ padding-inline-start: 0.3em;
19
+ }
20
+
21
+ & > li.task-list-item:not(:where(.not-content *)) {
22
+ list-style-type: none;
23
+ padding-inline-start: 0.3em;
24
+ position: relative;
25
+
26
+ > input[type="checkbox"] {
27
+ position: absolute;
28
+ left: -1.1em;
29
+ top: 0.6em;
30
+ }
31
+ }
32
+ }
33
+
34
+ ol:not(:where(.not-content *)):not(.sl-steps) {
35
+ padding-inline-start: 1.6em;
36
+
37
+ & > li:not(:where(.not-content *)) {
38
+ list-style-type: decimal;
39
+ list-style-position: outside;
40
+ padding-inline-start: 0.3em;
41
+ }
42
+ }
43
+
44
+ code:not(:where(.not-content *)) {
45
+ border-radius: 0.25rem;
46
+ border-style: solid;
47
+ border-width: 1px;
48
+ border-color: var(--sl-color-border-inline-code);
49
+ padding: 0.125rem 0.25rem;
50
+ }
51
+
52
+ a:not(:where(.not-content *)) {
53
+ text-underline-offset: 0.25em;
54
+ text-decoration: underline;
55
+ }
56
+
57
+ /* Rounded images with subtle shadow */
58
+ img:not(:where(.not-content *)) {
59
+ border-radius: 0.5rem;
60
+ box-shadow:
61
+ 0 1px 3px 0 rgb(0 0 0 / 0.1),
62
+ 0 1px 2px -1px rgb(0 0 0 / 0.1);
63
+ }
64
+ }
65
+
66
+ /* <code> inside asides */
67
+ @supports (border-color: color-mix(in srgb, var(--sl-color-asides-text-accent) 12%, transparent)) {
68
+ .sl-markdown-content .starlight-aside code:not(:where(.not-content *)) {
69
+ border-color: color-mix(in srgb, var(--sl-color-asides-text-accent) 12%, transparent);
70
+ }
71
+ }
package/lib/shiki.css ADDED
@@ -0,0 +1,79 @@
1
+ @import "shiki-twoslash-renderer/style.css";
2
+
3
+ .sl-markdown-content .astro-code {
4
+ padding: 0;
5
+ font-size: 0.875rem;
6
+ border-radius: 0.5rem;
7
+ overflow-x: hidden;
8
+ display: flex;
9
+ flex-direction: column;
10
+ align-items: stretch;
11
+
12
+ border-width: 1px;
13
+ border-style: solid;
14
+ border-color: var(--sl-color-gray-5);
15
+
16
+ & > code {
17
+ display: grid;
18
+ align-items: stretch;
19
+ overflow-x: hidden;
20
+ padding: 0.75rem 0;
21
+ box-sizing: border-box;
22
+ min-width: min-content;
23
+ }
24
+
25
+ .line {
26
+ min-height: 1lh;
27
+ margin-left: 0;
28
+ margin-right: 0;
29
+ padding-left: 1rem;
30
+ padding-right: 1rem;
31
+ display: inline-block;
32
+ flex: 1;
33
+ flex-grow: 1;
34
+ width: 100%;
35
+ min-width: min-content;
36
+ }
37
+
38
+ .line.highlighted,
39
+ .line.diff.add,
40
+ .line.diff.remove {
41
+ display: inline-block;
42
+ }
43
+
44
+ .line.highlighted {
45
+ background-color: var(--nano-color-highlight);
46
+ }
47
+
48
+ .line.diff.add {
49
+ background-color: var(--sl-color-green-low);
50
+ }
51
+
52
+ .line.diff.remove {
53
+ background-color: var(--sl-color-red-low);
54
+ }
55
+
56
+ .highlighted-word {
57
+ border-radius: 0.25rem;
58
+ border-color: var(--sl-color-gray-5);
59
+ border-style: solid;
60
+ border-width: 1px;
61
+ padding: 0 0.125rem;
62
+ }
63
+ }
64
+
65
+ .astro-code,
66
+ .astro-code span {
67
+ color: var(--shiki-light);
68
+ font-style: var(--shiki-light-font-style);
69
+ font-weight: var(--shiki-light-font-weight);
70
+ text-decoration: var(--shiki-light-text-decoration);
71
+ }
72
+
73
+ html[data-theme="dark"] .astro-code,
74
+ html[data-theme="dark"] .astro-code span {
75
+ color: var(--shiki-dark);
76
+ font-style: var(--shiki-dark-font-style);
77
+ font-weight: var(--shiki-dark-font-weight);
78
+ text-decoration: var(--shiki-dark-text-decoration);
79
+ }
package/lib/styles.css ADDED
@@ -0,0 +1,6 @@
1
+ @import "./fonts.css";
2
+ @import "./markdown.css" layer(celestia);
3
+ @import "./shiki.css" layer(celestia);
4
+ @import "./aside.css" layer(celestia);
5
+ @import "./badge.css" layer(celestia);
6
+ @import "./card.css" layer(celestia);
@@ -0,0 +1,2 @@
1
+ @import "tailwindcss";
2
+ @import "./tailwind.css";
@@ -0,0 +1,29 @@
1
+ @source '../src/**/*.ts';
2
+ @source '../src/**/*.astro';
3
+
4
+ @custom-variant dark (&:where([data-theme=dark], [data-theme=dark] *));
5
+
6
+ @theme {
7
+ /*
8
+ Match Starlight breakpoints
9
+ https://github.com/withastro/starlight/blob/893be3b4a106ab75b706142bbd06b00268ccc298/packages/starlight/style/util.css#L22-L43
10
+ */
11
+ --breakpoint-md: 50rem;
12
+ --breakpoint-lg: 72rem;
13
+ }
14
+
15
+ @layer utilities {
16
+ /* Wire up Starlight theme to use Tailwind config. */
17
+ :root {
18
+ --sl-font-mono: var(--font-mono);
19
+ }
20
+ }
21
+
22
+ @utility celestia-scroll-container {
23
+ scrollbar-width: thin;
24
+ scrollbar-color: var(--sl-color-gray-5) transparent;
25
+ }
26
+
27
+ .sl-markdown-content .code-tabs .tablist-wrapper {
28
+ @apply celestia-scroll-container;
29
+ }