@flamingo-stack/openframe-frontend-core 0.0.331 → 0.0.332-snapshot.20260629091202
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/dist/{chunk-7PUBWSQL.js → chunk-2N6B44NP.js} +2 -2
- package/dist/{chunk-NMHO72UF.cjs → chunk-37EKG2M7.cjs} +31 -31
- package/dist/{chunk-NMHO72UF.cjs.map → chunk-37EKG2M7.cjs.map} +1 -1
- package/dist/{chunk-GDUZ3YQD.cjs → chunk-3QBOSHY4.cjs} +37 -37
- package/dist/{chunk-GDUZ3YQD.cjs.map → chunk-3QBOSHY4.cjs.map} +1 -1
- package/dist/{chunk-CQNGQTWK.js → chunk-6ONCYSRV.js} +2 -2
- package/dist/{chunk-LCDT3IDD.cjs → chunk-A2H2JOQI.cjs} +12 -12
- package/dist/{chunk-LCDT3IDD.cjs.map → chunk-A2H2JOQI.cjs.map} +1 -1
- package/dist/{chunk-ZW3RSVCW.js → chunk-ES6VJ4BO.js} +2 -2
- package/dist/{chunk-AHO56GY2.cjs → chunk-FNHB7YX5.cjs} +9 -9
- package/dist/{chunk-AHO56GY2.cjs.map → chunk-FNHB7YX5.cjs.map} +1 -1
- package/dist/{chunk-2V4TEZFV.cjs → chunk-GW7YJC5J.cjs} +15 -15
- package/dist/{chunk-2V4TEZFV.cjs.map → chunk-GW7YJC5J.cjs.map} +1 -1
- package/dist/{chunk-KK2KWKGQ.js → chunk-J2GAKC4L.js} +4 -4
- package/dist/{chunk-O742P5M7.js → chunk-LCR326AU.js} +2 -2
- package/dist/{chunk-G4FVQBRI.cjs → chunk-MAGQM63C.cjs} +56 -56
- package/dist/{chunk-G4FVQBRI.cjs.map → chunk-MAGQM63C.cjs.map} +1 -1
- package/dist/{chunk-DQDMUHO5.cjs → chunk-NFU2DXOV.cjs} +7 -7
- package/dist/{chunk-DQDMUHO5.cjs.map → chunk-NFU2DXOV.cjs.map} +1 -1
- package/dist/{chunk-WP4ZV52Q.js → chunk-PBNSGA25.js} +4 -4
- package/dist/{chunk-CJ6EUL7A.js → chunk-RFOQ7YHS.js} +2 -2
- package/dist/{chunk-SMGRO5K7.cjs → chunk-RPMOVC7D.cjs} +1 -1
- package/dist/{chunk-SMGRO5K7.cjs.map → chunk-RPMOVC7D.cjs.map} +1 -1
- package/dist/{chunk-HSKVSXUD.cjs → chunk-SHHYY57A.cjs} +5 -5
- package/dist/{chunk-HSKVSXUD.cjs.map → chunk-SHHYY57A.cjs.map} +1 -1
- package/dist/{chunk-H6BLNXXK.cjs → chunk-SUSIWWW2.cjs} +62 -62
- package/dist/{chunk-H6BLNXXK.cjs.map → chunk-SUSIWWW2.cjs.map} +1 -1
- package/dist/{chunk-5UUNN54Y.js → chunk-VGZUJC4X.js} +2 -2
- package/dist/{chunk-OSB772QC.js → chunk-X2ZO2WGY.js} +2 -2
- package/dist/{chunk-MWAUWLYS.js → chunk-XZS6Z2RE.js} +1 -1
- package/dist/{chunk-MWAUWLYS.js.map → chunk-XZS6Z2RE.js.map} +1 -1
- package/dist/{chunk-MMC5GWOY.js → chunk-YEEH336W.js} +4 -4
- package/dist/{chunk-PPU3UT2Y.cjs → chunk-YSELDRJX.cjs} +26 -26
- package/dist/{chunk-PPU3UT2Y.cjs.map → chunk-YSELDRJX.cjs.map} +1 -1
- package/dist/{chunk-LNDVGOM2.cjs → chunk-YV5KFAZL.cjs} +25 -25
- package/dist/{chunk-LNDVGOM2.cjs.map → chunk-YV5KFAZL.cjs.map} +1 -1
- package/dist/{chunk-2DMYM4ZW.js → chunk-Z3WUYB4F.js} +4 -4
- package/dist/components/case-studies/index.cjs +8 -8
- package/dist/components/case-studies/index.js +2 -2
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/chat/index.js +1 -1
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/docs/index.cjs +5 -5
- package/dist/components/docs/index.js +4 -4
- package/dist/components/embeds/index.cjs +3 -3
- package/dist/components/embeds/index.js +2 -2
- package/dist/components/faq/index.cjs +3 -3
- package/dist/components/faq/index.js +2 -2
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/help-center-pages/index.cjs +20 -20
- package/dist/components/help-center-pages/index.js +11 -11
- package/dist/components/index.cjs +121 -121
- package/dist/components/index.js +9 -9
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/onboarding-guides/index.js +4 -4
- package/dist/components/related-content/index.cjs +3 -3
- package/dist/components/related-content/index.js +2 -2
- package/dist/components/tickets/index.cjs +5 -5
- package/dist/components/tickets/index.js +4 -4
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/product-release.d.ts +2 -0
- package/dist/types/product-release.d.ts.map +1 -1
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/src/ODS_TOKEN_RULES.md +96 -0
- package/src/types/product-release.ts +6 -0
- /package/dist/{chunk-7PUBWSQL.js.map → chunk-2N6B44NP.js.map} +0 -0
- /package/dist/{chunk-CQNGQTWK.js.map → chunk-6ONCYSRV.js.map} +0 -0
- /package/dist/{chunk-ZW3RSVCW.js.map → chunk-ES6VJ4BO.js.map} +0 -0
- /package/dist/{chunk-KK2KWKGQ.js.map → chunk-J2GAKC4L.js.map} +0 -0
- /package/dist/{chunk-O742P5M7.js.map → chunk-LCR326AU.js.map} +0 -0
- /package/dist/{chunk-WP4ZV52Q.js.map → chunk-PBNSGA25.js.map} +0 -0
- /package/dist/{chunk-CJ6EUL7A.js.map → chunk-RFOQ7YHS.js.map} +0 -0
- /package/dist/{chunk-5UUNN54Y.js.map → chunk-VGZUJC4X.js.map} +0 -0
- /package/dist/{chunk-OSB772QC.js.map → chunk-X2ZO2WGY.js.map} +0 -0
- /package/dist/{chunk-MMC5GWOY.js.map → chunk-YEEH336W.js.map} +0 -0
- /package/dist/{chunk-2DMYM4ZW.js.map → chunk-Z3WUYB4F.js.map} +0 -0
package/package.json
CHANGED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# ODS Token Rules (canonical)
|
|
2
|
+
|
|
3
|
+
> **Single source of truth.** This file lives in `@flamingo-stack/openframe-frontend-core` and is
|
|
4
|
+
> consumed by every app via `@import` from the installed package. Edit it **only here** in the core
|
|
5
|
+
> lib; consumers pick up changes when they bump the package version. Do not copy it into other repos.
|
|
6
|
+
|
|
7
|
+
## Principle
|
|
8
|
+
|
|
9
|
+
Never hardcode colors, font families, font sizes, or spacing. Always use ODS tokens — Tailwind
|
|
10
|
+
`ods-*` utilities or ODS CSS variables. This applies to **new and modified** components: convert
|
|
11
|
+
hardcoded values you touch, even when copying an existing pattern. Figma MCP output is a structural
|
|
12
|
+
hint only — translate it to ODS tokens before committing.
|
|
13
|
+
|
|
14
|
+
## Colors
|
|
15
|
+
|
|
16
|
+
Source of truth: `src/styles/` + `tailwind.config.ts`. Use the Tailwind `ods-*` classes (the top
|
|
17
|
+
semantic layer). Never reach into the raw palette vars such as `var(--ods-attention-red-error)` —
|
|
18
|
+
the semantic layer (`--color-*`) exists so theming and renames don't break.
|
|
19
|
+
|
|
20
|
+
- **Backgrounds:** `bg-ods-bg` (page), `bg-ods-card`, `bg-ods-overlay`, `bg-ods-skeleton`
|
|
21
|
+
- **Text:** `text-ods-text-primary`, `-secondary`, `-tertiary`, `-muted`, `-on-accent`
|
|
22
|
+
- **Borders:** `border-ods-border` (+ `-hover`, `-active`, `-focus`)
|
|
23
|
+
- **Accent:** `bg-ods-accent`, `text-ods-accent` (+ `-hover`, `-active`)
|
|
24
|
+
- **Status:** `text-ods-error` / `bg-ods-error`, plus `-success`, `-warning`, `-info` — **NOT** `var(--ods-attention-*)`
|
|
25
|
+
- **Brand:** `bg-ods-flamingo-pink`, `bg-ods-flamingo-cyan`, `text-ods-open-yellow`
|
|
26
|
+
- **Adaptive:** `text-ods-current` / `bg-ods-current` (platform-aware brand color)
|
|
27
|
+
|
|
28
|
+
**Forbidden:** hex (`#fff`), `rgb()`, Tailwind color scales (`bg-gray-800`, `text-white`), and raw
|
|
29
|
+
`var(--ods-attention-*)` palette vars.
|
|
30
|
+
|
|
31
|
+
## Spacing
|
|
32
|
+
|
|
33
|
+
ODS spacing is **not** mapped into Tailwind's spacing scale. Use arbitrary utilities that reference
|
|
34
|
+
the spacing CSS variables — the same way the Figma mockups do (`gap: var(--spacing-system-xl)`):
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
gap-[var(--spacing-system-xl)] p-[var(--spacing-system-lf)] px-[var(--spacing-system-s)]
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The same applies to `py/pt/pb/pl/pr`, `mx/my/mt/mb/ml/mr`, `space-x`, `space-y`, `inset`,
|
|
41
|
+
`top/right/bottom/left`.
|
|
42
|
+
|
|
43
|
+
| Token | Mobile | Desktop |
|
|
44
|
+
|-------|--------|---------|
|
|
45
|
+
| `--spacing-system-zero` | 0 | 0 |
|
|
46
|
+
| `--spacing-system-xxs` | 4px | 4px |
|
|
47
|
+
| `--spacing-system-xs` | 4px | 8px |
|
|
48
|
+
| `--spacing-system-xsf` | 8px | 8px |
|
|
49
|
+
| `--spacing-system-s` | 8px | 12px |
|
|
50
|
+
| `--spacing-system-sf` | 12px | 12px |
|
|
51
|
+
| `--spacing-system-m` | 12px | 16px |
|
|
52
|
+
| `--spacing-system-mf` | 16px | 16px |
|
|
53
|
+
| `--spacing-system-l` | 16px | 24px |
|
|
54
|
+
| `--spacing-system-lf` | 24px | 24px |
|
|
55
|
+
| `--spacing-system-xl` | 24px | 40px |
|
|
56
|
+
| `--spacing-system-xlf` | 40px | 40px |
|
|
57
|
+
| `--spacing-system-xxl` | 40px | 40px |
|
|
58
|
+
|
|
59
|
+
Mapping from raw Tailwind: `gap-1` → `xxs` (4px), `gap-2` → `xsf` (8px), `gap-3` → `sf` (12px),
|
|
60
|
+
`gap-4` → `mf` (16px), `gap-6` → `lf` (24px), `gap-10` → `xlf` (40px). Use the `f` ("fixed") variant
|
|
61
|
+
to keep a value constant across breakpoints; the non-`f` variant grows on desktop. `gap-0` / `p-0`
|
|
62
|
+
are fine — `0` is unambiguous. Fixed component dimensions (`h-20`, `w-56`) are sizing, not spacing —
|
|
63
|
+
leave them as Tailwind sizing classes.
|
|
64
|
+
|
|
65
|
+
## Typography
|
|
66
|
+
|
|
67
|
+
Use the ODS composite typography utilities (`text-h1` … `text-h6`). Never write raw `text-[16px]`,
|
|
68
|
+
`text-4xl`, or font-family overrides like `font-['DM_Sans']`.
|
|
69
|
+
|
|
70
|
+
| Class | Font | Weight | Size (tablet+) | Line-height | Text-transform |
|
|
71
|
+
|-------|------|--------|-----------------|-------------|----------------|
|
|
72
|
+
| `text-h3` | DM Sans | **700 (bold)** | 18px | 24px | none |
|
|
73
|
+
| `text-h4` | DM Sans | 500 (medium) | 18px | 24px | none |
|
|
74
|
+
| `text-h5` | Azeret Mono | 500 (medium) | 14px | 20px | **uppercase** |
|
|
75
|
+
| `text-h6` | DM Sans | 500 (medium) | 14px | 20px | none |
|
|
76
|
+
|
|
77
|
+
`text-h1` / `text-h2` cover larger headings. Key distinctions:
|
|
78
|
+
|
|
79
|
+
- `text-h3` vs `text-h4`: same size (18px) but h3 is **bold**, h4 is **medium** — h4 for stat values, h3 for bold headings.
|
|
80
|
+
- `text-h5` vs `text-h6`: same size (14px) but h5 is **Azeret Mono uppercase** (section labels like "POLICY TESTING"), h6 is **DM Sans sentence case** (regular labels like "Started", "Duration").
|
|
81
|
+
|
|
82
|
+
## General
|
|
83
|
+
|
|
84
|
+
- Convert hardcoded values to ODS tokens even when copying patterns from existing code.
|
|
85
|
+
- Match Figma by choosing the typography class on **font family + weight + text-transform**, not just size.
|
|
86
|
+
- If Figma uses a token that doesn't exist in ODS, flag it — don't silently hardcode a fallback.
|
|
87
|
+
- **Z-index** — use the established hierarchy, don't invent numbers: header `z-[50]`, sidebar overlay
|
|
88
|
+
`z-[40]` / sidebar `z-[45]`, modals `z-[1300]`, toasts `z-[9999]`, tooltips `z-[2147483647]`.
|
|
89
|
+
|
|
90
|
+
## Figma → code workflow
|
|
91
|
+
|
|
92
|
+
1. Call `get_design_context` for the node.
|
|
93
|
+
2. Treat the returned code as a *structural hint only*.
|
|
94
|
+
3. Map every color, font-size, font-weight, and spacing value to an ODS token.
|
|
95
|
+
4. Check the target project for existing components that already match the design — reuse over regenerate.
|
|
96
|
+
5. If Figma uses a token absent from ODS, flag it — don't hardcode a fallback.
|
|
@@ -124,6 +124,12 @@ export interface ProductRelease {
|
|
|
124
124
|
status: 'draft' | 'published' | 'archived'
|
|
125
125
|
published_at: string | null
|
|
126
126
|
author_id: string | null
|
|
127
|
+
|
|
128
|
+
// HubSpot marketing email (mirrors InvestorUpdate). `hubspot_email_id` is the
|
|
129
|
+
// stored HubSpot email id; `hubspot_email_url` is computed by the admin GET
|
|
130
|
+
// route from the production portal id (never persisted).
|
|
131
|
+
hubspot_email_id?: string | null
|
|
132
|
+
hubspot_email_url?: string | null
|
|
127
133
|
/**
|
|
128
134
|
* Hydrated by `getRelease` (detail) and `getReleases` (list) via
|
|
129
135
|
* `hydrateAuthor` in the hub DAL. Optional so admin form + every existing
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|