imprensa 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.
- package/CHANGELOG.md +15 -0
- package/README.md +51 -0
- package/default.css +239 -0
- package/dist/client-runtime-D7MhMWCo.d.mts +45 -0
- package/dist/components/doc.d.mts +2 -0
- package/dist/components/doc.mjs +2 -0
- package/dist/components/icons.d.mts +23 -0
- package/dist/components/icons.mjs +40 -0
- package/dist/components/index.d.mts +33 -0
- package/dist/components/index.mjs +253 -0
- package/dist/core/client-runtime.d.mts +2 -0
- package/dist/core/client-runtime.mjs +121 -0
- package/dist/core/prerender-core.d.mts +2 -0
- package/dist/core/prerender-core.mjs +2 -0
- package/dist/core/runtime.d.mts +3 -0
- package/dist/core/runtime.mjs +3 -0
- package/dist/core/shiki-build.d.mts +9 -0
- package/dist/core/shiki-build.mjs +34 -0
- package/dist/doc-pager-D-YhwEQN.d.mts +27 -0
- package/dist/doc-toolbar-DUQS2gnK.mjs +460 -0
- package/dist/docs/config.d.mts +13 -0
- package/dist/docs/config.mjs +10 -0
- package/dist/docs/landing-shiki.d.mts +7 -0
- package/dist/docs/landing-shiki.mjs +7 -0
- package/dist/docs/mdx.d.mts +79 -0
- package/dist/docs/mdx.mjs +293 -0
- package/dist/docs/rehype.d.mts +25 -0
- package/dist/docs/rehype.mjs +2 -0
- package/dist/frontmatter-DVneGjCO.mjs +16 -0
- package/dist/global-search-Dfv8DYN3.mjs +310 -0
- package/dist/index.d.mts +41 -0
- package/dist/index.mjs +668 -0
- package/dist/prerender-core-D4Li--RS.mjs +172 -0
- package/dist/prerender-core-DBi9ntWW.d.mts +48 -0
- package/dist/rehype-BWpGaBql.mjs +182 -0
- package/dist/search-store-DDGHRAKl.mjs +64 -0
- package/dist/shiki-gFey7C-z.d.mts +3289 -0
- package/dist/sidebar-layout-DsEhSkJS.mjs +43 -0
- package/dist/socials-BIszPk-A.d.mts +8 -0
- package/docs/architecture.md +26 -0
- package/docs/integration-notes.md +6 -0
- package/index.d.ts +49 -0
- package/package.json +128 -0
- package/tsconfig.json +28 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0-alpha.0
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- `imprensa()` Vite plugin: MDX, Ilha pages, Tailwind, prerender, sitemap, llms.txt
|
|
8
|
+
- Docs UI: resizable sidebar, theme toggle, global search (Areia Dialog + MiniSearch)
|
|
9
|
+
- `@ilha/store` for search `open` / `query` with `store.bind()` for `bind:open`
|
|
10
|
+
- Shiki / twoslash build pipeline, dead-link rehype (optional)
|
|
11
|
+
|
|
12
|
+
### Notes
|
|
13
|
+
|
|
14
|
+
- Portaled search dialog uses a small DOM bridge (`search-portal-sync`) until Areia `portal={false}` or equivalent
|
|
15
|
+
- `SearchOverlay` island is a no-op registry stub; real UI is `GlobalSearch` on `document.body`
|
package/README.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# imprensa
|
|
2
|
+
|
|
3
|
+
Vite meta-plugin and runtime for **Ilha** + **Areia** documentation sites (MDX, Shiki, static prerender, docs chrome).
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
bun add imprensa areia ilha @ilha/store @ilha/router lucide
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Peer versions are listed in `package.json` — align `ilha`, `areia`, and `@ilha/store` with the starter template.
|
|
12
|
+
|
|
13
|
+
## Use
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
// vite.config.ts
|
|
17
|
+
import { imprensa } from "imprensa";
|
|
18
|
+
|
|
19
|
+
export default defineConfig({
|
|
20
|
+
plugins: [imprensa({ contentDir: "src/content", hostname: "https://example.com" })],
|
|
21
|
+
});
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
// src/main.ts
|
|
26
|
+
import { createImprensa } from "imprensa/runtime";
|
|
27
|
+
|
|
28
|
+
void createImprensa().init();
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
See `templates/starter` in the [imprensa](https://github.com/ilhajs/imprensa) monorepo.
|
|
32
|
+
|
|
33
|
+
## Exports
|
|
34
|
+
|
|
35
|
+
| Subpath | Role |
|
|
36
|
+
| ---------------------- | ---------------------------------------- |
|
|
37
|
+
| `imprensa` | Vite plugin |
|
|
38
|
+
| `imprensa/runtime` | `createImprensa`, theme, mount/hydrate |
|
|
39
|
+
| `imprensa/prerender` | Static prerender entry |
|
|
40
|
+
| `imprensa/mdx` | Routes, search index, MDX render helpers |
|
|
41
|
+
| `imprensa/components` | Layout, sidebar, search triggers |
|
|
42
|
+
| `imprensa/doc` | Doc toolbar, pager |
|
|
43
|
+
| `imprensa/default.css` | Docs theme + Tailwind layers |
|
|
44
|
+
|
|
45
|
+
## Global search
|
|
46
|
+
|
|
47
|
+
Search mounts on `document.body` from `createImprensa().init()`. State lives in `@ilha/store` (`searchOpen`, `searchQuery`). Triggers use `data-search-trigger` or ⌘K.
|
|
48
|
+
|
|
49
|
+
## Alpha
|
|
50
|
+
|
|
51
|
+
`0.1.x` is an **alpha** API — expect small breaking changes. Pin exact versions in production until `1.0`.
|
package/default.css
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
@import "@shikijs/twoslash/style-rich.css";
|
|
3
|
+
@plugin "@tailwindcss/typography";
|
|
4
|
+
@plugin "areia";
|
|
5
|
+
|
|
6
|
+
@source "./src/**/*.{ts,tsx}";
|
|
7
|
+
|
|
8
|
+
@layer base {
|
|
9
|
+
* {
|
|
10
|
+
--areia-code-block-bg: var(--areia-surface-muted);
|
|
11
|
+
--shiki-dark-bg: var(--areia-code-block-bg) !important;
|
|
12
|
+
--twoslash-popup-bg: var(--areia-surface-elevated);
|
|
13
|
+
--twoslash-popup-color: var(--areia-text-default);
|
|
14
|
+
--twoslash-border-color: var(--areia-border);
|
|
15
|
+
--twoslash-docs-color: var(--areia-text-subtle);
|
|
16
|
+
--twoslash-popup-shadow: var(--areia-shadow-lg);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
html,
|
|
20
|
+
body {
|
|
21
|
+
@apply m-0 bg-areia-background;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
#app,
|
|
25
|
+
.imprensa-root,
|
|
26
|
+
.imprensa-root-main {
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-direction: column;
|
|
29
|
+
min-height: 0;
|
|
30
|
+
width: 100%;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.imprensa-root {
|
|
34
|
+
flex: 1 1 auto;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.imprensa-root-main {
|
|
38
|
+
flex: 1 1 0;
|
|
39
|
+
margin: 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
html:not([data-theme-ready]) body {
|
|
43
|
+
@apply invisible;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
[data-ilha-slot],
|
|
47
|
+
[data-router-view] {
|
|
48
|
+
display: contents;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
#imprensa-global-search-host[hidden] {
|
|
52
|
+
display: none;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@layer components {
|
|
57
|
+
/*
|
|
58
|
+
* Docs routes: one viewport (100dvh). Avoid 100vh min-height on body + 100dvh shell
|
|
59
|
+
* (mobile URL bar ≈ 50px page scroll under the sidebar).
|
|
60
|
+
*/
|
|
61
|
+
html.imprensa-docs-layout {
|
|
62
|
+
height: 100dvh;
|
|
63
|
+
max-height: 100dvh;
|
|
64
|
+
overflow: hidden;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
html.imprensa-docs-layout body {
|
|
68
|
+
height: 100dvh;
|
|
69
|
+
max-height: 100dvh;
|
|
70
|
+
min-height: 0 !important;
|
|
71
|
+
overflow: hidden;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
html.imprensa-docs-layout #app {
|
|
75
|
+
height: 100dvh;
|
|
76
|
+
max-height: 100dvh;
|
|
77
|
+
min-height: 0;
|
|
78
|
+
overflow: hidden;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
html.imprensa-docs-layout .imprensa-root {
|
|
82
|
+
flex: 1 1 0;
|
|
83
|
+
height: 100%;
|
|
84
|
+
max-height: 100%;
|
|
85
|
+
min-height: 0;
|
|
86
|
+
overflow: hidden;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
html.imprensa-docs-layout .imprensa-root-main {
|
|
90
|
+
flex: 1 1 0;
|
|
91
|
+
min-height: 0;
|
|
92
|
+
overflow: hidden;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.imprensa-docs-shell [data-slot="resizable"] {
|
|
96
|
+
height: 100%;
|
|
97
|
+
min-height: 0;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* Areia sets overflow:hidden on panels — scroll happens on inner wrappers only. */
|
|
101
|
+
.imprensa-docs-shell .imprensa-docs-sidebar-panel[data-slot="resizable-panel"],
|
|
102
|
+
.imprensa-docs-shell .imprensa-docs-main-panel[data-slot="resizable-panel"] {
|
|
103
|
+
min-height: 0 !important;
|
|
104
|
+
height: 100% !important;
|
|
105
|
+
max-height: 100% !important;
|
|
106
|
+
overflow: hidden !important;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.imprensa-docs-sidebar-panel {
|
|
110
|
+
@apply bg-areia-surface-elevated;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.imprensa-docs-sidebar-panel > * {
|
|
114
|
+
height: 100%;
|
|
115
|
+
min-height: 0;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.imprensa-docs-main-scroll {
|
|
119
|
+
height: 100%;
|
|
120
|
+
min-height: 0;
|
|
121
|
+
overflow-x: hidden;
|
|
122
|
+
overflow-y: auto;
|
|
123
|
+
overscroll-behavior-y: contain;
|
|
124
|
+
-webkit-overflow-scrolling: touch;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.imprensa-tree-indent-0 {
|
|
128
|
+
@apply ml-0;
|
|
129
|
+
}
|
|
130
|
+
.imprensa-tree-indent-1 {
|
|
131
|
+
@apply ml-2;
|
|
132
|
+
}
|
|
133
|
+
.imprensa-tree-indent-2 {
|
|
134
|
+
@apply ml-4;
|
|
135
|
+
}
|
|
136
|
+
.imprensa-tree-indent-3 {
|
|
137
|
+
@apply ml-6;
|
|
138
|
+
}
|
|
139
|
+
.imprensa-tree-indent-4 {
|
|
140
|
+
@apply ml-8;
|
|
141
|
+
}
|
|
142
|
+
.imprensa-tree-indent-5 {
|
|
143
|
+
@apply ml-10;
|
|
144
|
+
}
|
|
145
|
+
.imprensa-tree-indent-6 {
|
|
146
|
+
@apply ml-12;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.prose :where(h1, h2, h3, h4, h5, h6) {
|
|
150
|
+
@apply font-semibold scroll-mt-20;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.prose
|
|
154
|
+
:is(h1, h2, h3, h4, h5, h6)
|
|
155
|
+
:where(a.heading-anchor):not(:where(.not-prose, .not-prose *)) {
|
|
156
|
+
color: var(--areia-text-strong) !important;
|
|
157
|
+
text-decoration: none !important;
|
|
158
|
+
text-decoration-line: none !important;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.prose
|
|
162
|
+
:is(h1, h2, h3, h4, h5, h6)
|
|
163
|
+
:where(a.heading-anchor:hover):not(:where(.not-prose, .not-prose *)) {
|
|
164
|
+
color: var(--areia-text-strong) !important;
|
|
165
|
+
text-decoration: underline !important;
|
|
166
|
+
text-decoration-line: underline !important;
|
|
167
|
+
text-underline-offset: 0.25rem;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.prose :where(:not(pre) > code):not(:where(.not-prose, .not-prose *)) {
|
|
171
|
+
@apply rounded bg-areia-surface-muted px-1 py-0.5;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.prose :where(pre):not(:where(.not-prose, .not-prose *)) {
|
|
175
|
+
@apply my-5 h-auto max-w-full overflow-x-auto rounded-md border border-areia-border p-4 leading-snug;
|
|
176
|
+
background: var(--areia-code-block-bg) !important;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.prose :where(pre:not(.shiki) code):not(:where(.not-prose, .not-prose *)) {
|
|
180
|
+
@apply block min-w-max whitespace-pre bg-transparent leading-snug;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.prose :where(pre.shiki code, pre code span):not(:where(.not-prose, .not-prose *)) {
|
|
184
|
+
@apply bg-transparent leading-snug;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.prose :where(pre.shiki):not(:where(.not-prose, .not-prose *)),
|
|
188
|
+
.prose :where(pre.shiki):not(:where(.not-prose, .not-prose *)) code {
|
|
189
|
+
background-color: var(--areia-code-block-bg) !important;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
@layer utilities {
|
|
194
|
+
.shiki {
|
|
195
|
+
@apply !overflow-x-auto !overflow-y-hidden !leading-snug;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.shiki code {
|
|
199
|
+
@apply block min-w-max overflow-visible border-0 bg-transparent p-0 leading-snug;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.shiki.twoslash,
|
|
203
|
+
.shiki.twoslash code {
|
|
204
|
+
overflow: visible !important;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.shiki .line {
|
|
208
|
+
@apply inline-block min-w-full leading-snug;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.shiki .highlighted,
|
|
212
|
+
.shiki .diff {
|
|
213
|
+
@apply -mx-4 px-4;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.twoslash-popup-code,
|
|
217
|
+
.twoslash-popup-code span {
|
|
218
|
+
@apply !bg-transparent;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
html.dark .shiki,
|
|
222
|
+
html.dark .shiki span {
|
|
223
|
+
color: var(--shiki-dark) !important;
|
|
224
|
+
font-style: var(--shiki-dark-font-style) !important;
|
|
225
|
+
font-weight: var(--shiki-dark-font-weight) !important;
|
|
226
|
+
text-decoration: var(--shiki-dark-text-decoration) !important;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
html.dark .shiki,
|
|
230
|
+
html.dark .prose :where(pre.shiki):not(:where(.not-prose, .not-prose *)) {
|
|
231
|
+
background-color: var(--areia-code-block-bg) !important;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/* night-owl-light blue (#4876d6) on #fbfbfb fails ~4.19:1 — darken for WCAG AA */
|
|
235
|
+
html:not(.dark) .shiki.shiki-themes span[style*="4876D6"],
|
|
236
|
+
html:not(.dark) .shiki.shiki-themes span[style*="4876d6"] {
|
|
237
|
+
color: #3558a8 !important;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { a as ImprensaIslandRegistry, n as RouterLike } from "./prerender-core-DBi9ntWW.mjs";
|
|
2
|
+
import { PrerenderArguments } from "vite-prerender-plugin";
|
|
3
|
+
|
|
4
|
+
//#region src/core/shiki-types.d.ts
|
|
5
|
+
/** Browser Shiki instance from `imprensa/shiki` virtual module. */
|
|
6
|
+
type ImprensaShikiHighlighter = {
|
|
7
|
+
loadLanguage: (lang: string) => Promise<void>;
|
|
8
|
+
codeToHtml: (code: string, options: {
|
|
9
|
+
lang: string;
|
|
10
|
+
themes: {
|
|
11
|
+
light: string;
|
|
12
|
+
dark: string;
|
|
13
|
+
};
|
|
14
|
+
}) => string;
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/core/client-runtime.d.ts
|
|
18
|
+
declare const shiki: Promise<ImprensaShikiHighlighter>;
|
|
19
|
+
/** Overridden at app build time by the imprensa Vite plugin from `imprensa()` shiki.themes. */
|
|
20
|
+
declare const shikiThemes: {
|
|
21
|
+
light: string;
|
|
22
|
+
dark: string;
|
|
23
|
+
};
|
|
24
|
+
declare const THEME_STORAGE_KEY = "imprensa:theme";
|
|
25
|
+
declare function getStoredTheme(): "light" | "dark" | "system";
|
|
26
|
+
declare function setStoredTheme(mode: "light" | "dark" | "system"): void;
|
|
27
|
+
declare function applyThemeToHtml(isDark: boolean): void;
|
|
28
|
+
declare function applyInitialTheme(): void;
|
|
29
|
+
declare function mountOrHydrate(options: {
|
|
30
|
+
pageRouter?: RouterLike;
|
|
31
|
+
registry: ImprensaIslandRegistry;
|
|
32
|
+
dev?: boolean;
|
|
33
|
+
target?: string;
|
|
34
|
+
static?: boolean;
|
|
35
|
+
}): (() => void) | undefined;
|
|
36
|
+
declare function createImprensa(options?: {
|
|
37
|
+
dev?: boolean;
|
|
38
|
+
target?: string;
|
|
39
|
+
static?: boolean;
|
|
40
|
+
}): {
|
|
41
|
+
init(): Promise<(() => void) | undefined>;
|
|
42
|
+
prerender(data?: PrerenderArguments): Promise<any>;
|
|
43
|
+
};
|
|
44
|
+
//#endregion
|
|
45
|
+
export { getStoredTheme as a, shiki as c, createImprensa as i, shikiThemes as l, applyInitialTheme as n, mountOrHydrate as o, applyThemeToHtml as r, setStoredTheme as s, THEME_STORAGE_KEY as t };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { n as ImprensaSocialService } from "../socials-BIszPk-A.mjs";
|
|
2
|
+
import { RawHtml } from "ilha";
|
|
3
|
+
|
|
4
|
+
//#region src/components/icons.d.ts
|
|
5
|
+
/** Social brand icon — `icon` matches `imprensa({ socials })` `service` values. */
|
|
6
|
+
declare function Icon(props: {
|
|
7
|
+
icon: ImprensaSocialService;
|
|
8
|
+
class?: string;
|
|
9
|
+
}): RawHtml;
|
|
10
|
+
/** @deprecated Use `<Icon icon="github" />` from `imprensa/icons`. */
|
|
11
|
+
declare function GithubIcon(props: {
|
|
12
|
+
class?: string;
|
|
13
|
+
}): RawHtml;
|
|
14
|
+
/** @deprecated Use `<Icon icon="x" />`. */
|
|
15
|
+
declare function XIcon(props: {
|
|
16
|
+
class?: string;
|
|
17
|
+
}): RawHtml;
|
|
18
|
+
/** @deprecated Use `<Icon icon="discord" />`. */
|
|
19
|
+
declare function DiscordIcon(props: {
|
|
20
|
+
class?: string;
|
|
21
|
+
}): RawHtml;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { DiscordIcon, GithubIcon, Icon, type ImprensaSocialService, XIcon };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { raw } from "ilha";
|
|
2
|
+
//#region src/components/icons.tsx
|
|
3
|
+
function escapeAttribute(value) {
|
|
4
|
+
return value.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<");
|
|
5
|
+
}
|
|
6
|
+
function svg(className, path) {
|
|
7
|
+
return raw(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"${className ? ` class="${escapeAttribute(className)}"` : ""}><path d="${path}"/></svg>`);
|
|
8
|
+
}
|
|
9
|
+
const PATHS = {
|
|
10
|
+
github: "M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844a9.59 9.59 0 0 1 2.504.337c1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.02 10.02 0 0 0 22 12.017C22 6.484 17.522 2 12 2z",
|
|
11
|
+
x: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.744l7.737-8.835L1.254 2.25H8.08l4.253 5.622 5.911-5.622zm-1.161 17.52h1.833L7.084 4.126H5.117z",
|
|
12
|
+
discord: "M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z"
|
|
13
|
+
};
|
|
14
|
+
/** Social brand icon — `icon` matches `imprensa({ socials })` `service` values. */
|
|
15
|
+
function Icon(props) {
|
|
16
|
+
return svg(props.class, PATHS[props.icon]);
|
|
17
|
+
}
|
|
18
|
+
/** @deprecated Use `<Icon icon="github" />` from `imprensa/icons`. */
|
|
19
|
+
function GithubIcon(props) {
|
|
20
|
+
return Icon({
|
|
21
|
+
icon: "github",
|
|
22
|
+
class: props.class
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/** @deprecated Use `<Icon icon="x" />`. */
|
|
26
|
+
function XIcon(props) {
|
|
27
|
+
return Icon({
|
|
28
|
+
icon: "x",
|
|
29
|
+
class: props.class
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/** @deprecated Use `<Icon icon="discord" />`. */
|
|
33
|
+
function DiscordIcon(props) {
|
|
34
|
+
return Icon({
|
|
35
|
+
icon: "discord",
|
|
36
|
+
class: props.class
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { DiscordIcon, GithubIcon, Icon, XIcon };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { a as DocToolbar, i as DocArticle, n as DocPager, r as getAdjacentDocs, t as DocNavItem } from "../doc-pager-D-YhwEQN.mjs";
|
|
2
|
+
import { searchDocuments } from "imprensa/mdx";
|
|
3
|
+
|
|
4
|
+
//#region src/components/search.d.ts
|
|
5
|
+
declare function LogoButton(): import("ilha/jsx-runtime").JSX.Element;
|
|
6
|
+
declare const ThemeToggle: import("ilha").Island<Record<string, unknown>, Omit<Record<never, never>, K> & Record<"mode", "system" | "light" | "dark">>;
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated Replaced by `GlobalSearch` (body-mounted in `createImprensa().init()`).
|
|
9
|
+
* Kept so the vite plugin island registry stays stable.
|
|
10
|
+
*/
|
|
11
|
+
declare const SearchOverlay: import("ilha").Island<Record<string, unknown>, Record<never, never>>;
|
|
12
|
+
declare function SearchSidebarTrigger(): import("ilha/jsx-runtime").JSX.Element;
|
|
13
|
+
declare function SearchNavbarTrigger(): import("ilha/jsx-runtime").JSX.Element;
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region src/components/sidebar.d.ts
|
|
16
|
+
declare const Sidebar: import("ilha").Island<Record<string, unknown>, Record<never, never>>;
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/components/layout.d.ts
|
|
19
|
+
declare const RootLayout: import("@ilha/router").LayoutHandler;
|
|
20
|
+
declare const ContentLayout: import("@ilha/router").LayoutHandler;
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/components/preview.d.ts
|
|
23
|
+
declare const Preview: import("ilha").Island<{
|
|
24
|
+
code64: string;
|
|
25
|
+
}, Record<never, never>>;
|
|
26
|
+
//#endregion
|
|
27
|
+
//#region src/components/snippet.d.ts
|
|
28
|
+
declare const Snippet: import("ilha").Island<{
|
|
29
|
+
code: string;
|
|
30
|
+
lang: string;
|
|
31
|
+
}, Record<never, never>>;
|
|
32
|
+
//#endregion
|
|
33
|
+
export { ContentLayout, DocArticle, type DocNavItem, DocPager, DocToolbar, LogoButton, Preview, RootLayout, SearchNavbarTrigger, SearchOverlay, SearchSidebarTrigger, Sidebar, Snippet, ThemeToggle, getAdjacentDocs };
|