Skip to content

Commit 76b5f23

Browse files
committed
fix: removing no hosting option
1 parent ecce756 commit 76b5f23

File tree

10 files changed

+96
-68
lines changed

10 files changed

+96
-68
lines changed

cli/create-start-app/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ cli({
1212
appName: 'TanStack Start',
1313
forcedMode: 'file-router',
1414
forcedAddOns: ['start'],
15+
showHostingOptions: true,
1516
forcedHost: 'nitro',
1617
craCompatible: true,
1718
})

packages/cta-cli/src/cli.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export function cli({
4444
defaultFramework,
4545
craCompatible = false,
4646
webBase,
47+
showHostingOptions = false,
4748
}: {
4849
name: string
4950
appName: string
@@ -54,6 +55,7 @@ export function cli({
5455
defaultFramework?: string
5556
craCompatible?: boolean
5657
webBase?: string
58+
showHostingOptions?: boolean
5759
}) {
5860
const environment = createUIEnvironment(appName, false)
5961

@@ -200,6 +202,7 @@ Remove your node_modules directory and package lock file and re-install.`,
200202
forcedAddOns,
201203
environmentFactory: () => createUIEnvironment(appName, false),
202204
webBase,
205+
showHostingOptions,
203206
})
204207
} else if (parsedAddOns.length < 1) {
205208
const addOns = await promptForAddOns()
@@ -505,6 +508,7 @@ Remove your node_modules directory and package lock file and re-install.`,
505508
forcedAddOns,
506509
environmentFactory: () => createUIEnvironment(appName, false),
507510
webBase,
511+
showHostingOptions,
508512
})
509513
return
510514
}
@@ -516,6 +520,7 @@ Remove your node_modules directory and package lock file and re-install.`,
516520
finalOptions = await promptForCreateOptions(cliOptions, {
517521
forcedMode: defaultMode,
518522
forcedAddOns,
523+
showHostingOptions,
519524
})
520525
}
521526

packages/cta-cli/src/options.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@ export async function promptForCreateOptions(
3030
{
3131
forcedAddOns = [],
3232
forcedMode,
33+
showHostingOptions = false,
3334
}: {
3435
forcedAddOns?: Array<string>
3536
forcedMode?: string
37+
showHostingOptions?: boolean
3638
},
3739
): Promise<Required<Options> | undefined> {
3840
const options = {} as Required<Options>
@@ -88,7 +90,9 @@ export async function promptForCreateOptions(
8890
)
8991

9092
// Host selection
91-
const host = await selectHost(options.framework, cliOptions.host)
93+
const host = showHostingOptions
94+
? await selectHost(options.framework, cliOptions.host)
95+
: undefined
9296

9397
// Add-ons selection
9498
const addOns: Set<string> = new Set()

packages/cta-ui-base/src/components/sidebar-items/add-ons.tsx

Lines changed: 75 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ import { Switch } from '../ui/switch'
55
import { Label } from '../ui/label'
66
import { Button } from '../ui/button'
77

8-
import { useAddOns, useProjectOptions } from '../../store/project'
8+
import {
9+
useAddOns,
10+
useProjectOptions,
11+
useShowHostingOptions,
12+
} from '../../store/project'
913

1014
import ImportCustomAddOn from '../custom-add-on-dialog'
1115
import AddOnInfoDialog from '../add-on-info-dialog'
@@ -21,10 +25,13 @@ const addOnTypeLabels: Record<string, string> = {
2125
}
2226

2327
export default function SelectedAddOns() {
28+
const showHostingOptions = useShowHostingOptions()
2429
const { availableAddOns, addOnState, toggleAddOn, setAddOnOption } =
2530
useAddOns()
2631
const addOnOptions = useProjectOptions((state) => state.addOnOptions)
2732

33+
console.log('showHostingOptions', showHostingOptions)
34+
2835
const sortedAddOns = useMemo(() => {
2936
return availableAddOns.sort((a, b) => {
3037
const aPriority = a.priority ?? 0
@@ -57,74 +64,77 @@ export default function SelectedAddOns() {
5764
disabled={configAddOn ? !addOnState[configAddOn.id]?.enabled : false}
5865
/>
5966
<div className="max-h-[60vh] overflow-y-auto space-y-2">
60-
{Object.keys(addOnTypeLabels).map((type) => (
61-
<Fragment key={type}>
62-
{sortedAddOns.filter((addOn) => addOn.type === type).length > 0 && (
63-
<div
64-
key={`${type}-add-ons`}
65-
className="block p-4 bg-gray-500/10 hover:bg-gray-500/20 rounded-lg transition-colors space-y-4 active"
66-
>
67-
<h3 className="font-medium">{addOnTypeLabels[type]}</h3>
68-
<div className="space-y-3">
69-
<div className="flex flex-row flex-wrap">
70-
{sortedAddOns
71-
.filter((addOn) => addOn.type === type)
72-
.map((addOn) => (
73-
<div key={addOn.id} className="w-1/2">
74-
<div className="flex flex-row items-center justify-between">
75-
<div className="p-1 flex flex-row items-center">
76-
<Switch
77-
id={addOn.id}
78-
checked={addOnState[addOn.id].selected}
79-
disabled={!addOnState[addOn.id].enabled}
80-
onCheckedChange={() => {
81-
toggleAddOn(addOn.id)
82-
}}
83-
/>
84-
<Label
85-
htmlFor={addOn.id}
86-
className="pl-2 font-semibold text-gray-300 flex items-center gap-2"
87-
>
88-
{addOn.smallLogo && (
89-
<img
90-
src={`data:image/svg+xml,${encodeURIComponent(
91-
addOn.smallLogo,
92-
)}`}
93-
alt={addOn.name}
94-
className="w-5"
95-
/>
96-
)}
97-
{addOn.name}
98-
</Label>
99-
</div>
100-
<div className="flex items-center gap-1">
101-
{addOnState[addOn.id].selected &&
102-
addOn.options &&
103-
Object.keys(addOn.options).length > 0 && (
104-
<Button
105-
variant="ghost"
106-
size="sm"
107-
className="h-6 w-6 p-0 text-gray-600 hover:text-gray-400"
108-
onClick={() => setConfigAddOn(addOn)}
109-
disabled={!addOnState[addOn.id].enabled}
110-
>
111-
<SettingsIcon className="w-4 h-4" />
112-
</Button>
113-
)}
114-
<InfoIcon
115-
className="w-4 text-gray-600 cursor-pointer hover:text-gray-400"
116-
onClick={() => setInfoAddOn(addOn)}
117-
/>
67+
{Object.keys(addOnTypeLabels)
68+
.filter((type) => (showHostingOptions ? true : type !== 'host'))
69+
.map((type) => (
70+
<Fragment key={type}>
71+
{sortedAddOns.filter((addOn) => addOn.type === type).length >
72+
0 && (
73+
<div
74+
key={`${type}-add-ons`}
75+
className="block p-4 bg-gray-500/10 hover:bg-gray-500/20 rounded-lg transition-colors space-y-4 active"
76+
>
77+
<h3 className="font-medium">{addOnTypeLabels[type]}</h3>
78+
<div className="space-y-3">
79+
<div className="flex flex-row flex-wrap">
80+
{sortedAddOns
81+
.filter((addOn) => addOn.type === type)
82+
.map((addOn) => (
83+
<div key={addOn.id} className="w-1/2">
84+
<div className="flex flex-row items-center justify-between">
85+
<div className="p-1 flex flex-row items-center">
86+
<Switch
87+
id={addOn.id}
88+
checked={addOnState[addOn.id].selected}
89+
disabled={!addOnState[addOn.id].enabled}
90+
onCheckedChange={() => {
91+
toggleAddOn(addOn.id)
92+
}}
93+
/>
94+
<Label
95+
htmlFor={addOn.id}
96+
className="pl-2 font-semibold text-gray-300 flex items-center gap-2"
97+
>
98+
{addOn.smallLogo && (
99+
<img
100+
src={`data:image/svg+xml,${encodeURIComponent(
101+
addOn.smallLogo,
102+
)}`}
103+
alt={addOn.name}
104+
className="w-5"
105+
/>
106+
)}
107+
{addOn.name}
108+
</Label>
109+
</div>
110+
<div className="flex items-center gap-1">
111+
{addOnState[addOn.id].selected &&
112+
addOn.options &&
113+
Object.keys(addOn.options).length > 0 && (
114+
<Button
115+
variant="ghost"
116+
size="sm"
117+
className="h-6 w-6 p-0 text-gray-600 hover:text-gray-400"
118+
onClick={() => setConfigAddOn(addOn)}
119+
disabled={!addOnState[addOn.id].enabled}
120+
>
121+
<SettingsIcon className="w-4 h-4" />
122+
</Button>
123+
)}
124+
<InfoIcon
125+
className="w-4 text-gray-600 cursor-pointer hover:text-gray-400"
126+
onClick={() => setInfoAddOn(addOn)}
127+
/>
128+
</div>
118129
</div>
119130
</div>
120-
</div>
121-
))}
131+
))}
132+
</div>
122133
</div>
123134
</div>
124-
</div>
125-
)}
126-
</Fragment>
127-
))}
135+
)}
136+
</Fragment>
137+
))}
128138
</div>
129139
<div className="mt-4">
130140
<ImportCustomAddOn />

packages/cta-ui-base/src/hooks/use-webcontainer-store.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ export type SetupStep =
1212
| 'ready'
1313
| 'error'
1414

15-
console.log('>>> startup')
16-
1715
type WebContainerStore = {
1816
webContainer: Promise<WebContainer> | null
1917
ready: boolean

packages/cta-ui-base/src/store/project.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ export const useOriginalOptions = () => useInitialData().data?.options
4848
export const useOriginalSelectedAddOns = () =>
4949
useOriginalOptions()?.chosenAddOns
5050
export const useApplicationMode = () => useInitialData().data?.applicationMode
51+
export const useShowHostingOptions = () =>
52+
useInitialData().data?.showHostingOptions
5153
export const useAddOnsByMode = () => useInitialData().data?.addOns
5254
export const useSupportedModes = () => useInitialData().data?.supportedModes
5355

packages/cta-ui-base/src/types.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ export type InitialData = {
8989
localFiles: Record<string, string>
9090
addOns: Record<string, Array<AddOnInfo>>
9191
applicationMode: ApplicationMode
92+
showHostingOptions?: boolean
9293
forcedRouterMode?: string
9394
forcedAddOns?: Array<string>
9495
registry?: Registry | undefined

packages/cta-ui/lib/engine-handling/generate-initial-payload.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
getProjectOptions,
2020
getProjectPath,
2121
getRegistry as getRegistryURL,
22+
getShowHostingOptions,
2223
} from './server-environment.js'
2324

2425
import type { AddOn, SerializedOptions } from '@tanstack/cta-engine'
@@ -119,6 +120,7 @@ export async function generateInitialPayload() {
119120
return {
120121
supportedModes: framework!.supportedModes,
121122
applicationMode,
123+
showHostingOptions: getShowHostingOptions(),
122124
localFiles,
123125
addOns,
124126
options: serializedOptions,

packages/cta-ui/lib/engine-handling/server-environment.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export type ServerEnvironment = {
88
forcedRouterMode?: string
99
forcedAddOns?: Array<string>
1010
registry?: string
11+
showHostingOptions?: boolean
1112
}
1213

1314
const serverEnvironment: ServerEnvironment = {
@@ -18,12 +19,15 @@ const serverEnvironment: ServerEnvironment = {
1819
forcedRouterMode: undefined,
1920
forcedAddOns: undefined,
2021
registry: undefined,
22+
showHostingOptions: false,
2123
}
2224

2325
export function setServerEnvironment(options: Partial<ServerEnvironment>) {
2426
Object.assign(serverEnvironment, options)
2527
}
2628

29+
export const getShowHostingOptions = () => serverEnvironment.showHostingOptions
30+
2731
export const getProjectPath = () => serverEnvironment.projectPath
2832

2933
export const getApplicationMode = () => serverEnvironment.mode

packages/cta-ui/lib/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export function launchUI(
2323
port?: number
2424
environmentFactory?: () => Environment
2525
webBase?: string
26+
showHostingOptions?: boolean
2627
},
2728
) {
2829
const { port: requestedPort, webBase, ...rest } = options

0 commit comments

Comments
 (0)