UNPKG

react-garden

Version:

React + TypeScript + ThreeJS app using Material UI on NextJS, Apollo Client, GraphQL + WordPress REST APIs, for ThreeD web development.. a part of the threed.ai code family.

626 lines (620 loc) 13.3 kB
// ** Mock Adapter import mock from '~/@fake-db/mock' const searchData = [ { id: 1, url: '/dashboards/crm', icon: 'ChartDonut', title: 'CRM Dashboard', category: 'dashboards' }, { id: 2, url: '/dashboards/analytics', icon: 'ChartTimelineVariant', title: 'Analytics Dashboard', category: 'dashboards' }, { id: 3, url: '/dashboards/ecommerce', icon: 'CartOutline', title: 'eCommerce Dashboard', category: 'dashboards' }, { id: 4, url: '/apps/email', icon: 'EmailOutline', title: 'Email', category: 'appsPages' }, { id: 5, url: '/apps/chat', icon: 'MessageOutline', title: 'Chat', category: 'appsPages' }, { id: 6, url: '/apps/calendar', icon: 'CalendarBlankOutline', title: 'Calendar', category: 'appsPages' }, { id: 7, url: '/apps/invoice/list', icon: 'FormatListNumbered', title: 'Invoice List', category: 'appsPages' }, { id: 8, url: '/apps/invoice/preview', icon: 'FileDocumentOutline', title: 'Invoice Preview', category: 'appsPages' }, { id: 9, url: '/apps/invoice/edit', icon: 'PencilOutline', title: 'Invoice Edit', category: 'appsPages' }, { id: 10, url: '/apps/invoice/add', icon: 'Plus', title: 'Invoice Add', category: 'appsPages' }, { id: 11, url: '/apps/user/list', icon: 'FormatListNumbered', title: 'User List', category: 'appsPages' }, { id: 12, url: '/apps/user/view', icon: 'AccountOutline', title: 'User View', category: 'appsPages' }, { id: 13, url: '/apps/roles', icon: 'ShieldOutline', title: 'Roles', category: 'appsPages' }, { id: 14, url: '/apps/permissions', icon: 'LockOutline', title: 'Permissions', category: 'appsPages' }, { id: 15, url: '/pages/auth/login-v1', icon: 'Login', title: 'Login V1', category: 'appsPages' }, { id: 16, url: '/pages/auth/login-v2', icon: 'Login', title: 'Login V2', category: 'appsPages' }, { id: 17, url: '/pages/auth/login-with-appbar', icon: 'Login', title: 'Login With AppBar', category: 'appsPages' }, { id: 18, url: '/pages/auth/register-v1', icon: 'AccountPlusOutline', title: 'Register V1', category: 'appsPages' }, { id: 19, url: '/pages/auth/register-v2', icon: 'AccountPlusOutline', title: 'Register V2', category: 'appsPages' }, { id: 20, url: '/pages/auth/forgot-password-v1', icon: 'LockOutline', title: 'Forgot Password V1', category: 'appsPages' }, { id: 21, url: '/pages/auth/forgot-password-v2', icon: 'LockOutline', title: 'Forgot Password V2', category: 'appsPages' }, { id: 22, url: '/pages/auth/reset-password-v1', icon: 'LockReset', title: 'Reset Password V1', category: 'appsPages' }, { id: 23, url: '/pages/auth/reset-password-v2', icon: 'LockReset', title: 'Reset Password V2', category: 'appsPages' }, { id: 24, url: '/pages/account-settings', icon: 'CogOutline', title: 'Account Settings', category: 'appsPages' }, { id: 25, url: '/pages/pricing', icon: 'CurrencyUsd', title: 'Pricing', category: 'appsPages' }, { id: 26, url: '/pages/faq', icon: 'HelpCircleOutline', title: 'FAQ', category: 'appsPages' }, { id: 27, url: '/pages/knowledge-base', icon: 'BookOpenOutline', title: 'Knowledge Base', category: 'appsPages' }, { id: 28, url: '/pages/misc/coming-soon', icon: 'ClockOutline', title: 'Coming Soon', category: 'appsPages' }, { id: 29, url: '/pages/misc/under-maintenance', icon: 'Screwdriver', title: 'Under Maintenance', category: 'appsPages' }, { id: 30, url: '/pages/misc/404-not-found', icon: 'AlertCircleOutline', title: 'Page Not Found - 404', category: 'appsPages' }, { id: 31, url: '/pages/misc/401-not-authorized', icon: 'AccountMultipleRemoveOutline', title: 'Not Authorized - 401', category: 'appsPages' }, { id: 32, url: '/pages/misc/500-server-error', icon: 'AccountMultipleRemoveOutline', title: 'Server Error - 500', category: 'appsPages' }, { id: 33, url: '/pages/dialog-examples', icon: 'VectorArrangeBelow', title: 'Action Dialogs', category: 'appsPages' }, { id: 34, url: '/ui/typography', icon: 'FormatTextVariantOutline', title: 'Typography', category: 'userInterface' }, { id: 35, url: '/ui/icons', icon: 'StarOutline', title: 'Icons', category: 'userInterface' }, { id: 36, url: '/ui/cards/basic', icon: 'CardOutline', title: 'Card Basic', category: 'userInterface' }, { id: 37, url: '/ui/cards/statistics', icon: 'CardTextOutline', title: 'Card Statistics', category: 'userInterface' }, { id: 38, url: '/ui/cards/advanced', icon: 'CardBulletedSettingsOutline', title: 'Card Advanced', category: 'userInterface' }, { id: 39, url: '/ui/cards/gamification', icon: 'CardAccountDetailsOutline', title: 'Card Gamification', category: 'userInterface' }, { id: 40, url: '/ui/cards/actions', icon: 'CardPlusOutline', title: 'Card Actions', category: 'userInterface' }, { id: 41, url: '/ui/cards/widgets', icon: 'ChartBoxOutline', title: 'Card Widgets', category: 'userInterface' }, { id: 42, url: '/components/accordion', icon: 'FullscreenExit', title: 'Accordion', category: 'userInterface' }, { id: 43, url: '/components/alerts', icon: 'AlertOutline', title: 'Alerts', category: 'userInterface' }, { id: 44, url: '/components/avatars', icon: 'AccountCircleOutline', title: 'Avatars', category: 'userInterface' }, { id: 45, url: '/components/badges', icon: 'CircleOutline', title: 'Badges', category: 'userInterface' }, { id: 46, url: '/components/buttons', icon: 'GestureTapButton', title: 'Buttons', category: 'userInterface' }, { id: 47, url: '/components/button-group', icon: 'CheckboxMultipleBlankOutline', title: 'Button Group', category: 'userInterface' }, { id: 48, url: '/components/chips', icon: 'CardOutline', title: 'Chips', category: 'userInterface' }, { id: 49, url: '/components/dialogs', icon: 'TextBoxOutline', title: 'Dialogs', category: 'userInterface' }, { id: 50, url: '/components/list', icon: 'FormatListBulleted', title: 'List', category: 'userInterface' }, { id: 51, url: '/components/menu', icon: 'Menu', title: 'Menu', category: 'userInterface' }, { id: 52, url: '/components/pagination', icon: 'DotsHorizontal', title: 'Pagination', category: 'userInterface' }, { id: 53, url: '/components/ratings', icon: 'StarOutline', title: 'Ratings', category: 'userInterface' }, { id: 54, url: '/components/snackbar', icon: 'AlertCircleOutline', title: 'Snackbar', category: 'userInterface' }, { id: 55, url: '/components/swiper', icon: 'CardOutline', title: 'Swiper', category: 'userInterface' }, { id: 56, url: '/components/tabs', icon: 'Tab', title: 'Tabs', category: 'userInterface' }, { id: 57, url: '/components/toast', icon: 'RectangleOutline', title: 'Toast', category: 'userInterface' }, { id: 58, url: '/components/timeline', icon: 'TimelineOutline', title: 'Timeline', category: 'userInterface' }, { id: 59, url: '/components/tree-view', icon: 'FileTreeOutline', title: 'Tree View', category: 'userInterface' }, { id: 60, url: '/components/more', icon: 'ViewGridPlusOutline', title: 'More Components', category: 'userInterface' }, { id: 61, url: '/forms/form-elements/text-field', icon: 'Lastpass', title: 'TextField', category: 'formsTables' }, { id: 62, url: '/forms/form-elements/select', icon: 'FormatListCheckbox', title: 'Select', category: 'formsTables' }, { id: 63, url: '/forms/form-elements/checkbox', icon: 'CheckboxOutline', title: 'Checkbox', category: 'formsTables' }, { id: 64, url: '/forms/form-elements/radio', icon: 'RadioboxMarked', title: 'Radio', category: 'formsTables' }, { id: 65, url: '/forms/form-elements/textarea', icon: 'CardTextOutline', title: 'Textarea', category: 'formsTables' }, { id: 66, url: '/forms/form-elements/autocomplete', icon: 'Lastpass', title: 'Autocomplete', category: 'formsTables' }, { id: 67, url: '/forms/form-elements/pickers', icon: 'CalendarRange', title: 'Date Pickers', category: 'formsTables' }, { id: 68, url: '/forms/form-elements/switch', icon: 'ToggleSwitchOutline', title: 'Switch', category: 'formsTables' }, { id: 69, url: '/forms/form-elements/file-uploader', icon: 'TrayArrowUp', title: 'File Uploader', category: 'formsTables' }, { id: 70, url: '/forms/form-elements/editor', icon: 'SquareEditOutline', title: 'Editor', category: 'formsTables' }, { id: 71, url: '/forms/form-elements/slider', icon: 'TransitConnectionHorizontal', title: 'Slider', category: 'formsTables' }, { id: 72, url: '/forms/form-elements/input-mask', icon: 'Lastpass', title: 'Input Mask', category: 'formsTables' }, { id: 73, url: '/forms/form-layouts', icon: 'ViewGridOutline', title: 'Form Layouts', category: 'formsTables' }, { id: 74, url: '/forms/form-validation', icon: 'AlertOutline', title: 'Form Validation', category: 'formsTables' }, { id: 75, url: '/forms/form-wizard', icon: 'TransitConnectionHorizontal', title: 'Form Wizard', category: 'formsTables' }, { id: 76, url: '/tables/mui', icon: 'Table', title: 'Table', category: 'formsTables' }, { id: 77, url: '/tables/data-grid', icon: 'Table', title: 'Mui DataGrid', category: 'formsTables' }, { id: 78, url: '/charts/apex-charts', icon: 'ChartLine', title: 'Apex Charts', category: 'chartsMisc' }, { id: 79, url: '/charts/recharts', icon: 'ChartBellCurveCumulative', title: 'Recharts', category: 'chartsMisc' }, { id: 80, url: '/charts/chartjs', icon: 'ChartBellCurve', title: 'ChartJS', category: 'chartsMisc' }, { id: 81, url: '/acl', icon: 'ShieldOutline', title: 'Access Control (ACL)', category: 'chartsMisc' } ] // ** GET Search Data mock.onGet('/app-bar/search').reply(config => { const { q = '' } = config.params const queryLowered = q.toLowerCase() const exactData = { dashboards: [], appsPages: [], userInterface: [], formsTables: [], chartsMisc: [] } const includeData = { dashboards: [], appsPages: [], userInterface: [], formsTables: [], chartsMisc: [] } searchData.forEach(obj => { const isMatched = obj.title.toLowerCase().startsWith(queryLowered) if (isMatched && exactData[obj.category].length < 5) { exactData[obj.category].push(obj) } }) searchData.forEach(obj => { const isMatched = !obj.title.toLowerCase().startsWith(queryLowered) && obj.title.toLowerCase().includes(queryLowered) if (isMatched && includeData[obj.category].length < 5) { includeData[obj.category].push(obj) } }) const categoriesCheck = [] Object.keys(exactData).forEach(category => { if (exactData[category].length > 0) { categoriesCheck.push(category) } }) const resultsLength = categoriesCheck.length === 1 ? 5 : 3 return [ 200, [ ...exactData.dashboards.concat(includeData.dashboards).slice(0, resultsLength), ...exactData.appsPages.concat(includeData.appsPages).slice(0, resultsLength), ...exactData.userInterface.concat(includeData.userInterface).slice(0, resultsLength), ...exactData.formsTables.concat(includeData.formsTables).slice(0, resultsLength), ...exactData.chartsMisc.concat(includeData.chartsMisc).slice(0, resultsLength) ] ] })