@cavuno/board 1.34.0 → 1.35.1
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/README.md +7 -8
- package/dist/bin.mjs +25 -10
- package/dist/{board-Id19Yg8-.d.ts → board-Z7hjKDp8.d.ts} +1 -1
- package/dist/{board-DgDC0T4g.d.mts → board-t_WltBBa.d.mts} +1 -1
- package/dist/filters.d.mts +2 -2
- package/dist/filters.d.ts +2 -2
- package/dist/filters.js +3 -6
- package/dist/filters.mjs +3 -6
- package/dist/format.d.mts +4 -4
- package/dist/format.d.ts +4 -4
- package/dist/format.js +3 -6
- package/dist/format.mjs +3 -6
- package/dist/index.d.mts +52 -43
- package/dist/index.d.ts +52 -43
- package/dist/index.js +27 -19
- package/dist/index.mjs +27 -19
- package/dist/{jobs-IIJtDgzX.d.mts → jobs-Dq2a9oPj.d.mts} +742 -61
- package/dist/{jobs-IIJtDgzX.d.ts → jobs-Dq2a9oPj.d.ts} +742 -61
- package/dist/{salaries-CL_00fNX.d.ts → salaries-CTin-18R.d.ts} +4 -4
- package/dist/{salaries-BfEEEOHj.d.mts → salaries-CWg82dOz.d.mts} +4 -4
- package/dist/seo.d.mts +4 -4
- package/dist/seo.d.ts +4 -4
- package/dist/seo.js +3 -6
- package/dist/seo.mjs +3 -6
- package/dist/server.d.mts +3 -3
- package/dist/server.d.ts +3 -3
- package/dist/sitemap.d.mts +3 -3
- package/dist/sitemap.d.ts +3 -3
- package/dist/{ui-copy-rlfoH9P3.d.mts → ui-copy-CKfFTtLk.d.mts} +0 -1
- package/dist/{ui-copy-rlfoH9P3.d.ts → ui-copy-CKfFTtLk.d.ts} +0 -1
- package/package.json +1 -1
- package/skills/cavuno-board-auth/SKILL.md +0 -1
- package/skills/cavuno-board-client/SKILL.md +1 -4
- package/skills/cavuno-board-filters/SKILL.md +43 -3
- package/skills/cavuno-board-job-alerts/SKILL.md +7 -7
- package/skills/cavuno-board-job-posting/SKILL.md +8 -22
- package/skills/cavuno-board-jobs/SKILL.md +2 -2
- package/skills/cavuno-board-setup/SKILL.md +6 -8
- package/skills/cavuno-board-smoke-test/SKILL.md +8 -7
- package/skills/cavuno-board-theme/SKILL.md +33 -45
- package/skills/flavors/tanstack-start/SKILL.md +0 -1
- package/skills/manifest.json +5 -5
|
@@ -1,69 +1,57 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cavuno-board-theme
|
|
3
|
-
description:
|
|
3
|
+
description: Optional hosted-board theme compatibility with @cavuno/board/theme. Use only when a custom frontend deliberately mirrors or migrates an existing Cavuno hosted theme; the consuming application normally owns tokens, fonts, and color mode.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Optional hosted-board theme compatibility
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
standard shadcn theme file — both end up in the same tokens.
|
|
8
|
+
The custom frontend owns its visual system by default: semantic design tokens, component styles, font loading, and light/dark-mode state belong in the application. Do not make remote `board.context().theme` the default source of truth for a new SDK frontend.
|
|
9
|
+
|
|
10
|
+
`@cavuno/board/theme` exists for a narrower job: mirroring an existing hosted board or providing a starting point during a hosted-to-custom migration.
|
|
12
11
|
|
|
13
12
|
## When to use
|
|
14
13
|
|
|
15
|
-
- The
|
|
16
|
-
-
|
|
14
|
+
- The human explicitly wants the custom frontend to mirror the current hosted board.
|
|
15
|
+
- A migration needs a temporary compatibility layer while tokens move into the application.
|
|
16
|
+
- One application intentionally renders many Cavuno boards with different operator-owned themes.
|
|
17
17
|
|
|
18
18
|
## When not to use
|
|
19
19
|
|
|
20
|
-
-
|
|
21
|
-
|
|
20
|
+
- A normal custom frontend whose design system already defines tokens and fonts.
|
|
21
|
+
- Component-level styling.
|
|
22
|
+
- As a replacement for the framework's theme provider or font system.
|
|
22
23
|
|
|
23
|
-
##
|
|
24
|
+
## Read compatibility values
|
|
24
25
|
|
|
25
26
|
```ts snippet
|
|
26
|
-
import {
|
|
27
|
+
import {
|
|
28
|
+
boardThemeToCss,
|
|
29
|
+
googleFontsUrl,
|
|
30
|
+
themeMode,
|
|
31
|
+
} from '@cavuno/board/theme';
|
|
27
32
|
|
|
28
33
|
const context = await board.context();
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
const hostedTheme = {
|
|
35
|
+
css: boardThemeToCss(context.theme),
|
|
36
|
+
fontUrl: googleFontsUrl(context.theme),
|
|
37
|
+
mode: themeMode(context.theme),
|
|
38
|
+
};
|
|
32
39
|
```
|
|
33
40
|
|
|
34
|
-
|
|
35
|
-
overrides win; render nothing when it's empty (a null theme means the app's
|
|
36
|
-
default theme applies untouched). Apply `mode` by toggling the `.dark`
|
|
37
|
-
class (`system` = follow `prefers-color-scheme`).
|
|
38
|
-
|
|
39
|
-
## The mapping is the contract
|
|
40
|
-
|
|
41
|
-
All 16 board color keys are consumed — a coverage golden in-monorepo
|
|
42
|
-
asserts neither the hosted board nor this module drops one. Standard
|
|
43
|
-
shadcn tokens carry the core (background/foreground, card, popover,
|
|
44
|
-
primary, secondary, muted, accent, destructive, border, input, ring);
|
|
45
|
-
the four keys shadcn has no standard token for ship as
|
|
46
|
-
`--contrast-background`, `--contrast-foreground`, `--foreground-subtle`,
|
|
47
|
-
`--foreground-disabled`, plus `--foreground-error`.
|
|
41
|
+
`boardThemeToCss` validates the stored colors before emitting CSS. A null theme returns no CSS, so the application default remains intact.
|
|
48
42
|
|
|
49
|
-
##
|
|
50
|
-
|
|
51
|
-
```ts no-check
|
|
52
|
-
// NEVER hardcode brand colors in components — they bypass the board theme:
|
|
53
|
-
<button style={{ background: '#7c3aed' }} />
|
|
54
|
-
// NEVER re-map theme keys ad hoc per page; the shell mapping is the single source.
|
|
55
|
-
// NEVER fetch fonts per-family — googleFontsUrl builds ONE deduped request.
|
|
56
|
-
```
|
|
43
|
+
## Migration guidance
|
|
57
44
|
|
|
58
|
-
|
|
45
|
+
1. Compare the returned colors, fonts, and mode with the consuming design system.
|
|
46
|
+
2. Move the chosen values into the application's own semantic tokens and font loader.
|
|
47
|
+
3. Remove the runtime theme injection when the application becomes authoritative.
|
|
59
48
|
|
|
60
|
-
|
|
61
|
-
dashboard owns palette design), no per-component theme props, no CSS-in-JS
|
|
62
|
-
runtime. The module emits strings; the app owns injection.
|
|
49
|
+
If permanent multi-board mirroring is an explicit requirement, inject the validated CSS after the static theme and make the framework's theme provider apply the returned mode. Do not interpolate raw stored colors or build font URLs yourself.
|
|
63
50
|
|
|
64
51
|
## Verify
|
|
65
52
|
|
|
66
|
-
- [ ]
|
|
67
|
-
|
|
68
|
-
- [ ]
|
|
69
|
-
- [ ]
|
|
53
|
+
- [ ] The application renders correctly when `context.theme` is null.
|
|
54
|
+
- [ ] New custom frontends do not fetch theme data merely to establish basic styling.
|
|
55
|
+
- [ ] Compatibility CSS never contains unsafe stored color syntax.
|
|
56
|
+
- [ ] Font loading and color-mode ownership are explicit and tested.
|
|
57
|
+
- [ ] A migration has a documented point where the application becomes authoritative.
|
|
@@ -19,7 +19,6 @@ import { createBoardClient } from '@cavuno/board';
|
|
|
19
19
|
|
|
20
20
|
// Module-scoped, no auth.storage → safe across concurrent Workers requests.
|
|
21
21
|
export const board = createBoardClient({
|
|
22
|
-
baseUrl: process.env.PUBLIC_CAVUNO_API_URL!,
|
|
23
22
|
board: process.env.PUBLIC_CAVUNO_BOARD!,
|
|
24
23
|
});
|
|
25
24
|
```
|
package/skills/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "1.35.1",
|
|
3
3
|
"skills": [
|
|
4
4
|
{
|
|
5
5
|
"name": "cavuno-board-account",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"name": "cavuno-board-client",
|
|
34
|
-
"description": "Create and configure the @cavuno/board client —
|
|
34
|
+
"description": "Create and configure the @cavuno/board client — the pk_ board identifier, optional API-origin override, global headers, hooks, per-call FetchOptions, and the rule that keeps one shared instance safe under SSR.",
|
|
35
35
|
"path": "skills/cavuno-board-client/SKILL.md",
|
|
36
36
|
"framework": null,
|
|
37
37
|
"category": "core"
|
|
@@ -80,14 +80,14 @@
|
|
|
80
80
|
},
|
|
81
81
|
{
|
|
82
82
|
"name": "cavuno-board-job-posting",
|
|
83
|
-
"description": "Build the anonymous \"Post a job\" funnel with the @cavuno/board SDK — jobPosting.plans, create and its status-discriminated JobPostingResult (checkout / published / pending_approval / invoice_sent), logo upload + fetchLogoByDomain, and the email-verified billing helpers (
|
|
83
|
+
"description": "Build the anonymous \"Post a job\" funnel with the @cavuno/board SDK — jobPosting.plans, create and its status-discriminated JobPostingResult (checkout / published / pending_approval / invoice_sent), logo upload + fetchLogoByDomain, and the email-verified billing helpers (sendBillingVerification, getBillingOptions).",
|
|
84
84
|
"path": "skills/cavuno-board-job-posting/SKILL.md",
|
|
85
85
|
"framework": null,
|
|
86
86
|
"category": "core"
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
89
|
"name": "cavuno-board-jobs",
|
|
90
|
-
"description": "Browse, search, and render jobs with the @cavuno/board SDK — jobs.list, jobs.search, jobs.retrieve, jobs.similar. Covers the slim card vs full job shapes,
|
|
90
|
+
"description": "Browse, search, and render jobs with the @cavuno/board SDK — jobs.list, jobs.search, jobs.retrieve, jobs.similar. Covers the slim card vs full job shapes, catalog pagination (count/limit/offset + opaque cursor), filters, and the candidate-paywall gatedCount.",
|
|
91
91
|
"path": "skills/cavuno-board-jobs/SKILL.md",
|
|
92
92
|
"framework": null,
|
|
93
93
|
"category": "core"
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
},
|
|
158
158
|
{
|
|
159
159
|
"name": "cavuno-board-theme",
|
|
160
|
-
"description": "
|
|
160
|
+
"description": "Optional hosted-board theme compatibility with @cavuno/board/theme. Use only when a custom frontend deliberately mirrors or migrates an existing Cavuno hosted theme; the consuming application normally owns tokens, fonts, and color mode.",
|
|
161
161
|
"path": "skills/cavuno-board-theme/SKILL.md",
|
|
162
162
|
"framework": null,
|
|
163
163
|
"category": "core"
|