@astryxdesign/cli 0.3.0-canary.d1b7d82 → 0.3.0-canary.f6cba81
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/assets/docs/layout.doc.dense.mjs +1 -1
- package/assets/templates/pages/login/page.tsx +1 -2
- package/assets/templates/pages/login-card/page.tsx +1 -2
- package/assets/templates/pages/login-split/page.tsx +2 -3
- package/assets/templates/pages/login-sso/page.tsx +1 -2
- package/foundation/agent-docs/agent-docs.mjs +3 -4
- package/foundation/agent-docs/agent-docs.test.mjs +8 -0
- package/package.json +9 -9
|
@@ -64,7 +64,7 @@ export const docsDense = {
|
|
|
64
64
|
'no Card-wrapped list items (card soup)',
|
|
65
65
|
'no stacked full-width Cards as page structure',
|
|
66
66
|
'no Cards in Cards',
|
|
67
|
-
'no decorative Badge
|
|
67
|
+
'no decorative Badge: counts/enums only; StatusDot/Token for status',
|
|
68
68
|
],
|
|
69
69
|
},
|
|
70
70
|
],
|
|
@@ -17,7 +17,6 @@ import {CubeIcon} from '@heroicons/react/24/outline';
|
|
|
17
17
|
const pageStyle: CSSProperties = {
|
|
18
18
|
minHeight: '100%',
|
|
19
19
|
backgroundColor: 'var(--color-background-body)',
|
|
20
|
-
padding: 'var(--spacing-6)',
|
|
21
20
|
};
|
|
22
21
|
// Cap the column at 400px but let it shrink to fit narrow screens (Stack
|
|
23
22
|
// has no maxWidth prop, so it's set here).
|
|
@@ -43,7 +42,7 @@ export default function LoginPage() {
|
|
|
43
42
|
};
|
|
44
43
|
|
|
45
44
|
return (
|
|
46
|
-
<Center axis="both" style={pageStyle}>
|
|
45
|
+
<Center axis="both" padding={6} style={pageStyle}>
|
|
47
46
|
<VStack gap={4} hAlign="center" style={contentStyle}>
|
|
48
47
|
{/* Logo */}
|
|
49
48
|
<VStack gap={2} hAlign="center">
|
|
@@ -58,7 +58,6 @@ const GoogleIcon = (props: React.SVGProps<SVGSVGElement>) => (
|
|
|
58
58
|
const pageStyle: CSSProperties = {
|
|
59
59
|
minHeight: '100%',
|
|
60
60
|
backgroundColor: 'var(--color-background-body)',
|
|
61
|
-
padding: 'var(--spacing-6)',
|
|
62
61
|
};
|
|
63
62
|
// Cap the column at 400px but let it shrink to fit narrow screens (Stack
|
|
64
63
|
// has no maxWidth prop, so it's set here).
|
|
@@ -87,7 +86,7 @@ export default function LoginSimple() {
|
|
|
87
86
|
};
|
|
88
87
|
|
|
89
88
|
return (
|
|
90
|
-
<Center axis="both" style={pageStyle}>
|
|
89
|
+
<Center axis="both" padding={6} style={pageStyle}>
|
|
91
90
|
<VStack gap={4} hAlign="center" style={contentStyle}>
|
|
92
91
|
{/* Logo */}
|
|
93
92
|
<VStack gap={2} hAlign="center">
|
|
@@ -33,11 +33,10 @@ const COLUMN_MIN_WIDTH = 240;
|
|
|
33
33
|
// tightens the inset at that same point, keyed to the card width (not the
|
|
34
34
|
// window) so it never desyncs.
|
|
35
35
|
// minHeight:100% fills the host so the centered card never leaves an unpainted
|
|
36
|
-
// band; padding keeps it off the surface edges.
|
|
36
|
+
// band; Center's padding prop keeps it off the surface edges.
|
|
37
37
|
const pageStyle: CSSProperties = {
|
|
38
38
|
minHeight: '100%',
|
|
39
39
|
backgroundColor: 'var(--color-background-body)',
|
|
40
|
-
padding: 'var(--spacing-6)',
|
|
41
40
|
};
|
|
42
41
|
const cardWrap: CSSProperties = {
|
|
43
42
|
width: '100%',
|
|
@@ -98,7 +97,7 @@ export default function LoginTwoColumn() {
|
|
|
98
97
|
};
|
|
99
98
|
|
|
100
99
|
return (
|
|
101
|
-
<Center axis="both" style={pageStyle}>
|
|
100
|
+
<Center axis="both" padding={6} style={pageStyle}>
|
|
102
101
|
<style>{LOGIN_SPLIT_CSS}</style>
|
|
103
102
|
<VStack gap={4} width="100%">
|
|
104
103
|
<div style={cardWrap}>
|
|
@@ -27,7 +27,6 @@ const pageStyle: CSSProperties = {
|
|
|
27
27
|
backgroundImage: `url(${BG_URL})`,
|
|
28
28
|
backgroundSize: 'cover',
|
|
29
29
|
backgroundPosition: 'center',
|
|
30
|
-
padding: 'var(--spacing-6)',
|
|
31
30
|
};
|
|
32
31
|
|
|
33
32
|
type SSOProvider = {
|
|
@@ -98,7 +97,7 @@ export default function LoginSSO() {
|
|
|
98
97
|
};
|
|
99
98
|
|
|
100
99
|
return (
|
|
101
|
-
<Center axis="both" style={pageStyle}>
|
|
100
|
+
<Center axis="both" padding={6} style={pageStyle}>
|
|
102
101
|
<Card padding={8} width="100%" maxWidth={400}>
|
|
103
102
|
<VStack gap={4} hAlign="stretch">
|
|
104
103
|
{/* ── Step 1: Email entry ── */}
|
|
@@ -341,10 +341,9 @@ export function generateCompressedIndex(version, {coreDir, invocation = getCliIn
|
|
|
341
341
|
|
|
342
342
|
// Rules — the top error-preventers.
|
|
343
343
|
lines.push('RULES:');
|
|
344
|
-
lines.push('- No <div> — components do all layout/spacing
|
|
345
|
-
lines.push('- Frame first:
|
|
346
|
-
lines.push('- Dense data = rows (Table, List/Item)
|
|
347
|
-
lines.push('- Status → StatusDot/Token; Badge only for counts and enumerated states, never decoration.');
|
|
344
|
+
lines.push('- No <div> — components do all layout/spacing, page frame included.');
|
|
345
|
+
lines.push('- Frame first: read `astryx docs layout` before writing any page or screen — page frame, region widths, breakpoint behavior.');
|
|
346
|
+
lines.push('- Dense data = rows (Table, List/Item), never Card-wrapped list items; Card is for standalone widgets. Status = StatusDot/Token; Badge = counts only.');
|
|
348
347
|
// Styling guidance tailored to the project's configured system — never
|
|
349
348
|
// recommend a path that isn't compiled here (xstyle needs the StyleX compiler;
|
|
350
349
|
// utilities need Tailwind). Tokens are always the source of truth.
|
|
@@ -46,6 +46,14 @@ describe('generateCompressedIndex', () => {
|
|
|
46
46
|
expect(result).toMatch(/never override --color-/);
|
|
47
47
|
});
|
|
48
48
|
|
|
49
|
+
it('sends frame choice to the layout doc rather than naming a shell', () => {
|
|
50
|
+
const result = generateCompressedIndex('1.0.0');
|
|
51
|
+
const frameRule = result.split('\n').find(l => l.includes('Frame first'));
|
|
52
|
+
expect(frameRule).toContain('astryx docs layout');
|
|
53
|
+
expect(result).not.toMatch(/AppShell/);
|
|
54
|
+
expect(frameRule).not.toMatch(/https?:/);
|
|
55
|
+
});
|
|
56
|
+
|
|
49
57
|
it('includes the post-generation self-check rule', () => {
|
|
50
58
|
const result = generateCompressedIndex('1.0.0');
|
|
51
59
|
expect(result).toContain('SELF-CHECK before you finish');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astryxdesign/cli",
|
|
3
|
-
"version": "0.3.0-canary.
|
|
3
|
+
"version": "0.3.0-canary.f6cba81",
|
|
4
4
|
"displayName": "CLI",
|
|
5
5
|
"description": "Scaffold projects, browse templates, generate themes, and get agent-ready docs from the command line.",
|
|
6
6
|
"author": "Meta Open Source",
|
|
@@ -84,10 +84,10 @@
|
|
|
84
84
|
"zod": "^4.4.3"
|
|
85
85
|
},
|
|
86
86
|
"peerDependencies": {
|
|
87
|
-
"@astryxdesign/charts": "0.3.0-canary.
|
|
88
|
-
"@astryxdesign/core": "0.3.0-canary.
|
|
89
|
-
"@astryxdesign/lab": "0.3.0-canary.
|
|
90
|
-
"@astryxdesign/theme-neutral": "0.3.0-canary.
|
|
87
|
+
"@astryxdesign/charts": "0.3.0-canary.f6cba81",
|
|
88
|
+
"@astryxdesign/core": "0.3.0-canary.f6cba81",
|
|
89
|
+
"@astryxdesign/lab": "0.3.0-canary.f6cba81",
|
|
90
|
+
"@astryxdesign/theme-neutral": "0.3.0-canary.f6cba81",
|
|
91
91
|
"gpt-tokenizer": "^3.4.0"
|
|
92
92
|
},
|
|
93
93
|
"peerDependenciesMeta": {
|
|
@@ -105,10 +105,10 @@
|
|
|
105
105
|
}
|
|
106
106
|
},
|
|
107
107
|
"devDependencies": {
|
|
108
|
-
"@astryxdesign/charts": "0.3.0-canary.
|
|
109
|
-
"@astryxdesign/core": "0.3.0-canary.
|
|
110
|
-
"@astryxdesign/lab": "0.3.0-canary.
|
|
111
|
-
"@astryxdesign/theme-neutral": "0.3.0-canary.
|
|
108
|
+
"@astryxdesign/charts": "0.3.0-canary.f6cba81",
|
|
109
|
+
"@astryxdesign/core": "0.3.0-canary.f6cba81",
|
|
110
|
+
"@astryxdesign/lab": "0.3.0-canary.f6cba81",
|
|
111
|
+
"@astryxdesign/theme-neutral": "0.3.0-canary.f6cba81",
|
|
112
112
|
"gpt-tokenizer": "^3.4.0"
|
|
113
113
|
},
|
|
114
114
|
"scripts": {
|