Skip to content

Commit 47b0472

Browse files
committed
Update index.ts
1 parent 00aba2a commit 47b0472

1 file changed

Lines changed: 94 additions & 104 deletions

File tree

packages/studiocms_ui/src/index.ts

Lines changed: 94 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,16 @@
1212
/// <reference path="../dist/events.d.ts" preserve="true" />
1313
/// <reference path="../dist/virtuals.d.ts" preserve="true" />
1414

15-
import fs from "node:fs";
16-
import type { IconifyJSON } from "@iconify/types";
17-
import { icons as heroicons } from "@iconify-json/heroicons";
18-
import type { AstroIntegration } from "astro";
19-
import { addVirtualImports, createResolver } from "astro-integration-kit";
20-
import transitionEventPolyfill from "astro-transition-event-polyfill";
21-
import { studiocmsLogo } from "./toolbar/icon.js";
22-
import { generateIconTypes } from "./utils/typegen.js";
23-
24-
const pkgJson = JSON.parse(
25-
fs.readFileSync(new URL("../package.json", import.meta.url), "utf-8"),
26-
);
15+
import fs from 'node:fs';
16+
import type { IconifyJSON } from '@iconify/types';
17+
import { icons as heroicons } from '@iconify-json/heroicons';
18+
import type { AstroIntegration } from 'astro';
19+
import { addVirtualImports, createResolver } from 'astro-integration-kit';
20+
import transitionEventPolyfill from 'astro-transition-event-polyfill';
21+
import { studiocmsLogo } from './toolbar/icon.js';
22+
import { generateIconTypes } from './utils/typegen.js';
23+
24+
const pkgJson = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url), 'utf-8'));
2725

2826
type Options = {
2927
/**
@@ -78,9 +76,7 @@ type IconifyCollections = {
7876
availableIcons: string[];
7977
};
8078

81-
export function createIconifyCollection(
82-
icons?: Record<string, IconifyJSON>,
83-
): IconifyCollections {
79+
export function createIconifyCollection(icons?: Record<string, IconifyJSON>): IconifyCollections {
8480
const collections: Record<string, IconifyJSON> = {};
8581
const collectionNames: string[] = [];
8682
const availableIcons: string[] = [];
@@ -136,15 +132,13 @@ export default function integration(options: Options = {}): AstroIntegration {
136132
};
137133

138134
return {
139-
name: "@studiocms/ui",
135+
name: '@studiocms/ui',
140136
hooks: {
141137
/* v8 ignore start */
142138
/** Astro integrations cannot be properly tested for code coverage */
143-
"astro:config:setup": (params) => {
139+
'astro:config:setup': (params) => {
144140
const { addDevToolbarApp, injectScript, updateConfig } = params;
145-
const { resolve: rootResolve } = createResolver(
146-
params.config.root.pathname,
147-
);
141+
const { resolve: rootResolve } = createResolver(params.config.root.pathname);
148142

149143
updateConfig({
150144
integrations: [transitionEventPolyfill()],
@@ -161,147 +155,143 @@ export default function integration(options: Options = {}): AstroIntegration {
161155
icons = createIconifyCollection(optIcons);
162156

163157
const componentMap: Record<string, string> = {
164-
"studiocms:ui/components/alert": `export { default as Alert } from '${resolve("./components/Alert/Alert.astro")}';`,
165-
"studiocms:ui/components/button": `export { default as Button } from '${resolve("./components/Button/Button.astro")}';`,
166-
"studiocms:ui/components/divider": `export { default as Divider } from '${resolve("./components/Divider/Divider.astro")}';`,
167-
"studiocms:ui/components/input": `export { default as Input } from '${resolve("./components/Input/Input.astro")}';`,
168-
"studiocms:ui/components/textarea": `export { default as Textarea } from '${resolve("./components/Textarea/Textarea.astro")}';`,
169-
"studiocms:ui/components/row": `export { default as Row } from '${resolve("./components/Row/Row.astro")}';`,
170-
"studiocms:ui/components/center": `export { default as Center } from '${resolve("./components/Center/Center.astro")}';`,
171-
"studiocms:ui/components/checkbox": `export { default as Checkbox } from '${resolve("./components/Checkbox/Checkbox.astro")}';`,
172-
"studiocms:ui/components/toggle": `export { default as Toggle } from '${resolve("./components/Toggle/Toggle.astro")}';`,
173-
"studiocms:ui/components/radiogroup": `export { default as RadioGroup } from '${resolve("./components/RadioGroup/RadioGroup.astro")}';`,
174-
"studiocms:ui/components/toaster": `export { default as Toaster } from '${resolve("./components/Toast/Toaster.astro")}';`,
175-
"studiocms:ui/components/toaster/client": `export { toast } from '${resolve("./components/Toast/toast.js")}';`,
176-
"studiocms:ui/components/card": `export { default as Card } from '${resolve("./components/Card/Card.astro")}';`,
177-
"studiocms:ui/components/modal": `export { default as Modal } from '${resolve("./components/Modal/Modal.astro")}';`,
178-
"studiocms:ui/components/modal/client": `export { ModalHelper } from '${resolve("./components/Modal/modal.js")}';`,
179-
"studiocms:ui/components/select": `
180-
export { default as Select } from '${resolve("./components/Select/Select.astro")}';
181-
export { default as SearchSelect } from '${resolve("./components/SearchSelect/SearchSelect.astro")}';
158+
'studiocms:ui/components/alert': `export { default as Alert } from '${resolve('./components/Alert/Alert.astro')}';`,
159+
'studiocms:ui/components/button': `export { default as Button } from '${resolve('./components/Button/Button.astro')}';`,
160+
'studiocms:ui/components/divider': `export { default as Divider } from '${resolve('./components/Divider/Divider.astro')}';`,
161+
'studiocms:ui/components/input': `export { default as Input } from '${resolve('./components/Input/Input.astro')}';`,
162+
'studiocms:ui/components/textarea': `export { default as Textarea } from '${resolve('./components/Textarea/Textarea.astro')}';`,
163+
'studiocms:ui/components/row': `export { default as Row } from '${resolve('./components/Row/Row.astro')}';`,
164+
'studiocms:ui/components/center': `export { default as Center } from '${resolve('./components/Center/Center.astro')}';`,
165+
'studiocms:ui/components/checkbox': `export { default as Checkbox } from '${resolve('./components/Checkbox/Checkbox.astro')}';`,
166+
'studiocms:ui/components/toggle': `export { default as Toggle } from '${resolve('./components/Toggle/Toggle.astro')}';`,
167+
'studiocms:ui/components/radiogroup': `export { default as RadioGroup } from '${resolve('./components/RadioGroup/RadioGroup.astro')}';`,
168+
'studiocms:ui/components/toaster': `export { default as Toaster } from '${resolve('./components/Toast/Toaster.astro')}';`,
169+
'studiocms:ui/components/toaster/client': `export { toast } from '${resolve('./components/Toast/toast.js')}';`,
170+
'studiocms:ui/components/card': `export { default as Card } from '${resolve('./components/Card/Card.astro')}';`,
171+
'studiocms:ui/components/modal': `export { default as Modal } from '${resolve('./components/Modal/Modal.astro')}';`,
172+
'studiocms:ui/components/modal/client': `export { ModalHelper } from '${resolve('./components/Modal/modal.js')}';`,
173+
'studiocms:ui/components/select': `
174+
export { default as Select } from '${resolve('./components/Select/Select.astro')}';
175+
export { default as SearchSelect } from '${resolve('./components/SearchSelect/SearchSelect.astro')}';
182176
`,
183-
"studiocms:ui/components/dropdown": `export { default as Dropdown } from '${resolve("./components/Dropdown/Dropdown.astro")}';`,
184-
"studiocms:ui/components/dropdown/client": `export { DropdownHelper } from '${resolve("./components/Dropdown/dropdown.js")}';`,
185-
"studiocms:ui/components/user": `export { default as User } from '${resolve("./components/User/User.astro")}';`,
186-
"studiocms:ui/components/tabs": `
187-
export { default as Tabs } from '${resolve("./components/Tabs/Tabs.astro")}';
188-
export { default as TabItem } from '${resolve("./components/Tabs/TabItem.astro")}';
177+
'studiocms:ui/components/dropdown': `export { default as Dropdown } from '${resolve('./components/Dropdown/Dropdown.astro')}';`,
178+
'studiocms:ui/components/dropdown/client': `export { DropdownHelper } from '${resolve('./components/Dropdown/dropdown.js')}';`,
179+
'studiocms:ui/components/user': `export { default as User } from '${resolve('./components/User/User.astro')}';`,
180+
'studiocms:ui/components/tabs': `
181+
export { default as Tabs } from '${resolve('./components/Tabs/Tabs.astro')}';
182+
export { default as TabItem } from '${resolve('./components/Tabs/TabItem.astro')}';
189183
`,
190-
"studiocms:ui/components/accordion": `
191-
export { default as Accordion } from '${resolve("./components/Accordion/Accordion.astro")}';
192-
export { default as AccordionItem } from '${resolve("./components/Accordion/Item.astro")}';
184+
'studiocms:ui/components/accordion': `
185+
export { default as Accordion } from '${resolve('./components/Accordion/Accordion.astro')}';
186+
export { default as AccordionItem } from '${resolve('./components/Accordion/Item.astro')}';
193187
`,
194-
"studiocms:ui/components/footer": `export { default as Footer } from '${resolve("./components/Footer/Footer.astro")}';`,
195-
"studiocms:ui/components/progress": `export { default as Progress } from '${resolve("./components/Progress/Progress.astro")}';`,
196-
"studiocms:ui/components/progress/client": `export { ProgressHelper } from '${resolve("./components/Progress/helper.js")}';`,
197-
"studiocms:ui/components/sidebar": `
198-
export { default as Sidebar } from '${resolve("./components/Sidebar/Single.astro")}';
199-
export { default as DoubleSidebar } from '${resolve("./components/Sidebar/Double.astro")}';
188+
'studiocms:ui/components/footer': `export { default as Footer } from '${resolve('./components/Footer/Footer.astro')}';`,
189+
'studiocms:ui/components/progress': `export { default as Progress } from '${resolve('./components/Progress/Progress.astro')}';`,
190+
'studiocms:ui/components/progress/client': `export { ProgressHelper } from '${resolve('./components/Progress/helper.js')}';`,
191+
'studiocms:ui/components/sidebar': `
192+
export { default as Sidebar } from '${resolve('./components/Sidebar/Single.astro')}';
193+
export { default as DoubleSidebar } from '${resolve('./components/Sidebar/Double.astro')}';
200194
`,
201-
"studiocms:ui/components/sidebar/client": `export { SingleSidebarHelper, DoubleSidebarHelper } from '${resolve("./components/Sidebar/helpers.js")}';`,
202-
"studiocms:ui/components/breadcrumbs": `export { default as Breadcrumbs } from '${resolve("./components/Breadcrumbs/Breadcrumbs.astro")}';`,
203-
"studiocms:ui/components/group": `export { default as Group } from '${resolve("./components/Group/Group.astro")}';`,
204-
"studiocms:ui/components/badge": `export { default as Badge } from '${resolve("./components/Badge/Badge.astro")}';`,
205-
"studiocms:ui/components/icon": `
206-
export { default as Icon } from '${resolve("./components/Icon/Icon.astro")}';
207-
export { default as IconBase } from '${resolve("./components/Icon/IconBase.astro")}';
195+
'studiocms:ui/components/sidebar/client': `export { SingleSidebarHelper, DoubleSidebarHelper } from '${resolve('./components/Sidebar/helpers.js')}';`,
196+
'studiocms:ui/components/breadcrumbs': `export { default as Breadcrumbs } from '${resolve('./components/Breadcrumbs/Breadcrumbs.astro')}';`,
197+
'studiocms:ui/components/group': `export { default as Group } from '${resolve('./components/Group/Group.astro')}';`,
198+
'studiocms:ui/components/badge': `export { default as Badge } from '${resolve('./components/Badge/Badge.astro')}';`,
199+
'studiocms:ui/components/icon': `
200+
export { default as Icon } from '${resolve('./components/Icon/Icon.astro')}';
201+
export { default as IconBase } from '${resolve('./components/Icon/IconBase.astro')}';
208202
`,
209-
"studiocms:ui/components/skeleton": `export { default as Skeleton } from '${resolve("./components/Skeleton/Skeleton.astro")}';`,
210-
"studiocms:ui/components/tooltip": `export { default as Tooltip } from '${resolve("./components/Tooltip/Tooltip.astro")}';`,
203+
'studiocms:ui/components/skeleton': `export { default as Skeleton } from '${resolve('./components/Skeleton/Skeleton.astro')}';`,
204+
'studiocms:ui/components/tooltip': `export { default as Tooltip } from '${resolve('./components/Tooltip/Tooltip.astro')}';`,
211205
};
212206

213207
const ServerComponents = Object.entries(componentMap).filter(
214-
([key]) => !key.endsWith("/client"),
208+
([key]) => !key.endsWith('/client')
215209
);
216210

217211
const ClientComponents = Object.entries(componentMap).filter(([key]) =>
218-
key.endsWith("/client"),
212+
key.endsWith('/client')
219213
);
220214

221215
const virtualComponents: Record<string, string> = {
222216
...componentMap,
223-
"studiocms:ui/components": ServerComponents.map(
224-
([_, value]) => value,
225-
).join("\n"),
226-
"studiocms:ui/components/client": ClientComponents.map(
227-
([_, value]) => value,
228-
).join("\n"),
217+
'studiocms:ui/components': ServerComponents.map(([_, value]) => value).join('\n'),
218+
'studiocms:ui/components/client': ClientComponents.map(([_, value]) => value).join('\n'),
229219
};
230220

231221
addVirtualImports(params, {
232-
name: "@studiocms/ui",
222+
name: '@studiocms/ui',
233223
imports: {
234224
// Internal Version
235-
"studiocms:ui/version": `export default '${pkgJson.version}';`,
225+
'studiocms:ui/version': `export default '${pkgJson.version}';`,
236226
// Styles
237-
"studiocms:ui/global-css": `import '${resolve("./css/global.css")}';`,
238-
"studiocms:ui/reset-css": `import '${resolve("./css/resets.css")}';`,
239-
"studiocms:ui/prose": `import '${resolve("./css/prose.css")}';`,
240-
"studiocms:ui/custom-css": `import '${rootResolve(options.customCss ? options.customCss : "")}';`,
227+
'studiocms:ui/global-css': `import '${resolve('./css/global.css')}';`,
228+
'studiocms:ui/reset-css': `import '${resolve('./css/resets.css')}';`,
229+
'studiocms:ui/prose': `import '${resolve('./css/prose.css')}';`,
230+
'studiocms:ui/custom-css': `import '${rootResolve(options.customCss ? options.customCss : '')}';`,
241231
// Scripts
242-
"studiocms:ui/scripts/checkbox": `import '${resolve("./components/Checkbox/checkbox.js")}';`,
243-
"studiocms:ui/scripts/radiogroup": `import '${resolve("./components/RadioGroup/radiogroup.js")}';`,
244-
"studiocms:ui/scripts/searchselect": `import '${resolve("./components/SearchSelect/searchselect.js")}';`,
245-
"studiocms:ui/scripts/select": `import '${resolve("./components/Select/select.js")}';`,
246-
"studiocms:ui/scripts/tabs": `import '${resolve("./components/Tabs/tabs.js")}';`,
247-
"studiocms:ui/scripts/themetoggle": `import '${resolve("./components/ThemeToggle/themetoggle.js")}';`,
248-
"studiocms:ui/scripts/toaster": `import '${resolve("./components/Toast/toaster.js")}';`,
249-
"studiocms:ui/scripts/toast": `import '${resolve("./components/Toast/toast.js")}';`,
250-
"studiocms:ui/scripts/toggle": `import '${resolve("./components/Toggle/toggle.js")}';`,
251-
"studiocms:ui/scripts/tooltip": `import '${resolve("./components/Tooltip/tooltip.js")}';`,
252-
"studiocms:ui/scripts/accordion": `import '${resolve("./components/Accordion/accordion.js")}';`,
253-
"studiocms:ui/scripts/progress": `import '${resolve("./components/Progress/progress.js")}';`,
254-
"studiocms:ui/components/select/script": `
255-
export { SUISelectElement } from '${resolve("./components/Select/select.js")}';
232+
'studiocms:ui/scripts/checkbox': `import '${resolve('./components/Checkbox/checkbox.js')}';`,
233+
'studiocms:ui/scripts/radiogroup': `import '${resolve('./components/RadioGroup/radiogroup.js')}';`,
234+
'studiocms:ui/scripts/searchselect': `import '${resolve('./components/SearchSelect/searchselect.js')}';`,
235+
'studiocms:ui/scripts/select': `import '${resolve('./components/Select/select.js')}';`,
236+
'studiocms:ui/scripts/tabs': `import '${resolve('./components/Tabs/tabs.js')}';`,
237+
'studiocms:ui/scripts/themetoggle': `import '${resolve('./components/ThemeToggle/themetoggle.js')}';`,
238+
'studiocms:ui/scripts/toaster': `import '${resolve('./components/Toast/toaster.js')}';`,
239+
'studiocms:ui/scripts/toast': `import '${resolve('./components/Toast/toast.js')}';`,
240+
'studiocms:ui/scripts/toggle': `import '${resolve('./components/Toggle/toggle.js')}';`,
241+
'studiocms:ui/scripts/tooltip': `import '${resolve('./components/Tooltip/tooltip.js')}';`,
242+
'studiocms:ui/scripts/accordion': `import '${resolve('./components/Accordion/accordion.js')}';`,
243+
'studiocms:ui/scripts/progress': `import '${resolve('./components/Progress/progress.js')}';`,
244+
'studiocms:ui/components/select/script': `
245+
export { SUISelectElement } from '${resolve('./components/Select/select.js')}';
256246
`,
257247
// Components
258248
...virtualComponents,
259249

260-
"studiocms:ui/utils": `
261-
export { ThemeHelper, Theme } from '${resolve("./utils/ThemeHelper.js")}';
250+
'studiocms:ui/utils': `
251+
export { ThemeHelper, Theme } from '${resolve('./utils/ThemeHelper.js')}';
262252
`,
263253

264-
"studiocms:ui/icons": `
265-
${icons.integrationCollections ? icons.integrationCollections : ""}
254+
'studiocms:ui/icons': `
255+
${icons.integrationCollections ? icons.integrationCollections : ''}
266256
export const availableIcons = ${JSON.stringify(icons.availableIcons)};
267257
export const iconCollections = ${JSON.stringify(icons.collectionNames)};
268258
`,
269259
},
270260
});
271261

272262
if (!options.noInjectResetCSS || !options.noInjectCSS) {
273-
injectScript("page-ssr", `import 'studiocms:ui/reset-css';`);
263+
injectScript('page-ssr', `import 'studiocms:ui/reset-css';`);
274264
}
275265

276266
if (!options.noInjectCSS) {
277-
injectScript("page-ssr", `import 'studiocms:ui/global-css';`);
267+
injectScript('page-ssr', `import 'studiocms:ui/global-css';`);
278268
}
279269

280270
if (options.customCss) {
281-
injectScript("page-ssr", `import 'studiocms:ui/custom-css';`);
271+
injectScript('page-ssr', `import 'studiocms:ui/custom-css';`);
282272
}
283273

284274
addDevToolbarApp({
285-
id: "studiocms-ui-toolbar",
286-
name: "StudioCMS/UI",
287-
entrypoint: resolve("./toolbar/index.js"),
275+
id: 'studiocms-ui-toolbar',
276+
name: 'StudioCMS/UI',
277+
entrypoint: resolve('./toolbar/index.js'),
288278
icon: studiocmsLogo,
289279
});
290280
},
291-
"astro:config:done": ({ injectTypes }) => {
281+
'astro:config:done': ({ injectTypes }) => {
292282
injectTypes(
293-
generateIconTypes("icons.d.ts", {
283+
generateIconTypes('icons.d.ts', {
294284
collections:
295285
icons.collections && Object.keys(icons.collections).length > 0
296286
? `${Object.keys(icons.collections)
297287
.map((collection) => {
298288
return `'${collection}': import('@studiocms/ui/types').IconifyJSON;`;
299289
})
300-
.join("\n")}`
290+
.join('\n')}`
301291
: 'export const collections: Record<string, import("@studiocms/ui/types").IconifyJSON>;',
302292
availableIcons: `('${icons.availableIcons.join("'\n | '")}')[]`,
303293
iconCollections: `('${icons.collectionNames.join("'\n | '")}')[]`,
304-
}),
294+
})
305295
);
306296
},
307297
/* v8 ignore stop */

0 commit comments

Comments
 (0)