@at-flux/astroflare 0.0.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.
- package/LICENSE +21 -0
- package/README.md +89 -0
- package/dist/chunk-ALMPH3A2.js +0 -0
- package/dist/chunk-DRYHJSYC.js +117 -0
- package/dist/core.cjs +142 -0
- package/dist/core.d.cts +2 -0
- package/dist/core.d.ts +2 -0
- package/dist/core.js +17 -0
- package/dist/forms/index.cjs +130 -0
- package/dist/forms/index.d.cts +52 -0
- package/dist/forms/index.d.ts +52 -0
- package/dist/forms/index.js +14 -0
- package/dist/index.cjs +142 -0
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +17 -0
- package/package.json +97 -0
- package/src/components/ClientRouterLoadingSpinner.astro +76 -0
- package/src/components/IconButton.astro +80 -0
- package/src/components/Modal.astro +63 -0
- package/src/components/ModalTrigger.astro +40 -0
- package/src/components/ThemeToggle.astro +127 -0
- package/src/styles/accessibility.css +29 -0
- package/src/styles/no-save.css +34 -0
- package/src/styles/prose.css +105 -0
- package/src/styles/scrollbar.css +13 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image protection utilities.
|
|
3
|
+
* Prevents right-click save, drag, and text selection on images.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* <div class="no-save-container">
|
|
7
|
+
* <img class="no-save" src="..." alt="..." />
|
|
8
|
+
* </div>
|
|
9
|
+
*/
|
|
10
|
+
.no-save {
|
|
11
|
+
user-select: none;
|
|
12
|
+
-webkit-user-select: none;
|
|
13
|
+
-webkit-touch-callout: none;
|
|
14
|
+
pointer-events: none;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.no-save-container {
|
|
18
|
+
position: relative;
|
|
19
|
+
overflow: hidden;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.no-save-container::before {
|
|
23
|
+
content: '';
|
|
24
|
+
position: absolute;
|
|
25
|
+
inset: 0;
|
|
26
|
+
z-index: 1;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
a:has(.no-save)::after {
|
|
30
|
+
content: '';
|
|
31
|
+
position: absolute;
|
|
32
|
+
inset: 0;
|
|
33
|
+
z-index: 2;
|
|
34
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prose styling for markdown content.
|
|
3
|
+
* Uses CSS custom property --color-brand for theming.
|
|
4
|
+
* Apply .prose to the container element.
|
|
5
|
+
*/
|
|
6
|
+
.prose { color: inherit; }
|
|
7
|
+
|
|
8
|
+
.prose h1,
|
|
9
|
+
.prose h2,
|
|
10
|
+
.prose h3,
|
|
11
|
+
.prose h4,
|
|
12
|
+
.prose h5,
|
|
13
|
+
.prose h6 {
|
|
14
|
+
font-family: var(--font-display, sans-serif);
|
|
15
|
+
font-weight: 700;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.prose p {
|
|
19
|
+
margin-bottom: 1em;
|
|
20
|
+
line-height: 1.6;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.prose a { color: var(--color-brand, #7c5cff); }
|
|
24
|
+
.prose a:hover { opacity: 0.8; }
|
|
25
|
+
|
|
26
|
+
.prose code {
|
|
27
|
+
background: rgba(0, 0, 0, 0.05);
|
|
28
|
+
padding: 0.2em 0.4em;
|
|
29
|
+
border-radius: 3px;
|
|
30
|
+
font-size: 0.9em;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:where([data-theme='dark']) .prose code {
|
|
34
|
+
background: rgba(255, 255, 255, 0.1);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.prose pre {
|
|
38
|
+
margin: 1.5em 0;
|
|
39
|
+
padding: 1em;
|
|
40
|
+
border-radius: 0.5rem;
|
|
41
|
+
overflow-x: auto;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.prose pre code {
|
|
45
|
+
background: none;
|
|
46
|
+
padding: 0;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.prose ul,
|
|
50
|
+
.prose ol {
|
|
51
|
+
margin: 1em 0;
|
|
52
|
+
padding-left: 2em;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.prose li { margin: 0.5em 0; }
|
|
56
|
+
|
|
57
|
+
.prose blockquote {
|
|
58
|
+
margin: 2em 0;
|
|
59
|
+
padding: 0.5rem 1.5rem;
|
|
60
|
+
border-left: 4px solid var(--color-brand, #7c5cff);
|
|
61
|
+
background: color-mix(in oklab, var(--color-brand, #7c5cff) 8%, transparent);
|
|
62
|
+
border-radius: 0.5rem;
|
|
63
|
+
font-style: italic;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
:where([data-theme='dark']) .prose blockquote {
|
|
67
|
+
background: color-mix(in oklab, var(--color-brand, #7c5cff) 12%, transparent);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.prose blockquote p { margin-bottom: 0.5rem; }
|
|
71
|
+
.prose blockquote p:last-child { margin-bottom: 0; }
|
|
72
|
+
|
|
73
|
+
.prose img {
|
|
74
|
+
max-width: 100%;
|
|
75
|
+
height: auto;
|
|
76
|
+
border-radius: 0.5rem;
|
|
77
|
+
margin: 1.5em auto;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.prose table {
|
|
81
|
+
width: auto;
|
|
82
|
+
border-collapse: collapse;
|
|
83
|
+
margin: 1.5em auto;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.prose th,
|
|
87
|
+
.prose td {
|
|
88
|
+
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
89
|
+
padding: 0.75em;
|
|
90
|
+
text-align: left;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
:where([data-theme='dark']) .prose th,
|
|
94
|
+
:where([data-theme='dark']) .prose td {
|
|
95
|
+
border-color: rgba(255, 255, 255, 0.1);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.prose th {
|
|
99
|
+
font-weight: 700;
|
|
100
|
+
background: rgba(0, 0, 0, 0.05);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
:where([data-theme='dark']) .prose th {
|
|
104
|
+
background: rgba(255, 255, 255, 0.05);
|
|
105
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branded scrollbar styling.
|
|
3
|
+
* Uses --color-brand and --color-brand-pastel for theming.
|
|
4
|
+
*/
|
|
5
|
+
::-webkit-scrollbar { width: 8px; }
|
|
6
|
+
::-webkit-scrollbar-track { background: transparent; }
|
|
7
|
+
::-webkit-scrollbar-thumb {
|
|
8
|
+
background: var(--color-brand-pastel, color-mix(in oklab, var(--color-brand, #7c5cff) 60%, white));
|
|
9
|
+
border-radius: 4px;
|
|
10
|
+
}
|
|
11
|
+
::-webkit-scrollbar-thumb:hover {
|
|
12
|
+
background: var(--color-brand, #7c5cff);
|
|
13
|
+
}
|