goobs-frontend 0.122.0 → 0.122.2
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.
- package/README.md +23 -1
- package/package.json +4 -2
- package/src/components/Accordion/accordion.stories.tsx +1 -1
- package/src/components/Accordion/index.tsx +15 -14
- package/src/components/Alert/index.tsx +2 -1
- package/src/components/AppBar/index.tsx +4 -9
- package/src/components/Avatar/index.tsx +2 -1
- package/src/components/BigCalendar/CalendarFilters.tsx +350 -0
- package/src/components/BigCalendar/index.tsx +897 -0
- package/src/components/Breadcrumb/index.tsx +2 -5
- package/src/components/Button/index.tsx +3 -2
- package/src/components/Card/index.tsx +53 -20
- package/src/components/Checkbox/index.tsx +3 -2
- package/src/components/Chip/index.tsx +2 -1
- package/src/components/CodeCopy/index.tsx +5 -10
- package/src/components/ComplexTextEditor/MarkdownEditor/index.tsx +7 -7
- package/src/components/ComplexTextEditor/RichEditor/index.tsx +8 -9
- package/src/components/ComplexTextEditor/SimpleEditor/index.tsx +12 -10
- package/src/components/ComplexTextEditor/Toolbars/Complex/index.tsx +5 -7
- package/src/components/ComplexTextEditor/Toolbars/Editor/index.tsx +12 -7
- package/src/components/ComplexTextEditor/index.tsx +9 -8
- package/src/components/ComplexTextEditor/theme.ts +2 -1
- package/src/components/ComplexTextEditor/utils/conversion.ts +1 -1
- package/src/components/ComplexTextEditor/utils/useMarkdownEditor.tsx +3 -3
- package/src/components/ConfirmationCodeInput/index.tsx +12 -21
- package/src/components/Container/index.tsx +2 -1
- package/src/components/Content/Structure/CVV/useCVV.tsx +6 -6
- package/src/components/Content/Structure/CreditCardNumber/useCreditCardNumber.tsx +7 -7
- package/src/components/Content/Structure/DateRange/useDateRange.tsx +7 -7
- package/src/components/Content/Structure/Supernet/useSupernet.tsx +1 -1
- package/src/components/Content/Structure/USD/useUSD.tsx +8 -8
- package/src/components/Content/Structure/accordion/useAccordion.tsx +1 -1
- package/src/components/Content/Structure/accountnumber/useAccountNumber.tsx +1 -1
- package/src/components/Content/Structure/button/useButton.tsx +1 -1
- package/src/components/Content/Structure/checkbox/useCheckbox.tsx +1 -1
- package/src/components/Content/Structure/codecopy/useCodeCopy.tsx +1 -1
- package/src/components/Content/Structure/complexeditor/useComplexEditor.tsx +1 -1
- package/src/components/Content/Structure/confirmationinput/useConfirmationInput.tsx +1 -1
- package/src/components/Content/Structure/datefield/useDateField.tsx +6 -6
- package/src/components/Content/Structure/dropdown/useDropdown.tsx +1 -1
- package/src/components/Content/Structure/externalIncremementNumberField/useIncremementNumberField.tsx +1 -1
- package/src/components/Content/Structure/link/useLink.tsx +2 -2
- package/src/components/Content/Structure/macaddress/useMacAddress.tsx +1 -1
- package/src/components/Content/Structure/multiSelect/useMultiSelect.tsx +1 -1
- package/src/components/Content/Structure/numberField/useNumberField.tsx +1 -1
- package/src/components/Content/Structure/passwordField/usePasswordField.tsx +1 -1
- package/src/components/Content/Structure/phoneNumber/usePhoneNumber.tsx +1 -1
- package/src/components/Content/Structure/pricing/usePricing.tsx +1 -1
- package/src/components/Content/Structure/projectboard/useProjectBoard.tsx +1 -1
- package/src/components/Content/Structure/qrcode/useQRCode.tsx +3 -1
- package/src/components/Content/Structure/radiogroup/useRadioGroup.tsx +1 -1
- package/src/components/Content/Structure/routingnumber/useRoutingNumber.tsx +1 -1
- package/src/components/Content/Structure/searchableDropdown/useSearchableDropdown.tsx +1 -1
- package/src/components/Content/Structure/searchableHistory/useSearchableHistory.tsx +1 -1
- package/src/components/Content/Structure/searchbar/useSearchbar.tsx +1 -1
- package/src/components/Content/Structure/stepper/useStepper.tsx +1 -1
- package/src/components/Content/Structure/textfield/useTextField.tsx +1 -1
- package/src/components/Content/Structure/transferlist/useTransferList.tsx +1 -1
- package/src/components/Content/Structure/typography/useTypography.tsx +8 -2
- package/src/components/Content/index.tsx +144 -87
- package/src/components/DataGrid/FilterSection/index.tsx +25 -18
- package/src/components/DataGrid/Footer/index.tsx +3 -4
- package/src/components/DataGrid/ManageRow/index.tsx +13 -8
- package/src/components/DataGrid/MetricCard/index.tsx +31 -24
- package/src/components/DataGrid/MetricSection/index.tsx +7 -43
- package/src/components/DataGrid/Table/CreationRow/index.tsx +174 -68
- package/src/components/DataGrid/Table/Rows/index.tsx +10 -8
- package/src/components/DataGrid/Table/index.tsx +33 -28
- package/src/components/DataGrid/Toolbar/index.tsx +106 -0
- package/src/components/DataGrid/datagrid.stories.tsx +5 -5
- package/src/components/DataGrid/index.tsx +73 -49
- package/src/components/DataGrid/utils/useComputeTableResize.tsx +8 -2
- package/src/components/Divider/divider.stories.tsx +184 -0
- package/src/components/Divider/index.tsx +2 -1
- package/src/components/Drawer/index.tsx +14 -15
- package/src/components/Fade/index.tsx +2 -1
- package/src/components/Field/Date/DateField/DateField.stories.tsx +2 -5
- package/src/components/Field/Date/DateField/index.tsx +21 -14
- package/src/components/Field/Date/DateRange/index.tsx +280 -186
- package/src/components/Field/Dropdown/MultiSelect/index.tsx +69 -102
- package/src/components/Field/Dropdown/Regular/dropdown.stories.tsx +13 -10
- package/src/components/Field/Dropdown/SearchableHistory/index.tsx +79 -110
- package/src/components/Field/Dropdown/SearchableSimple/index.tsx +54 -75
- package/src/components/Field/IPAM/Address/index.tsx +58 -21
- package/src/components/Field/IPAM/CIDR/index.tsx +11 -18
- package/src/components/Field/IPAM/MACAddress/index.tsx +31 -15
- package/src/components/Field/IPAM/Subnet/index.tsx +66 -14
- package/src/components/Field/IPAM/Supernet/index.tsx +2 -2
- package/src/components/Field/IPAM/VLAN/index.tsx +43 -18
- package/src/components/Field/Number/CVV/index.tsx +4 -1
- package/src/components/Field/Number/CreditCardNumber/index.tsx +5 -2
- package/src/components/Field/Number/InternalIncrement/index.tsx +7 -0
- package/src/components/Field/Number/RoutingNumber/index.tsx +10 -5
- package/src/components/Field/Percentage/index.tsx +8 -9
- package/src/components/Field/PhoneNumber/index.tsx +6 -4
- package/src/components/Field/Search/index.tsx +7 -0
- package/src/components/Field/Slider/index.tsx +2 -1
- package/src/components/Field/Text/index.tsx +3 -1
- package/src/components/Field/Time/TimeRange/index.tsx +7 -6
- package/src/components/Field/USD/usd.stories.tsx +2 -2
- package/src/components/Form/DataGrid/index.tsx +19 -8
- package/src/components/Form/Dialog/index.tsx +27 -29
- package/src/components/Form/Popup/index.tsx +25 -40
- package/src/components/Form/ProjectBoard/index.tsx +10 -5
- package/src/components/FormControl/index.tsx +11 -11
- package/src/components/FormControlLabel/index.tsx +10 -4
- package/src/components/Icons/AccessTime.tsx +4 -3
- package/src/components/Icons/AccountBalance.tsx +4 -3
- package/src/components/Icons/AccountBalanceWallet.tsx +4 -3
- package/src/components/Icons/AccountTree.tsx +4 -3
- package/src/components/Icons/Add.tsx +4 -3
- package/src/components/Icons/AddCircle.tsx +4 -3
- package/src/components/Icons/AddCircleOutline.tsx +4 -3
- package/src/components/Icons/AddPhotoAlternate.tsx +4 -3
- package/src/components/Icons/AddShoppingCart.tsx +4 -3
- package/src/components/Icons/AddTask.tsx +4 -3
- package/src/components/Icons/AdminPanelSettings.tsx +4 -3
- package/src/components/Icons/Analytics.tsx +4 -3
- package/src/components/Icons/Animation.tsx +4 -3
- package/src/components/Icons/Apartment.tsx +4 -3
- package/src/components/Icons/Apple.tsx +4 -3
- package/src/components/Icons/ArrowBack.tsx +4 -3
- package/src/components/Icons/ArrowDropDown.tsx +4 -3
- package/src/components/Icons/ArrowDropDownCircle.tsx +4 -3
- package/src/components/Icons/ArrowDropUp.tsx +4 -3
- package/src/components/Icons/ArrowForward.tsx +4 -3
- package/src/components/Icons/Article.tsx +4 -3
- package/src/components/Icons/Assessment.tsx +4 -3
- package/src/components/Icons/Assignment.tsx +4 -3
- package/src/components/Icons/AttachFile.tsx +4 -3
- package/src/components/Icons/AttachMoney.tsx +4 -3
- package/src/components/Icons/Attachment.tsx +4 -3
- package/src/components/Icons/AutoAwesome.tsx +4 -3
- package/src/components/Icons/AutoGraph.tsx +4 -3
- package/src/components/Icons/Autorenew.tsx +4 -3
- package/src/components/Icons/Bank.tsx +4 -3
- package/src/components/Icons/BarChart.tsx +4 -3
- package/src/components/Icons/Block.tsx +4 -3
- package/src/components/Icons/BugReport.tsx +4 -3
- package/src/components/Icons/Build.tsx +4 -3
- package/src/components/Icons/Business.tsx +4 -3
- package/src/components/Icons/BusinessCenter.tsx +4 -3
- package/src/components/Icons/Calculate.tsx +4 -3
- package/src/components/Icons/Calendar.tsx +4 -3
- package/src/components/Icons/CalendarMonth.tsx +4 -3
- package/src/components/Icons/CalendarToday.tsx +4 -3
- package/src/components/Icons/Campaign.tsx +4 -3
- package/src/components/Icons/Cancel.tsx +4 -3
- package/src/components/Icons/CardGiftcard.tsx +4 -3
- package/src/components/Icons/CardMembership.tsx +4 -3
- package/src/components/Icons/Category.tsx +4 -3
- package/src/components/Icons/Chat.tsx +4 -3
- package/src/components/Icons/Check.tsx +4 -3
- package/src/components/Icons/CheckBoxIcon.tsx +4 -3
- package/src/components/Icons/CheckCircle.tsx +4 -3
- package/src/components/Icons/CheckCircleOutline.tsx +4 -3
- package/src/components/Icons/ChevronLeft.tsx +4 -3
- package/src/components/Icons/ChevronRight.tsx +4 -3
- package/src/components/Icons/CircleOutline.tsx +4 -3
- package/src/components/Icons/Clear.tsx +4 -3
- package/src/components/Icons/Close.tsx +4 -3
- package/src/components/Icons/CloudSync.tsx +4 -3
- package/src/components/Icons/CloudUpload.tsx +4 -3
- package/src/components/Icons/Code.tsx +4 -3
- package/src/components/Icons/CompareArrows.tsx +4 -3
- package/src/components/Icons/Construction.tsx +4 -3
- package/src/components/Icons/Contacts.tsx +4 -3
- package/src/components/Icons/ContentCopy.tsx +4 -3
- package/src/components/Icons/ContractIcon.tsx +4 -3
- package/src/components/Icons/Create.tsx +4 -3
- package/src/components/Icons/CreateNewFolder.tsx +4 -3
- package/src/components/Icons/CreditCard.tsx +4 -3
- package/src/components/Icons/CreditCardOff.tsx +4 -3
- package/src/components/Icons/CurrencyExchange.tsx +4 -3
- package/src/components/Icons/Dashboard.tsx +4 -3
- package/src/components/Icons/DateRange.tsx +4 -3
- package/src/components/Icons/Delete.tsx +4 -3
- package/src/components/Icons/Description.tsx +4 -3
- package/src/components/Icons/DesktopWindows.tsx +4 -3
- package/src/components/Icons/DeviceHub.tsx +4 -3
- package/src/components/Icons/Devices.tsx +4 -3
- package/src/components/Icons/Dns.tsx +4 -3
- package/src/components/Icons/Domain.tsx +4 -3
- package/src/components/Icons/Download.tsx +4 -3
- package/src/components/Icons/Drag.tsx +4 -3
- package/src/components/Icons/DragIndicator.tsx +4 -3
- package/src/components/Icons/DuplicateIcon.tsx +4 -3
- package/src/components/Icons/Edit.tsx +4 -3
- package/src/components/Icons/Email.tsx +4 -3
- package/src/components/Icons/EmojiEvents.tsx +4 -3
- package/src/components/Icons/Engineering.tsx +4 -3
- package/src/components/Icons/Error.tsx +4 -3
- package/src/components/Icons/ErrorOutline.tsx +4 -3
- package/src/components/Icons/Event.tsx +4 -3
- package/src/components/Icons/EventAvailable.tsx +4 -3
- package/src/components/Icons/EventBusy.tsx +4 -3
- package/src/components/Icons/ExpandLess.tsx +4 -3
- package/src/components/Icons/ExpandMore.tsx +4 -3
- package/src/components/Icons/Extension.tsx +4 -3
- package/src/components/Icons/Favorite.tsx +4 -3
- package/src/components/Icons/FavoriteBorder.tsx +4 -3
- package/src/components/Icons/FavoriteBorderIcon.tsx +4 -3
- package/src/components/Icons/FavoriteIcon.tsx +4 -3
- package/src/components/Icons/Feedback.tsx +4 -3
- package/src/components/Icons/FileCopy.tsx +4 -3
- package/src/components/Icons/Filing.tsx +4 -3
- package/src/components/Icons/FilterList.tsx +4 -3
- package/src/components/Icons/Fingerprint.tsx +4 -3
- package/src/components/Icons/FirstPage.tsx +4 -3
- package/src/components/Icons/FormatAlignCenter.tsx +4 -3
- package/src/components/Icons/FormatAlignLeft.tsx +4 -3
- package/src/components/Icons/FormatAlignRight.tsx +4 -3
- package/src/components/Icons/FormatBold.tsx +4 -3
- package/src/components/Icons/FormatItalic.tsx +4 -3
- package/src/components/Icons/FormatListBulleted.tsx +4 -3
- package/src/components/Icons/FormatListNumbered.tsx +4 -3
- package/src/components/Icons/FormatUnderlined.tsx +4 -3
- package/src/components/Icons/Gavel.tsx +4 -3
- package/src/components/Icons/Gesture.tsx +4 -3
- package/src/components/Icons/Google.tsx +4 -3
- package/src/components/Icons/GridView.tsx +4 -3
- package/src/components/Icons/GridViewIcon.tsx +4 -3
- package/src/components/Icons/Group.tsx +4 -3
- package/src/components/Icons/GroupWork.tsx +4 -3
- package/src/components/Icons/Groups.tsx +4 -3
- package/src/components/Icons/Handshake.tsx +4 -3
- package/src/components/Icons/Help.tsx +4 -3
- package/src/components/Icons/History.tsx +4 -3
- package/src/components/Icons/Home.tsx +4 -3
- package/src/components/Icons/HomeWork.tsx +4 -3
- package/src/components/Icons/HourglassEmpty.tsx +4 -3
- package/src/components/Icons/Hub.tsx +4 -3
- package/src/components/Icons/ImageIcon.tsx +4 -3
- package/src/components/Icons/IndeterminateCheckBox.tsx +6 -4
- package/src/components/Icons/Info.tsx +4 -3
- package/src/components/Icons/InfoOutline.tsx +4 -3
- package/src/components/Icons/Insights.tsx +4 -3
- package/src/components/Icons/IntegrationInstructions.tsx +4 -3
- package/src/components/Icons/Inventory.tsx +4 -3
- package/src/components/Icons/KeyboardArrowDown.tsx +4 -3
- package/src/components/Icons/KeyboardArrowLeft.tsx +4 -3
- package/src/components/Icons/KeyboardArrowRight.tsx +4 -3
- package/src/components/Icons/KeyboardReturn.tsx +4 -3
- package/src/components/Icons/Lan.tsx +4 -3
- package/src/components/Icons/LastPage.tsx +4 -3
- package/src/components/Icons/Launch.tsx +4 -3
- package/src/components/Icons/Layers.tsx +4 -3
- package/src/components/Icons/Link.tsx +4 -3
- package/src/components/Icons/ListAlt.tsx +4 -3
- package/src/components/Icons/LocalGasStation.tsx +4 -3
- package/src/components/Icons/LocalOffer.tsx +4 -3
- package/src/components/Icons/LocalShipping.tsx +4 -3
- package/src/components/Icons/LocationCity.tsx +4 -3
- package/src/components/Icons/LocationIcon.tsx +4 -3
- package/src/components/Icons/LocationOn.tsx +4 -3
- package/src/components/Icons/LocationSearching.tsx +4 -3
- package/src/components/Icons/Lock.tsx +4 -3
- package/src/components/Icons/Login.tsx +4 -3
- package/src/components/Icons/LogoutRounded.tsx +4 -3
- package/src/components/Icons/LooksFour.tsx +4 -3
- package/src/components/Icons/LooksOne.tsx +4 -3
- package/src/components/Icons/LooksThree.tsx +4 -3
- package/src/components/Icons/LooksTwo.tsx +4 -3
- package/src/components/Icons/Loop.tsx +4 -3
- package/src/components/Icons/LowPriority.tsx +4 -3
- package/src/components/Icons/Loyalty.tsx +4 -3
- package/src/components/Icons/Map.tsx +4 -3
- package/src/components/Icons/Menu.tsx +7 -3
- package/src/components/Icons/MenuBook.tsx +4 -3
- package/src/components/Icons/MonetizationOn.tsx +4 -3
- package/src/components/Icons/Money.tsx +4 -3
- package/src/components/Icons/MoreHoriz.tsx +4 -3
- package/src/components/Icons/MoreVert.tsx +4 -3
- package/src/components/Icons/Mouse.tsx +4 -3
- package/src/components/Icons/Navigation.tsx +7 -3
- package/src/components/Icons/NetworkCheck.tsx +4 -3
- package/src/components/Icons/NotificationActive.tsx +4 -3
- package/src/components/Icons/NotificationImportant.tsx +4 -3
- package/src/components/Icons/Notifications.tsx +4 -3
- package/src/components/Icons/Outlook.tsx +4 -3
- package/src/components/Icons/Pause.tsx +4 -3
- package/src/components/Icons/Payment.tsx +4 -3
- package/src/components/Icons/PdfIcon.tsx +4 -3
- package/src/components/Icons/PendingActions.tsx +4 -3
- package/src/components/Icons/People.tsx +4 -3
- package/src/components/Icons/Person.tsx +4 -3
- package/src/components/Icons/PersonAdd.tsx +4 -3
- package/src/components/Icons/PersonOutline.tsx +4 -3
- package/src/components/Icons/Phone.tsx +4 -3
- package/src/components/Icons/PlayArrow.tsx +4 -3
- package/src/components/Icons/PlaylistAddCheck.tsx +4 -3
- package/src/components/Icons/PointOfSale.tsx +4 -3
- package/src/components/Icons/Policy.tsx +4 -3
- package/src/components/Icons/PostAdd.tsx +4 -3
- package/src/components/Icons/PrecisionManufacturing.tsx +4 -3
- package/src/components/Icons/Preview.tsx +4 -3
- package/src/components/Icons/Print.tsx +4 -3
- package/src/components/Icons/PriorityHigh.tsx +4 -3
- package/src/components/Icons/Psychology.tsx +4 -3
- package/src/components/Icons/Public.tsx +4 -3
- package/src/components/Icons/QrCode.tsx +4 -3
- package/src/components/Icons/QrCodeScanner.tsx +4 -3
- package/src/components/Icons/RadioButtonChecked.tsx +4 -3
- package/src/components/Icons/RateReview.tsx +4 -3
- package/src/components/Icons/Receipt.tsx +4 -3
- package/src/components/Icons/Redo.tsx +4 -3
- package/src/components/Icons/Refresh.tsx +4 -3
- package/src/components/Icons/Remove.tsx +4 -3
- package/src/components/Icons/Repeat.tsx +4 -3
- package/src/components/Icons/ReportProblem.tsx +4 -3
- package/src/components/Icons/RequestQuote.tsx +4 -3
- package/src/components/Icons/Restore.tsx +4 -3
- package/src/components/Icons/Router.tsx +4 -3
- package/src/components/Icons/Save.tsx +4 -3
- package/src/components/Icons/Schedule.tsx +4 -3
- package/src/components/Icons/School.tsx +4 -3
- package/src/components/Icons/ScreenRotation.tsx +4 -3
- package/src/components/Icons/Search.tsx +4 -3
- package/src/components/Icons/Security.tsx +4 -3
- package/src/components/Icons/Send.tsx +4 -3
- package/src/components/Icons/Settings.tsx +5 -3
- package/src/components/Icons/Shield.tsx +4 -3
- package/src/components/Icons/ShoppingBasket.tsx +4 -3
- package/src/components/Icons/ShowChart.tsx +4 -3
- package/src/components/Icons/ShowHideEye.tsx +4 -3
- package/src/components/Icons/SkipNext.tsx +4 -3
- package/src/components/Icons/SmartButtonIcon.tsx +4 -3
- package/src/components/Icons/Smartphone.tsx +4 -3
- package/src/components/Icons/Sms.tsx +4 -3
- package/src/components/Icons/Sort.tsx +4 -3
- package/src/components/Icons/Spa.tsx +4 -3
- package/src/components/Icons/Speed.tsx +4 -3
- package/src/components/Icons/Star.tsx +4 -3
- package/src/components/Icons/StarBorder.tsx +4 -3
- package/src/components/Icons/StarIcon.tsx +4 -3
- package/src/components/Icons/Stop.tsx +4 -3
- package/src/components/Icons/Storage.tsx +4 -3
- package/src/components/Icons/Store.tsx +4 -3
- package/src/components/Icons/StoreMallDirectory.tsx +4 -3
- package/src/components/Icons/StrikethroughS.tsx +4 -3
- package/src/components/Icons/SupervisedUserCircle.tsx +4 -3
- package/src/components/Icons/Support.tsx +4 -3
- package/src/components/Icons/Sync.tsx +4 -3
- package/src/components/Icons/TableIcon.tsx +4 -3
- package/src/components/Icons/Tablet.tsx +4 -3
- package/src/components/Icons/TemplateIcon.tsx +4 -3
- package/src/components/Icons/TextFieldsIcon.tsx +4 -3
- package/src/components/Icons/ThumbUp.tsx +4 -3
- package/src/components/Icons/Timeline.tsx +4 -3
- package/src/components/Icons/Timer.tsx +4 -3
- package/src/components/Icons/Transfer.tsx +4 -3
- package/src/components/Icons/TrendingDown.tsx +4 -3
- package/src/components/Icons/TrendingUp.tsx +4 -3
- package/src/components/Icons/Undo.tsx +4 -3
- package/src/components/Icons/VerifiedUser.tsx +4 -3
- package/src/components/Icons/VideoLibraryIcon.tsx +4 -3
- package/src/components/Icons/Videocam.tsx +4 -3
- package/src/components/Icons/ViewCompact.tsx +4 -3
- package/src/components/Icons/ViewCompactIcon.tsx +4 -3
- package/src/components/Icons/ViewHeadlineIcon.tsx +4 -3
- package/src/components/Icons/ViewIcon.tsx +4 -3
- package/src/components/Icons/ViewList.tsx +4 -3
- package/src/components/Icons/ViewModule.tsx +4 -3
- package/src/components/Icons/ViewSidebar.tsx +4 -3
- package/src/components/Icons/Visibility.tsx +4 -3
- package/src/components/Icons/VisibilityOff.tsx +4 -3
- package/src/components/Icons/VpnKey.tsx +4 -3
- package/src/components/Icons/VpnLock.tsx +4 -3
- package/src/components/Icons/Warning.tsx +4 -3
- package/src/components/Icons/WarningAmber.tsx +4 -3
- package/src/components/Icons/WaterDrop.tsx +4 -3
- package/src/components/Icons/Web.tsx +4 -3
- package/src/components/Icons/Widgets.tsx +4 -3
- package/src/components/Icons/Wifi.tsx +4 -3
- package/src/components/Icons/WifiOff.tsx +4 -3
- package/src/components/Icons/Work.tsx +4 -3
- package/src/components/Icons/WorkspacePremium.tsx +4 -3
- package/src/components/InputLabel/index.tsx +10 -4
- package/src/components/List/index.tsx +2 -1
- package/src/components/MenuItem/index.tsx +10 -4
- package/src/components/Pagination/index.tsx +8 -9
- package/src/components/Paper/index.tsx +32 -9
- package/src/components/ProgressBar/index.tsx +2 -3
- package/src/components/ProgressBar/progressbar.stories.tsx +5 -1
- package/src/components/ProjectBoard/board/index.tsx +23 -13
- package/src/components/ProjectBoard/forms/AddTask/administrator/companyDropdown/index.tsx +25 -18
- package/src/components/ProjectBoard/forms/AddTask/administrator/companyProvided/index.tsx +19 -14
- package/src/components/ProjectBoard/forms/AddTask/company/customerDropdown/index.tsx +9 -9
- package/src/components/ProjectBoard/forms/AddTask/company/customerProvided/index.tsx +89 -68
- package/src/components/ProjectBoard/forms/AddTask/customer/index.tsx +16 -10
- package/src/components/ProjectBoard/forms/AddTask/noUser/index.tsx +2 -2
- package/src/components/ProjectBoard/forms/ShowTask/client.tsx +11 -8
- package/src/components/ProjectBoard/index.tsx +11 -8
- package/src/components/ProjectBoard/types/index.tsx +1 -1
- package/src/components/ProjectBoard/utils/useComputeBoard.tsx +7 -2
- package/src/components/ProjectBoard/utils/useDragandDrop/columns.tsx +8 -3
- package/src/components/ProjectBoard/utils/useDragandDrop/tasks.tsx +6 -3
- package/src/components/QRCode/index.tsx +3 -2
- package/src/components/Select/index.tsx +44 -11
- package/src/components/Slide/index.tsx +2 -1
- package/src/components/Slide/slide.stories.tsx +7 -5
- package/src/components/Snackbar/index.tsx +2 -2
- package/src/components/Stepper/index.tsx +18 -6
- package/src/components/Switch/index.tsx +12 -6
- package/src/components/Switch/switch.stories.tsx +30 -17
- package/src/components/Tabs/index.tsx +2 -1
- package/src/components/ToggleButton/index.tsx +39 -5
- package/src/components/Toolbar/index.tsx +31 -12
- package/src/components/Toolbar/left/index.tsx +6 -5
- package/src/components/Toolbar/leftCenter/index.tsx +29 -11
- package/src/components/Toolbar/right/index.tsx +1 -1
- package/src/components/Toolbar/rightCenter/index.tsx +8 -8
- package/src/components/Toolbar/toolbar.stories.tsx +13 -11
- package/src/components/Tooltip/index.tsx +10 -3
- package/src/components/TransferList/transferlist.stories.tsx +48 -26
- package/src/components/TreeView/index.tsx +16 -13
- package/src/components/Zoom/index.tsx +2 -1
- package/src/index.ts +28 -0
- package/src/theme/accordion.ts +129 -61
- package/src/theme/alert.ts +77 -25
- package/src/theme/appbar.ts +65 -28
- package/src/theme/avatar.ts +30 -21
- package/src/theme/bigcalendar.ts +692 -0
- package/src/theme/button.ts +48 -11
- package/src/theme/checkbox.ts +86 -20
- package/src/theme/chip.ts +45 -13
- package/src/theme/complextexteditor.ts +2 -1
- package/src/theme/confirmationcodeinput.ts +45 -18
- package/src/theme/container.ts +22 -9
- package/src/theme/datagrid.ts +29 -8
- package/src/theme/dialog.ts +12 -3
- package/src/theme/drawer.ts +44 -26
- package/src/theme/formField.ts +34 -1
- package/src/theme/nav.ts +5 -2
- package/src/theme/pagination.ts +0 -2
- package/src/theme/popover.ts +25 -14
- package/src/theme/pricingtable.ts +91 -28
- package/src/theme/progressbar.ts +40 -16
- package/src/theme/projectboard.ts +41 -19
- package/src/theme/toolbar.ts +27 -8
- package/src/theme/treeview.ts +1 -1
- package/src/stories/Button.stories.ts +0 -53
- package/src/stories/Button.tsx +0 -45
- package/src/stories/Header.stories.ts +0 -33
- package/src/stories/Header.tsx +0 -71
- package/src/stories/Page.stories.ts +0 -32
- package/src/stories/Page.tsx +0 -91
- package/src/stories/assets/accessibility.png +0 -0
- package/src/stories/assets/accessibility.svg +0 -1
- package/src/stories/assets/addon-library.png +0 -0
- package/src/stories/assets/assets.png +0 -0
- package/src/stories/assets/avif-test-image.avif +0 -0
- package/src/stories/assets/context.png +0 -0
- package/src/stories/assets/discord.svg +0 -1
- package/src/stories/assets/docs.png +0 -0
- package/src/stories/assets/figma-plugin.png +0 -0
- package/src/stories/assets/github.svg +0 -1
- package/src/stories/assets/share.png +0 -0
- package/src/stories/assets/styling.png +0 -0
- package/src/stories/assets/testing.png +0 -0
- package/src/stories/assets/theming.png +0 -0
- package/src/stories/assets/tutorials.svg +0 -1
- package/src/stories/assets/youtube.svg +0 -1
- package/src/stories/button.css +0 -30
- package/src/stories/header.css +0 -32
- package/src/stories/page.css +0 -68
package/README.md
CHANGED
|
@@ -53,6 +53,7 @@ goobs-frontend provides 100+ fully-featured React components organized into logi
|
|
|
53
53
|
## Core Component Categories
|
|
54
54
|
|
|
55
55
|
### 🎨 Layout & Structure
|
|
56
|
+
|
|
56
57
|
- **Grid** - Responsive grid system with flexible row/column configurations
|
|
57
58
|
- **Container** - Responsive content containers with consistent spacing
|
|
58
59
|
- **Stack** - One-dimensional layout component for arranging items
|
|
@@ -60,19 +61,23 @@ goobs-frontend provides 100+ fully-featured React components organized into logi
|
|
|
60
61
|
- **Divider** - Visual separators for content organization
|
|
61
62
|
|
|
62
63
|
### 📝 Form Components
|
|
64
|
+
|
|
63
65
|
**Text Inputs**
|
|
66
|
+
|
|
64
67
|
- **TextField** - Versatile text input with advanced styling and label positioning
|
|
65
68
|
- **PasswordField** - Secure password input with show/hide toggle functionality
|
|
66
69
|
- **SearchField** - Search input with integrated search icons and styling
|
|
67
70
|
- **ComplexTextEditor** - Multi-mode editor (simple, markdown, rich text) with integrated toolbar
|
|
68
71
|
|
|
69
72
|
**Specialized Inputs**
|
|
73
|
+
|
|
70
74
|
- **PhoneNumberField** - Auto-formatting phone number input (+1-xxx-xxx-xxxx)
|
|
71
75
|
- **USDField** - Currency input with dollar formatting and validation
|
|
72
76
|
- **PercentageField** - Percentage input with % symbol and range validation
|
|
73
77
|
- **ConfirmationCodeInput** - OTP-style multi-digit input with auto-focus progression
|
|
74
78
|
|
|
75
79
|
**Number Inputs**
|
|
80
|
+
|
|
76
81
|
- **IncrementNumberField** - Number input with built-in increment/decrement controls
|
|
77
82
|
- **AccountNumberField** - Bank account number input with validation
|
|
78
83
|
- **RoutingNumberField** - Bank routing number input with format validation
|
|
@@ -80,11 +85,13 @@ goobs-frontend provides 100+ fully-featured React components organized into logi
|
|
|
80
85
|
- **CVVField** - Secure CVV input for payment forms
|
|
81
86
|
|
|
82
87
|
**Date & Time**
|
|
88
|
+
|
|
83
89
|
- **DateField** - Date picker with calendar popup and keyboard navigation
|
|
84
90
|
- **DateRangeField** - Start/end date selection with range validation
|
|
85
91
|
- **TimeRangeField** - Time range selector with 12/24 hour support
|
|
86
92
|
|
|
87
93
|
**Selection Components**
|
|
94
|
+
|
|
88
95
|
- **Dropdown** - Customizable select component with advanced styling
|
|
89
96
|
- **MultiSelectChip** - Multi-selection dropdown with chip display
|
|
90
97
|
- **SearchableDropdown** - Real-time filtering dropdown with autocomplete
|
|
@@ -93,6 +100,7 @@ goobs-frontend provides 100+ fully-featured React components organized into logi
|
|
|
93
100
|
- **Switch** - Toggle switch with smooth animations
|
|
94
101
|
|
|
95
102
|
**IPAM & Network Fields**
|
|
103
|
+
|
|
96
104
|
- **IPAddressField** - IP address input with validation
|
|
97
105
|
- **CIDRField** - CIDR notation input with subnet validation
|
|
98
106
|
- **SubnetField** - Subnet configuration input
|
|
@@ -100,6 +108,7 @@ goobs-frontend provides 100+ fully-featured React components organized into logi
|
|
|
100
108
|
- **MACAddressField** - MAC address input with auto-formatting
|
|
101
109
|
|
|
102
110
|
### 🗂️ Data Display
|
|
111
|
+
|
|
103
112
|
- **DataGrid** - Advanced data table with sorting, filtering, pagination, and row management
|
|
104
113
|
- **Table** - Lightweight table component for simple data display
|
|
105
114
|
- **Card** - Versatile card container with multiple variants (product, pricing, task, inventory)
|
|
@@ -108,6 +117,7 @@ goobs-frontend provides 100+ fully-featured React components organized into logi
|
|
|
108
117
|
- **ProjectBoard** - Kanban-style board with drag-and-drop task management
|
|
109
118
|
|
|
110
119
|
### 🧭 Navigation
|
|
120
|
+
|
|
111
121
|
- **Tabs** - Horizontal tab navigation with route integration
|
|
112
122
|
- **Breadcrumb** - Breadcrumb navigation with custom separators
|
|
113
123
|
- **Stepper** - Step-by-step process indicator with customizable states
|
|
@@ -115,11 +125,13 @@ goobs-frontend provides 100+ fully-featured React components organized into logi
|
|
|
115
125
|
- **Pagination** - Page navigation with customizable page size options
|
|
116
126
|
|
|
117
127
|
### 🎯 Action Components
|
|
128
|
+
|
|
118
129
|
- **Button** - Highly customizable button with icon support and flexible positioning
|
|
119
130
|
- **IconButton** - Icon-only buttons with hover states and accessibility
|
|
120
131
|
- **ToggleButton** - Toggle button with active/inactive states
|
|
121
132
|
|
|
122
133
|
### 💬 Feedback & Overlays
|
|
134
|
+
|
|
123
135
|
- **Alert** - Contextual alerts with multiple severity levels
|
|
124
136
|
- **Dialog** - Modal dialogs for complex interactions
|
|
125
137
|
- **Snackbar** - Toast notifications with action buttons
|
|
@@ -127,6 +139,7 @@ goobs-frontend provides 100+ fully-featured React components organized into logi
|
|
|
127
139
|
- **Popover** - Positioned popup containers
|
|
128
140
|
|
|
129
141
|
### 🔧 Utility Components
|
|
142
|
+
|
|
130
143
|
- **Accordion** - Collapsible content sections with smooth animations
|
|
131
144
|
- **Badge** - Notification badges with custom positioning
|
|
132
145
|
- **Chip** - Compact information chips with delete functionality
|
|
@@ -137,19 +150,24 @@ goobs-frontend provides 100+ fully-featured React components organized into logi
|
|
|
137
150
|
- **TransferList** - Dual-list component for moving items between collections
|
|
138
151
|
|
|
139
152
|
### 🎨 Design & Animation
|
|
153
|
+
|
|
140
154
|
- **Typography** - Text component with multiple font families (Arapey, Inter, Merriweather)
|
|
141
155
|
- **Fade**, **Slide**, **Zoom** - Smooth transition components for enhanced UX
|
|
142
156
|
|
|
143
157
|
### 🏗️ Advanced Components
|
|
158
|
+
|
|
144
159
|
- **Toolbar** - Flexible toolbar with multiple sections and responsive behavior
|
|
145
160
|
- **Content** - Dynamic content renderer supporting multiple content types
|
|
146
161
|
- **FormDataGrid** - Data grid with integrated form validation
|
|
147
162
|
|
|
148
163
|
### 📱 Mobile-First Design
|
|
164
|
+
|
|
149
165
|
All components are built with mobile-first responsive design principles, ensuring optimal performance across desktop, tablet, and mobile devices.
|
|
150
166
|
|
|
151
167
|
### 🎨 Comprehensive Icon Library
|
|
168
|
+
|
|
152
169
|
200+ carefully crafted icons covering:
|
|
170
|
+
|
|
153
171
|
- Navigation (arrows, chevrons, menu controls)
|
|
154
172
|
- Actions (add, delete, edit, save, settings)
|
|
155
173
|
- Communication (email, phone, notifications)
|
|
@@ -160,26 +178,30 @@ All components are built with mobile-first responsive design principles, ensurin
|
|
|
160
178
|
## Key Features
|
|
161
179
|
|
|
162
180
|
### 🔧 Customization
|
|
181
|
+
|
|
163
182
|
- **Advanced Theming** - Override colors, fonts, spacing, and component behavior
|
|
164
183
|
- **Flexible Styling** - Custom CSS-in-JS with theme-aware styling system
|
|
165
184
|
- **Component Variants** - Multiple pre-built variants for common use cases
|
|
166
185
|
|
|
167
186
|
### 📋 Developer Experience
|
|
187
|
+
|
|
168
188
|
- **Full TypeScript Support** - Complete type definitions with IntelliSense
|
|
169
189
|
- **Comprehensive Documentation** - Interactive Storybook with live examples
|
|
170
190
|
- **Consistent API** - Predictable prop patterns across all components
|
|
171
191
|
|
|
172
192
|
### ♿ Accessibility & Performance
|
|
193
|
+
|
|
173
194
|
- **ARIA Compliance** - Full accessibility support with proper ARIA labels
|
|
174
195
|
- **Keyboard Navigation** - Complete keyboard support for all interactive components
|
|
175
196
|
- **Performance Optimized** - Lazy loading, code splitting, and optimized bundle sizes
|
|
176
197
|
|
|
177
198
|
### 🚀 Modern React Patterns
|
|
199
|
+
|
|
178
200
|
- **Hooks-Based** - Built with modern React hooks and functional components
|
|
179
201
|
- **State Management** - Integrated Jotai support for complex state scenarios
|
|
180
202
|
- **Form Integration** - Seamless integration with popular form libraries
|
|
181
203
|
|
|
182
|
-
|
|
204
|
+
_For complete component documentation, interactive examples, and implementation guides, visit the [Storybook documentation](https://storybook.technologiesunlimited.net/)._
|
|
183
205
|
|
|
184
206
|
### Feedback and Contributions
|
|
185
207
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "goobs-frontend",
|
|
3
|
-
"version": "0.122.
|
|
3
|
+
"version": "0.122.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A comprehensive React-based libary for building modern web applications",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@storybook/addon-links": "^9",
|
|
32
32
|
"@types/lodash": "^4",
|
|
33
|
+
"date-fns": "^4.1.0",
|
|
33
34
|
"formik": "^2",
|
|
34
35
|
"highlight.js": "^11",
|
|
35
36
|
"jotai": "^2",
|
|
@@ -70,11 +71,12 @@
|
|
|
70
71
|
"eslint-config-prettier": "^10.1.5",
|
|
71
72
|
"eslint-plugin-prettier": "^5.5.1",
|
|
72
73
|
"eslint-plugin-storybook": "^9.0.15",
|
|
74
|
+
"eslint-plugin-tsc": "^2.0.0",
|
|
73
75
|
"eslint-plugin-unused-imports": "^4.1.4",
|
|
74
76
|
"prettier": "^3.6.2",
|
|
75
77
|
"react": "^19.1.0",
|
|
76
78
|
"react-dom": "^19.1.0",
|
|
77
|
-
"typescript": "^5
|
|
79
|
+
"typescript": "^5"
|
|
78
80
|
},
|
|
79
81
|
"files": [
|
|
80
82
|
"src"
|
|
@@ -220,7 +220,7 @@ export const Nested: Story = {
|
|
|
220
220
|
// --------------------------------------------------------------------------
|
|
221
221
|
|
|
222
222
|
const ControlledAccordionExample = () => {
|
|
223
|
-
const [expanded, setExpanded] = React.useState<boolean
|
|
223
|
+
const [expanded, setExpanded] = React.useState<boolean>(false)
|
|
224
224
|
return (
|
|
225
225
|
<div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>
|
|
226
226
|
<button
|
|
@@ -4,17 +4,12 @@
|
|
|
4
4
|
* Also supports menu items for navigation.
|
|
5
5
|
*/
|
|
6
6
|
'use client'
|
|
7
|
-
import React, {
|
|
8
|
-
|
|
9
|
-
useEffect,
|
|
10
|
-
FC,
|
|
11
|
-
ReactNode,
|
|
12
|
-
useMemo,
|
|
13
|
-
useCallback,
|
|
14
|
-
} from 'react'
|
|
7
|
+
import React, { useState, useEffect, useMemo, useCallback } from 'react'
|
|
8
|
+
import type { FC, ReactNode } from 'react'
|
|
15
9
|
import Link from 'next/link'
|
|
16
10
|
import ExpandMoreIcon from '../Icons/ExpandMore'
|
|
17
|
-
import {
|
|
11
|
+
import { getAccordionStyles, SACRED_GLYPHS } from '../../theme'
|
|
12
|
+
import type { AccordionStyles } from '../../theme'
|
|
18
13
|
|
|
19
14
|
// --------------------------------------------------------------------------
|
|
20
15
|
// PROPS INTERFACE
|
|
@@ -49,15 +44,21 @@ export interface AccordionProps {
|
|
|
49
44
|
// HELPER HOOK for state management
|
|
50
45
|
// --------------------------------------------------------------------------
|
|
51
46
|
|
|
47
|
+
type UseAccordionStateArgs = {
|
|
48
|
+
expanded?: boolean | undefined
|
|
49
|
+
defaultExpanded?: boolean | undefined
|
|
50
|
+
onChange?:
|
|
51
|
+
| ((event: React.SyntheticEvent, expanded: boolean) => void)
|
|
52
|
+
| undefined
|
|
53
|
+
styles?: AccordionStyles | undefined
|
|
54
|
+
}
|
|
55
|
+
|
|
52
56
|
const useAccordionState = ({
|
|
53
57
|
expanded: controlledExpanded,
|
|
54
58
|
defaultExpanded = false,
|
|
55
59
|
onChange,
|
|
56
60
|
styles,
|
|
57
|
-
}:
|
|
58
|
-
AccordionProps,
|
|
59
|
-
'expanded' | 'defaultExpanded' | 'onChange' | 'styles'
|
|
60
|
-
>) => {
|
|
61
|
+
}: UseAccordionStateArgs) => {
|
|
61
62
|
const { current: isControlled } = React.useRef(
|
|
62
63
|
controlledExpanded !== undefined
|
|
63
64
|
)
|
|
@@ -334,7 +335,7 @@ const Accordion: FC<AccordionProps> = props => {
|
|
|
334
335
|
position: 'absolute',
|
|
335
336
|
left: '8px',
|
|
336
337
|
top: '50%',
|
|
337
|
-
transform:
|
|
338
|
+
transform: `translateY(-50%) ${computedStyles.icon.transform || ''}`,
|
|
338
339
|
zIndex: 1,
|
|
339
340
|
}}
|
|
340
341
|
/>
|
|
@@ -9,7 +9,8 @@ import InfoIcon from '../Icons/Info'
|
|
|
9
9
|
import CheckCircleIcon from '../Icons/CheckCircle'
|
|
10
10
|
import ErrorIcon from '../Icons/Error'
|
|
11
11
|
import WarningIcon from '../Icons/Warning'
|
|
12
|
-
import {
|
|
12
|
+
import { getAlertStyles, SACRED_GLYPHS } from '../../theme'
|
|
13
|
+
import type { AlertStyles } from '../../theme'
|
|
13
14
|
|
|
14
15
|
// --------------------------------------------------------------------------
|
|
15
16
|
// PROPS INTERFACE
|
|
@@ -4,15 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
'use client'
|
|
6
6
|
|
|
7
|
-
import React, {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
ReactNode,
|
|
12
|
-
useMemo,
|
|
13
|
-
useCallback,
|
|
14
|
-
} from 'react'
|
|
15
|
-
import { AppBarStyles, getAppBarStyles, SACRED_GLYPHS } from '../../theme'
|
|
7
|
+
import React, { useState, useEffect, useMemo, useCallback } from 'react'
|
|
8
|
+
import type { FC, ReactNode } from 'react'
|
|
9
|
+
import { getAppBarStyles, SACRED_GLYPHS } from '../../theme'
|
|
10
|
+
import type { AppBarStyles } from '../../theme'
|
|
16
11
|
|
|
17
12
|
// --------------------------------------------------------------------------
|
|
18
13
|
// PROPS INTERFACE
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
'use client'
|
|
6
6
|
|
|
7
7
|
import React, { useMemo, forwardRef } from 'react'
|
|
8
|
-
import {
|
|
8
|
+
import { getAvatarStyles } from '../../theme'
|
|
9
|
+
import type { AvatarStyles } from '../../theme'
|
|
9
10
|
|
|
10
11
|
// --------------------------------------------------------------------------
|
|
11
12
|
// PROPS INTERFACE
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import React, { useState, useCallback, useMemo } from 'react'
|
|
4
|
+
import Accordion from '../Accordion'
|
|
5
|
+
import SearchableSimple, {
|
|
6
|
+
type DropdownOption,
|
|
7
|
+
} from '../Field/Dropdown/SearchableSimple'
|
|
8
|
+
import Chip from '../Chip'
|
|
9
|
+
import Typography from '../Typography'
|
|
10
|
+
import DateRange from '../Field/Date/DateRange'
|
|
11
|
+
import * as Icons from '../Icons'
|
|
12
|
+
import { FormFieldStyles } from '../../theme'
|
|
13
|
+
|
|
14
|
+
const { FilterListIcon, ClearIcon } = Icons
|
|
15
|
+
|
|
16
|
+
export interface CalendarFilterOptions {
|
|
17
|
+
searchText?: string
|
|
18
|
+
eventTypes?: string[]
|
|
19
|
+
dateRange?: {
|
|
20
|
+
start?: Date | null
|
|
21
|
+
end?: Date | null
|
|
22
|
+
}
|
|
23
|
+
resources?: string[]
|
|
24
|
+
tags?: string[]
|
|
25
|
+
status?: string[]
|
|
26
|
+
customFilters?: Record<string, any>
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
interface CalendarFiltersProps {
|
|
30
|
+
filters: CalendarFilterOptions
|
|
31
|
+
onFiltersChange: (filters: CalendarFilterOptions) => void
|
|
32
|
+
availableResources?: { id: string; title: string }[]
|
|
33
|
+
cities?: string[]
|
|
34
|
+
propertyTypes?: string[]
|
|
35
|
+
bedroomOptions?: Array<string | number>
|
|
36
|
+
priceRanges?: string[]
|
|
37
|
+
// Remove external custom components; inline standardized dropdowns instead
|
|
38
|
+
expanded?: boolean
|
|
39
|
+
styles?: FormFieldStyles
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export const CalendarFilters: React.FC<CalendarFiltersProps> = ({
|
|
43
|
+
filters,
|
|
44
|
+
onFiltersChange,
|
|
45
|
+
availableResources = [],
|
|
46
|
+
cities = [],
|
|
47
|
+
propertyTypes = [],
|
|
48
|
+
bedroomOptions = [],
|
|
49
|
+
priceRanges = [],
|
|
50
|
+
expanded = true,
|
|
51
|
+
styles,
|
|
52
|
+
}) => {
|
|
53
|
+
const [isExpanded, setIsExpanded] = useState(expanded)
|
|
54
|
+
const theme = styles?.theme ?? 'sacred'
|
|
55
|
+
|
|
56
|
+
// search removed
|
|
57
|
+
|
|
58
|
+
const handleDateRangeChange = useCallback(
|
|
59
|
+
(range: { start: Date | null; end: Date | null }) => {
|
|
60
|
+
onFiltersChange({
|
|
61
|
+
...filters,
|
|
62
|
+
dateRange: {
|
|
63
|
+
start: range.start ?? null,
|
|
64
|
+
end: range.end ?? null,
|
|
65
|
+
},
|
|
66
|
+
})
|
|
67
|
+
},
|
|
68
|
+
[filters, onFiltersChange]
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
// tag toggle replaced by dropdown
|
|
72
|
+
|
|
73
|
+
const clearAllFilters = useCallback(() => {
|
|
74
|
+
onFiltersChange({})
|
|
75
|
+
}, [onFiltersChange])
|
|
76
|
+
|
|
77
|
+
const activeFilterCount = useMemo(() => {
|
|
78
|
+
let count = 0
|
|
79
|
+
if (filters.searchText) count++
|
|
80
|
+
// Removed event types filter
|
|
81
|
+
if (filters.dateRange?.start || filters.dateRange?.end) count++
|
|
82
|
+
if (filters.resources?.length) count++
|
|
83
|
+
if (filters.tags?.length) count++
|
|
84
|
+
if (filters.customFilters && Object.keys(filters.customFilters).length)
|
|
85
|
+
count++
|
|
86
|
+
return count
|
|
87
|
+
}, [filters])
|
|
88
|
+
|
|
89
|
+
const accordionSummary = useMemo(
|
|
90
|
+
() => (
|
|
91
|
+
<div
|
|
92
|
+
style={{
|
|
93
|
+
display: 'flex',
|
|
94
|
+
alignItems: 'center',
|
|
95
|
+
gap: '12px',
|
|
96
|
+
width: '100%',
|
|
97
|
+
}}
|
|
98
|
+
>
|
|
99
|
+
<FilterListIcon styles={{ theme: styles?.theme ?? 'sacred' }} />
|
|
100
|
+
<Typography
|
|
101
|
+
styles={{
|
|
102
|
+
theme,
|
|
103
|
+
fontSize: '1rem',
|
|
104
|
+
fontWeight: 600,
|
|
105
|
+
...(theme === 'sacred'
|
|
106
|
+
? {
|
|
107
|
+
variant: 'cinzelh5',
|
|
108
|
+
color: '#FFD700',
|
|
109
|
+
textShadow: '0 0 6px rgba(255, 215, 0, 0.5)',
|
|
110
|
+
}
|
|
111
|
+
: {}),
|
|
112
|
+
}}
|
|
113
|
+
>
|
|
114
|
+
Filters
|
|
115
|
+
</Typography>
|
|
116
|
+
{activeFilterCount > 0 && (
|
|
117
|
+
<Chip
|
|
118
|
+
label={`${activeFilterCount} active`}
|
|
119
|
+
styles={{
|
|
120
|
+
theme: styles?.theme || 'sacred',
|
|
121
|
+
color: styles?.theme === 'sacred' ? '#FFD700' : '#3b82f6',
|
|
122
|
+
}}
|
|
123
|
+
/>
|
|
124
|
+
)}
|
|
125
|
+
<div style={{ flexGrow: 1 }} />
|
|
126
|
+
{activeFilterCount > 0 && (
|
|
127
|
+
<div
|
|
128
|
+
onClick={e => {
|
|
129
|
+
e.stopPropagation()
|
|
130
|
+
clearAllFilters()
|
|
131
|
+
}}
|
|
132
|
+
style={{
|
|
133
|
+
cursor: 'pointer',
|
|
134
|
+
padding: '4px',
|
|
135
|
+
borderRadius: '4px',
|
|
136
|
+
display: 'flex',
|
|
137
|
+
alignItems: 'center',
|
|
138
|
+
justifyContent: 'center',
|
|
139
|
+
transition: 'background-color 0.2s',
|
|
140
|
+
}}
|
|
141
|
+
onMouseEnter={e => {
|
|
142
|
+
e.currentTarget.style.backgroundColor =
|
|
143
|
+
styles?.theme === 'sacred'
|
|
144
|
+
? 'rgba(255, 215, 0, 0.1)'
|
|
145
|
+
: 'rgba(0, 0, 0, 0.04)'
|
|
146
|
+
}}
|
|
147
|
+
onMouseLeave={e => {
|
|
148
|
+
e.currentTarget.style.backgroundColor = 'transparent'
|
|
149
|
+
}}
|
|
150
|
+
>
|
|
151
|
+
<ClearIcon
|
|
152
|
+
styles={{ theme: styles?.theme ?? 'sacred', size: 16 }}
|
|
153
|
+
/>
|
|
154
|
+
</div>
|
|
155
|
+
)}
|
|
156
|
+
</div>
|
|
157
|
+
),
|
|
158
|
+
[activeFilterCount, styles, theme, clearAllFilters]
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
const containerStyle: React.CSSProperties = {
|
|
162
|
+
display: 'flex',
|
|
163
|
+
flexDirection: 'column',
|
|
164
|
+
gap: '16px',
|
|
165
|
+
padding: '16px',
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const sectionStyle: React.CSSProperties = {
|
|
169
|
+
display: 'flex',
|
|
170
|
+
flexDirection: 'column',
|
|
171
|
+
gap: '8px',
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// removed chip container
|
|
175
|
+
|
|
176
|
+
return (
|
|
177
|
+
<Accordion
|
|
178
|
+
summary={accordionSummary}
|
|
179
|
+
expanded={isExpanded}
|
|
180
|
+
onChange={(_, expanded) => {
|
|
181
|
+
console.log('Accordion onChange called, expanded:', expanded)
|
|
182
|
+
setIsExpanded(expanded)
|
|
183
|
+
}}
|
|
184
|
+
styles={{
|
|
185
|
+
theme,
|
|
186
|
+
marginBottom: '16px',
|
|
187
|
+
...(theme === 'sacred'
|
|
188
|
+
? {
|
|
189
|
+
summaryColor: '#FFD700',
|
|
190
|
+
summaryTextShadow: '0 0 8px rgba(255, 215, 0, 0.6)',
|
|
191
|
+
}
|
|
192
|
+
: {}),
|
|
193
|
+
}}
|
|
194
|
+
details={
|
|
195
|
+
<div style={containerStyle}>
|
|
196
|
+
{/* Removed global search */}
|
|
197
|
+
|
|
198
|
+
{/* Date Range */}
|
|
199
|
+
<DateRange
|
|
200
|
+
value={{
|
|
201
|
+
start: filters.dateRange?.start || null,
|
|
202
|
+
end: filters.dateRange?.end || null,
|
|
203
|
+
}}
|
|
204
|
+
onChange={handleDateRangeChange}
|
|
205
|
+
startLabel="Start Date"
|
|
206
|
+
endLabel="End Date"
|
|
207
|
+
disableFutureDateValidation
|
|
208
|
+
{...(styles ? { styles } : {})}
|
|
209
|
+
/>
|
|
210
|
+
|
|
211
|
+
{/* Two-row grid of dropdowns */}
|
|
212
|
+
<div
|
|
213
|
+
style={{
|
|
214
|
+
display: 'grid',
|
|
215
|
+
gridTemplateColumns: '1fr 1fr',
|
|
216
|
+
gap: '16px',
|
|
217
|
+
}}
|
|
218
|
+
>
|
|
219
|
+
{(cities.length > 0 || availableResources.length > 0) && (
|
|
220
|
+
<div style={sectionStyle}>
|
|
221
|
+
<SearchableSimple
|
|
222
|
+
label="City"
|
|
223
|
+
options={
|
|
224
|
+
cities.length > 0
|
|
225
|
+
? cities.map<DropdownOption>(c => ({ value: c }))
|
|
226
|
+
: availableResources.map<DropdownOption>(r => ({
|
|
227
|
+
value: r.title,
|
|
228
|
+
_id: r.id,
|
|
229
|
+
}))
|
|
230
|
+
}
|
|
231
|
+
{...(() => {
|
|
232
|
+
const defCity = filters.customFilters?.city as
|
|
233
|
+
| string
|
|
234
|
+
| undefined
|
|
235
|
+
if (defCity) return { defaultValue: defCity }
|
|
236
|
+
const resId = (filters.resources || [])[0]
|
|
237
|
+
const found = availableResources.find(r => r.id === resId)
|
|
238
|
+
return found?.title ? { defaultValue: found.title } : {}
|
|
239
|
+
})()}
|
|
240
|
+
onChange={opt => {
|
|
241
|
+
if (cities.length > 0) {
|
|
242
|
+
onFiltersChange({
|
|
243
|
+
...filters,
|
|
244
|
+
customFilters: {
|
|
245
|
+
...filters.customFilters,
|
|
246
|
+
city: opt?.value || '',
|
|
247
|
+
},
|
|
248
|
+
})
|
|
249
|
+
} else {
|
|
250
|
+
onFiltersChange({
|
|
251
|
+
...filters,
|
|
252
|
+
resources: opt?.value ? [opt._id || opt.value] : [],
|
|
253
|
+
})
|
|
254
|
+
}
|
|
255
|
+
}}
|
|
256
|
+
styles={{ theme: styles?.theme ?? 'sacred' }}
|
|
257
|
+
/>
|
|
258
|
+
</div>
|
|
259
|
+
)}
|
|
260
|
+
{/* Status removed */}
|
|
261
|
+
{propertyTypes.length > 0 && (
|
|
262
|
+
<div style={sectionStyle}>
|
|
263
|
+
<SearchableSimple
|
|
264
|
+
label="Property Type"
|
|
265
|
+
options={propertyTypes.map<DropdownOption>(t => ({
|
|
266
|
+
value: t,
|
|
267
|
+
}))}
|
|
268
|
+
{...(() => {
|
|
269
|
+
const def = filters.customFilters?.propertyType as
|
|
270
|
+
| string
|
|
271
|
+
| undefined
|
|
272
|
+
return def ? { defaultValue: def } : {}
|
|
273
|
+
})()}
|
|
274
|
+
onChange={opt =>
|
|
275
|
+
onFiltersChange({
|
|
276
|
+
...filters,
|
|
277
|
+
customFilters: {
|
|
278
|
+
...filters.customFilters,
|
|
279
|
+
propertyType: opt?.value || '',
|
|
280
|
+
},
|
|
281
|
+
})
|
|
282
|
+
}
|
|
283
|
+
styles={{ theme: styles?.theme ?? 'sacred' }}
|
|
284
|
+
/>
|
|
285
|
+
</div>
|
|
286
|
+
)}
|
|
287
|
+
{bedroomOptions.length > 0 && (
|
|
288
|
+
<div style={sectionStyle}>
|
|
289
|
+
<SearchableSimple
|
|
290
|
+
label="Bedrooms"
|
|
291
|
+
options={bedroomOptions.map<DropdownOption>(b => ({
|
|
292
|
+
value: String(b),
|
|
293
|
+
}))}
|
|
294
|
+
{...(() => {
|
|
295
|
+
const def = filters.customFilters?.bedrooms as
|
|
296
|
+
| string
|
|
297
|
+
| undefined
|
|
298
|
+
return def ? { defaultValue: def } : {}
|
|
299
|
+
})()}
|
|
300
|
+
onChange={opt =>
|
|
301
|
+
onFiltersChange({
|
|
302
|
+
...filters,
|
|
303
|
+
customFilters: {
|
|
304
|
+
...filters.customFilters,
|
|
305
|
+
bedrooms: opt?.value || '',
|
|
306
|
+
},
|
|
307
|
+
})
|
|
308
|
+
}
|
|
309
|
+
styles={{ theme: styles?.theme ?? 'sacred' }}
|
|
310
|
+
/>
|
|
311
|
+
</div>
|
|
312
|
+
)}
|
|
313
|
+
{priceRanges.length > 0 && (
|
|
314
|
+
<div style={sectionStyle}>
|
|
315
|
+
<SearchableSimple
|
|
316
|
+
label="Price Range"
|
|
317
|
+
options={priceRanges.map<DropdownOption>(p => ({ value: p }))}
|
|
318
|
+
{...(() => {
|
|
319
|
+
const def = filters.customFilters?.priceRange as
|
|
320
|
+
| string
|
|
321
|
+
| undefined
|
|
322
|
+
return def ? { defaultValue: def } : {}
|
|
323
|
+
})()}
|
|
324
|
+
onChange={opt =>
|
|
325
|
+
onFiltersChange({
|
|
326
|
+
...filters,
|
|
327
|
+
customFilters: {
|
|
328
|
+
...filters.customFilters,
|
|
329
|
+
priceRange: opt?.value || '',
|
|
330
|
+
},
|
|
331
|
+
})
|
|
332
|
+
}
|
|
333
|
+
styles={{ theme: styles?.theme ?? 'sacred' }}
|
|
334
|
+
/>
|
|
335
|
+
</div>
|
|
336
|
+
)}
|
|
337
|
+
{/* Fourth slot reserved for future standardized dropdown */}
|
|
338
|
+
<div />
|
|
339
|
+
</div>
|
|
340
|
+
|
|
341
|
+
{/* Tags handled above */}
|
|
342
|
+
|
|
343
|
+
{/* Status handled above */}
|
|
344
|
+
|
|
345
|
+
{/* External custom components removed in favor of standardized inline dropdowns */}
|
|
346
|
+
</div>
|
|
347
|
+
}
|
|
348
|
+
/>
|
|
349
|
+
)
|
|
350
|
+
}
|