@shipsite.dev/cli 0.1.5 → 0.2.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.
Files changed (65) hide show
  1. package/dist/commands/build.d.ts.map +1 -1
  2. package/dist/commands/build.js +7 -18
  3. package/dist/commands/build.js.map +1 -1
  4. package/dist/commands/dev.d.ts +0 -1
  5. package/dist/commands/dev.d.ts.map +1 -1
  6. package/dist/commands/dev.js +5 -630
  7. package/dist/commands/dev.js.map +1 -1
  8. package/dist/index.js +0 -0
  9. package/dist/workspace/clean.d.ts +2 -0
  10. package/dist/workspace/clean.d.ts.map +1 -0
  11. package/dist/workspace/clean.js +6 -0
  12. package/dist/workspace/clean.js.map +1 -0
  13. package/dist/workspace/generators/content-collections.d.ts +3 -0
  14. package/dist/workspace/generators/content-collections.d.ts.map +1 -0
  15. package/dist/workspace/generators/content-collections.js +8 -0
  16. package/dist/workspace/generators/content-collections.js.map +1 -0
  17. package/dist/workspace/generators/i18n.d.ts +3 -0
  18. package/dist/workspace/generators/i18n.d.ts.map +1 -0
  19. package/dist/workspace/generators/i18n.js +30 -0
  20. package/dist/workspace/generators/i18n.js.map +1 -0
  21. package/dist/workspace/generators/layout.d.ts +3 -0
  22. package/dist/workspace/generators/layout.d.ts.map +1 -0
  23. package/dist/workspace/generators/layout.js +85 -0
  24. package/dist/workspace/generators/layout.js.map +1 -0
  25. package/dist/workspace/generators/next-config.d.ts +3 -0
  26. package/dist/workspace/generators/next-config.d.ts.map +1 -0
  27. package/dist/workspace/generators/next-config.js +33 -0
  28. package/dist/workspace/generators/next-config.js.map +1 -0
  29. package/dist/workspace/generators/page.d.ts +3 -0
  30. package/dist/workspace/generators/page.d.ts.map +1 -0
  31. package/dist/workspace/generators/page.js +83 -0
  32. package/dist/workspace/generators/page.js.map +1 -0
  33. package/dist/workspace/generators/project-files.d.ts +3 -0
  34. package/dist/workspace/generators/project-files.d.ts.map +1 -0
  35. package/dist/workspace/generators/project-files.js +49 -0
  36. package/dist/workspace/generators/project-files.js.map +1 -0
  37. package/dist/workspace/generators/proxy.d.ts +3 -0
  38. package/dist/workspace/generators/proxy.d.ts.map +1 -0
  39. package/dist/workspace/generators/proxy.js +25 -0
  40. package/dist/workspace/generators/proxy.js.map +1 -0
  41. package/dist/workspace/generators/sitemap-robots.d.ts +3 -0
  42. package/dist/workspace/generators/sitemap-robots.d.ts.map +1 -0
  43. package/dist/workspace/generators/sitemap-robots.js +28 -0
  44. package/dist/workspace/generators/sitemap-robots.js.map +1 -0
  45. package/dist/workspace/index.d.ts +6 -0
  46. package/dist/workspace/index.d.ts.map +1 -0
  47. package/dist/workspace/index.js +51 -0
  48. package/dist/workspace/index.js.map +1 -0
  49. package/dist/workspace/resolve-next.d.ts +9 -0
  50. package/dist/workspace/resolve-next.d.ts.map +1 -0
  51. package/dist/workspace/resolve-next.js +21 -0
  52. package/dist/workspace/resolve-next.js.map +1 -0
  53. package/dist/workspace/styles.d.ts +3 -0
  54. package/dist/workspace/styles.d.ts.map +1 -0
  55. package/dist/workspace/styles.js +150 -0
  56. package/dist/workspace/styles.js.map +1 -0
  57. package/dist/workspace/symlinks.d.ts +2 -0
  58. package/dist/workspace/symlinks.d.ts.map +1 -0
  59. package/dist/workspace/symlinks.js +20 -0
  60. package/dist/workspace/symlinks.js.map +1 -0
  61. package/dist/workspace/types.d.ts +8 -0
  62. package/dist/workspace/types.d.ts.map +1 -0
  63. package/dist/workspace/types.js +2 -0
  64. package/dist/workspace/types.js.map +1 -0
  65. package/package.json +6 -1
@@ -0,0 +1,150 @@
1
+ import { join, relative, dirname } from 'path';
2
+ import { existsSync, writeFileSync, realpathSync } from 'fs';
3
+ import { generateShadcnTokens } from '@shipsite.dev/core/theme';
4
+ function resolveComponentsSource(rootDir, cssDir) {
5
+ let searchDir = rootDir;
6
+ for (let i = 0; i < 10; i++) {
7
+ const pkgDir = join(searchDir, 'node_modules', '@shipsite.dev', 'components');
8
+ const srcCandidate = join(pkgDir, 'src');
9
+ const distCandidate = join(pkgDir, 'dist');
10
+ const candidate = existsSync(srcCandidate) ? srcCandidate : existsSync(distCandidate) ? distCandidate : null;
11
+ if (candidate) {
12
+ const realPath = realpathSync(candidate);
13
+ const rel = relative(cssDir, realPath).split('\\').join('/');
14
+ let utilsCssImport = '';
15
+ const utilsCssPath = join(realPath, 'styles', 'utils.css');
16
+ if (existsSync(utilsCssPath)) {
17
+ const utilsRel = relative(cssDir, utilsCssPath).split('\\').join('/');
18
+ utilsCssImport = `\n@import "${utilsRel}";`;
19
+ }
20
+ return { sourceDirective: `\n@source "${rel}";`, utilsCssImport };
21
+ }
22
+ const parent = dirname(searchDir);
23
+ if (parent === searchDir)
24
+ break;
25
+ searchDir = parent;
26
+ }
27
+ return { sourceDirective: '', utilsCssImport: '' };
28
+ }
29
+ export function generateStyles(ctx) {
30
+ const cssDir = join(ctx.srcDir, 'styles');
31
+ const { sourceDirective, utilsCssImport } = resolveComponentsSource(ctx.rootDir, cssDir);
32
+ const shadcnTokens = generateShadcnTokens(ctx.config.colors || {});
33
+ writeFileSync(join(cssDir, 'globals.css'), `@import 'tailwindcss';${sourceDirective}${utilsCssImport}
34
+
35
+ @import 'tw-animate-css';
36
+
37
+ @custom-variant dark (&:where(.dark, .dark *));
38
+
39
+ @theme inline {
40
+ --color-brand: var(--brand);
41
+ --color-brand-foreground: var(--brand-foreground);
42
+ --color-background: var(--background);
43
+ --color-foreground: var(--foreground);
44
+ --color-card: var(--card);
45
+ --color-card-foreground: var(--card-foreground);
46
+ --color-popover: var(--popover);
47
+ --color-popover-foreground: var(--popover-foreground);
48
+ --color-primary: var(--primary);
49
+ --color-primary-foreground: var(--primary-foreground);
50
+ --color-secondary: var(--secondary);
51
+ --color-secondary-foreground: var(--secondary-foreground);
52
+ --color-muted: var(--muted);
53
+ --color-muted-foreground: var(--muted-foreground);
54
+ --color-accent: var(--accent);
55
+ --color-accent-foreground: var(--accent-foreground);
56
+ --color-destructive: var(--destructive);
57
+ --color-destructive-foreground: var(--destructive-foreground);
58
+ --color-border: var(--border);
59
+ --color-input: var(--input);
60
+ --color-ring: var(--ring);
61
+
62
+ --radius-sm: calc(var(--radius) - 4px);
63
+ --radius-md: calc(var(--radius) - 2px);
64
+ --radius-lg: var(--radius);
65
+ --radius-xl: calc(var(--radius) + 4px);
66
+ --radius-2xl: calc(var(--radius) + 8px);
67
+
68
+ --spacing-container: 1280px;
69
+ --spacing-container-lg: 1536px;
70
+
71
+ --shadow-md: 0 4px 6px -1px var(--shadow), 0 2px 4px -2px var(--shadow);
72
+ --shadow-xl: 0 20px 25px -5px var(--shadow), 0 8px 10px -6px var(--shadow);
73
+ --shadow-2xl: 0 25px 50px -12px var(--shadow);
74
+ --shadow-mockup: -12px 16px 48px var(--shadow-strong);
75
+
76
+ --line-width: 1px;
77
+
78
+ --animate-accordion-down: accordion-down 0.2s ease-out;
79
+ --animate-accordion-up: accordion-up 0.2s ease-out;
80
+ --animate-appear: appear 0.6s forwards ease-out;
81
+ --animate-appear-zoom: appear-zoom 0.6s forwards ease-out;
82
+
83
+ @keyframes accordion-down {
84
+ from { height: 0; }
85
+ to { height: var(--radix-accordion-content-height); }
86
+ }
87
+ @keyframes accordion-up {
88
+ from { height: var(--radix-accordion-content-height); }
89
+ to { height: 0; }
90
+ }
91
+ @keyframes appear {
92
+ 0% { opacity: 0; transform: translateY(1rem); filter: blur(0.5rem); }
93
+ 50% { filter: blur(0); }
94
+ 100% { opacity: 1; transform: translateY(0); filter: blur(0); }
95
+ }
96
+ @keyframes appear-zoom {
97
+ 0% { opacity: 0; transform: scale(0.5); }
98
+ 100% { opacity: 1; transform: scale(1); }
99
+ }
100
+ }
101
+
102
+ ${shadcnTokens}
103
+ @layer base {
104
+ * {
105
+ @apply border-border;
106
+ }
107
+ body {
108
+ @apply bg-background text-foreground;
109
+ font-family: system-ui, -apple-system, sans-serif;
110
+ -webkit-font-smoothing: antialiased;
111
+ }
112
+ html { scroll-behavior: smooth; }
113
+ }
114
+
115
+ .container-main {
116
+ width: 100%;
117
+ max-width: 76rem;
118
+ margin-inline: auto;
119
+ padding-inline: clamp(1rem, 3vw, 3rem);
120
+ }
121
+
122
+ @layer utilities {
123
+ @keyframes marquee {
124
+ from { transform: translateX(0); }
125
+ to { transform: translateX(calc(-100% - var(--marquee-gap))); }
126
+ }
127
+ .animate-marquee {
128
+ flex-shrink: 0;
129
+ animation: marquee var(--marquee-duration, 30s) linear infinite;
130
+ }
131
+ }
132
+
133
+ .page-prose > h2, .page-prose > h3, .page-prose > h4,
134
+ .page-prose > p, .page-prose > ul, .page-prose > ol,
135
+ .page-prose > blockquote {
136
+ width: 100%;
137
+ max-width: 76rem;
138
+ margin-inline: auto;
139
+ padding-inline: clamp(1rem, 3vw, 3rem);
140
+ }
141
+ .page-prose > h2 { margin-top: 2.5rem; margin-bottom: 1rem; font-size: clamp(1.375rem, 1.1rem + 1.2vw, 2.25rem); font-weight: 600; }
142
+ .page-prose > h3 { margin-top: 1.5rem; margin-bottom: 0.75rem; font-size: clamp(1.125rem, 1rem + 0.6vw, 1.5rem); font-weight: 600; }
143
+ .page-prose > p { font-size: 1rem; line-height: 1.6; margin-top: 0.5rem; margin-bottom: 0.5rem; }
144
+ .page-prose > ul { list-style: disc; padding-left: 1.75rem; margin-block: 0.75rem; }
145
+ .page-prose > ol { list-style: decimal; padding-left: 1.75rem; margin-block: 0.75rem; }
146
+ .page-prose > p a { color: var(--primary); text-decoration: underline; font-weight: 500; }
147
+ .page-prose > p a:hover { text-decoration: none; }
148
+ `);
149
+ }
150
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/workspace/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,SAAS,uBAAuB,CAAC,OAAe,EAAE,MAAc;IAC9D,IAAI,SAAS,GAAG,OAAO,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;QAC9E,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7G,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7D,IAAI,cAAc,GAAG,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC3D,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtE,cAAc,GAAG,cAAc,QAAQ,IAAI,CAAC;YAC9C,CAAC;YACD,OAAO,EAAE,eAAe,EAAE,cAAc,GAAG,IAAI,EAAE,cAAc,EAAE,CAAC;QACpE,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM;QAChC,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAqB;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,uBAAuB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzF,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAEnE,aAAa,CACX,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAC3B,yBAAyB,eAAe,GAAG,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqE3D,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Cb,CACE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function createSymlinks(rootDir: string, shipSiteDir: string): void;
2
+ //# sourceMappingURL=symlinks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symlinks.d.ts","sourceRoot":"","sources":["../../src/workspace/symlinks.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAkBzE"}
@@ -0,0 +1,20 @@
1
+ import { join } from 'path';
2
+ import { existsSync, symlinkSync } from 'fs';
3
+ export function createSymlinks(rootDir, shipSiteDir) {
4
+ // Content directory (required)
5
+ const contentLink = join(shipSiteDir, 'content');
6
+ if (!existsSync(contentLink)) {
7
+ symlinkSync(join(rootDir, 'content'), contentLink);
8
+ }
9
+ // Public directory (optional)
10
+ const publicLink = join(shipSiteDir, 'public');
11
+ if (!existsSync(publicLink) && existsSync(join(rootDir, 'public'))) {
12
+ symlinkSync(join(rootDir, 'public'), publicLink);
13
+ }
14
+ // Custom components directory (optional)
15
+ const componentsLink = join(shipSiteDir, 'components');
16
+ if (!existsSync(componentsLink) && existsSync(join(rootDir, 'components'))) {
17
+ symlinkSync(join(rootDir, 'components'), componentsLink);
18
+ }
19
+ }
20
+ //# sourceMappingURL=symlinks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symlinks.js","sourceRoot":"","sources":["../../src/workspace/symlinks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAE7C,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,WAAmB;IACjE,+BAA+B;IAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;IACrD,CAAC;IAED,8BAA8B;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QACnE,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,yCAAyC;IACzC,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QAC3E,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface GeneratorContext {
2
+ rootDir: string;
3
+ shipSiteDir: string;
4
+ srcDir: string;
5
+ config: any;
6
+ mode: 'dev' | 'build';
7
+ }
8
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workspace/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,GAAG,CAAC;IACZ,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/workspace/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,11 @@
1
1
  {
2
2
  "name": "@shipsite.dev/cli",
3
- "version": "0.1.5",
3
+ "version": "0.2.1",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/shipsite/shipsite",
7
+ "directory": "packages/cli"
8
+ },
4
9
  "type": "module",
5
10
  "bin": {
6
11
  "shipsite": "./dist/index.js"