@idealyst/mcp-server 1.2.19 → 1.2.21

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.
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-guides.d.ts","sourceRoot":"","sources":["../../src/data/navigation-guides.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAsqDnD,CAAC"}
1
+ {"version":3,"file":"navigation-guides.d.ts","sourceRoot":"","sources":["../../src/data/navigation-guides.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAomEnD,CAAC"}
@@ -1694,6 +1694,451 @@ type NavigateParams = {
1694
1694
  replace?: boolean;
1695
1695
  };
1696
1696
  \`\`\`
1697
+ `,
1698
+ "idealyst://navigation/web-mobile-parity": `# Web/Mobile Navigation Parity
1699
+
1700
+ Understanding how to achieve the same navigation experience on web that you get for free on mobile.
1701
+
1702
+ ## The Core Problem
1703
+
1704
+ On **React Native**, you get native navigation UI for free:
1705
+ - Stack navigator gives you headers with back buttons
1706
+ - Tab navigator gives you a bottom tab bar with icons
1707
+ - Drawer navigator gives you a slide-out menu
1708
+
1709
+ On **Web**, you get nothing but URL routing. No headers, no tab bars, no drawers. You must build these yourself using **layout components**.
1710
+
1711
+ ## The Solution: Layout Components
1712
+
1713
+ The \`layoutComponent\` prop on navigators is how you achieve parity. It wraps your route content and provides the navigation UI.
1714
+
1715
+ \`\`\`tsx
1716
+ {
1717
+ path: "/",
1718
+ type: 'navigator',
1719
+ layout: 'stack',
1720
+ layoutComponent: MyStackLayout, // <-- This is the key!
1721
+ routes: [...]
1722
+ }
1723
+ \`\`\`
1724
+
1725
+ ## What Layout Components Receive
1726
+
1727
+ Every layout component receives these props:
1728
+
1729
+ \`\`\`tsx
1730
+ type LayoutProps = {
1731
+ children: React.ReactNode; // The route content (renders via <Outlet />)
1732
+ options?: NavigatorOptions; // headerTitle, headerLeft, headerRight, etc.
1733
+ routes: RouteWithFullPath[]; // All child routes with their full paths
1734
+ currentPath: string; // Currently active route path
1735
+ };
1736
+ \`\`\`
1737
+
1738
+ **This gives you everything you need to build any navigation UI:**
1739
+ - \`options\` - What to show in headers
1740
+ - \`routes\` - What tabs/menu items to render
1741
+ - \`currentPath\` - Which one is active
1742
+ - \`children\` - Where to render the screen content
1743
+
1744
+ ## Stack Navigator Parity
1745
+
1746
+ ### What Native Gives You
1747
+ - Header bar with title
1748
+ - Back button (automatic)
1749
+ - Right-side actions
1750
+ - Smooth transitions
1751
+
1752
+ ### Web Implementation
1753
+
1754
+ \`\`\`tsx
1755
+ import { Outlet } from 'react-router-dom';
1756
+ import { View, Text, IconButton, Pressable } from '@idealyst/components';
1757
+ import { useNavigator } from '@idealyst/navigation';
1758
+ import type { StackLayoutProps } from '@idealyst/navigation';
1759
+
1760
+ export function StackLayout({ options, currentPath }: StackLayoutProps) {
1761
+ const { canGoBack, goBack } = useNavigator();
1762
+
1763
+ return (
1764
+ <View style={{ flex: 1 }}>
1765
+ {/* Header - mimics native stack header */}
1766
+ {options?.headerShown !== false && (
1767
+ <View style={{
1768
+ height: 56,
1769
+ flexDirection: 'row',
1770
+ alignItems: 'center',
1771
+ paddingHorizontal: 16,
1772
+ borderBottomWidth: 1,
1773
+ borderBottomColor: '#e0e0e0',
1774
+ backgroundColor: '#fff',
1775
+ }}>
1776
+ {/* Back button - like native */}
1777
+ {options?.headerBackVisible !== false && canGoBack() && (
1778
+ <IconButton
1779
+ icon="arrow-left"
1780
+ onPress={goBack}
1781
+ style={{ marginRight: 8 }}
1782
+ />
1783
+ )}
1784
+
1785
+ {/* Left slot */}
1786
+ {options?.headerLeft && (
1787
+ <View style={{ marginRight: 16 }}>
1788
+ {typeof options.headerLeft === 'function'
1789
+ ? options.headerLeft({})
1790
+ : options.headerLeft}
1791
+ </View>
1792
+ )}
1793
+
1794
+ {/* Title - centered or left-aligned */}
1795
+ <View style={{ flex: 1 }}>
1796
+ {typeof options?.headerTitle === 'string' ? (
1797
+ <Text variant="title">{options.headerTitle}</Text>
1798
+ ) : (
1799
+ options?.headerTitle
1800
+ )}
1801
+ </View>
1802
+
1803
+ {/* Right slot */}
1804
+ {options?.headerRight && (
1805
+ <View>
1806
+ {typeof options.headerRight === 'function'
1807
+ ? options.headerRight({})
1808
+ : options.headerRight}
1809
+ </View>
1810
+ )}
1811
+ </View>
1812
+ )}
1813
+
1814
+ {/* Content area */}
1815
+ <View style={{ flex: 1 }}>
1816
+ <Outlet />
1817
+ </View>
1818
+ </View>
1819
+ );
1820
+ }
1821
+ \`\`\`
1822
+
1823
+ ## Tab Navigator Parity
1824
+
1825
+ ### What Native Gives You
1826
+ - Bottom tab bar
1827
+ - Icons for each tab
1828
+ - Labels
1829
+ - Badge counts
1830
+ - Active state highlighting
1831
+
1832
+ ### Web Implementation
1833
+
1834
+ \`\`\`tsx
1835
+ import { Outlet } from 'react-router-dom';
1836
+ import { View, Text, Pressable, Icon, Badge } from '@idealyst/components';
1837
+ import { useNavigator } from '@idealyst/navigation';
1838
+ import type { TabLayoutProps } from '@idealyst/navigation';
1839
+
1840
+ export function TabLayout({ routes, currentPath }: TabLayoutProps) {
1841
+ const { navigate } = useNavigator();
1842
+
1843
+ return (
1844
+ <View style={{ flex: 1 }}>
1845
+ {/* Content area */}
1846
+ <View style={{ flex: 1 }}>
1847
+ <Outlet />
1848
+ </View>
1849
+
1850
+ {/* Bottom tab bar - mimics native */}
1851
+ <View style={{
1852
+ height: 56,
1853
+ flexDirection: 'row',
1854
+ borderTopWidth: 1,
1855
+ borderTopColor: '#e0e0e0',
1856
+ backgroundColor: '#fff',
1857
+ }}>
1858
+ {routes.map((route) => {
1859
+ const isActive = currentPath === route.fullPath;
1860
+ const options = route.options;
1861
+
1862
+ return (
1863
+ <Pressable
1864
+ key={route.fullPath}
1865
+ onPress={() => navigate({ path: route.fullPath })}
1866
+ style={{
1867
+ flex: 1,
1868
+ alignItems: 'center',
1869
+ justifyContent: 'center',
1870
+ paddingVertical: 8,
1871
+ }}
1872
+ >
1873
+ {/* Icon with optional badge */}
1874
+ <View style={{ position: 'relative' }}>
1875
+ {options?.tabBarIcon?.({
1876
+ focused: isActive,
1877
+ color: isActive ? '#007AFF' : '#8E8E93',
1878
+ size: 24,
1879
+ })}
1880
+ {options?.tabBarBadge && (
1881
+ <Badge
1882
+ count={options.tabBarBadge}
1883
+ style={{ position: 'absolute', top: -4, right: -8 }}
1884
+ />
1885
+ )}
1886
+ </View>
1887
+
1888
+ {/* Label */}
1889
+ {options?.tabBarLabel && (
1890
+ <Text
1891
+ size="xs"
1892
+ style={{
1893
+ marginTop: 4,
1894
+ color: isActive ? '#007AFF' : '#8E8E93',
1895
+ }}
1896
+ >
1897
+ {options.tabBarLabel}
1898
+ </Text>
1899
+ )}
1900
+ </Pressable>
1901
+ );
1902
+ })}
1903
+ </View>
1904
+ </View>
1905
+ );
1906
+ }
1907
+ \`\`\`
1908
+
1909
+ ## Drawer Navigator Parity
1910
+
1911
+ ### What Native Gives You
1912
+ - Slide-out drawer from edge
1913
+ - Overlay when open
1914
+ - Gesture to open/close
1915
+ - Menu items
1916
+
1917
+ ### Web Implementation
1918
+
1919
+ On web, drawers are typically persistent sidebars. Here's how to build both:
1920
+
1921
+ \`\`\`tsx
1922
+ import { Outlet } from 'react-router-dom';
1923
+ import { View, Text, Pressable, Icon } from '@idealyst/components';
1924
+ import { useNavigator } from '@idealyst/navigation';
1925
+ import type { StackLayoutProps } from '@idealyst/navigation';
1926
+
1927
+ export function DrawerLayout({ routes, currentPath, options }: StackLayoutProps) {
1928
+ const { navigate } = useNavigator();
1929
+ const [isCollapsed, setIsCollapsed] = useState(false);
1930
+
1931
+ return (
1932
+ <View style={{ flex: 1, flexDirection: 'row' }}>
1933
+ {/* Sidebar - always visible on web */}
1934
+ <View style={{
1935
+ width: isCollapsed ? 64 : 240,
1936
+ borderRightWidth: 1,
1937
+ borderRightColor: '#e0e0e0',
1938
+ backgroundColor: '#f8f8f8',
1939
+ transition: 'width 0.2s',
1940
+ }}>
1941
+ {/* Logo/Header */}
1942
+ <View style={{ height: 56, justifyContent: 'center', paddingHorizontal: 16 }}>
1943
+ {!isCollapsed && <Text variant="title">My App</Text>}
1944
+ </View>
1945
+
1946
+ {/* Menu Items */}
1947
+ {routes.map((route) => {
1948
+ const isActive = currentPath.startsWith(route.fullPath);
1949
+ return (
1950
+ <Pressable
1951
+ key={route.fullPath}
1952
+ onPress={() => navigate({ path: route.fullPath })}
1953
+ style={{
1954
+ flexDirection: 'row',
1955
+ alignItems: 'center',
1956
+ padding: 12,
1957
+ backgroundColor: isActive ? 'rgba(0,0,0,0.08)' : 'transparent',
1958
+ }}
1959
+ >
1960
+ <Icon
1961
+ name={route.options?.icon || 'circle'}
1962
+ size={24}
1963
+ color={isActive ? '#007AFF' : '#666'}
1964
+ />
1965
+ {!isCollapsed && (
1966
+ <Text style={{ marginLeft: 12, color: isActive ? '#007AFF' : '#333' }}>
1967
+ {route.options?.title || route.path}
1968
+ </Text>
1969
+ )}
1970
+ </Pressable>
1971
+ );
1972
+ })}
1973
+
1974
+ {/* Collapse toggle */}
1975
+ <Pressable
1976
+ onPress={() => setIsCollapsed(!isCollapsed)}
1977
+ style={{ padding: 12, marginTop: 'auto' }}
1978
+ >
1979
+ <Icon name={isCollapsed ? 'chevron-right' : 'chevron-left'} size={24} />
1980
+ </Pressable>
1981
+ </View>
1982
+
1983
+ {/* Content */}
1984
+ <View style={{ flex: 1 }}>
1985
+ <Outlet />
1986
+ </View>
1987
+ </View>
1988
+ );
1989
+ }
1990
+ \`\`\`
1991
+
1992
+ ## Using GeneralLayout Helper
1993
+
1994
+ The \`GeneralLayout\` component simplifies building layouts:
1995
+
1996
+ \`\`\`tsx
1997
+ import { GeneralLayout } from '@idealyst/navigation';
1998
+
1999
+ export function AppLayout({ options, routes, currentPath, children }: StackLayoutProps) {
2000
+ return (
2001
+ <GeneralLayout
2002
+ header={{
2003
+ enabled: true,
2004
+ height: 56,
2005
+ content: (
2006
+ <View style={{ flexDirection: 'row', alignItems: 'center', flex: 1 }}>
2007
+ <Text variant="title">{options?.headerTitle || 'App'}</Text>
2008
+ <View style={{ marginLeft: 'auto' }}>{options?.headerRight}</View>
2009
+ </View>
2010
+ ),
2011
+ }}
2012
+ sidebar={{
2013
+ enabled: true,
2014
+ collapsible: true,
2015
+ expandedWidth: 240,
2016
+ collapsedWidth: 64,
2017
+ content: <SidebarMenu routes={routes} currentPath={currentPath} />,
2018
+ }}
2019
+ >
2020
+ {children}
2021
+ </GeneralLayout>
2022
+ );
2023
+ }
2024
+ \`\`\`
2025
+
2026
+ ## Putting It All Together
2027
+
2028
+ Here's a complete router setup with web layouts:
2029
+
2030
+ \`\`\`tsx
2031
+ import { NavigatorParam } from '@idealyst/navigation';
2032
+ import { StackLayout } from './layouts/StackLayout';
2033
+ import { TabLayout } from './layouts/TabLayout';
2034
+
2035
+ const appRouter: NavigatorParam = {
2036
+ path: "/",
2037
+ type: 'navigator',
2038
+ layout: 'stack',
2039
+ layoutComponent: StackLayout, // Web header
2040
+ options: {
2041
+ headerTitle: "My App",
2042
+ headerRight: <UserMenu />,
2043
+ },
2044
+ routes: [
2045
+ {
2046
+ path: "main",
2047
+ type: 'navigator',
2048
+ layout: 'tab',
2049
+ layoutComponent: TabLayout, // Web tab bar
2050
+ routes: [
2051
+ {
2052
+ path: "home",
2053
+ type: 'screen',
2054
+ component: HomeScreen,
2055
+ options: {
2056
+ tabBarLabel: "Home",
2057
+ tabBarIcon: ({ color }) => <Icon name="home" color={color} />,
2058
+ },
2059
+ },
2060
+ {
2061
+ path: "search",
2062
+ type: 'screen',
2063
+ component: SearchScreen,
2064
+ options: {
2065
+ tabBarLabel: "Search",
2066
+ tabBarIcon: ({ color }) => <Icon name="magnify" color={color} />,
2067
+ },
2068
+ },
2069
+ ],
2070
+ },
2071
+ {
2072
+ path: "settings",
2073
+ type: 'screen',
2074
+ component: SettingsScreen,
2075
+ },
2076
+ ],
2077
+ };
2078
+ \`\`\`
2079
+
2080
+ ## Key Insights
2081
+
2082
+ 1. **layoutComponent is web-only** - Native ignores it and uses native navigators
2083
+ 2. **Same route config, different UI** - Your routes stay the same, layouts differ
2084
+ 3. **Options are your data source** - headerTitle, tabBarIcon, etc. drive your layout
2085
+ 4. **routes array is navigation menu** - Use it to build sidebars, tab bars, menus
2086
+ 5. **currentPath enables active states** - Compare to highlight current item
2087
+ 6. **Outlet renders children** - From react-router-dom, this is where screen content goes
2088
+
2089
+ ## Common Patterns
2090
+
2091
+ ### Responsive Layout
2092
+ \`\`\`tsx
2093
+ function ResponsiveLayout(props: StackLayoutProps) {
2094
+ const { width } = useWindowDimensions();
2095
+ const isMobile = width < 768;
2096
+
2097
+ // Tabs on mobile, drawer on desktop
2098
+ return isMobile
2099
+ ? <TabLayout {...props} />
2100
+ : <DrawerLayout {...props} />;
2101
+ }
2102
+ \`\`\`
2103
+
2104
+ ### Nested Headers
2105
+ \`\`\`tsx
2106
+ // Parent navigator has app header
2107
+ // Child navigator has section header
2108
+ {
2109
+ path: "/",
2110
+ layoutComponent: AppHeaderLayout,
2111
+ routes: [{
2112
+ path: "admin",
2113
+ layoutComponent: AdminSectionHeader, // Adds another header
2114
+ routes: [...]
2115
+ }]
2116
+ }
2117
+ \`\`\`
2118
+
2119
+ ### Hiding Navigation
2120
+ \`\`\`tsx
2121
+ function ConditionalLayout(props: StackLayoutProps) {
2122
+ // Hide navigation on certain routes
2123
+ if (props.currentPath.includes('/fullscreen')) {
2124
+ return <Outlet />; // No chrome
2125
+ }
2126
+ return <FullLayout {...props} />;
2127
+ }
2128
+ \`\`\`
2129
+
2130
+ ## Summary
2131
+
2132
+ | Native Gets | Web Needs |
2133
+ |-------------|-----------|
2134
+ | Stack header | \`layoutComponent\` with header UI |
2135
+ | Tab bar | \`layoutComponent\` with tab buttons |
2136
+ | Drawer | \`layoutComponent\` with sidebar |
2137
+ | Back button | \`canGoBack()\` + \`goBack()\` |
2138
+ | Active states | Compare \`currentPath\` to \`route.fullPath\` |
2139
+ | Screen options | Access via \`options\` and \`route.options\` |
2140
+
2141
+ The key to web/mobile parity is understanding that **layout components give web everything native navigators provide automatically**.
1697
2142
  `,
1698
2143
  };
1699
2144
  //# sourceMappingURL=navigation-guides.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-guides.js","sourceRoot":"","sources":["../../src/data/navigation-guides.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,gCAAgC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4FnC;IAEC,2CAA2C,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwO9C;IAEC,uCAAuC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuN1C;IAEC,sCAAsC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkTzC;IAEC,qCAAqC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8exC;IAEC,8CAA8C,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+VjD;CACA,CAAC"}
1
+ {"version":3,"file":"navigation-guides.js","sourceRoot":"","sources":["../../src/data/navigation-guides.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,gCAAgC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4FnC;IAEC,2CAA2C,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwO9C;IAEC,uCAAuC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuN1C;IAEC,sCAAsC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkTzC;IAEC,qCAAqC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8exC;IAEC,8CAA8C,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+VjD;IAEC,yCAAyC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4b5C;CACA,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/data/recipes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;IACrF,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,CAAC;IACrD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA2nE1C,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAW/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,KAAK,CAAC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC,CASD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAUrD"}
1
+ {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/data/recipes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;IACrF,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,CAAC;IACrD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAu2F1C,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAW/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,KAAK,CAAC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC,CASD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAUrD"}