-
-
Save hawkrives/26196cec12a0076ae9d31f456bc8b4d9 to your computer and use it in GitHub Desktop.
| File structure: | |
| app.js | |
| /modules/ | |
| /menus/ | |
| /streaming-media/ | |
| /sis/ | |
| index.js | |
| state.js | |
| /courses-list/ | |
| /course-search/ | |
| /time-entry/ | |
| /student-work/ | |
| /balances/ | |
| index.js | |
| state.js |
| import React from 'react' | |
| import {App} from '@frogpond/app' // 🔮 | |
| import * as Menus from './modules/menus' | |
| import * as SIS from './modules/sis' | |
| // I'm envisioning that instead of a big `switch`, we'd <somehow> | |
| // come up with a list of all loaded modules + screens and iterate | |
| // through them? | |
| // Or maybe this is when we switch to just adding the callback to | |
| // the descriptor that we push into the navigator. | |
| export default <App | |
| iconSet={Ionicons} // 🔮 not quite sure how this would work yet | |
| modules={[ // list of all modules | |
| Menus, | |
| SIS, | |
| StreamingMedia, | |
| ]} | |
| /> |
| // This "module" essentially replaces the list of views in source/views/views.js | |
| import React from 'react' | |
| import TabbedView from '@frogpond/tabbed-view' | |
| import * as BalancesTab from './balances' | |
| import * as CoursesListTab from './courses-list' | |
| import * as CourseSearchTab from './course-search' | |
| import * as TimeEntryTab from './time-entry' | |
| import * as StudentWorkTab from './student-work' | |
| import {reducer, selector} from './state' // 🔮 | |
| const tabs = [ | |
| BalancesTab, | |
| CoursesListTab, | |
| CourseSearchTab, | |
| TimeEntryTab, | |
| StudentWorkTab, | |
| ] | |
| export const view = () => <TabbedView tabs={tabs} /> | |
| export {reducer, selector} // 🔮 might not need to export selector from here? | |
| // remaining questions include "what is a selector" and "how can | |
| // we automatically scope the visible state for a module" and | |
| // "is that what a selector is for" | |
| export const screenTitle = 'SIS' | |
| export const icon = 'flower' | |
| export const tintColor = '#fafafa' | |
| export const gradientColor = ['#fafafa', '#afafaf'] |
| // This "module" replaces the tab config. | |
| import React from 'react' | |
| import {connect} from 'react-redux' | |
| import {TableView, Section, Cell} from '@frogpond/x-tableviews' | |
| import {Row} from '@frogpond/x-layout' | |
| import {reducer, selector} from './state' // 🔮 | |
| const BalancesCell = ({title, detail}) => (/*do something*/) | |
| const PlainBalances = ({flex, ole, print}) => | |
| <Section title="Balances"> | |
| <Row> | |
| <BalancesCell title="Flex Dollars" detail={flex} /> | |
| <BalancesCell title="Ole Dollars" detail={ole} /> | |
| <BalancesCell title="StoPrint" detail={print} /> | |
| </Row> | |
| </Section> | |
| const balancesConnector = connect(state => ({ // 🔮 | |
| flex: state.flex, | |
| ole: state.ole, | |
| print: state.print, | |
| }) | |
| const Balances = balancesConnector(PlainBalances) | |
| const PlainMealPlan = ({daily, weekly, description}) => | |
| <Section title="Meals"> | |
| <Row> | |
| <BalancesCell title="Remaining Today" detail={daily} /> | |
| <BalancesCell title="This Week" detail={weekly} /> | |
| </Row> | |
| </Section> | |
| const mealsConnector = connect(state => ({ // 🔮 | |
| daily: state.daily, | |
| weekly: state.weekly, | |
| }) | |
| const MealPlan = mealsConnector(PlainMealPlan) | |
| const WrapperView = ({loggedIn}) => | |
| <TableView> | |
| <Balances /> | |
| <MealPlan /> | |
| {!loggedIn ? <LoginWarning /> : null} | |
| </TableView> | |
| const wrapperConnector = connect(state => ({ // 🔮 | |
| loggedIn: state.stolaf.loggedIn, | |
| }) | |
| export const View = wrapperConnector(WrapperView) |
Immersing myself in the online gaming scene in Nigeria has been an extraordinary journey, especially thanks to this fantastic platform. I was completely blown away by how intuitive and user-friendly everything is. Trust me, this is one of those experiences that you have to try firsthand to fully grasp. It's like entering a whole new universe, one that takes your gaming experience to an entirely different level. Right in the middle of it all is 1win Nigeria, a platform that's been a game-changer in every sense of the word. It has revolutionized my gaming world, and I can vouch for the tremendous impact it's had on my overall experience.
E aí, pessoal! Eu estava navegando pela internet e vi uma recomendação sobre o https://fortunemouse.net.br/demo, então decidi testar. No começo, parecia ser só mais um jogo de azar, mas logo vi que a diversão estava garantida! Depois de algumas tentativas frustradas, finalmente consegui uma boa vitória. Se você está no Brasil e busca algo simples e agradável para jogar, vale muito a pena dar uma chance a esse jogo.
In today's world, there's an abundance of services and websites offering opportunities to earn money. If you're looking to turn your hobbies into a source of income, consider using a platform [like https://www.newukcasino.uk/bonuses-casino/](like https://www.newukcasino.uk/bonuses-casino/) . Personally, I've been using it for just 2 months, and I've already discovered how lucrative it can be with its bonuses and guidance.