@@ -9,21 +9,50 @@ export const isDarkMode = writable(false);
99export const selectedIcon = writable ( null ) ;
1010export const isModalOpen = writable ( false ) ;
1111
12- // Initialize store with data from server
13- export function initializeStore ( initialIcons , initialTags ) {
14- icons . set ( initialIcons ) ;
15- availableTags . set ( initialTags ) ;
16-
17- // Check local storage for dark mode preference
18- if ( typeof window !== 'undefined' ) {
19- const storedDarkMode = localStorage . getItem ( 'darkMode' ) === 'true' ;
20- isDarkMode . set ( storedDarkMode ) ;
21-
22- // Apply theme to document
23- if ( storedDarkMode ) {
24- document . documentElement . classList . add ( 'dark' ) ;
25- }
12+ // Load icons data from GitHub API
13+ export async function loadIconsData ( ) {
14+ try {
15+ const response = await fetch ( 'https://raw.githubusercontent.com/devicons/devicon/master/devicon.json' ) ;
16+
17+ if ( ! response . ok ) {
18+ throw new Error ( `Failed to fetch icons: ${ response . statusText } ` ) ;
19+ }
20+
21+ const iconsData = await response . json ( ) ;
22+
23+ // Extract all available tags
24+ const availableTagsData = new Set ( ) ;
25+ iconsData . forEach ( icon => {
26+ if ( icon . tags && Array . isArray ( icon . tags ) ) {
27+ icon . tags . forEach ( tag => availableTagsData . add ( tag ) ) ;
2628 }
29+ } ) ;
30+
31+ // Set the data in stores
32+ icons . set ( iconsData ) ;
33+ availableTags . set ( Array . from ( availableTagsData ) . sort ( ) ) ;
34+
35+ return { icons : iconsData , availableTags : Array . from ( availableTagsData ) . sort ( ) } ;
36+ } catch ( error ) {
37+ console . error ( 'Error fetching icons:' , error ) ;
38+ icons . set ( [ ] ) ;
39+ availableTags . set ( [ ] ) ;
40+ throw error ;
41+ }
42+ }
43+
44+ // Initialize store with dark mode preference
45+ export function initializeStore ( ) {
46+ // Check local storage for dark mode preference
47+ if ( typeof window !== 'undefined' ) {
48+ const storedDarkMode = localStorage . getItem ( 'darkMode' ) === 'true' ;
49+ isDarkMode . set ( storedDarkMode ) ;
50+
51+ // Apply theme to document
52+ if ( storedDarkMode ) {
53+ document . documentElement . classList . add ( 'dark' ) ;
54+ }
55+ }
2756}
2857
2958// Derived store for filtered icons
0 commit comments