diff --git a/docs/app/quick-start.md b/docs/app/quick-start.md index 912b578..d175015 100755 --- a/docs/app/quick-start.md +++ b/docs/app/quick-start.md @@ -27,7 +27,7 @@ module.exports = {} ## Build Your First Workflow 1. Create a Workflow via Alfred UI, or use an existing one -1. Open the Workflow directory, copy relevant files (icons, `info.plist`, `prefs.plist`, etc) to your project +1. Open the Workflow directory, copy relevant files (icons, `info.plist`, etc) to your project 1. In case your package declares `"type": "module"` in the `package.json` file, you'll need to set both [`esmHelpers`](./setup/bundler-options#esmhelpers) and [`outputFormat`](./setup/bundler-options#outputformat) in order to use [`fast-alfred` runtime](./setup/runtime-explain) 1. Create a source directory for your Workflow scripts diff --git a/src/core/services/icon.service.ts b/src/core/services/icon.service.ts index 26ae971..d4efb1c 100644 --- a/src/core/services/icon.service.ts +++ b/src/core/services/icon.service.ts @@ -1,13 +1,92 @@ +import type { StringWithAutocomplete } from '@models/string-with-autocomplete.modek' + const generateIcon = (name: string) => `/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/${name}.icns` as const const ICONS = { info: generateIcon('ToolbarInfo'), - warning: generateIcon('AlertCautionIcon'), + warning: generateIcon('AlertCautionBadgeIcon'), error: generateIcon('AlertStopIcon'), + note: generateIcon('AlertNoteIcon'), alert: generateIcon('Actions'), like: generateIcon('ToolbarFavoritesIcon'), delete: generateIcon('ToolbarDeleteIcon'), + + /** + *Special icons + */ + accounts: generateIcon('Accounts'), + actions: generateIcon('Actions'), + airDrop: generateIcon('AirDrop'), + locked: generateIcon('LockedIcon'), + unlock: generateIcon('UnlockedIcon'), + sync: generateIcon('Sync'), + general: generateIcon('General'), + usersFolder: generateIcon('UsersFolderIcon'), + unknownUser: generateIcon('UserUnknownIcon'), + genericFolder: generateIcon('GenericFolderIcon'), + utilitiesFolder: generateIcon('UtilitiesFolder'), + systemFolderIcor: generateIcon('SystemFolderIcor'), + genericDocument: generateIcon('GenericDocumentIcon'), + genericApplicationIcon: generateIcon('GenericApplicationIcon'), + problemReport: generateIcon('ProblemReport'), + unsupported: generateIcon('Unsupported'), + toolbarInfo: generateIcon('ToolbarInfo'), + trash: generateIcon('Trashicon'), + toolbarAdvanced: generateIcon('ToolbarAdvanced'), + toolbarCustomize: generateIcon('ToolbarCustomizeIcon'), + notifications: generateIcon('Notifications'), + executableBinary: generateIcon('ExecutableBinaryIcon'), + fileVault: generateIcon('FileVaultIcon'), + finder: generateIcon('FinderIcon'), + + /** + * Side bar icons + */ + sidebarAirDrop: generateIcon('SidebarAirDrop'), + sidebarAirportDisk: generateIcon('SidebarAirportDisk'), + sidebarAirportExpress: generateIcon('SidebarAirportExpress'), + sidebarAirportExtreme: generateIcon('SidebarAirportExtreme'), + sidebarAirportExtremeTower: generateIcon('SidebarAirportExtremeTower'), + sidebarAllMyFiles: generateIcon('SidebarAllMyFiles'), + sidebarApplicationsFolder: generateIcon('SidebarApplicationsFolder'), + sidebarBonjour: generateIcon('SidebarBonjour'), + sidebarBurnFolder: generateIcon('SidebarBurnFolder'), + sidebarDesktopFolder: generateIcon('SidebarDesktopFolder'), + sidebarDisplay: generateIcon('SidebarDisplay'), + sidebarDocumentsFolder: generateIcon('SidebarDocumentsFolder'), + sidebarDownloadsFolder: generateIcon('SidebarDownloadsFolder'), + sidebarDropBoxFolder: generateIcon('SidebarDropBoxFolder'), + sidebarExternalDisk: generateIcon('SidebarExternalDisk'), + sidebarGenericFile: generateIcon('SidebarGenericFile'), + sidebarGenericFolder: generateIcon('SidebarGenericFolder'), + sidebarHomeFolder: generateIcon('SidebarHomeFolder'), + sidebariCloud: generateIcon('SidebariCloud'), + sidebariDisk: generateIcon('SidebariDisk'), + sidebariMac: generateIcon('SidebariMac'), + sidebarInternalDisk: generateIcon('SidebarInternalDisk'), + sidebariPad: generateIcon('SidebariPad'), + sidebariPhone: generateIcon('SidebariPhone'), + sidebariPodTouch: generateIcon('SidebariPodTouch'), + sidebarLaptop: generateIcon('SidebarLaptop'), + sidebarMacMini: generateIcon('SidebarMacMini'), + sidebarMacPro: generateIcon('SidebarMacPro'), + sidebarMacProCylinder: generateIcon('SidebarMacProCylinder'), + sidebarMoviesFolder: generateIcon('SidebarMoviesFolder'), + sidebarMusicFolder: generateIcon('SidebarMusicFolder'), + sidebarNetwork: generateIcon('SidebarNetwork'), + sidebarOpticalDisk: generateIcon('SidebarOpticalDisk'), + sidebarPC: generateIcon('SidebarPC'), + sidebarPicturesFolder: generateIcon('SidebarPicturesFolder'), + sidebarPrefs: generateIcon('SidebarPrefs'), + sidebarRecents: generateIcon('SidebarRecents'), + sidebarRemovableDisk: generateIcon('SidebarRemovableDisk'), + sidebarServerDrive: generateIcon('SidebarServerDrive'), + sidebarSmartFolder: generateIcon('SidebarSmartFolder'), + sidebarTimeCapsule: generateIcon('SidebarTimeCapsule'), + sidebarTimeMachine: generateIcon('SidebarTimeMachine'), + sidebarUtilitiesFolder: generateIcon('SidebarUtilitiesFolder'), + sidebarXserve: generateIcon('SidebarXserve'), } as const /** @@ -31,10 +110,11 @@ const ICONS = { * ``` */ export class IconService { - public getIcon(name: keyof typeof ICONS): string { - const icon = ICONS[name] + public getIcon(name: StringWithAutocomplete): string { + const icon = ICONS[name as keyof typeof ICONS] if (!icon) { - throw new Error(`Icon ${name} not found`) + const dyamicIcon = generateIcon(name) + return dyamicIcon } return icon diff --git a/src/models/string-with-autocomplete.modek.ts b/src/models/string-with-autocomplete.modek.ts new file mode 100644 index 0000000..e68da95 --- /dev/null +++ b/src/models/string-with-autocomplete.modek.ts @@ -0,0 +1 @@ +export type StringWithAutocomplete = T | (string & Record)