feat(desktop): embed BoosAPI Desktop client as a subproject
Vendor the rebranded BoosAPI Desktop client (Tauri + Vue) into metapi as a monorepo subdirectory under desktop/. Source only — node_modules, dist, Cargo target and the upstream .git history are excluded. desktop/ keeps its own independent Cargo workspace (desktop/src-tauri with crates/*); it is not part of the backend boosapi crate, so a `cargo check` at the metapi root still compiles only the backend. Build the desktop app from desktop/src-tauri per desktop/README.md. Note: app icons are still placeholder assets pending the final BoosAPI logo. The updater signing keys live outside the repo and are not included.
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
# Angular Quick Start
|
||||
|
||||
Get `markstream-angular` rendering markdown in a standalone Angular app.
|
||||
|
||||
## Basic Example
|
||||
|
||||
```ts
|
||||
import { Component, signal } from '@angular/core'
|
||||
import { bootstrapApplication } from '@angular/platform-browser'
|
||||
import { MarkstreamAngularComponent } from 'markstream-angular'
|
||||
import 'markstream-angular/index.css'
|
||||
import 'katex/dist/katex.min.css'
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
standalone: true,
|
||||
imports: [MarkstreamAngularComponent],
|
||||
template: `
|
||||
<markstream-angular
|
||||
[content]="markdown()"
|
||||
[final]="true"
|
||||
[codeBlockStream]="true"
|
||||
/>
|
||||
`,
|
||||
})
|
||||
class AppComponent {
|
||||
readonly markdown = signal(`# Hello Angular
|
||||
|
||||
This is **markstream-angular**.
|
||||
|
||||
\`\`\`ts
|
||||
export function greet(name: string) {
|
||||
return \`hello \${name}\`
|
||||
}
|
||||
\`\`\`
|
||||
|
||||
\`\`\`mermaid
|
||||
flowchart LR
|
||||
Input --> Parser --> Renderer
|
||||
\`\`\`
|
||||
|
||||
$E = mc^2$
|
||||
`)
|
||||
}
|
||||
|
||||
bootstrapApplication(AppComponent)
|
||||
```
|
||||
|
||||
## Streaming Example
|
||||
|
||||
```ts
|
||||
import { Component, signal } from '@angular/core'
|
||||
import { MarkstreamAngularComponent } from 'markstream-angular'
|
||||
|
||||
@Component({
|
||||
selector: 'app-streaming-demo',
|
||||
standalone: true,
|
||||
imports: [MarkstreamAngularComponent],
|
||||
template: `
|
||||
<markstream-angular
|
||||
[content]="content()"
|
||||
[final]="done()"
|
||||
[codeBlockStream]="true"
|
||||
[batchRendering]="true"
|
||||
[typewriter]="true"
|
||||
/>
|
||||
`,
|
||||
})
|
||||
export class StreamingDemoComponent {
|
||||
readonly content = signal('# Partial output')
|
||||
readonly done = signal(false)
|
||||
}
|
||||
```
|
||||
|
||||
## TypeScript Props
|
||||
|
||||
```ts
|
||||
import type { CodeBlockMonacoOptions, NodeRendererProps } from 'markstream-angular'
|
||||
|
||||
const monacoOptions: CodeBlockMonacoOptions = {
|
||||
fontSize: 13,
|
||||
wordWrap: 'on',
|
||||
}
|
||||
|
||||
const props: NodeRendererProps = {
|
||||
content: '# Angular',
|
||||
codeBlockMonacoOptions: monacoOptions,
|
||||
final: true,
|
||||
}
|
||||
```
|
||||
|
||||
## Custom Tags
|
||||
|
||||
The Angular package supports the same custom HTML tag flow used in the playground `thinking` demos:
|
||||
|
||||
```html
|
||||
<markstream-angular
|
||||
[content]="markdown()"
|
||||
[customHtmlTags]="['thinking']"
|
||||
[customComponents]="customComponents"
|
||||
/>
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
- [Angular Installation](/guide/angular-installation)
|
||||
- [Guide Index](/guide/)
|
||||
- [Playground Guide](/guide/playground)
|
||||
Reference in New Issue
Block a user