@_linked/cli 1.8.1 → 1.9.0

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 (207) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/defaults/setup-publish/dual-branch/github/workflows/publish.yml +3 -0
  3. package/defaults/setup-publish/github/workflows/publish.yml +3 -0
  4. package/defaults/shape.ts +8 -2
  5. package/jest.config.cjs +8 -4
  6. package/lib/esm/cli-methods.d.ts +11 -3
  7. package/lib/esm/cli-methods.d.ts.map +1 -1
  8. package/lib/esm/cli-methods.js +51 -105
  9. package/lib/esm/cli-methods.js.map +1 -1
  10. package/lib/esm/cli.js +32 -8
  11. package/lib/esm/cli.js.map +1 -1
  12. package/lib/esm/commands/start.d.ts +6 -0
  13. package/lib/esm/commands/start.d.ts.map +1 -0
  14. package/lib/esm/commands/start.js +311 -0
  15. package/lib/esm/commands/start.js.map +1 -0
  16. package/lib/esm/config-webpack-app.d.ts +1 -1
  17. package/lib/esm/config-webpack-app.d.ts.map +1 -1
  18. package/lib/esm/config-webpack-app.js +1 -1
  19. package/lib/esm/config-webpack-app.js.map +1 -1
  20. package/lib/esm/config-webpack.d.ts +1 -1
  21. package/lib/esm/config-webpack.d.ts.map +1 -1
  22. package/lib/esm/config-webpack.js +4 -4
  23. package/lib/esm/config-webpack.js.map +1 -1
  24. package/lib/esm/defineConfig.d.ts +1 -1
  25. package/lib/esm/defineConfig.d.ts.map +1 -1
  26. package/lib/esm/index.d.ts +1 -1
  27. package/lib/esm/index.d.ts.map +1 -1
  28. package/lib/esm/index.js +1 -1
  29. package/lib/esm/index.js.map +1 -1
  30. package/lib/esm/interfaces.d.ts +9 -0
  31. package/lib/esm/interfaces.d.ts.map +1 -1
  32. package/lib/esm/lifecycle.d.ts +24 -0
  33. package/lib/esm/lifecycle.d.ts.map +1 -0
  34. package/lib/esm/lifecycle.js +156 -0
  35. package/lib/esm/lifecycle.js.map +1 -0
  36. package/lib/esm/loaders/ts-loader.d.mts.map +1 -1
  37. package/lib/esm/loaders/ts-loader.mjs +11 -2
  38. package/lib/esm/loaders/ts-loader.mjs.map +1 -1
  39. package/lib/esm/utils.d.ts +1 -1
  40. package/lib/esm/utils.d.ts.map +1 -1
  41. package/lib/esm/utils.js +9 -3
  42. package/lib/esm/utils.js.map +1 -1
  43. package/lib/esm/vite-config.d.ts +20 -0
  44. package/lib/esm/vite-config.d.ts.map +1 -0
  45. package/lib/esm/vite-config.js +410 -0
  46. package/lib/esm/vite-config.js.map +1 -0
  47. package/package.json +13 -14
  48. package/test-results/.last-run.json +6 -0
  49. package/test-results/create-app-Person-fixture-add-/342/206/222-edit-/342/206/222-delete-round-trip/error-context.md +16 -0
  50. package/test-results/create-app-Person-fixture-add-/342/206/222-edit-/342/206/222-delete-round-trip/trace.zip +0 -0
  51. package/tests/unit/safeYarn.test.ts +1 -1
  52. package/tsconfig-esm.json +1 -1
  53. package/defaults/app-with-backend/.env-cmdrc.json +0 -19
  54. package/defaults/app-with-backend/.eslintignore +0 -5
  55. package/defaults/app-with-backend/.eslintrc.json +0 -40
  56. package/defaults/app-with-backend/.prettierignore +0 -4
  57. package/defaults/app-with-backend/.prettierrc.json +0 -27
  58. package/defaults/app-with-backend/.vscode/launch.json +0 -12
  59. package/defaults/app-with-backend/.yarn/plugins/@yarnpkg/plugin-version.cjs +0 -550
  60. package/defaults/app-with-backend/.yarn/releases/yarn-3.6.1.cjs +0 -874
  61. package/defaults/app-with-backend/gitignore.template +0 -25
  62. package/defaults/app-with-backend/linked.backend.datasets.example.json +0 -17
  63. package/defaults/app-with-backend/linked.backend.storage.ts +0 -35
  64. package/defaults/app-with-backend/linked.config.js +0 -5
  65. package/defaults/app-with-backend/package.json +0 -70
  66. package/defaults/app-with-backend/pm2-staging.config.js +0 -12
  67. package/defaults/app-with-backend/pm2.config.js +0 -12
  68. package/defaults/app-with-backend/public/favicon-144x144.png +0 -0
  69. package/defaults/app-with-backend/public/favicon-57x57.png +0 -0
  70. package/defaults/app-with-backend/public/favicon-72x72.png +0 -0
  71. package/defaults/app-with-backend/public/favicon.ico +0 -0
  72. package/defaults/app-with-backend/readme.md +0 -93
  73. package/defaults/app-with-backend/src/App.module.css +0 -83
  74. package/defaults/app-with-backend/src/App.tsx +0 -30
  75. package/defaults/app-with-backend/src/backend.ts +0 -9
  76. package/defaults/app-with-backend/src/components/Error.module.css +0 -9
  77. package/defaults/app-with-backend/src/components/Error.tsx +0 -11
  78. package/defaults/app-with-backend/src/components/PersonOverview.module.css +0 -100
  79. package/defaults/app-with-backend/src/components/PersonOverview.tsx +0 -97
  80. package/defaults/app-with-backend/src/components/PersonOverviewContext.tsx +0 -12
  81. package/defaults/app-with-backend/src/components/PersonPreview.module.css +0 -97
  82. package/defaults/app-with-backend/src/components/PersonPreview.tsx +0 -109
  83. package/defaults/app-with-backend/src/components/Spinner.module.css +0 -17
  84. package/defaults/app-with-backend/src/components/Spinner.tsx +0 -12
  85. package/defaults/app-with-backend/src/index.tsx +0 -34
  86. package/defaults/app-with-backend/src/layout/DefaultLayout.module.css +0 -15
  87. package/defaults/app-with-backend/src/layout/DefaultLayout.tsx +0 -12
  88. package/defaults/app-with-backend/src/layout/Header.module.css +0 -46
  89. package/defaults/app-with-backend/src/layout/Header.tsx +0 -27
  90. package/defaults/app-with-backend/src/linked.frontend.datasets.json +0 -12
  91. package/defaults/app-with-backend/src/linked.frontend.storage.ts +0 -36
  92. package/defaults/app-with-backend/src/package.ts +0 -16
  93. package/defaults/app-with-backend/src/pages/Home.module.css +0 -23
  94. package/defaults/app-with-backend/src/pages/Home.tsx +0 -14
  95. package/defaults/app-with-backend/src/pages/Page1.module.css +0 -111
  96. package/defaults/app-with-backend/src/pages/Page1.tsx +0 -196
  97. package/defaults/app-with-backend/src/pages/PageNotFound.module.css +0 -19
  98. package/defaults/app-with-backend/src/pages/PageNotFound.tsx +0 -14
  99. package/defaults/app-with-backend/src/pages/Signin.module.css +0 -20
  100. package/defaults/app-with-backend/src/pages/Signin.tsx +0 -16
  101. package/defaults/app-with-backend/src/routes.tsx +0 -78
  102. package/defaults/app-with-backend/src/theme.css +0 -91
  103. package/defaults/app-with-backend/src/types.ts +0 -14
  104. package/defaults/app-with-backend/src/utils/lazyWithPreload.tsx +0 -42
  105. package/defaults/app-with-backend/src/utils/preloadRoutes.ts +0 -38
  106. package/defaults/app-with-backend/tsconfig.json +0 -24
  107. package/defaults/app-with-backend/yarnrc.yml.template +0 -8
  108. package/lib/cjs/cli-methods.d.ts +0 -67
  109. package/lib/cjs/cli-methods.d.ts.map +0 -1
  110. package/lib/cjs/cli-methods.js +0 -2718
  111. package/lib/cjs/cli-methods.js.map +0 -1
  112. package/lib/cjs/cli.d.ts +0 -3
  113. package/lib/cjs/cli.d.ts.map +0 -1
  114. package/lib/cjs/cli.js +0 -315
  115. package/lib/cjs/cli.js.map +0 -1
  116. package/lib/cjs/commands/build-package.d.ts +0 -9
  117. package/lib/cjs/commands/build-package.d.ts.map +0 -1
  118. package/lib/cjs/commands/build-package.js +0 -55
  119. package/lib/cjs/commands/build-package.js.map +0 -1
  120. package/lib/cjs/commands/safe-yarn.d.ts +0 -10
  121. package/lib/cjs/commands/safe-yarn.d.ts.map +0 -1
  122. package/lib/cjs/commands/safe-yarn.js +0 -66
  123. package/lib/cjs/commands/safe-yarn.js.map +0 -1
  124. package/lib/cjs/commands/setup-publish.d.ts +0 -23
  125. package/lib/cjs/commands/setup-publish.d.ts.map +0 -1
  126. package/lib/cjs/commands/setup-publish.js +0 -369
  127. package/lib/cjs/commands/setup-publish.js.map +0 -1
  128. package/lib/cjs/config-webpack-app.d.ts +0 -112
  129. package/lib/cjs/config-webpack-app.d.ts.map +0 -1
  130. package/lib/cjs/config-webpack-app.js +0 -427
  131. package/lib/cjs/config-webpack-app.js.map +0 -1
  132. package/lib/cjs/config-webpack.d.ts +0 -55
  133. package/lib/cjs/config-webpack.d.ts.map +0 -1
  134. package/lib/cjs/config-webpack.js +0 -417
  135. package/lib/cjs/config-webpack.js.map +0 -1
  136. package/lib/cjs/defineConfig.d.ts +0 -8
  137. package/lib/cjs/defineConfig.d.ts.map +0 -1
  138. package/lib/cjs/defineConfig.js +0 -12
  139. package/lib/cjs/defineConfig.js.map +0 -1
  140. package/lib/cjs/index.d.ts +0 -12
  141. package/lib/cjs/index.d.ts.map +0 -1
  142. package/lib/cjs/index.js +0 -43
  143. package/lib/cjs/index.js.map +0 -1
  144. package/lib/cjs/interfaces.d.ts +0 -131
  145. package/lib/cjs/interfaces.d.ts.map +0 -1
  146. package/lib/cjs/interfaces.js +0 -3
  147. package/lib/cjs/interfaces.js.map +0 -1
  148. package/lib/cjs/loaders/css-loader.d.mts +0 -2
  149. package/lib/cjs/loaders/css-loader.d.mts.map +0 -1
  150. package/lib/cjs/loaders/css-loader.mjs +0 -86
  151. package/lib/cjs/loaders/css-loader.mjs.map +0 -1
  152. package/lib/cjs/loaders/register-css-only.d.ts +0 -2
  153. package/lib/cjs/loaders/register-css-only.d.ts.map +0 -1
  154. package/lib/cjs/loaders/register-css-only.js +0 -11
  155. package/lib/cjs/loaders/register-css-only.js.map +0 -1
  156. package/lib/cjs/loaders/register.d.ts +0 -2
  157. package/lib/cjs/loaders/register.d.ts.map +0 -1
  158. package/lib/cjs/loaders/register.js +0 -11
  159. package/lib/cjs/loaders/register.js.map +0 -1
  160. package/lib/cjs/loaders/ts-loader.d.mts +0 -3
  161. package/lib/cjs/loaders/ts-loader.d.mts.map +0 -1
  162. package/lib/cjs/loaders/ts-loader.mjs +0 -116
  163. package/lib/cjs/loaders/ts-loader.mjs.map +0 -1
  164. package/lib/cjs/metadata.d.ts +0 -1
  165. package/lib/cjs/metadata.d.ts.map +0 -1
  166. package/lib/cjs/metadata.js +0 -155
  167. package/lib/cjs/metadata.js.map +0 -1
  168. package/lib/cjs/package.json +0 -139
  169. package/lib/cjs/plugins/check-imports.d.ts +0 -2
  170. package/lib/cjs/plugins/check-imports.d.ts.map +0 -1
  171. package/lib/cjs/plugins/check-imports.js +0 -68
  172. package/lib/cjs/plugins/check-imports.js.map +0 -1
  173. package/lib/cjs/plugins/declaration-plugin.d.ts +0 -15
  174. package/lib/cjs/plugins/declaration-plugin.d.ts.map +0 -1
  175. package/lib/cjs/plugins/declaration-plugin.js +0 -285
  176. package/lib/cjs/plugins/declaration-plugin.js.map +0 -1
  177. package/lib/cjs/plugins/externalise-modules.d.ts +0 -7
  178. package/lib/cjs/plugins/externalise-modules.d.ts.map +0 -1
  179. package/lib/cjs/plugins/externalise-modules.js +0 -190
  180. package/lib/cjs/plugins/externalise-modules.js.map +0 -1
  181. package/lib/cjs/plugins/lincd-tailwind-sources.d.ts +0 -3
  182. package/lib/cjs/plugins/lincd-tailwind-sources.d.ts.map +0 -1
  183. package/lib/cjs/plugins/lincd-tailwind-sources.js +0 -32
  184. package/lib/cjs/plugins/lincd-tailwind-sources.js.map +0 -1
  185. package/lib/cjs/plugins/watch-run.d.ts +0 -5
  186. package/lib/cjs/plugins/watch-run.d.ts.map +0 -1
  187. package/lib/cjs/plugins/watch-run.js +0 -45
  188. package/lib/cjs/plugins/watch-run.js.map +0 -1
  189. package/lib/cjs/preflight.css +0 -137
  190. package/lib/cjs/tailwind.config.d.ts +0 -8
  191. package/lib/cjs/tailwind.config.d.ts.map +0 -1
  192. package/lib/cjs/tailwind.config.js +0 -17
  193. package/lib/cjs/tailwind.config.js.map +0 -1
  194. package/lib/cjs/utils.d.ts +0 -77
  195. package/lib/cjs/utils.d.ts.map +0 -1
  196. package/lib/cjs/utils.js +0 -585
  197. package/lib/cjs/utils.js.map +0 -1
  198. package/lib/esm/loaders/register-css-only.d.ts +0 -2
  199. package/lib/esm/loaders/register-css-only.d.ts.map +0 -1
  200. package/lib/esm/loaders/register-css-only.js +0 -9
  201. package/lib/esm/loaders/register-css-only.js.map +0 -1
  202. package/lib/esm/loaders/register.d.ts +0 -2
  203. package/lib/esm/loaders/register.d.ts.map +0 -1
  204. package/lib/esm/loaders/register.js +0 -9
  205. package/lib/esm/loaders/register.js.map +0 -1
  206. package/lib/esm/package.json +0 -139
  207. /package/{babel.config.js → babel.config.cjs} +0 -0
@@ -1,196 +0,0 @@
1
- // Components showcase — demonstrates a slice of @_linked/primitives against
2
- // the active @_linked/css theme. Tweak tokens in src/theme.css to re-skin
3
- // everything on this page. (To make the route sign-in-protected later, see
4
- // the `requireAuth` line in src/routes.tsx.)
5
- import React, { useEffect, useState } from 'react';
6
- import { DefaultLayout } from '../layout/DefaultLayout';
7
- import { Button } from '@_linked/primitives/components/Button';
8
- import { Input } from '@_linked/primitives/components/Input';
9
- import { Switch } from '@_linked/primitives/components/Switch';
10
- import { Checkbox } from '@_linked/primitives/components/Checkbox';
11
- import { Slider } from '@_linked/primitives/components/Slider';
12
- import { Progress } from '@_linked/primitives/components/Progress';
13
- import { Avatar } from '@_linked/primitives/components/Avatar';
14
- import { Tabs } from '@_linked/primitives/components/Tabs';
15
- import { RadioGroup } from '@_linked/primitives/components/RadioGroup';
16
- import { Label } from '@_linked/primitives/components/Label';
17
- import { Separator } from '@_linked/primitives/components/Separator';
18
- import style from './Page1.module.css';
19
-
20
- export default function Page1() {
21
- const [progress, setProgress] = useState(60);
22
- const [sliderValue, setSliderValue] = useState([40]);
23
- const [checked, setChecked] = useState(true);
24
- const [switchOn, setSwitchOn] = useState(true);
25
- const [radio, setRadio] = useState('comfy');
26
- const [text, setText] = useState('');
27
- // Radix Tabs use React 18 useId() which can drift between SSR (StaticRouter)
28
- // and CSR (BrowserRouter) trees and trigger an aria-controls hydration
29
- // mismatch warning. Render the showcase only after mount to side-step this.
30
- const [mounted, setMounted] = useState(false);
31
- useEffect(() => setMounted(true), []);
32
-
33
- return (
34
- <DefaultLayout>
35
- <div className={style.Page}>
36
- <header className={style.Header}>
37
- <h2>Components</h2>
38
- <p>
39
- A small tour of <code>@_linked/primitives</code> rendered against
40
- the active <code>@_linked/css</code> theme. Tweak{' '}
41
- <code>src/theme.css</code> tokens to re-skin every component on
42
- this page.
43
- </p>
44
- </header>
45
-
46
- {mounted && (
47
- <Tabs.Root defaultValue="forms" className={style.Tabs}>
48
- <Tabs.List>
49
- <Tabs.Trigger value="forms">Forms</Tabs.Trigger>
50
- <Tabs.Trigger value="display">Display</Tabs.Trigger>
51
- <Tabs.Trigger value="buttons">Buttons</Tabs.Trigger>
52
- </Tabs.List>
53
-
54
- <Tabs.Content value="forms" className={style.TabPanel}>
55
- <section className={style.Card}>
56
- <h3>Inputs</h3>
57
- <div className={style.Field}>
58
- <Label htmlFor="demo-name">Name</Label>
59
- <Input
60
- id="demo-name"
61
- placeholder="Ada Lovelace"
62
- value={text}
63
- onChange={(e) => setText(e.target.value)}
64
- />
65
- </div>
66
- <Separator />
67
- <div className={style.Row}>
68
- <Switch
69
- checked={switchOn}
70
- onCheckedChange={(v) => setSwitchOn(Boolean(v))}
71
- />
72
- <Label>Enable notifications</Label>
73
- </div>
74
- <div className={style.Row}>
75
- <Checkbox
76
- checked={checked}
77
- onCheckedChange={(v) => setChecked(Boolean(v))}
78
- />
79
- <Label>I agree to the terms</Label>
80
- </div>
81
- </section>
82
-
83
- <section className={style.Card}>
84
- <h3>Density</h3>
85
- <RadioGroup.Root
86
- value={radio}
87
- onValueChange={setRadio}
88
- className={style.Stack}
89
- >
90
- <div className={style.Row}>
91
- <RadioGroup.Item value="compact" id="r-compact" />
92
- <Label htmlFor="r-compact">Compact</Label>
93
- </div>
94
- <div className={style.Row}>
95
- <RadioGroup.Item value="comfy" id="r-comfy" />
96
- <Label htmlFor="r-comfy">Comfortable</Label>
97
- </div>
98
- <div className={style.Row}>
99
- <RadioGroup.Item value="spacious" id="r-spacious" />
100
- <Label htmlFor="r-spacious">Spacious</Label>
101
- </div>
102
- </RadioGroup.Root>
103
- </section>
104
-
105
- <section className={style.Card}>
106
- <h3>Slider</h3>
107
- <Slider.Root
108
- value={sliderValue}
109
- onValueChange={setSliderValue}
110
- min={0}
111
- max={100}
112
- step={1}
113
- >
114
- <Slider.Track>
115
- <Slider.Range />
116
- </Slider.Track>
117
- <Slider.Thumb />
118
- </Slider.Root>
119
- <p className={style.Hint}>Value: {sliderValue[0]}</p>
120
- </section>
121
- </Tabs.Content>
122
-
123
- <Tabs.Content value="display" className={style.TabPanel}>
124
- <section className={style.Card}>
125
- <h3>Avatar</h3>
126
- <div className={style.AvatarRow}>
127
- <Avatar.Root>
128
- <Avatar.Fallback>AL</Avatar.Fallback>
129
- </Avatar.Root>
130
- <Avatar.Root>
131
- <Avatar.Fallback>GH</Avatar.Fallback>
132
- </Avatar.Root>
133
- <Avatar.Root>
134
- <Avatar.Fallback>RV</Avatar.Fallback>
135
- </Avatar.Root>
136
- </div>
137
- </section>
138
-
139
- <section className={style.Card}>
140
- <h3>Progress</h3>
141
- <Progress.Root value={progress} />
142
- <div className={style.Row}>
143
- <Button
144
- size="small"
145
- variant="outline"
146
- onClick={() => setProgress((p) => Math.max(0, p - 10))}
147
- >
148
- −10
149
- </Button>
150
- <Button
151
- size="small"
152
- variant="outline"
153
- onClick={() => setProgress((p) => Math.min(100, p + 10))}
154
- >
155
- +10
156
- </Button>
157
- <span className={style.Hint}>{progress}%</span>
158
- </div>
159
- </section>
160
- </Tabs.Content>
161
-
162
- <Tabs.Content value="buttons" className={style.TabPanel}>
163
- <section className={style.Card}>
164
- <h3>Variants</h3>
165
- <div className={style.ButtonRow}>
166
- <Button variant="solid">Solid</Button>
167
- <Button variant="outline">Outline</Button>
168
- <Button variant="ghost">Ghost</Button>
169
- <Button variant="link">Link</Button>
170
- </div>
171
- </section>
172
-
173
- <section className={style.Card}>
174
- <h3>Colors</h3>
175
- <div className={style.ButtonRow}>
176
- <Button color="primary">Primary</Button>
177
- <Button color="secondary">Secondary</Button>
178
- <Button color="tertiary">Tertiary</Button>
179
- </div>
180
- </section>
181
-
182
- <section className={style.Card}>
183
- <h3>Sizes</h3>
184
- <div className={style.ButtonRow}>
185
- <Button size="small">Small</Button>
186
- <Button size="medium">Medium</Button>
187
- <Button size="large">Large</Button>
188
- </div>
189
- </section>
190
- </Tabs.Content>
191
- </Tabs.Root>
192
- )}
193
- </div>
194
- </DefaultLayout>
195
- );
196
- }
@@ -1,19 +0,0 @@
1
- @import '@_linked/css/package.css';
2
-
3
- .Card {
4
- background: var(--bg-card);
5
- border-radius: var(--radius-card);
6
- box-shadow: var(--shadow-card);
7
- padding: --spacing(6);
8
- text-align: center;
9
- }
10
-
11
- .Card h2 {
12
- margin: 0 0 --spacing(3);
13
- }
14
-
15
- .Card p {
16
- color: var(--color-gray-700);
17
- line-height: 1.5;
18
- margin: 0;
19
- }
@@ -1,14 +0,0 @@
1
- import React from 'react';
2
- import { DefaultLayout } from '../layout/DefaultLayout';
3
- import style from './PageNotFound.module.css';
4
-
5
- export default function PageNotFound() {
6
- return (
7
- <DefaultLayout>
8
- <div className={style.Card}>
9
- <h2>Page not found</h2>
10
- <p>The page you were looking for does not exist.</p>
11
- </div>
12
- </DefaultLayout>
13
- );
14
- }
@@ -1,20 +0,0 @@
1
- @import '@_linked/css/package.css';
2
-
3
- .Card {
4
- background: var(--bg-card);
5
- border-radius: var(--radius-card);
6
- box-shadow: var(--shadow-card);
7
- padding: --spacing(6);
8
- max-width: 480px;
9
- margin: --spacing(8) auto;
10
- }
11
-
12
- .Card h2 {
13
- margin: 0 0 --spacing(3);
14
- }
15
-
16
- .Card p {
17
- color: var(--color-gray-700);
18
- line-height: 1.5;
19
- margin: 0;
20
- }
@@ -1,16 +0,0 @@
1
- import { DefaultLayout } from '../layout/DefaultLayout';
2
- import style from './Signin.module.css';
3
-
4
- export default function Signin() {
5
- return (
6
- <DefaultLayout>
7
- <div className={style.Card}>
8
- <h2>Sign in</h2>
9
- <p>
10
- See <a href="https://linked.cm">linked.cm</a> for different ways to
11
- sign in.
12
- </p>
13
- </div>
14
- </DefaultLayout>
15
- );
16
- }
@@ -1,78 +0,0 @@
1
- import type { RoutesConfig } from '@_linked/server/types/RouteConfig';
2
- import React, { lazy, Suspense } from 'react';
3
- import { Route, Routes } from 'react-router-dom';
4
- import { Spinner } from './components/Spinner';
5
- import PageNotFound from './pages/PageNotFound';
6
- import { lazyWithPreload } from './utils/lazyWithPreload';
7
-
8
- // Create preloadable lazy components for direct-entry routes
9
- const HomePage = lazyWithPreload(
10
- () => import(/* webpackChunkName: "home" */ './pages/Home')
11
- );
12
-
13
- const SigninPage = lazyWithPreload(
14
- () => import(/* webpackChunkName: "signin" */ './pages/Signin')
15
- );
16
-
17
- // Export preloadable components for server-side preloading
18
- export const PRELOADABLE_ROUTES = {
19
- home: HomePage,
20
- signin: SigninPage,
21
- };
22
-
23
-
24
- export const ROUTES: RoutesConfig = {
25
- home: {
26
- path: '/',
27
- component: HomePage.Component,
28
- label: 'Home',
29
- preloadChunks: ['home'],
30
- },
31
- page1: {
32
- path: '/page1',
33
- component: lazy(
34
- () => import(/* webpackChunkName: "page1" */ './pages/Page1')
35
- ),
36
- label: 'Components',
37
- preloadChunks: ['page1'],
38
- // To make this route sign-in-protected, install `@_linked/auth`, wire up
39
- // a `<ProvideAuth>` provider in App.tsx, import RequireAuth here, and
40
- // set `requireAuth: true` on this route.
41
- },
42
- signin: {
43
- path: '/signin',
44
- component: SigninPage.Component,
45
- label: 'Sign In',
46
- excludeFromMenu: true,
47
- preloadChunks: ['signin'],
48
- },
49
- };
50
-
51
- export default function AppRoutes() {
52
- return (
53
- <Routes>
54
- {Object.keys(ROUTES).map((routeName) => {
55
- const route = ROUTES[routeName];
56
- const Component = route.component;
57
-
58
- // define a render function that determines what to render based on the component and route.render
59
- const renderRoute = () =>
60
- // if a Component is defined, render it using JSX syntax (<Component />)
61
- // if not, check if a route.render function is defined and call that render function if available.
62
- // if neither Component nor route.render is defined, return null
63
- Component ? <Component /> : route.render ? route.render() : null;
64
-
65
- return (
66
- <Route
67
- key={route.path}
68
- path={route.path}
69
- element={
70
- <Suspense fallback={<Spinner />}>{renderRoute()}</Suspense>
71
- }
72
- />
73
- );
74
- })}
75
- <Route path="*" element={<PageNotFound />} />
76
- </Routes>
77
- );
78
- }
@@ -1,91 +0,0 @@
1
- /*
2
- * Theme overrides for ${name}.
3
- *
4
- * The default palette below is a teal-blue primary + mint-green secondary.
5
- * Override --color-primary-* / --color-secondary-* to your own brand.
6
- *
7
- * Available tokens (palette, surfaces, shadows, radii, spacing) are documented in:
8
- * https://github.com/linked-cm/css/blob/main/README.md
9
- * https://github.com/linked-cm/css/blob/main/docs/styling-and-themes.md
10
- */
11
-
12
- /* Tailwind v4 layers — split-import pattern to substitute the Linked preflight.
13
- See @_linked/css README "Why the split-import?" for details. */
14
- @layer theme, base, components, utilities;
15
- @import 'tailwindcss/theme.css' layer(theme);
16
- @import '@_linked/css/preflight.css';
17
- @import 'tailwindcss/utilities.css' layer(utilities);
18
-
19
- /* Apply Tailwind config from @_linked/cli — ensures all @_linked/* shapes
20
- are scanned for utility classes. */
21
- @config "@_linked/cli/tailwind.config.js";
22
-
23
- /* @_linked/css: framework theme defaults + utility mixins.
24
- App-specific @theme overrides below extend / replace these defaults. */
25
- @import '@_linked/css/theme-defaults.css';
26
- @import '@_linked/css/utilities.css';
27
-
28
- @theme {
29
- /* === Primary palette — Linked teal-blue === */
30
- --color-primary-50: #f7fbfd;
31
- --color-primary-100: #eef7fb;
32
- --color-primary-200: #d3ebf5;
33
- --color-primary-300: #a8d7ec;
34
- --color-primary-400: #71bbdd;
35
- --color-primary-500: #116d8d; /* base */
36
- --color-primary-600: #0a5f7d;
37
- --color-primary-700: #005970;
38
- --color-primary-800: #004d61;
39
- --color-primary-900: #001f28;
40
-
41
- /* === Secondary palette — mint green === */
42
- --color-secondary-50: #f9fdfc;
43
- --color-secondary-100: #f4fbf8;
44
- --color-secondary-200: #e6f5ef;
45
- --color-secondary-300: #ccebe0;
46
- --color-secondary-400: #b1e0cd;
47
- --color-secondary-500: #52a181; /* base */
48
- --color-secondary-600: #297a5c;
49
- --color-secondary-700: #146b4f;
50
- --color-secondary-800: #005d43;
51
- --color-secondary-900: #00201a;
52
-
53
- /* === Shadows === */
54
- --shadow-surface: var(--shadow-sm); /* Background panels, sections */
55
- --shadow-card: var(--shadow-md); /* Cards, organized content blocks */
56
- --shadow-popover: var(--shadow-lg); /* Tooltips, dropdowns, popovers */
57
- --shadow-modal: var(--shadow-2xl); /* Modals, overlays */
58
- --shadow-floating-action: var(--shadow-lg);
59
- --shadow-content: none; /* Buttons, inputs inside surfaces */
60
-
61
- /* === Backgrounds / Surfaces === */
62
- --bg-page: var(--color-gray-50);
63
- --bg-section: var(--color-gray-100);
64
- --bg-card: var(--color-white);
65
- --bg-popover: var(--color-white);
66
- --bg-modal: var(--color-white);
67
- --bg-sidebar: var(--color-gray-200);
68
- --bg-footer: var(--color-gray-300);
69
- --bg-overlay: var(--color-gray-900);
70
- --color-card: var(--color-white);
71
-
72
- /* === Border radius === */
73
- --radius-surface: var(--radius-sm);
74
- --radius-card: var(--radius-lg);
75
- --radius-element: var(--radius-md);
76
- --radius-popover: var(--radius-md);
77
- --radius-modal: var(--radius-2xl);
78
- --radius-floating-action: var(--radius-full);
79
- --radius-none: 0px;
80
-
81
- /* === Z-index === */
82
- --z-base: 0;
83
- --z-surface: 10;
84
- --z-popover: 30;
85
- --z-modal: 50;
86
- --z-overlay: 75;
87
- --z-tooltip: 100;
88
-
89
- /* === Spacing tokens === */
90
- --spacing-card: calc(var(--spacing) * 4);
91
- }
@@ -1,14 +0,0 @@
1
- declare module '*.css' {
2
- const styles: {
3
- readonly [key: string]: string;
4
- };
5
- // export type ClassName = string;
6
- export default styles;
7
- }
8
- declare module '*.scss' {
9
- const styles: {
10
- readonly [key: string]: string;
11
- };
12
- // export type ClassName = string;
13
- export default styles;
14
- }
@@ -1,42 +0,0 @@
1
- import { ComponentType, lazy } from 'react';
2
-
3
- export interface PreloadableComponent<T extends ComponentType<any>> {
4
- preload: () => Promise<{ default: T }>;
5
- Component: React.LazyExoticComponent<T>;
6
- }
7
-
8
- /**
9
- * Creates a lazy-loaded component with a preload function
10
- * This allows preloading the component before React needs it
11
- *
12
- * @example
13
- * const SigninPage = lazyWithPreload(() => import('./pages/Signin'));
14
- * // Later, before navigation or on server:
15
- * SigninPage.preload();
16
- */
17
- export function lazyWithPreload<T extends ComponentType<any>>(
18
- importFunc: () => Promise<{ default: T }>
19
- ): PreloadableComponent<T> {
20
- let modulePromise: Promise<{ default: T }> | null = null;
21
-
22
- const preload = () => {
23
- if (!modulePromise) {
24
- modulePromise = importFunc();
25
- }
26
- return modulePromise;
27
- };
28
-
29
- const Component = lazy(() => {
30
- // If preload was called, reuse the same promise
31
- // This ensures React uses the already-loaded module
32
- if (!modulePromise) {
33
- modulePromise = importFunc();
34
- }
35
- return modulePromise;
36
- });
37
-
38
- return {
39
- preload,
40
- Component,
41
- };
42
- }
@@ -1,38 +0,0 @@
1
- /**
2
- * Client-side script to preload lazy routes before hydration
3
- * This should be called BEFORE React's hydrateRoot()
4
- */
5
-
6
- // This will be populated by the server with the routes that need preloading
7
- declare global {
8
- interface Window {
9
- __PRELOAD_ROUTES__?: string[];
10
- }
11
- }
12
-
13
- export async function preloadMatchedRoute() {
14
- // Get the list of routes to preload from the server
15
- const routesToPreload = window.__PRELOAD_ROUTES__ || [];
16
-
17
- if (routesToPreload.length === 0) {
18
- return;
19
- }
20
-
21
- // Dynamically import the routes module to access PRELOADABLE_ROUTES
22
- const routesModule = await import('../routes');
23
- const { PRELOADABLE_ROUTES } = routesModule;
24
-
25
- // Preload each route
26
- const preloadPromises = routesToPreload
27
- .map((routeKey) => {
28
- const preloadableRoute = PRELOADABLE_ROUTES[routeKey];
29
- if (preloadableRoute && preloadableRoute.preload) {
30
- return preloadableRoute.preload();
31
- }
32
- return null;
33
- })
34
- .filter(Boolean);
35
-
36
- // Wait for all preloads to complete
37
- await Promise.all(preloadPromises);
38
- }
@@ -1,24 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "module": "esnext",
4
- "moduleResolution": "bundler",
5
- "sourceMap": true,
6
- "target": "es2018",
7
- "resolveJsonModule": true,
8
- "declaration": false,
9
- "experimentalDecorators": true,
10
- "emitDecoratorMetadata": true,
11
- "esModuleInterop": true,
12
- "resolveJsonModule": true,
13
- "jsx": "react-jsx",
14
- "types": ["node", "react", "react-dom"],
15
- "plugins": [
16
- {
17
- "name": "typescript-plugin-css-modules"
18
- }
19
- ],
20
- "pretty": true
21
- },
22
- "files": ["./src/index.tsx", "./src/types.ts"],
23
- "include": ["./src/backend.ts"]
24
- }
@@ -1,8 +0,0 @@
1
- nodeLinker: "node-modules"
2
- npmRegistryServer: "https://registry.npmjs.org/"
3
-
4
- plugins:
5
- - path: .yarn/plugins/@yarnpkg/plugin-version.cjs
6
- spec: "@yarnpkg/plugin-version"
7
-
8
- yarnPath: .yarn/releases/yarn-3.6.1.cjs
@@ -1,67 +0,0 @@
1
- import { PackageDetails } from './interfaces';
2
- export declare const createApp: (name: any, basePath?: string, options?: {
3
- appName?: string;
4
- appPrefix?: string;
5
- appDomain?: string;
6
- skipInstall?: boolean;
7
- }) => Promise<void>;
8
- export declare function warn(...messages: any[]): void;
9
- export declare function logError(...errors: any[]): void;
10
- export declare function developPackage(target: any, mode: any): void;
11
- export declare function runOnPackagesGroupedByDependencies(lincdPackages: any, onBuildStack: (packageGroup: any, dependencies: any) => (pkg: PackageDetails) => Promise<any>, onStackEnd: any, sync?: boolean): Promise<void>;
12
- export declare function buildAll(options: any): void;
13
- export declare function getLincdPackages(rootPath?: string): PackageDetails[];
14
- export declare const createOntology: (prefix: any, uriBase?: any, basePath?: string) => Promise<void>;
15
- export declare const setNameVariables: (name: any) => {
16
- hyphenName: any;
17
- camelCaseName: any;
18
- underscoreName: any;
19
- plainName: any;
20
- };
21
- /**
22
- * get __dirname for either ESM/CJS
23
- */
24
- export declare const getScriptDir: () => string;
25
- export declare const createShape: (name: any, basePath?: string) => Promise<void>;
26
- export declare const createSetComponent: (name: any, basePath?: string) => Promise<void>;
27
- export declare const createComponent: (name: any, basePath?: string) => Promise<void>;
28
- export declare const checkImports: (sourceFolder?: string, depth?: number, // Used to check if the import is outside the src folder
29
- invalidImports?: Map<string, {
30
- type: string;
31
- importPath: string;
32
- }[]>) => Promise<boolean>;
33
- export declare const depCheckStaged: () => Promise<void>;
34
- export declare const depCheck: (packagePath?: string) => Promise<unknown>;
35
- export declare const ensureEnvironmentLoaded: () => Promise<void>;
36
- export declare const runScript: (scriptName: string, options: {
37
- spawn: boolean;
38
- }) => Promise<never>;
39
- export declare const runMethod: (packageName: string, method: string, options: {
40
- spawn: boolean;
41
- }) => Promise<void>;
42
- export declare const startServer: (initOnly?: boolean, ServerClass?: any) => Promise<any>;
43
- export declare const buildApp: () => Promise<never>;
44
- export declare const buildFrontend: () => Promise<void>;
45
- export declare const buildBackend: () => Promise<boolean>;
46
- export declare const upgradePackages: () => Promise<void>;
47
- export declare const createPackage: (name: any, uriBase?: any, basePath?: string) => Promise<void>;
48
- export declare const register: (registryURL: any) => Promise<void>;
49
- export declare const buildPackage: (target: any, target2: any, packagePath?: string, logResults?: boolean) => Promise<any>;
50
- export declare const compilePackage: (packagePath?: string) => Promise<void>;
51
- export declare const compilePackageESM: (packagePath?: string) => Promise<boolean>;
52
- export declare const compilePackageCJS: (packagePath?: string) => Promise<boolean | {
53
- error: any;
54
- }>;
55
- export declare var publishUpdated: (test?: boolean) => Promise<void>;
56
- export declare var publishPackage: (pkg?: any, test?: any, info?: any, publishVersion?: any) => Promise<string>;
57
- export declare var buildUpdated: (back: any, target: any, target2: any, useGitForLastModified?: boolean, test?: boolean) => Promise<void>;
58
- export declare var executeCommandForEachPackage: (packages: any, command: any, filterMethod: any, filterValue: any) => Promise<boolean>;
59
- export declare var addLinesToFile: (filePath: any, entries: any) => void;
60
- export declare var addCapacitor: (basePath?: string) => Promise<void>;
61
- export declare var executeCommandForPackage: (packageName: any, command: any) => void;
62
- /**
63
- * Function to remove files older than 10 seconds from the 'lib' folder.
64
- * @param {string} packagePath - The path to the package directory.
65
- */
66
- export declare const removeOldFiles: (packagePath: any) => Promise<boolean>;
67
- //# sourceMappingURL=cli-methods.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-methods.d.ts","sourceRoot":"","sources":["../../src/cli-methods.ts"],"names":[],"mappings":"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"}