@next-degree/pickle-shared-js 0.12.7 → 0.13.1
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/dist/{company_service_sanity-2J1ZuUnu.d.cts → company_service_sanity-ByIKe90u.d.cts} +560 -560
- package/dist/{company_service_sanity-KaAGfnNV.d.ts → company_service_sanity-DbYwWmnS.d.ts} +560 -560
- package/dist/components/buttons/BackButton.cjs +5 -8
- package/dist/components/buttons/BackButton.cjs.map +1 -1
- package/dist/components/buttons/BackButton.d.cts +2 -2
- package/dist/components/buttons/BackButton.d.ts +2 -2
- package/dist/components/buttons/BackButton.js +5 -8
- package/dist/components/buttons/BackButton.js.map +1 -1
- package/dist/components/company/CompanyBenefits.cjs +1 -5
- package/dist/components/company/CompanyBenefits.cjs.map +1 -1
- package/dist/components/company/CompanyBenefits.d.cts +2 -2
- package/dist/components/company/CompanyBenefits.d.ts +2 -2
- package/dist/components/company/CompanyBenefits.js +1 -5
- package/dist/components/company/CompanyBenefits.js.map +1 -1
- package/dist/components/company/CompanyInformation.cjs +23 -44
- package/dist/components/company/CompanyInformation.cjs.map +1 -1
- package/dist/components/company/CompanyInformation.d.cts +2 -2
- package/dist/components/company/CompanyInformation.d.ts +2 -2
- package/dist/components/company/CompanyInformation.js +23 -44
- package/dist/components/company/CompanyInformation.js.map +1 -1
- package/dist/components/company/CompanyTake.cjs +12 -26
- package/dist/components/company/CompanyTake.cjs.map +1 -1
- package/dist/components/company/CompanyTake.d.cts +2 -2
- package/dist/components/company/CompanyTake.d.ts +2 -2
- package/dist/components/company/CompanyTake.js +12 -26
- package/dist/components/company/CompanyTake.js.map +1 -1
- package/dist/components/jobCard/JobLocation.cjs +23 -34
- package/dist/components/jobCard/JobLocation.cjs.map +1 -1
- package/dist/components/jobCard/JobLocation.d.cts +3 -3
- package/dist/components/jobCard/JobLocation.d.ts +3 -3
- package/dist/components/jobCard/JobLocation.js +23 -34
- package/dist/components/jobCard/JobLocation.js.map +1 -1
- package/dist/components/jobPost/JobDescription.cjs +164 -30
- package/dist/components/jobPost/JobDescription.cjs.map +1 -1
- package/dist/components/jobPost/JobDescription.d.cts +2 -2
- package/dist/components/jobPost/JobDescription.d.ts +2 -2
- package/dist/components/jobPost/JobDescription.js +164 -30
- package/dist/components/jobPost/JobDescription.js.map +1 -1
- package/dist/components/jobPost/JobHeader.cjs +110 -138
- package/dist/components/jobPost/JobHeader.cjs.map +1 -1
- package/dist/components/jobPost/JobHeader.d.cts +2 -2
- package/dist/components/jobPost/JobHeader.d.ts +2 -2
- package/dist/components/jobPost/JobHeader.js +110 -138
- package/dist/components/jobPost/JobHeader.js.map +1 -1
- package/dist/components/jobPost/JobPost.cjs +382 -318
- package/dist/components/jobPost/JobPost.cjs.map +1 -1
- package/dist/components/jobPost/JobPost.d.cts +3 -3
- package/dist/components/jobPost/JobPost.d.ts +3 -3
- package/dist/components/jobPost/JobPost.js +344 -280
- package/dist/components/jobPost/JobPost.js.map +1 -1
- package/dist/components/primitives/avatar.cjs +3 -4
- package/dist/components/primitives/avatar.cjs.map +1 -1
- package/dist/components/primitives/avatar.js +3 -4
- package/dist/components/primitives/avatar.js.map +1 -1
- package/dist/components/primitives/command.cjs +37 -50
- package/dist/components/primitives/command.cjs.map +1 -1
- package/dist/components/primitives/command.d.cts +5 -6
- package/dist/components/primitives/command.d.ts +5 -6
- package/dist/components/primitives/command.js +37 -50
- package/dist/components/primitives/command.js.map +1 -1
- package/dist/components/primitives/dialog.cjs +18 -27
- package/dist/components/primitives/dialog.cjs.map +1 -1
- package/dist/components/primitives/dialog.d.cts +2 -3
- package/dist/components/primitives/dialog.d.ts +2 -3
- package/dist/components/primitives/dialog.js +18 -27
- package/dist/components/primitives/dialog.js.map +1 -1
- package/dist/components/primitives/input-otp.cjs +8 -11
- package/dist/components/primitives/input-otp.cjs.map +1 -1
- package/dist/components/primitives/input-otp.d.cts +2 -2
- package/dist/components/primitives/input-otp.d.ts +2 -2
- package/dist/components/primitives/input-otp.js +8 -11
- package/dist/components/primitives/input-otp.js.map +1 -1
- package/dist/components/primitives/popover.cjs +2 -3
- package/dist/components/primitives/popover.cjs.map +1 -1
- package/dist/components/primitives/popover.js +2 -3
- package/dist/components/primitives/popover.js.map +1 -1
- package/dist/components/primitives/radio-group.cjs +12 -16
- package/dist/components/primitives/radio-group.cjs.map +1 -1
- package/dist/components/primitives/radio-group.js +12 -16
- package/dist/components/primitives/radio-group.js.map +1 -1
- package/dist/components/primitives/separator.cjs +1 -2
- package/dist/components/primitives/separator.cjs.map +1 -1
- package/dist/components/primitives/separator.js +1 -2
- package/dist/components/primitives/separator.js.map +1 -1
- package/dist/components/primitives/tooltip.cjs +1 -2
- package/dist/components/primitives/tooltip.cjs.map +1 -1
- package/dist/components/primitives/tooltip.js +1 -2
- package/dist/components/primitives/tooltip.js.map +1 -1
- package/dist/components/ui/Avatar.cjs +6 -11
- package/dist/components/ui/Avatar.cjs.map +1 -1
- package/dist/components/ui/Avatar.d.cts +3 -3
- package/dist/components/ui/Avatar.d.ts +3 -3
- package/dist/components/ui/Avatar.js +6 -11
- package/dist/components/ui/Avatar.js.map +1 -1
- package/dist/components/ui/Badge.cjs +12 -2
- package/dist/components/ui/Badge.cjs.map +1 -1
- package/dist/components/ui/Badge.d.cts +1 -2
- package/dist/components/ui/Badge.d.ts +1 -2
- package/dist/components/ui/Badge.js +2 -2
- package/dist/components/ui/Badge.js.map +1 -1
- package/dist/components/ui/Button.cjs +163 -8
- package/dist/components/ui/Button.cjs.map +1 -1
- package/dist/components/ui/Button.d.cts +4 -8
- package/dist/components/ui/Button.d.ts +4 -8
- package/dist/components/ui/Button.js +153 -8
- package/dist/components/ui/Button.js.map +1 -1
- package/dist/components/ui/Checkbox.cjs +18 -28
- package/dist/components/ui/Checkbox.cjs.map +1 -1
- package/dist/components/ui/Checkbox.js +18 -28
- package/dist/components/ui/Checkbox.js.map +1 -1
- package/dist/components/ui/Chip.cjs +12 -2
- package/dist/components/ui/Chip.cjs.map +1 -1
- package/dist/components/ui/Chip.d.cts +1 -2
- package/dist/components/ui/Chip.d.ts +1 -2
- package/dist/components/ui/Chip.js +2 -2
- package/dist/components/ui/Chip.js.map +1 -1
- package/dist/components/ui/Combobox.cjs +171 -233
- package/dist/components/ui/Combobox.cjs.map +1 -1
- package/dist/components/ui/Combobox.js +171 -233
- package/dist/components/ui/Combobox.js.map +1 -1
- package/dist/components/ui/Counter.cjs +56 -74
- package/dist/components/ui/Counter.cjs.map +1 -1
- package/dist/components/ui/Counter.js +56 -74
- package/dist/components/ui/Counter.js.map +1 -1
- package/dist/components/ui/DatePicker.cjs +44 -68
- package/dist/components/ui/DatePicker.cjs.map +1 -1
- package/dist/components/ui/DatePicker.js +44 -68
- package/dist/components/ui/DatePicker.js.map +1 -1
- package/dist/components/ui/DismissibleBanner.cjs +13 -16
- package/dist/components/ui/DismissibleBanner.cjs.map +1 -1
- package/dist/components/ui/DismissibleBanner.d.cts +2 -2
- package/dist/components/ui/DismissibleBanner.d.ts +2 -2
- package/dist/components/ui/DismissibleBanner.js +13 -16
- package/dist/components/ui/DismissibleBanner.js.map +1 -1
- package/dist/components/ui/ErrorMessage.cjs +1 -2
- package/dist/components/ui/ErrorMessage.cjs.map +1 -1
- package/dist/components/ui/ErrorMessage.d.cts +2 -2
- package/dist/components/ui/ErrorMessage.d.ts +2 -2
- package/dist/components/ui/ErrorMessage.js +1 -2
- package/dist/components/ui/ErrorMessage.js.map +1 -1
- package/dist/components/ui/Icon.cjs +1 -2
- package/dist/components/ui/Icon.cjs.map +1 -1
- package/dist/components/ui/Icon.js +1 -2
- package/dist/components/ui/Icon.js.map +1 -1
- package/dist/components/ui/Input.cjs +48 -68
- package/dist/components/ui/Input.cjs.map +1 -1
- package/dist/components/ui/Input.js +48 -68
- package/dist/components/ui/Input.js.map +1 -1
- package/dist/components/ui/InputOtp.cjs +56 -73
- package/dist/components/ui/InputOtp.cjs.map +1 -1
- package/dist/components/ui/InputOtp.js +56 -73
- package/dist/components/ui/InputOtp.js.map +1 -1
- package/dist/components/ui/Label.cjs +14 -24
- package/dist/components/ui/Label.cjs.map +1 -1
- package/dist/components/ui/Label.d.cts +2 -2
- package/dist/components/ui/Label.d.ts +2 -2
- package/dist/components/ui/Label.js +14 -24
- package/dist/components/ui/Label.js.map +1 -1
- package/dist/components/ui/LinkButton.cjs +5 -5
- package/dist/components/ui/LinkButton.cjs.map +1 -1
- package/dist/components/ui/LinkButton.d.cts +1 -2
- package/dist/components/ui/LinkButton.d.ts +1 -2
- package/dist/components/ui/LinkButton.js +5 -5
- package/dist/components/ui/LinkButton.js.map +1 -1
- package/dist/components/ui/ListItem.cjs +32 -48
- package/dist/components/ui/ListItem.cjs.map +1 -1
- package/dist/components/ui/ListItem.d.cts +2 -2
- package/dist/components/ui/ListItem.d.ts +2 -2
- package/dist/components/ui/ListItem.js +32 -48
- package/dist/components/ui/ListItem.js.map +1 -1
- package/dist/components/ui/Map/ClusterMarker.cjs +80 -0
- package/dist/components/ui/Map/ClusterMarker.cjs.map +1 -0
- package/dist/components/ui/Map/ClusterMarker.d.cts +6 -0
- package/dist/components/ui/Map/ClusterMarker.d.ts +6 -0
- package/dist/components/ui/Map/ClusterMarker.js +56 -0
- package/dist/components/ui/Map/ClusterMarker.js.map +1 -0
- package/dist/components/ui/Map/FocusCircle.cjs +86 -0
- package/dist/components/ui/Map/FocusCircle.cjs.map +1 -0
- package/dist/components/ui/Map/FocusCircle.d.cts +5 -0
- package/dist/components/ui/Map/FocusCircle.d.ts +5 -0
- package/dist/components/ui/Map/FocusCircle.js +62 -0
- package/dist/components/ui/Map/FocusCircle.js.map +1 -0
- package/dist/components/ui/Map/IndividualMarker.cjs +60 -0
- package/dist/components/ui/Map/IndividualMarker.cjs.map +1 -0
- package/dist/components/ui/Map/IndividualMarker.d.cts +6 -0
- package/dist/components/ui/Map/IndividualMarker.d.ts +6 -0
- package/dist/components/ui/Map/IndividualMarker.js +36 -0
- package/dist/components/ui/Map/IndividualMarker.js.map +1 -0
- package/dist/components/ui/Map/MapComponent.cjs +401 -0
- package/dist/components/ui/Map/MapComponent.cjs.map +1 -0
- package/dist/components/ui/Map/MapComponent.d.cts +6 -0
- package/dist/components/ui/Map/MapComponent.d.ts +6 -0
- package/dist/components/ui/Map/MapComponent.js +367 -0
- package/dist/components/ui/Map/MapComponent.js.map +1 -0
- package/dist/components/ui/Map/MapContent.cjs +279 -0
- package/dist/components/ui/Map/MapContent.cjs.map +1 -0
- package/dist/components/ui/Map/MapContent.d.cts +6 -0
- package/dist/components/ui/Map/MapContent.d.ts +6 -0
- package/dist/components/ui/Map/MapContent.js +255 -0
- package/dist/components/ui/Map/MapContent.js.map +1 -0
- package/dist/components/ui/Map/clustering.cjs +105 -0
- package/dist/components/ui/Map/clustering.cjs.map +1 -0
- package/dist/components/ui/Map/clustering.d.cts +17 -0
- package/dist/components/ui/Map/clustering.d.ts +17 -0
- package/dist/components/ui/Map/clustering.js +77 -0
- package/dist/components/ui/Map/clustering.js.map +1 -0
- package/dist/components/ui/Map/constants.cjs +65 -0
- package/dist/components/ui/Map/constants.cjs.map +1 -0
- package/dist/components/ui/Map/constants.d.cts +28 -0
- package/dist/components/ui/Map/constants.d.ts +28 -0
- package/dist/components/ui/Map/constants.js +34 -0
- package/dist/components/ui/Map/constants.js.map +1 -0
- package/dist/components/ui/Map/hooks.cjs +96 -0
- package/dist/components/ui/Map/hooks.cjs.map +1 -0
- package/dist/components/ui/Map/hooks.d.cts +17 -0
- package/dist/components/ui/Map/hooks.d.ts +17 -0
- package/dist/components/ui/Map/hooks.js +59 -0
- package/dist/components/ui/Map/hooks.js.map +1 -0
- package/dist/components/ui/Map/index.cjs +402 -0
- package/dist/components/ui/Map/index.cjs.map +1 -0
- package/dist/components/ui/Map/index.d.cts +3 -0
- package/dist/components/ui/Map/index.d.ts +3 -0
- package/dist/components/ui/Map/index.js +365 -0
- package/dist/components/ui/Map/index.js.map +1 -0
- package/dist/components/ui/Map/types.cjs +19 -0
- package/dist/components/ui/Map/types.cjs.map +1 -0
- package/dist/components/ui/Map/types.d.cts +82 -0
- package/dist/components/ui/Map/types.d.ts +82 -0
- package/dist/components/ui/Map/types.js +1 -0
- package/dist/components/ui/Map/types.js.map +1 -0
- package/dist/components/ui/Map/utils.cjs +80 -0
- package/dist/components/ui/Map/utils.cjs.map +1 -0
- package/dist/components/ui/Map/utils.d.cts +9 -0
- package/dist/components/ui/Map/utils.d.ts +9 -0
- package/dist/components/ui/Map/utils.js +49 -0
- package/dist/components/ui/Map/utils.js.map +1 -0
- package/dist/components/ui/PlacesQueryInput.cjs +71 -94
- package/dist/components/ui/PlacesQueryInput.cjs.map +1 -1
- package/dist/components/ui/PlacesQueryInput.d.cts +2 -2
- package/dist/components/ui/PlacesQueryInput.d.ts +2 -2
- package/dist/components/ui/PlacesQueryInput.js +71 -94
- package/dist/components/ui/PlacesQueryInput.js.map +1 -1
- package/dist/components/ui/Radio.cjs +49 -69
- package/dist/components/ui/Radio.cjs.map +1 -1
- package/dist/components/ui/Radio.js +49 -69
- package/dist/components/ui/Radio.js.map +1 -1
- package/dist/components/ui/ReadMore.cjs +163 -25
- package/dist/components/ui/ReadMore.cjs.map +1 -1
- package/dist/components/ui/ReadMore.d.cts +2 -2
- package/dist/components/ui/ReadMore.d.ts +2 -2
- package/dist/components/ui/ReadMore.js +163 -25
- package/dist/components/ui/ReadMore.js.map +1 -1
- package/dist/components/ui/Select.cjs +138 -172
- package/dist/components/ui/Select.cjs.map +1 -1
- package/dist/components/ui/Select.js +132 -166
- package/dist/components/ui/Select.js.map +1 -1
- package/dist/components/ui/StepTabs.cjs +24 -27
- package/dist/components/ui/StepTabs.cjs.map +1 -1
- package/dist/components/ui/StepTabs.d.cts +3 -3
- package/dist/components/ui/StepTabs.d.ts +3 -3
- package/dist/components/ui/StepTabs.js +24 -27
- package/dist/components/ui/StepTabs.js.map +1 -1
- package/dist/components/ui/Switch.cjs +13 -21
- package/dist/components/ui/Switch.cjs.map +1 -1
- package/dist/components/ui/Switch.js +13 -21
- package/dist/components/ui/Switch.js.map +1 -1
- package/dist/components/ui/buttonShadcn.cjs +1 -2
- package/dist/components/ui/buttonShadcn.cjs.map +1 -1
- package/dist/components/ui/buttonShadcn.d.cts +1 -1
- package/dist/components/ui/buttonShadcn.d.ts +1 -1
- package/dist/components/ui/buttonShadcn.js +1 -2
- package/dist/components/ui/buttonShadcn.js.map +1 -1
- package/dist/components/ui/calendar.cjs +5 -6
- package/dist/components/ui/calendar.cjs.map +1 -1
- package/dist/components/ui/calendar.d.cts +1 -2
- package/dist/components/ui/calendar.d.ts +1 -2
- package/dist/components/ui/calendar.js +5 -6
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/contexts/WindowHistoryProvider.cjs +1 -2
- package/dist/contexts/WindowHistoryProvider.cjs.map +1 -1
- package/dist/contexts/WindowHistoryProvider.d.cts +1 -2
- package/dist/contexts/WindowHistoryProvider.d.ts +1 -2
- package/dist/contexts/WindowHistoryProvider.js +1 -2
- package/dist/contexts/WindowHistoryProvider.js.map +1 -1
- package/dist/{displayText-DahwdHdi.d.ts → displayText-Ce_aqgGP.d.ts} +2 -2
- package/dist/{displayText-DW0qiJqh.d.cts → displayText-Cm8PqS6s.d.cts} +2 -2
- package/dist/hooks/useDisplayText.d.cts +3 -3
- package/dist/hooks/useDisplayText.d.ts +3 -3
- package/dist/hooks/useWindowHistory.cjs +0 -1
- package/dist/hooks/useWindowHistory.cjs.map +1 -1
- package/dist/hooks/useWindowHistory.d.cts +0 -1
- package/dist/hooks/useWindowHistory.d.ts +0 -1
- package/dist/hooks/useWindowHistory.js +0 -1
- package/dist/hooks/useWindowHistory.js.map +1 -1
- package/dist/index.cjs +1343 -1111
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +1293 -1061
- package/dist/index.js.map +1 -1
- package/dist/{job_posting_service_sanity-BKo9TBDT.d.ts → job_posting_service_sanity-1eG3Jh9_.d.ts} +496 -496
- package/dist/{job_posting_service_sanity-BNq-Am9N.d.cts → job_posting_service_sanity-DKYye6oH.d.cts} +496 -496
- package/dist/lib/locations.d.cts +3 -3
- package/dist/lib/locations.d.ts +3 -3
- package/dist/lib/mappings.d.cts +3 -3
- package/dist/lib/mappings.d.ts +3 -3
- package/dist/lib/salaryRange.d.cts +1 -1
- package/dist/lib/salaryRange.d.ts +1 -1
- package/dist/services/displayText.d.cts +3 -3
- package/dist/services/displayText.d.ts +3 -3
- package/dist/styles/globals.css +179 -6
- package/dist/styles/globals.css.map +1 -1
- package/dist/types/data/company_service_latest.d.cts +1 -1
- package/dist/types/data/company_service_latest.d.ts +1 -1
- package/dist/types/data/job_posting_service_latest.d.cts +1 -1
- package/dist/types/data/job_posting_service_latest.d.ts +1 -1
- package/dist/types/data/shared_pickle_output_latest.d.cts +1 -1
- package/dist/types/data/shared_pickle_output_latest.d.ts +1 -1
- package/dist/types/index.d.cts +6 -6
- package/dist/types/index.d.ts +6 -6
- package/dist/types/latest/company_service_latest.d.cts +1 -1
- package/dist/types/latest/company_service_latest.d.ts +1 -1
- package/dist/types/latest/custom/company_service_sanity.d.cts +3 -3
- package/dist/types/latest/custom/company_service_sanity.d.ts +3 -3
- package/dist/types/latest/custom/job_posting_service_sanity.d.cts +3 -3
- package/dist/types/latest/custom/job_posting_service_sanity.d.ts +3 -3
- package/dist/types/latest/job_posting_service_latest.d.cts +1 -1
- package/dist/types/latest/job_posting_service_latest.d.ts +1 -1
- package/dist/types/latest/shared_pickle_output_latest.d.cts +1 -1
- package/dist/types/latest/shared_pickle_output_latest.d.ts +1 -1
- package/package.json +5 -3
- package/dist/components/ui/MapComponent.cjs +0 -61
- package/dist/components/ui/MapComponent.cjs.map +0 -1
- package/dist/components/ui/MapComponent.d.cts +0 -15
- package/dist/components/ui/MapComponent.d.ts +0 -15
- package/dist/components/ui/MapComponent.js +0 -41
- package/dist/components/ui/MapComponent.js.map +0 -1
- package/dist/{company_service_latest-CITz7F53.d.cts → company_service_latest-BjyG4KCB.d.cts} +319 -319
- package/dist/{company_service_latest-CITz7F53.d.ts → company_service_latest-BjyG4KCB.d.ts} +319 -319
- package/dist/{company_service_latest-C7Moeufo.d.cts → company_service_latest-KJi2W9Ij.d.cts} +319 -319
- package/dist/{company_service_latest-C7Moeufo.d.ts → company_service_latest-KJi2W9Ij.d.ts} +319 -319
- package/dist/{job_posting_service_latest-DdgK8Nnz.d.cts → job_posting_service_latest-82DHqOGu.d.cts} +274 -274
- package/dist/{job_posting_service_latest-DdgK8Nnz.d.ts → job_posting_service_latest-82DHqOGu.d.ts} +274 -274
- package/dist/{job_posting_service_latest-C_TEBzCf.d.cts → job_posting_service_latest-D9I5NE7l.d.cts} +274 -274
- package/dist/{job_posting_service_latest-C_TEBzCf.d.ts → job_posting_service_latest-D9I5NE7l.d.ts} +274 -274
- package/dist/{shared_pickle_output_latest-CtvHTPeX.d.cts → shared_pickle_output_latest-YbRs_xtC.d.cts} +22 -22
- package/dist/{shared_pickle_output_latest-CtvHTPeX.d.ts → shared_pickle_output_latest-YbRs_xtC.d.ts} +22 -22
- package/dist/{shared_pickle_output_latest-CXBCG04N.d.cts → shared_pickle_output_latest-dO-t8iZx.d.cts} +22 -22
- package/dist/{shared_pickle_output_latest-CXBCG04N.d.ts → shared_pickle_output_latest-dO-t8iZx.d.ts} +22 -22
package/dist/index.cjs
CHANGED
|
@@ -55,7 +55,7 @@ __export(index_exports, {
|
|
|
55
55
|
Label: () => Label_default,
|
|
56
56
|
LinkButton: () => LinkButton,
|
|
57
57
|
ListItem: () => ListItem_default,
|
|
58
|
-
MapComponent: () =>
|
|
58
|
+
MapComponent: () => MapComponent,
|
|
59
59
|
PlacesQueryInput: () => PlacesQueryInput_default,
|
|
60
60
|
Radio: () => Radio,
|
|
61
61
|
ReadMore: () => ReadMore,
|
|
@@ -74,9 +74,9 @@ module.exports = __toCommonJS(index_exports);
|
|
|
74
74
|
|
|
75
75
|
// src/components/ui/Chip.tsx
|
|
76
76
|
var import_cva = require("cva");
|
|
77
|
+
var import_react = __toESM(require("react"), 1);
|
|
77
78
|
var import_tailwind_merge = require("tailwind-merge");
|
|
78
|
-
var
|
|
79
|
-
var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: (0, import_tailwind_merge.twMerge)(chipVariants({ variant, size, className })), ...props });
|
|
79
|
+
var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ import_react.default.createElement("div", { className: (0, import_tailwind_merge.twMerge)(chipVariants({ variant, size, className })), ...props });
|
|
80
80
|
var chipVariants = (0, import_cva.cva)(["flex", "items-center", "rounded-3xl", "border", "w-fit"], {
|
|
81
81
|
variants: {
|
|
82
82
|
variant: {
|
|
@@ -102,7 +102,7 @@ var Chip_default = Chip;
|
|
|
102
102
|
// src/components/ui/Input.tsx
|
|
103
103
|
var import_cva2 = require("cva");
|
|
104
104
|
var import_lucide_react2 = require("lucide-react");
|
|
105
|
-
var
|
|
105
|
+
var import_react2 = require("react");
|
|
106
106
|
|
|
107
107
|
// src/lib/utils.ts
|
|
108
108
|
var import_clsx = require("clsx");
|
|
@@ -112,10 +112,9 @@ function cn(...inputs) {
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
// src/components/ui/ErrorMessage.tsx
|
|
115
|
-
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
116
115
|
function ErrorMessage({ message, className, ...props }) {
|
|
117
116
|
if (!message) return null;
|
|
118
|
-
return /* @__PURE__ */
|
|
117
|
+
return /* @__PURE__ */ React.createElement("p", { className: cn("px-1 text-xs text-red-600", className), ...props }, message);
|
|
119
118
|
}
|
|
120
119
|
var ErrorMessage_default = ErrorMessage;
|
|
121
120
|
|
|
@@ -124,12 +123,11 @@ var import_lucide_react = require("lucide-react");
|
|
|
124
123
|
|
|
125
124
|
// src/components/primitives/tooltip.tsx
|
|
126
125
|
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"), 1);
|
|
127
|
-
var
|
|
128
|
-
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
126
|
+
var React3 = __toESM(require("react"), 1);
|
|
129
127
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
130
128
|
var Tooltip = TooltipPrimitive.Root;
|
|
131
129
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
132
|
-
var TooltipContent =
|
|
130
|
+
var TooltipContent = React3.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React3.createElement(
|
|
133
131
|
TooltipPrimitive.Content,
|
|
134
132
|
{
|
|
135
133
|
ref,
|
|
@@ -144,35 +142,25 @@ var TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props },
|
|
|
144
142
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
145
143
|
|
|
146
144
|
// src/components/ui/Label.tsx
|
|
147
|
-
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
148
145
|
function Label({ text, required, description, className, ...props }) {
|
|
149
146
|
if (!text) return null;
|
|
150
|
-
return /* @__PURE__ */
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
]
|
|
163
|
-
}
|
|
164
|
-
),
|
|
165
|
-
!!description && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(Tooltip, { children: [
|
|
166
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react.InfoIcon, { className: "h-4 w-4" }) }),
|
|
167
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TooltipContent, { className: "max-w-48", children: description })
|
|
168
|
-
] }) })
|
|
169
|
-
] });
|
|
147
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex w-full flex-row gap-1" }, /* @__PURE__ */ React.createElement(
|
|
148
|
+
"label",
|
|
149
|
+
{
|
|
150
|
+
className: cn(
|
|
151
|
+
"text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
152
|
+
className
|
|
153
|
+
),
|
|
154
|
+
...props
|
|
155
|
+
},
|
|
156
|
+
text,
|
|
157
|
+
required && /* @__PURE__ */ React.createElement("span", { className: "text-red-600" }, "\xA0*")
|
|
158
|
+
), !!description && /* @__PURE__ */ React.createElement(TooltipProvider, null, /* @__PURE__ */ React.createElement(Tooltip, null, /* @__PURE__ */ React.createElement(TooltipTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(import_lucide_react.InfoIcon, { className: "h-4 w-4" })), /* @__PURE__ */ React.createElement(TooltipContent, { className: "max-w-48" }, description))));
|
|
170
159
|
}
|
|
171
160
|
var Label_default = Label;
|
|
172
161
|
|
|
173
162
|
// src/components/ui/Input.tsx
|
|
174
|
-
var
|
|
175
|
-
var Input = (0, import_react.forwardRef)(
|
|
163
|
+
var Input = (0, import_react2.forwardRef)(
|
|
176
164
|
({ label, error, description, theme, icon, onClear, value, onChange, classNames, ...props }, ref) => {
|
|
177
165
|
const handleClear = () => {
|
|
178
166
|
onChange?.({ target: { value: "" } });
|
|
@@ -182,47 +170,39 @@ var Input = (0, import_react.forwardRef)(
|
|
|
182
170
|
const placeholder = props.placeholder ?? (icon === "Search" ? "Search..." : "");
|
|
183
171
|
const hasIcon = !!icon;
|
|
184
172
|
const iconColor = theme === "dark" ? "text-white" : "text-grey-80";
|
|
185
|
-
return /* @__PURE__ */
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
),
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
className: `absolute right-3 h-4 w-4 cursor-pointer ${iconColor}`,
|
|
219
|
-
onClick: handleClear,
|
|
220
|
-
"data-testid": "clear-button"
|
|
221
|
-
}
|
|
222
|
-
)
|
|
223
|
-
] }),
|
|
224
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ErrorMessage_default, { message: error })
|
|
225
|
-
] });
|
|
173
|
+
return /* @__PURE__ */ React.createElement("div", { className: "group flex w-full flex-col gap-1", "data-testid": `input-wrapper-${props.id}` }, label && /* @__PURE__ */ React.createElement(
|
|
174
|
+
Label_default,
|
|
175
|
+
{
|
|
176
|
+
text: label,
|
|
177
|
+
htmlFor: props.name,
|
|
178
|
+
required: props.required,
|
|
179
|
+
description,
|
|
180
|
+
className: classNames?.label
|
|
181
|
+
}
|
|
182
|
+
), /* @__PURE__ */ React.createElement("div", { className: "relative flex flex-row items-center" }, IconComponent && /* @__PURE__ */ React.createElement(
|
|
183
|
+
IconComponent,
|
|
184
|
+
{
|
|
185
|
+
className: `absolute left-3 h-4 w-4 ${iconColor} opacity-50 group-hover:opacity-100`
|
|
186
|
+
}
|
|
187
|
+
), /* @__PURE__ */ React.createElement(
|
|
188
|
+
"input",
|
|
189
|
+
{
|
|
190
|
+
className: cn(inputVariants({ theme, hasIcon })),
|
|
191
|
+
ref,
|
|
192
|
+
placeholder,
|
|
193
|
+
value,
|
|
194
|
+
onChange,
|
|
195
|
+
"data-testid": `input-element-${props.id}`,
|
|
196
|
+
...props
|
|
197
|
+
}
|
|
198
|
+
), hasIcon && value && /* @__PURE__ */ React.createElement(
|
|
199
|
+
import_lucide_react2.X,
|
|
200
|
+
{
|
|
201
|
+
className: `absolute right-3 h-4 w-4 cursor-pointer ${iconColor}`,
|
|
202
|
+
onClick: handleClear,
|
|
203
|
+
"data-testid": "clear-button"
|
|
204
|
+
}
|
|
205
|
+
)), /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error }));
|
|
226
206
|
}
|
|
227
207
|
);
|
|
228
208
|
Input.displayName = "Input";
|
|
@@ -283,9 +263,8 @@ var import_lucide_react5 = require("lucide-react");
|
|
|
283
263
|
// src/components/ui/Checkbox.tsx
|
|
284
264
|
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
|
|
285
265
|
var import_lucide_react3 = require("lucide-react");
|
|
286
|
-
var
|
|
287
|
-
var
|
|
288
|
-
var CheckboxToggle = (0, import_react2.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
266
|
+
var import_react3 = require("react");
|
|
267
|
+
var CheckboxToggle = (0, import_react3.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
|
289
268
|
CheckboxPrimitive.Root,
|
|
290
269
|
{
|
|
291
270
|
ref,
|
|
@@ -314,41 +293,32 @@ var CheckboxToggle = (0, import_react2.forwardRef)(({ className, ...props }, ref
|
|
|
314
293
|
props.disabled && "bg-grey-20 data-[state=checked]:bg-grey-20 data-[state=checked]:text-foreground",
|
|
315
294
|
className
|
|
316
295
|
),
|
|
317
|
-
...props
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.Minus, { className: "hidden h-4 w-4 group-data-[state=indeterminate]:block" })
|
|
321
|
-
] })
|
|
322
|
-
}
|
|
296
|
+
...props
|
|
297
|
+
},
|
|
298
|
+
/* @__PURE__ */ React.createElement(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current" }, /* @__PURE__ */ React.createElement(import_lucide_react3.Check, { className: "hidden h-4 w-4 group-data-[state=checked]:block" }), /* @__PURE__ */ React.createElement(import_lucide_react3.Minus, { className: "hidden h-4 w-4 group-data-[state=indeterminate]:block" }))
|
|
323
299
|
));
|
|
324
300
|
CheckboxToggle.displayName = CheckboxPrimitive.Root.displayName;
|
|
325
|
-
var Checkbox = (0,
|
|
301
|
+
var Checkbox = (0, import_react3.forwardRef)(
|
|
326
302
|
({ error, classNames, children, ...props }, ref) => {
|
|
327
303
|
const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`;
|
|
328
|
-
return /* @__PURE__ */
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ErrorMessage_default, { message: error, className: "mt-1" })
|
|
342
|
-
]
|
|
343
|
-
}
|
|
344
|
-
)
|
|
345
|
-
] });
|
|
304
|
+
return /* @__PURE__ */ React.createElement("div", { className: cn("flex space-x-2", classNames?.wrapper) }, /* @__PURE__ */ React.createElement(CheckboxToggle, { id, ref, ...props }), /* @__PURE__ */ React.createElement(
|
|
305
|
+
"label",
|
|
306
|
+
{
|
|
307
|
+
htmlFor: id,
|
|
308
|
+
className: cn(
|
|
309
|
+
"text-sm",
|
|
310
|
+
props.disabled && "pointer-events-none text-grey-40",
|
|
311
|
+
classNames?.label
|
|
312
|
+
)
|
|
313
|
+
},
|
|
314
|
+
children,
|
|
315
|
+
/* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error, className: "mt-1" })
|
|
316
|
+
));
|
|
346
317
|
}
|
|
347
318
|
);
|
|
348
319
|
Checkbox.displayName = "Checkbox";
|
|
349
320
|
|
|
350
321
|
// src/components/ui/ListItem.tsx
|
|
351
|
-
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
352
322
|
function ListItem({
|
|
353
323
|
icon,
|
|
354
324
|
hasCheckbox,
|
|
@@ -362,12 +332,12 @@ function ListItem({
|
|
|
362
332
|
const getIconIfValid = (icon2) => {
|
|
363
333
|
if (icon2 in import_lucide_react5.icons) {
|
|
364
334
|
const IconComponent = import_lucide_react5.icons[icon2];
|
|
365
|
-
return /* @__PURE__ */
|
|
335
|
+
return /* @__PURE__ */ React.createElement(IconComponent, { size: 14 });
|
|
366
336
|
}
|
|
367
337
|
return null;
|
|
368
338
|
};
|
|
369
339
|
const optionIcon = icon ? getIconIfValid(icon) : void 0;
|
|
370
|
-
return /* @__PURE__ */
|
|
340
|
+
return /* @__PURE__ */ React.createElement(
|
|
371
341
|
"li",
|
|
372
342
|
{
|
|
373
343
|
className: cn(
|
|
@@ -375,70 +345,392 @@ function ListItem({
|
|
|
375
345
|
className
|
|
376
346
|
),
|
|
377
347
|
...props,
|
|
378
|
-
"data-state": isSelected ? "checked" : "unchecked"
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
size: 16
|
|
391
|
-
}
|
|
392
|
-
)
|
|
393
|
-
]
|
|
394
|
-
}
|
|
348
|
+
"data-state": isSelected ? "checked" : "unchecked"
|
|
349
|
+
},
|
|
350
|
+
optionIcon && /* @__PURE__ */ React.createElement("span", { className: "mr-2" }, optionIcon),
|
|
351
|
+
hasCheckbox && /* @__PURE__ */ React.createElement(Checkbox, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
|
|
352
|
+
/* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", null, title), /* @__PURE__ */ React.createElement("p", { className: "text-xs text-grey-80" }, description)),
|
|
353
|
+
/* @__PURE__ */ React.createElement(
|
|
354
|
+
import_lucide_react4.CheckIcon,
|
|
355
|
+
{
|
|
356
|
+
className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
|
|
357
|
+
size: 16
|
|
358
|
+
}
|
|
359
|
+
)
|
|
395
360
|
);
|
|
396
361
|
}
|
|
397
362
|
var ListItem_default = ListItem;
|
|
398
363
|
|
|
399
|
-
// src/components/ui/MapComponent.tsx
|
|
364
|
+
// src/components/ui/Map/MapComponent.tsx
|
|
365
|
+
var import_react_google_maps4 = require("@vis.gl/react-google-maps");
|
|
366
|
+
|
|
367
|
+
// src/components/ui/Map/constants.ts
|
|
368
|
+
var DEFAULT_POSITION = { lat: 40.715021, lng: -74.00459 };
|
|
369
|
+
var DEFAULT_ZOOM = 10;
|
|
370
|
+
var CLUSTER_DISTANCE_THRESHOLD = 1e-3;
|
|
371
|
+
var PIN_COLORS = {
|
|
372
|
+
background: "#0B5441",
|
|
373
|
+
borderColor: "#EBFDF1",
|
|
374
|
+
glyphColor: "#D4F500"
|
|
375
|
+
};
|
|
376
|
+
var FOCUS_CIRCLE_STYLES = {
|
|
377
|
+
strokeColor: "#0B5441",
|
|
378
|
+
strokeOpacity: 0.8,
|
|
379
|
+
strokeWeight: 2,
|
|
380
|
+
fillColor: "#0B5441",
|
|
381
|
+
fillOpacity: 0.1,
|
|
382
|
+
clickable: false,
|
|
383
|
+
zIndex: 1
|
|
384
|
+
};
|
|
385
|
+
var CLUSTERING_CONFIG = {
|
|
386
|
+
radius: 60,
|
|
387
|
+
maxZoom: 16,
|
|
388
|
+
minPoints: 2
|
|
389
|
+
};
|
|
390
|
+
|
|
391
|
+
// src/components/ui/Map/hooks.ts
|
|
392
|
+
var import_react4 = require("react");
|
|
393
|
+
var import_use_supercluster = __toESM(require("use-supercluster"), 1);
|
|
394
|
+
|
|
395
|
+
// src/components/ui/Map/utils.ts
|
|
396
|
+
function getCenterForCoordinates(coords) {
|
|
397
|
+
if (coords.length === 0) return DEFAULT_POSITION;
|
|
398
|
+
const avgLat = coords.reduce((sum, coord) => sum + coord.lat, 0) / coords.length;
|
|
399
|
+
const avgLng = coords.reduce((sum, coord) => sum + coord.lng, 0) / coords.length;
|
|
400
|
+
return { lat: avgLat, lng: avgLng };
|
|
401
|
+
}
|
|
402
|
+
function getZoomForCoordinates(coords, defaultZoom) {
|
|
403
|
+
if (coords.length <= 1) return defaultZoom;
|
|
404
|
+
const lats = coords.map((coord) => coord.lat);
|
|
405
|
+
const lngs = coords.map((coord) => coord.lng);
|
|
406
|
+
const latDiff = Math.max(...lats) - Math.min(...lats);
|
|
407
|
+
const lngDiff = Math.max(...lngs) - Math.min(...lngs);
|
|
408
|
+
const maxDiff = Math.max(latDiff, lngDiff);
|
|
409
|
+
if (maxDiff > 0.1) return 8;
|
|
410
|
+
if (maxDiff > 0.05) return 10;
|
|
411
|
+
if (maxDiff > 0.01) return 12;
|
|
412
|
+
return 14;
|
|
413
|
+
}
|
|
414
|
+
function filterClusterCoordinates(coordinates, clusterLat, clusterLng) {
|
|
415
|
+
return coordinates.filter((coord) => {
|
|
416
|
+
const latDiff = Math.abs(coord.lat - clusterLat);
|
|
417
|
+
const lngDiff = Math.abs(coord.lng - clusterLng);
|
|
418
|
+
const distance = Math.sqrt(latDiff * latDiff + lngDiff * lngDiff);
|
|
419
|
+
return distance < CLUSTER_DISTANCE_THRESHOLD;
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
// src/components/ui/Map/clustering.ts
|
|
424
|
+
function convertCoordinatesToGeoJSON(coordinates) {
|
|
425
|
+
return coordinates.map((coord, index) => ({
|
|
426
|
+
type: "Feature",
|
|
427
|
+
properties: {
|
|
428
|
+
cluster: false,
|
|
429
|
+
pointId: index,
|
|
430
|
+
data: coord.data
|
|
431
|
+
},
|
|
432
|
+
geometry: {
|
|
433
|
+
type: "Point",
|
|
434
|
+
coordinates: [coord.lng, coord.lat]
|
|
435
|
+
}
|
|
436
|
+
}));
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
// src/components/ui/Map/hooks.ts
|
|
440
|
+
function useMapBounds(_coordinates) {
|
|
441
|
+
const [bounds, setBounds] = (0, import_react4.useState)([
|
|
442
|
+
[-180, -85],
|
|
443
|
+
[180, 85]
|
|
444
|
+
]);
|
|
445
|
+
return { bounds, setBounds };
|
|
446
|
+
}
|
|
447
|
+
function useZoomLevel(initialZoom) {
|
|
448
|
+
const [zoomLevel, setZoomLevel] = (0, import_react4.useState)(initialZoom);
|
|
449
|
+
return { zoomLevel, setZoomLevel };
|
|
450
|
+
}
|
|
451
|
+
function useClusters(coordinates, bounds, zoomLevel) {
|
|
452
|
+
const points = (0, import_react4.useMemo)(() => {
|
|
453
|
+
if (!coordinates) return [];
|
|
454
|
+
return convertCoordinatesToGeoJSON(coordinates);
|
|
455
|
+
}, [coordinates]);
|
|
456
|
+
const { clusters, supercluster } = (0, import_use_supercluster.default)({
|
|
457
|
+
points,
|
|
458
|
+
bounds: [-180, -85, 180, 85],
|
|
459
|
+
// Use global bounds for consistency
|
|
460
|
+
zoom: zoomLevel || 10,
|
|
461
|
+
options: CLUSTERING_CONFIG
|
|
462
|
+
});
|
|
463
|
+
return { clusters, supercluster };
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
// src/components/ui/Map/MapContent.tsx
|
|
467
|
+
var import_react_google_maps3 = require("@vis.gl/react-google-maps");
|
|
468
|
+
var import_react6 = require("react");
|
|
469
|
+
|
|
470
|
+
// src/components/ui/Map/ClusterMarker.tsx
|
|
400
471
|
var import_react_google_maps = require("@vis.gl/react-google-maps");
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
472
|
+
function ClusterMarker({
|
|
473
|
+
cluster,
|
|
474
|
+
coordinates,
|
|
475
|
+
onPinClick,
|
|
476
|
+
onPinHover,
|
|
477
|
+
zoomToLevel,
|
|
478
|
+
supercluster
|
|
479
|
+
}) {
|
|
480
|
+
const [lng, lat] = cluster.geometry.coordinates;
|
|
481
|
+
const { point_count: pointCount } = cluster.properties;
|
|
482
|
+
const handleClick = () => {
|
|
483
|
+
const clusterCoordinates = filterClusterCoordinates(coordinates, lat, lng);
|
|
484
|
+
onPinClick?.(clusterCoordinates);
|
|
485
|
+
const expansionZoom = supercluster.getClusterExpansionZoom(cluster.id);
|
|
486
|
+
zoomToLevel(expansionZoom);
|
|
487
|
+
};
|
|
488
|
+
const handleMouseEnter = () => {
|
|
489
|
+
const clusterCoordinates = filterClusterCoordinates(coordinates, lat, lng);
|
|
490
|
+
onPinHover?.(clusterCoordinates);
|
|
491
|
+
};
|
|
492
|
+
const handleMouseLeave = () => onPinHover?.(null);
|
|
493
|
+
return /* @__PURE__ */ React.createElement(
|
|
494
|
+
import_react_google_maps.AdvancedMarker,
|
|
495
|
+
{
|
|
496
|
+
key: `cluster-${cluster.id}`,
|
|
497
|
+
position: { lat, lng },
|
|
498
|
+
onClick: handleClick,
|
|
499
|
+
onMouseEnter: handleMouseEnter,
|
|
500
|
+
onMouseLeave: handleMouseLeave
|
|
501
|
+
},
|
|
502
|
+
/* @__PURE__ */ React.createElement("div", { className: "relative flex items-center justify-center", id: "CLUSTER_MARKER" }, /* @__PURE__ */ React.createElement("div", { className: "flex h-8 w-8 items-center justify-center rounded-full border-2 border-white bg-red-500 text-sm font-bold text-white shadow-lg" }, pointCount || "?"))
|
|
503
|
+
);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
// src/components/ui/Map/FocusCircle.tsx
|
|
507
|
+
var import_react5 = require("react");
|
|
508
|
+
function FocusCircle({
|
|
509
|
+
focusPoint,
|
|
510
|
+
radiusMiles,
|
|
511
|
+
map,
|
|
512
|
+
mapsLibrary
|
|
513
|
+
}) {
|
|
514
|
+
const circleRef = (0, import_react5.useRef)(null);
|
|
515
|
+
const circleProps = (0, import_react5.useMemo)(() => {
|
|
516
|
+
if (!focusPoint || !radiusMiles) return null;
|
|
517
|
+
return {
|
|
518
|
+
center: focusPoint,
|
|
519
|
+
radius: radiusMiles * 1609.34
|
|
520
|
+
};
|
|
521
|
+
}, [focusPoint, radiusMiles]);
|
|
522
|
+
(0, import_react5.useEffect)(() => {
|
|
523
|
+
if (!map || !mapsLibrary || !circleProps) {
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
if (!circleRef.current) {
|
|
527
|
+
const circle = new google.maps.Circle({
|
|
528
|
+
center: circleProps.center,
|
|
529
|
+
radius: circleProps.radius,
|
|
530
|
+
...FOCUS_CIRCLE_STYLES,
|
|
531
|
+
map
|
|
532
|
+
});
|
|
533
|
+
circleRef.current = circle;
|
|
534
|
+
} else {
|
|
535
|
+
circleRef.current.setCenter(circleProps.center);
|
|
536
|
+
circleRef.current.setRadius(circleProps.radius);
|
|
537
|
+
}
|
|
538
|
+
}, [map, mapsLibrary, circleProps]);
|
|
539
|
+
(0, import_react5.useEffect)(() => {
|
|
540
|
+
return () => {
|
|
541
|
+
if (circleRef.current) {
|
|
542
|
+
circleRef.current.setMap(null);
|
|
543
|
+
circleRef.current = null;
|
|
544
|
+
}
|
|
545
|
+
};
|
|
546
|
+
}, []);
|
|
547
|
+
return null;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
// src/components/ui/Map/IndividualMarker.tsx
|
|
551
|
+
var import_react_google_maps2 = require("@vis.gl/react-google-maps");
|
|
552
|
+
function IndividualMarker({
|
|
553
|
+
coordinate,
|
|
554
|
+
onPinClick,
|
|
555
|
+
onPinHover
|
|
556
|
+
}) {
|
|
557
|
+
const handleMouseEnter = () => onPinHover?.(coordinate);
|
|
558
|
+
const handleMouseLeave = () => onPinHover?.(null);
|
|
559
|
+
const handleClick = () => onPinClick?.(coordinate);
|
|
560
|
+
return /* @__PURE__ */ React.createElement(
|
|
561
|
+
import_react_google_maps2.AdvancedMarker,
|
|
562
|
+
{
|
|
563
|
+
position: { lat: coordinate.lat, lng: coordinate.lng },
|
|
564
|
+
onMouseEnter: handleMouseEnter,
|
|
565
|
+
onMouseLeave: handleMouseLeave,
|
|
566
|
+
onClick: handleClick
|
|
567
|
+
},
|
|
568
|
+
/* @__PURE__ */ React.createElement(import_react_google_maps2.Pin, { ...PIN_COLORS })
|
|
569
|
+
);
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
// src/components/ui/Map/MapContent.tsx
|
|
573
|
+
function MapContent({
|
|
404
574
|
mapId,
|
|
575
|
+
mapCenter,
|
|
576
|
+
mapZoom,
|
|
405
577
|
position,
|
|
578
|
+
coordinates,
|
|
579
|
+
clusters,
|
|
580
|
+
supercluster,
|
|
581
|
+
onPinHover,
|
|
582
|
+
onPinClick,
|
|
583
|
+
focusPoint,
|
|
584
|
+
radiusMiles,
|
|
406
585
|
className,
|
|
407
|
-
|
|
586
|
+
setBounds,
|
|
587
|
+
setZoomLevel
|
|
408
588
|
}) {
|
|
409
|
-
const
|
|
410
|
-
const
|
|
411
|
-
|
|
412
|
-
|
|
589
|
+
const map = (0, import_react_google_maps3.useMap)();
|
|
590
|
+
const mapsLibrary = (0, import_react_google_maps3.useMapsLibrary)("maps");
|
|
591
|
+
const zoomToLevel = (0, import_react6.useCallback)(
|
|
592
|
+
(newZoom) => {
|
|
593
|
+
if (map) {
|
|
594
|
+
map.setZoom(newZoom);
|
|
595
|
+
}
|
|
596
|
+
},
|
|
597
|
+
[map]
|
|
598
|
+
);
|
|
599
|
+
const handleBoundsChanged = (e) => {
|
|
600
|
+
if (e.detail.bounds) {
|
|
601
|
+
const bounds = e.detail.bounds;
|
|
602
|
+
setBounds([
|
|
603
|
+
[bounds.south, bounds.west],
|
|
604
|
+
[bounds.north, bounds.east]
|
|
605
|
+
]);
|
|
606
|
+
}
|
|
607
|
+
};
|
|
608
|
+
const handleZoomChanged = (e) => {
|
|
609
|
+
if (e.detail.zoom) {
|
|
610
|
+
setZoomLevel(e.detail.zoom);
|
|
611
|
+
}
|
|
612
|
+
};
|
|
613
|
+
const handleCameraChanged = (e) => {
|
|
614
|
+
if (e.detail.zoom) {
|
|
615
|
+
setZoomLevel(e.detail.zoom);
|
|
616
|
+
}
|
|
617
|
+
};
|
|
618
|
+
return /* @__PURE__ */ React.createElement("div", { className: cn("relative h-screen max-w-full", className) }, /* @__PURE__ */ React.createElement(
|
|
619
|
+
import_react_google_maps3.Map,
|
|
413
620
|
{
|
|
414
|
-
defaultZoom:
|
|
415
|
-
|
|
621
|
+
defaultZoom: mapZoom,
|
|
622
|
+
defaultCenter: mapCenter,
|
|
416
623
|
mapId,
|
|
417
|
-
keyboardShortcuts:
|
|
624
|
+
keyboardShortcuts: true,
|
|
418
625
|
disableDefaultUI: true,
|
|
419
626
|
zoomControl: true,
|
|
420
|
-
|
|
627
|
+
onBoundsChanged: handleBoundsChanged,
|
|
628
|
+
onZoomChanged: handleZoomChanged,
|
|
629
|
+
onCameraChanged: handleCameraChanged
|
|
630
|
+
},
|
|
631
|
+
position && !coordinates && /* @__PURE__ */ React.createElement(import_react_google_maps3.AdvancedMarker, { position }, /* @__PURE__ */ React.createElement(import_react_google_maps3.Pin, { ...PIN_COLORS })),
|
|
632
|
+
coordinates && clusters.map((cluster) => {
|
|
633
|
+
const { cluster: isCluster } = cluster.properties;
|
|
634
|
+
if (isCluster) {
|
|
635
|
+
return /* @__PURE__ */ React.createElement(
|
|
636
|
+
ClusterMarker,
|
|
637
|
+
{
|
|
638
|
+
key: `cluster-${cluster.id}`,
|
|
639
|
+
cluster,
|
|
640
|
+
coordinates,
|
|
641
|
+
onPinClick,
|
|
642
|
+
onPinHover,
|
|
643
|
+
zoomToLevel,
|
|
644
|
+
supercluster
|
|
645
|
+
}
|
|
646
|
+
);
|
|
647
|
+
}
|
|
648
|
+
const originalPoint = coordinates[cluster.properties.pointId];
|
|
649
|
+
return /* @__PURE__ */ React.createElement(
|
|
650
|
+
IndividualMarker,
|
|
651
|
+
{
|
|
652
|
+
key: `marker-${cluster.properties.pointId}`,
|
|
653
|
+
coordinate: originalPoint,
|
|
654
|
+
onPinClick,
|
|
655
|
+
onPinHover
|
|
656
|
+
}
|
|
657
|
+
);
|
|
658
|
+
}),
|
|
659
|
+
coordinates && clusters.length === 0 && coordinates.map((coord, index) => /* @__PURE__ */ React.createElement(
|
|
660
|
+
IndividualMarker,
|
|
661
|
+
{
|
|
662
|
+
key: `fallback-${index}`,
|
|
663
|
+
coordinate: coord,
|
|
664
|
+
onPinClick,
|
|
665
|
+
onPinHover
|
|
666
|
+
}
|
|
667
|
+
)),
|
|
668
|
+
focusPoint && radiusMiles && /* @__PURE__ */ React.createElement(
|
|
669
|
+
FocusCircle,
|
|
670
|
+
{
|
|
671
|
+
focusPoint,
|
|
672
|
+
radiusMiles,
|
|
673
|
+
map,
|
|
674
|
+
mapsLibrary
|
|
675
|
+
}
|
|
676
|
+
)
|
|
677
|
+
));
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
// src/components/ui/Map/MapComponent.tsx
|
|
681
|
+
function MapComponent({
|
|
682
|
+
apiKey,
|
|
683
|
+
mapId,
|
|
684
|
+
position,
|
|
685
|
+
coordinates,
|
|
686
|
+
onPinHover,
|
|
687
|
+
onPinClick,
|
|
688
|
+
focusPoint,
|
|
689
|
+
radiusMiles,
|
|
690
|
+
className,
|
|
691
|
+
zoom = 10
|
|
692
|
+
}) {
|
|
693
|
+
const { bounds, setBounds } = useMapBounds(coordinates);
|
|
694
|
+
const { zoomLevel, setZoomLevel } = useZoomLevel(zoom || DEFAULT_ZOOM);
|
|
695
|
+
const { clusters, supercluster } = useClusters(coordinates, bounds, zoomLevel);
|
|
696
|
+
const mapCenter = coordinates && coordinates.length > 0 ? getCenterForCoordinates(coordinates) : position || DEFAULT_POSITION;
|
|
697
|
+
const mapZoom = coordinates && coordinates.length > 1 ? getZoomForCoordinates(coordinates, zoom) : position ? zoom : DEFAULT_ZOOM;
|
|
698
|
+
return /* @__PURE__ */ React.createElement(import_react_google_maps4.APIProvider, { apiKey }, /* @__PURE__ */ React.createElement(
|
|
699
|
+
MapContent,
|
|
700
|
+
{
|
|
701
|
+
mapId,
|
|
702
|
+
mapCenter,
|
|
703
|
+
mapZoom,
|
|
704
|
+
position,
|
|
705
|
+
coordinates,
|
|
706
|
+
clusters,
|
|
707
|
+
supercluster,
|
|
708
|
+
onPinHover,
|
|
709
|
+
onPinClick,
|
|
710
|
+
focusPoint,
|
|
711
|
+
radiusMiles,
|
|
712
|
+
className,
|
|
713
|
+
setBounds,
|
|
714
|
+
setZoomLevel
|
|
421
715
|
}
|
|
422
|
-
)
|
|
716
|
+
));
|
|
423
717
|
}
|
|
424
|
-
var MapComponent_default = MapComponent;
|
|
425
718
|
|
|
426
719
|
// src/components/ui/PlacesQueryInput.tsx
|
|
427
720
|
var import_lucide_react8 = require("lucide-react");
|
|
428
|
-
var
|
|
721
|
+
var import_react7 = require("react");
|
|
429
722
|
|
|
430
723
|
// src/components/primitives/command.tsx
|
|
431
724
|
var import_cmdk = require("cmdk");
|
|
432
725
|
var import_lucide_react7 = require("lucide-react");
|
|
433
|
-
var
|
|
726
|
+
var React5 = __toESM(require("react"), 1);
|
|
434
727
|
|
|
435
728
|
// src/components/primitives/dialog.tsx
|
|
436
729
|
var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
437
730
|
var import_lucide_react6 = require("lucide-react");
|
|
438
|
-
var
|
|
439
|
-
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
731
|
+
var React4 = __toESM(require("react"), 1);
|
|
440
732
|
var DialogPortal = DialogPrimitive.Portal;
|
|
441
|
-
var DialogOverlay =
|
|
733
|
+
var DialogOverlay = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React4.createElement(
|
|
442
734
|
DialogPrimitive.Overlay,
|
|
443
735
|
{
|
|
444
736
|
ref,
|
|
@@ -450,31 +742,23 @@ var DialogOverlay = React2.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
450
742
|
}
|
|
451
743
|
));
|
|
452
744
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
453
|
-
var DialogContent =
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
className
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-neutral-950 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-neutral-100 data-[state=open]:text-neutral-500 dark:ring-offset-neutral-950 dark:focus:ring-neutral-300 dark:data-[state=open]:bg-neutral-800 dark:data-[state=open]:text-neutral-400", children: [
|
|
467
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react6.X, { className: "h-4 w-4" }),
|
|
468
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "sr-only", children: "Close" })
|
|
469
|
-
] })
|
|
470
|
-
]
|
|
471
|
-
}
|
|
472
|
-
)
|
|
473
|
-
] }));
|
|
745
|
+
var DialogContent = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React4.createElement(DialogPortal, null, /* @__PURE__ */ React4.createElement(DialogOverlay, null), /* @__PURE__ */ React4.createElement(
|
|
746
|
+
DialogPrimitive.Content,
|
|
747
|
+
{
|
|
748
|
+
ref,
|
|
749
|
+
className: cn(
|
|
750
|
+
"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-neutral-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] dark:border-neutral-800 dark:bg-neutral-950 sm:rounded-lg",
|
|
751
|
+
className
|
|
752
|
+
),
|
|
753
|
+
...props
|
|
754
|
+
},
|
|
755
|
+
children,
|
|
756
|
+
/* @__PURE__ */ React4.createElement(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-neutral-950 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-neutral-100 data-[state=open]:text-neutral-500 dark:ring-offset-neutral-950 dark:focus:ring-neutral-300 dark:data-[state=open]:bg-neutral-800 dark:data-[state=open]:text-neutral-400" }, /* @__PURE__ */ React4.createElement(import_lucide_react6.X, { className: "h-4 w-4" }), /* @__PURE__ */ React4.createElement("span", { className: "sr-only" }, "Close"))
|
|
757
|
+
)));
|
|
474
758
|
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
475
|
-
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */
|
|
759
|
+
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ React4.createElement("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props });
|
|
476
760
|
DialogHeader.displayName = "DialogHeader";
|
|
477
|
-
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */
|
|
761
|
+
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ React4.createElement(
|
|
478
762
|
"div",
|
|
479
763
|
{
|
|
480
764
|
className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className),
|
|
@@ -482,7 +766,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_r
|
|
|
482
766
|
}
|
|
483
767
|
);
|
|
484
768
|
DialogFooter.displayName = "DialogFooter";
|
|
485
|
-
var DialogTitle =
|
|
769
|
+
var DialogTitle = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React4.createElement(
|
|
486
770
|
DialogPrimitive.Title,
|
|
487
771
|
{
|
|
488
772
|
ref,
|
|
@@ -491,7 +775,7 @@ var DialogTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
491
775
|
}
|
|
492
776
|
));
|
|
493
777
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
494
|
-
var DialogDescription =
|
|
778
|
+
var DialogDescription = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React4.createElement(
|
|
495
779
|
DialogPrimitive.Description,
|
|
496
780
|
{
|
|
497
781
|
ref,
|
|
@@ -502,8 +786,7 @@ var DialogDescription = React2.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
502
786
|
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
503
787
|
|
|
504
788
|
// src/components/primitives/command.tsx
|
|
505
|
-
var
|
|
506
|
-
var Command = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
789
|
+
var Command = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
|
|
507
790
|
import_cmdk.Command,
|
|
508
791
|
{
|
|
509
792
|
ref,
|
|
@@ -515,22 +798,19 @@ var Command = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
|
|
|
515
798
|
}
|
|
516
799
|
));
|
|
517
800
|
Command.displayName = import_cmdk.Command.displayName;
|
|
518
|
-
var CommandInput =
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
className
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
}
|
|
530
|
-
)
|
|
531
|
-
] }));
|
|
801
|
+
var CommandInput = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement("div", { className: "m-1 flex items-center rounded-xl border px-3", "cmdk-input-wrapper": "" }, /* @__PURE__ */ React5.createElement(import_lucide_react7.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }), /* @__PURE__ */ React5.createElement(
|
|
802
|
+
import_cmdk.Command.Input,
|
|
803
|
+
{
|
|
804
|
+
ref,
|
|
805
|
+
className: cn(
|
|
806
|
+
"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-neutral-500 disabled:cursor-not-allowed disabled:opacity-50",
|
|
807
|
+
className
|
|
808
|
+
),
|
|
809
|
+
...props
|
|
810
|
+
}
|
|
811
|
+
)));
|
|
532
812
|
CommandInput.displayName = import_cmdk.Command.Input.displayName;
|
|
533
|
-
var CommandList =
|
|
813
|
+
var CommandList = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
|
|
534
814
|
import_cmdk.Command.List,
|
|
535
815
|
{
|
|
536
816
|
ref,
|
|
@@ -539,9 +819,9 @@ var CommandList = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
539
819
|
}
|
|
540
820
|
));
|
|
541
821
|
CommandList.displayName = import_cmdk.Command.List.displayName;
|
|
542
|
-
var CommandEmpty =
|
|
822
|
+
var CommandEmpty = React5.forwardRef((props, ref) => /* @__PURE__ */ React5.createElement(import_cmdk.Command.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
|
|
543
823
|
CommandEmpty.displayName = import_cmdk.Command.Empty.displayName;
|
|
544
|
-
var CommandGroup =
|
|
824
|
+
var CommandGroup = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
|
|
545
825
|
import_cmdk.Command.Group,
|
|
546
826
|
{
|
|
547
827
|
ref,
|
|
@@ -553,7 +833,7 @@ var CommandGroup = React3.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
553
833
|
}
|
|
554
834
|
));
|
|
555
835
|
CommandGroup.displayName = import_cmdk.Command.Group.displayName;
|
|
556
|
-
var CommandSeparator =
|
|
836
|
+
var CommandSeparator = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
|
|
557
837
|
import_cmdk.Command.Separator,
|
|
558
838
|
{
|
|
559
839
|
ref,
|
|
@@ -562,7 +842,7 @@ var CommandSeparator = React3.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
562
842
|
}
|
|
563
843
|
));
|
|
564
844
|
CommandSeparator.displayName = import_cmdk.Command.Separator.displayName;
|
|
565
|
-
var CommandItem =
|
|
845
|
+
var CommandItem = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
|
|
566
846
|
import_cmdk.Command.Item,
|
|
567
847
|
{
|
|
568
848
|
ref,
|
|
@@ -575,7 +855,7 @@ var CommandItem = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
575
855
|
));
|
|
576
856
|
CommandItem.displayName = import_cmdk.Command.Item.displayName;
|
|
577
857
|
var CommandShortcut = ({ className, ...props }) => {
|
|
578
|
-
return /* @__PURE__ */
|
|
858
|
+
return /* @__PURE__ */ React5.createElement(
|
|
579
859
|
"span",
|
|
580
860
|
{
|
|
581
861
|
className: cn("ml-auto text-xs tracking-widest text-neutral-500", className),
|
|
@@ -636,20 +916,19 @@ var geocode = async (address, key) => {
|
|
|
636
916
|
};
|
|
637
917
|
|
|
638
918
|
// src/components/ui/PlacesQueryInput.tsx
|
|
639
|
-
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
640
919
|
function PlacesQueryInput({
|
|
641
920
|
apiKey,
|
|
642
921
|
selected,
|
|
643
922
|
onSelect,
|
|
644
923
|
className
|
|
645
924
|
}) {
|
|
646
|
-
const [predictions, setPredictions] = (0,
|
|
647
|
-
const [input, setInput] = (0,
|
|
648
|
-
const [isLoadingPredictions, setIsLoadingPredictions] = (0,
|
|
649
|
-
const [shouldOpenUpward, setShouldOpenUpward] = (0,
|
|
650
|
-
const timeoutRef = (0,
|
|
651
|
-
const inputRef = (0,
|
|
652
|
-
const debouncedAutocomplete = (0,
|
|
925
|
+
const [predictions, setPredictions] = (0, import_react7.useState)(null);
|
|
926
|
+
const [input, setInput] = (0, import_react7.useState)(selected?.description ?? "");
|
|
927
|
+
const [isLoadingPredictions, setIsLoadingPredictions] = (0, import_react7.useState)(false);
|
|
928
|
+
const [shouldOpenUpward, setShouldOpenUpward] = (0, import_react7.useState)(false);
|
|
929
|
+
const timeoutRef = (0, import_react7.useRef)(null);
|
|
930
|
+
const inputRef = (0, import_react7.useRef)(null);
|
|
931
|
+
const debouncedAutocomplete = (0, import_react7.useCallback)((value) => {
|
|
653
932
|
if (timeoutRef.current) {
|
|
654
933
|
clearTimeout(timeoutRef.current);
|
|
655
934
|
}
|
|
@@ -685,7 +964,7 @@ function PlacesQueryInput({
|
|
|
685
964
|
setInput("");
|
|
686
965
|
};
|
|
687
966
|
const handleBlur = () => setTimeout(() => setPredictions(null), 200);
|
|
688
|
-
(0,
|
|
967
|
+
(0, import_react7.useEffect)(() => {
|
|
689
968
|
const checkDropdownPosition = () => {
|
|
690
969
|
if (inputRef.current) {
|
|
691
970
|
const rect = inputRef.current.getBoundingClientRect();
|
|
@@ -697,63 +976,53 @@ function PlacesQueryInput({
|
|
|
697
976
|
window.addEventListener("resize", checkDropdownPosition);
|
|
698
977
|
return () => window.removeEventListener("resize", checkDropdownPosition);
|
|
699
978
|
}, []);
|
|
700
|
-
return /* @__PURE__ */
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
979
|
+
return /* @__PURE__ */ React.createElement("div", { className: cn("relative w-full", className), ref: inputRef, onBlur: handleBlur }, /* @__PURE__ */ React.createElement(Command, null, /* @__PURE__ */ React.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ React.createElement(
|
|
980
|
+
CommandInput,
|
|
981
|
+
{
|
|
982
|
+
placeholder: "Type an address to search...",
|
|
983
|
+
value: input,
|
|
984
|
+
onValueChange: handleInputChange,
|
|
985
|
+
className: "truncate pr-8"
|
|
986
|
+
}
|
|
987
|
+
), isLoadingPredictions && /* @__PURE__ */ React.createElement(import_lucide_react8.LoaderCircle, { className: "absolute inset-y-0 right-2 my-auto flex h-8 w-8 animate-spin items-center justify-center rounded-full text-green-100" }), input && /* @__PURE__ */ React.createElement(
|
|
988
|
+
"button",
|
|
989
|
+
{
|
|
990
|
+
type: "button",
|
|
991
|
+
className: "absolute inset-y-0 right-2 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20",
|
|
992
|
+
onClick: handleClear
|
|
993
|
+
},
|
|
994
|
+
/* @__PURE__ */ React.createElement(import_lucide_react8.CircleX, { className: "h-4 w-4 text-green-100" })
|
|
995
|
+
)), predictions && /* @__PURE__ */ React.createElement(
|
|
996
|
+
CommandList,
|
|
997
|
+
{
|
|
998
|
+
className: cn(
|
|
999
|
+
"absolute z-50 w-full rounded-md border bg-white shadow-lg",
|
|
1000
|
+
shouldOpenUpward ? "bottom-full" : "top-full"
|
|
720
1001
|
)
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
1002
|
+
},
|
|
1003
|
+
/* @__PURE__ */ React.createElement(CommandEmpty, null, "No results"),
|
|
1004
|
+
/* @__PURE__ */ React.createElement(CommandGroup, null, predictions.map((prediction) => /* @__PURE__ */ React.createElement(
|
|
1005
|
+
CommandItem,
|
|
724
1006
|
{
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
CommandItem,
|
|
733
|
-
{
|
|
734
|
-
onSelect: () => handleSelect(prediction),
|
|
735
|
-
className: "truncate",
|
|
736
|
-
children: prediction.description
|
|
737
|
-
},
|
|
738
|
-
prediction.place_id
|
|
739
|
-
)) })
|
|
740
|
-
]
|
|
741
|
-
}
|
|
742
|
-
)
|
|
743
|
-
] }) });
|
|
1007
|
+
key: prediction.place_id,
|
|
1008
|
+
onSelect: () => handleSelect(prediction),
|
|
1009
|
+
className: "truncate"
|
|
1010
|
+
},
|
|
1011
|
+
prediction.description
|
|
1012
|
+
)))
|
|
1013
|
+
)));
|
|
744
1014
|
}
|
|
745
1015
|
var PlacesQueryInput_default = PlacesQueryInput;
|
|
746
1016
|
|
|
747
1017
|
// src/components/ui/Select.tsx
|
|
748
1018
|
var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
|
|
749
1019
|
var import_lucide_react9 = require("lucide-react");
|
|
750
|
-
var
|
|
1020
|
+
var import_react8 = require("react");
|
|
751
1021
|
|
|
752
1022
|
// src/components/primitives/separator.tsx
|
|
753
1023
|
var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
|
|
754
|
-
var
|
|
755
|
-
var
|
|
756
|
-
var Separator = React4.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1024
|
+
var React6 = __toESM(require("react"), 1);
|
|
1025
|
+
var Separator = React6.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ React6.createElement(
|
|
757
1026
|
SeparatorPrimitive.Root,
|
|
758
1027
|
{
|
|
759
1028
|
ref,
|
|
@@ -770,8 +1039,7 @@ var Separator = React4.forwardRef(({ className, orientation = "horizontal", deco
|
|
|
770
1039
|
Separator.displayName = SeparatorPrimitive.Root.displayName;
|
|
771
1040
|
|
|
772
1041
|
// src/components/ui/Select.tsx
|
|
773
|
-
var
|
|
774
|
-
var Select = (0, import_react4.forwardRef)(
|
|
1042
|
+
var Select = (0, import_react8.forwardRef)(
|
|
775
1043
|
({
|
|
776
1044
|
label,
|
|
777
1045
|
options,
|
|
@@ -786,10 +1054,10 @@ var Select = (0, import_react4.forwardRef)(
|
|
|
786
1054
|
...props
|
|
787
1055
|
}, ref) => {
|
|
788
1056
|
const { value, defaultValue, dir, className, onChange, ...rest } = props;
|
|
789
|
-
const [selected, setSelected] = (0,
|
|
790
|
-
const [open, setOpen] = (0,
|
|
791
|
-
const containerRef = (0,
|
|
792
|
-
(0,
|
|
1057
|
+
const [selected, setSelected] = (0, import_react8.useState)([]);
|
|
1058
|
+
const [open, setOpen] = (0, import_react8.useState)(false);
|
|
1059
|
+
const containerRef = (0, import_react8.useRef)(null);
|
|
1060
|
+
(0, import_react8.useEffect)(() => {
|
|
793
1061
|
if (!value) return setSelected([]);
|
|
794
1062
|
setSelected(Array.isArray(value) ? value : [value]);
|
|
795
1063
|
}, [value]);
|
|
@@ -808,148 +1076,127 @@ var Select = (0, import_react4.forwardRef)(
|
|
|
808
1076
|
});
|
|
809
1077
|
onChange?.(multiselect ? newSelected : newValue);
|
|
810
1078
|
}
|
|
811
|
-
return /* @__PURE__ */
|
|
1079
|
+
return /* @__PURE__ */ React.createElement(
|
|
812
1080
|
"div",
|
|
813
1081
|
{
|
|
814
1082
|
className: cn("flex w-full flex-col gap-1", className),
|
|
815
1083
|
ref: containerRef,
|
|
816
|
-
"data-testid": `${(label ?? id)?.toLowerCase()}-select-element
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
1084
|
+
"data-testid": `${(label ?? id)?.toLowerCase()}-select-element`
|
|
1085
|
+
},
|
|
1086
|
+
/* @__PURE__ */ React.createElement(
|
|
1087
|
+
Label_default,
|
|
1088
|
+
{
|
|
1089
|
+
text: label,
|
|
1090
|
+
htmlFor: props.name,
|
|
1091
|
+
required: props.required,
|
|
1092
|
+
description,
|
|
1093
|
+
className: classNames?.label
|
|
1094
|
+
}
|
|
1095
|
+
),
|
|
1096
|
+
/* @__PURE__ */ React.createElement(
|
|
1097
|
+
SelectPrimitive.Root,
|
|
1098
|
+
{
|
|
1099
|
+
open,
|
|
1100
|
+
value: selected.join(","),
|
|
1101
|
+
onOpenChange: handleOnOpenChange,
|
|
1102
|
+
onValueChange: multiselect ? void 0 : handleChange,
|
|
1103
|
+
defaultValue: typeof defaultValue === "string" ? defaultValue : void 0,
|
|
1104
|
+
dir: dir === "rtl" ? "rtl" : "ltr",
|
|
1105
|
+
...rest
|
|
1106
|
+
},
|
|
1107
|
+
/* @__PURE__ */ React.createElement(
|
|
1108
|
+
SelectPrimitive.Trigger,
|
|
1109
|
+
{
|
|
1110
|
+
ref,
|
|
1111
|
+
className: cn(
|
|
1112
|
+
"group flex h-11 w-full flex-row items-center justify-between gap-3 rounded-lg border px-4 py-3 text-sm font-normal focus:outline-purple-100 disabled:bg-grey-5 data-[placeholder]:text-grey-50 data-[placeholder]:disabled:text-grey-40",
|
|
1113
|
+
classNames?.trigger
|
|
1114
|
+
)
|
|
1115
|
+
},
|
|
1116
|
+
/* @__PURE__ */ React.createElement("span", { className: "truncate" }, /* @__PURE__ */ React.createElement(
|
|
1117
|
+
SelectPrimitive.Value,
|
|
1118
|
+
{
|
|
1119
|
+
placeholder: placeholder ?? "Select an option",
|
|
1120
|
+
"aria-label": getLabel()
|
|
1121
|
+
},
|
|
1122
|
+
getLabel()
|
|
1123
|
+
)),
|
|
1124
|
+
/* @__PURE__ */ React.createElement(
|
|
1125
|
+
import_lucide_react9.ChevronDownIcon,
|
|
820
1126
|
{
|
|
821
|
-
text:
|
|
822
|
-
|
|
823
|
-
required: props.required,
|
|
824
|
-
description,
|
|
825
|
-
className: classNames?.label
|
|
1127
|
+
className: "transform text-black group-data-[state=open]:rotate-180",
|
|
1128
|
+
size: "16"
|
|
826
1129
|
}
|
|
827
|
-
)
|
|
828
|
-
|
|
829
|
-
|
|
1130
|
+
)
|
|
1131
|
+
),
|
|
1132
|
+
/* @__PURE__ */ React.createElement(SelectPrimitive.Portal, { container: containerRef.current }, /* @__PURE__ */ React.createElement(
|
|
1133
|
+
SelectPrimitive.Content,
|
|
1134
|
+
{
|
|
1135
|
+
hideWhenDetached: true,
|
|
1136
|
+
className: cn(
|
|
1137
|
+
"z-10 max-h-[var(--radix-select-content-available-height)] overflow-hidden rounded-md bg-white py-2 shadow-lg",
|
|
1138
|
+
"w-[var(--radix-select-trigger-width)] min-w-[var(--radix-select-trigger-width)]",
|
|
1139
|
+
classNames?.content
|
|
1140
|
+
),
|
|
1141
|
+
position: "popper",
|
|
1142
|
+
align: dropdownAlign,
|
|
1143
|
+
sideOffset: 4,
|
|
1144
|
+
onPointerDownOutside: toggleOpen,
|
|
1145
|
+
onKeyDown: closeOnEscape
|
|
1146
|
+
},
|
|
1147
|
+
/* @__PURE__ */ React.createElement(SelectPrimitive.Viewport, null, multiselect && !!chipLabels?.length && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
1148
|
+
SelectPrimitive.Group,
|
|
830
1149
|
{
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
}
|
|
1150
|
+
className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
|
|
1151
|
+
"data-testid": "selected-labels"
|
|
1152
|
+
},
|
|
1153
|
+
chipLabels?.map(
|
|
1154
|
+
(chip) => chip && /* @__PURE__ */ React.createElement(Chip_default, { key: chip.title, size: "small", variant: "primary" }, /* @__PURE__ */ React.createElement("span", null, chip.title), /* @__PURE__ */ React.createElement(
|
|
1155
|
+
import_lucide_react9.X,
|
|
1156
|
+
{
|
|
1157
|
+
size: 18,
|
|
1158
|
+
"data-testid": `chip-remove-${chip.value}`,
|
|
1159
|
+
className: "cursor-pointer",
|
|
1160
|
+
onClick: () => handleChange(chip.value)
|
|
1161
|
+
}
|
|
1162
|
+
))
|
|
1163
|
+
)
|
|
1164
|
+
), /* @__PURE__ */ React.createElement(Separator, null)), options?.map(({ id: id2, title, value: value2, description: description2 }) => /* @__PURE__ */ React.createElement(
|
|
1165
|
+
SelectPrimitive.Item,
|
|
1166
|
+
{
|
|
1167
|
+
key: id2,
|
|
1168
|
+
value: value2,
|
|
1169
|
+
className: cn(
|
|
1170
|
+
"group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100",
|
|
1171
|
+
classNames?.item
|
|
1172
|
+
),
|
|
1173
|
+
"data-state": selected.includes(value2) ? "checked" : "unchecked",
|
|
1174
|
+
onKeyDown: (e) => setValueOnEnter(e, value2),
|
|
1175
|
+
onClick: () => handleChange(value2)
|
|
1176
|
+
},
|
|
1177
|
+
/* @__PURE__ */ React.createElement(
|
|
1178
|
+
import_lucide_react9.CheckIcon,
|
|
1179
|
+
{
|
|
1180
|
+
className: cn(
|
|
1181
|
+
"absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
|
|
1182
|
+
classNames?.checkmark
|
|
865
1183
|
),
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
883
|
-
SelectPrimitive.Group,
|
|
884
|
-
{
|
|
885
|
-
className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
|
|
886
|
-
"data-testid": "selected-labels",
|
|
887
|
-
children: chipLabels?.map(
|
|
888
|
-
(chip) => chip && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Chip_default, { size: "small", variant: "primary", children: [
|
|
889
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: chip.title }),
|
|
890
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
891
|
-
import_lucide_react9.X,
|
|
892
|
-
{
|
|
893
|
-
size: 18,
|
|
894
|
-
"data-testid": `chip-remove-${chip.value}`,
|
|
895
|
-
className: "cursor-pointer",
|
|
896
|
-
onClick: () => handleChange(chip.value)
|
|
897
|
-
}
|
|
898
|
-
)
|
|
899
|
-
] }, chip.title)
|
|
900
|
-
)
|
|
901
|
-
}
|
|
902
|
-
),
|
|
903
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Separator, {})
|
|
904
|
-
] }),
|
|
905
|
-
options?.map(({ id: id2, title, value: value2, description: description2 }) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
906
|
-
SelectPrimitive.Item,
|
|
907
|
-
{
|
|
908
|
-
value: value2,
|
|
909
|
-
className: cn(
|
|
910
|
-
"group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100",
|
|
911
|
-
classNames?.item
|
|
912
|
-
),
|
|
913
|
-
"data-state": selected.includes(value2) ? "checked" : "unchecked",
|
|
914
|
-
onKeyDown: (e) => setValueOnEnter(e, value2),
|
|
915
|
-
onClick: () => handleChange(value2),
|
|
916
|
-
children: [
|
|
917
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
918
|
-
import_lucide_react9.CheckIcon,
|
|
919
|
-
{
|
|
920
|
-
className: cn(
|
|
921
|
-
"absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
|
|
922
|
-
classNames?.checkmark
|
|
923
|
-
),
|
|
924
|
-
size: 16
|
|
925
|
-
}
|
|
926
|
-
),
|
|
927
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectPrimitive.ItemText, { children: title }),
|
|
928
|
-
description2 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "block text-sm text-grey-70", children: description2 })
|
|
929
|
-
]
|
|
930
|
-
},
|
|
931
|
-
id2
|
|
932
|
-
)),
|
|
933
|
-
!!footer && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
|
|
934
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Separator, {}),
|
|
935
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
936
|
-
SelectPrimitive.Group,
|
|
937
|
-
{
|
|
938
|
-
className: "mt-2 flex flex-row flex-wrap gap-1 px-2",
|
|
939
|
-
"data-testid": "selected-labels",
|
|
940
|
-
children: footer
|
|
941
|
-
}
|
|
942
|
-
)
|
|
943
|
-
] })
|
|
944
|
-
] })
|
|
945
|
-
}
|
|
946
|
-
) })
|
|
947
|
-
]
|
|
948
|
-
}
|
|
949
|
-
),
|
|
950
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ErrorMessage_default, { message: error })
|
|
951
|
-
]
|
|
952
|
-
}
|
|
1184
|
+
size: 16
|
|
1185
|
+
}
|
|
1186
|
+
),
|
|
1187
|
+
/* @__PURE__ */ React.createElement(SelectPrimitive.ItemText, null, title),
|
|
1188
|
+
description2 && /* @__PURE__ */ React.createElement("span", { className: "block text-sm text-grey-70" }, description2)
|
|
1189
|
+
)), !!footer && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Separator, null), /* @__PURE__ */ React.createElement(
|
|
1190
|
+
SelectPrimitive.Group,
|
|
1191
|
+
{
|
|
1192
|
+
className: "mt-2 flex flex-row flex-wrap gap-1 px-2",
|
|
1193
|
+
"data-testid": "selected-labels"
|
|
1194
|
+
},
|
|
1195
|
+
footer
|
|
1196
|
+
)))
|
|
1197
|
+
))
|
|
1198
|
+
),
|
|
1199
|
+
/* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error })
|
|
953
1200
|
);
|
|
954
1201
|
}
|
|
955
1202
|
);
|
|
@@ -962,9 +1209,8 @@ var import_link = __toESM(require("next/link"), 1);
|
|
|
962
1209
|
|
|
963
1210
|
// src/components/primitives/avatar.tsx
|
|
964
1211
|
var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"), 1);
|
|
965
|
-
var
|
|
966
|
-
var
|
|
967
|
-
var AvatarBase = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1212
|
+
var React7 = __toESM(require("react"), 1);
|
|
1213
|
+
var AvatarBase = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React7.createElement(
|
|
968
1214
|
AvatarPrimitive.Root,
|
|
969
1215
|
{
|
|
970
1216
|
ref,
|
|
@@ -973,7 +1219,7 @@ var AvatarBase = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
973
1219
|
}
|
|
974
1220
|
));
|
|
975
1221
|
AvatarBase.displayName = AvatarPrimitive.Root.displayName;
|
|
976
|
-
var AvatarImage =
|
|
1222
|
+
var AvatarImage = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React7.createElement(
|
|
977
1223
|
AvatarPrimitive.Image,
|
|
978
1224
|
{
|
|
979
1225
|
ref,
|
|
@@ -983,7 +1229,7 @@ var AvatarImage = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
983
1229
|
}
|
|
984
1230
|
));
|
|
985
1231
|
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
986
|
-
var AvatarFallback =
|
|
1232
|
+
var AvatarFallback = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React7.createElement(
|
|
987
1233
|
AvatarPrimitive.Fallback,
|
|
988
1234
|
{
|
|
989
1235
|
ref,
|
|
@@ -997,17 +1243,13 @@ var AvatarFallback = React5.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
997
1243
|
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
998
1244
|
|
|
999
1245
|
// src/components/ui/Avatar.tsx
|
|
1000
|
-
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1001
1246
|
function Avatar({ size, src, href, name, ...linkProps }) {
|
|
1002
1247
|
const fallbackShort = name?.slice(0, 2);
|
|
1003
1248
|
const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
|
|
1004
1249
|
const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
|
|
1005
|
-
const renderAvatar = () => /* @__PURE__ */
|
|
1006
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(AvatarImage, { src, alt: name }),
|
|
1007
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(AvatarFallback, { children: fallback?.toUpperCase() })
|
|
1008
|
-
] });
|
|
1250
|
+
const renderAvatar = () => /* @__PURE__ */ React.createElement(AvatarBase, { className: avatarVariants({ size }) }, /* @__PURE__ */ React.createElement(AvatarImage, { src, alt: name }), /* @__PURE__ */ React.createElement(AvatarFallback, null, fallback?.toUpperCase()));
|
|
1009
1251
|
if (href) {
|
|
1010
|
-
return /* @__PURE__ */
|
|
1252
|
+
return /* @__PURE__ */ React.createElement(import_link.default, { href, ...linkProps }, renderAvatar());
|
|
1011
1253
|
}
|
|
1012
1254
|
return renderAvatar();
|
|
1013
1255
|
}
|
|
@@ -1026,7 +1268,7 @@ var avatarVariants = (0, import_cva3.cva)("ring ring-white ring-2", {
|
|
|
1026
1268
|
|
|
1027
1269
|
// src/components/ui/Badge.tsx
|
|
1028
1270
|
var import_cva4 = require("cva");
|
|
1029
|
-
var
|
|
1271
|
+
var React8 = __toESM(require("react"), 1);
|
|
1030
1272
|
var badgeVariants = (0, import_cva4.cva)("rounded-full px-2 py-0.5 text-xs font-semibold", {
|
|
1031
1273
|
variants: {
|
|
1032
1274
|
variant: {
|
|
@@ -1040,31 +1282,42 @@ var badgeVariants = (0, import_cva4.cva)("rounded-full px-2 py-0.5 text-xs font-
|
|
|
1040
1282
|
}
|
|
1041
1283
|
});
|
|
1042
1284
|
function Badge({ className, variant, ...props }) {
|
|
1043
|
-
return /* @__PURE__ */
|
|
1285
|
+
return /* @__PURE__ */ React8.createElement("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
1044
1286
|
}
|
|
1045
1287
|
|
|
1046
1288
|
// src/components/ui/Button.tsx
|
|
1047
1289
|
var import_react_slot = require("@radix-ui/react-slot");
|
|
1048
1290
|
var import_cva5 = require("cva");
|
|
1049
|
-
var
|
|
1050
|
-
var
|
|
1051
|
-
var Button = (0,
|
|
1052
|
-
({
|
|
1291
|
+
var import_lucide_react10 = require("lucide-react");
|
|
1292
|
+
var import_react9 = __toESM(require("react"), 1);
|
|
1293
|
+
var Button = (0, import_react9.forwardRef)(
|
|
1294
|
+
({
|
|
1295
|
+
className,
|
|
1296
|
+
variant,
|
|
1297
|
+
size,
|
|
1298
|
+
asChild = false,
|
|
1299
|
+
type = "button",
|
|
1300
|
+
children,
|
|
1301
|
+
isLoading = false,
|
|
1302
|
+
...props
|
|
1303
|
+
}, ref) => {
|
|
1053
1304
|
const Component = asChild ? import_react_slot.Slot : "button";
|
|
1054
|
-
return /* @__PURE__ */
|
|
1305
|
+
return /* @__PURE__ */ import_react9.default.createElement(
|
|
1055
1306
|
Component,
|
|
1056
1307
|
{
|
|
1057
|
-
className: cn(buttonVariants({ variant, size, className })),
|
|
1308
|
+
className: cn(buttonVariants({ variant, size, className, isLoading, asChild })),
|
|
1058
1309
|
type,
|
|
1059
1310
|
ref,
|
|
1060
1311
|
...props
|
|
1061
|
-
}
|
|
1312
|
+
},
|
|
1313
|
+
asChild ? children : /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, children, isLoading && /* @__PURE__ */ import_react9.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center bg-white/30 backdrop-blur-[0.5px]" }, /* @__PURE__ */ import_react9.default.createElement(import_lucide_react10.Loader2, { className: "h-5 w-5 animate-spin text-gray-800" })))
|
|
1062
1314
|
);
|
|
1063
1315
|
}
|
|
1064
1316
|
);
|
|
1065
1317
|
Button.displayName = "Button";
|
|
1066
1318
|
var buttonVariants = (0, import_cva5.cva)(
|
|
1067
1319
|
[
|
|
1320
|
+
"relative",
|
|
1068
1321
|
"flex",
|
|
1069
1322
|
"items-center",
|
|
1070
1323
|
"justify-center",
|
|
@@ -1074,7 +1327,8 @@ var buttonVariants = (0, import_cva5.cva)(
|
|
|
1074
1327
|
"outline-2",
|
|
1075
1328
|
"outline-offset-2",
|
|
1076
1329
|
"outline-dashed",
|
|
1077
|
-
"outline-transparent"
|
|
1330
|
+
"outline-transparent",
|
|
1331
|
+
"overflow-hidden"
|
|
1078
1332
|
],
|
|
1079
1333
|
{
|
|
1080
1334
|
variants: {
|
|
@@ -1121,19 +1375,92 @@ var buttonVariants = (0, import_cva5.cva)(
|
|
|
1121
1375
|
"focus:text-black",
|
|
1122
1376
|
"focus:outline-purple-100",
|
|
1123
1377
|
"active:text-purple-80"
|
|
1378
|
+
],
|
|
1379
|
+
"outline-primary": [
|
|
1380
|
+
"bg-transparent",
|
|
1381
|
+
"border-2",
|
|
1382
|
+
"border-pickle-100",
|
|
1383
|
+
"text-pickle-100",
|
|
1384
|
+
"hover:bg-pickle-100",
|
|
1385
|
+
"hover:text-black",
|
|
1386
|
+
"active:bg-pickle-80",
|
|
1387
|
+
"active:text-black",
|
|
1388
|
+
"focus:outline-purple-100",
|
|
1389
|
+
"disabled:text-grey-40",
|
|
1390
|
+
"disabled:border-grey-40",
|
|
1391
|
+
"disabled:hover:bg-transparent",
|
|
1392
|
+
"disabled:hover:text-grey-40"
|
|
1393
|
+
],
|
|
1394
|
+
"outline-secondary": [
|
|
1395
|
+
"bg-transparent",
|
|
1396
|
+
"border-2",
|
|
1397
|
+
"border-green-80",
|
|
1398
|
+
"text-green-80",
|
|
1399
|
+
"hover:bg-green-80",
|
|
1400
|
+
"hover:text-white",
|
|
1401
|
+
"active:bg-green-90",
|
|
1402
|
+
"active:text-white",
|
|
1403
|
+
"focus:outline-pickle-100",
|
|
1404
|
+
"disabled:text-grey-40",
|
|
1405
|
+
"disabled:border-grey-40",
|
|
1406
|
+
"disabled:hover:bg-transparent",
|
|
1407
|
+
"disabled:hover:text-grey-40"
|
|
1408
|
+
],
|
|
1409
|
+
"icon-outline": [
|
|
1410
|
+
"bg-transparent",
|
|
1411
|
+
"text-black",
|
|
1412
|
+
"hover:bg-grey-5",
|
|
1413
|
+
"active:bg-grey-10",
|
|
1414
|
+
"focus:outline-purple-100",
|
|
1415
|
+
"disabled:text-grey-40",
|
|
1416
|
+
"disabled:hover:bg-transparent",
|
|
1417
|
+
"disabled:hover:text-grey-40"
|
|
1418
|
+
],
|
|
1419
|
+
"icon-primary": [
|
|
1420
|
+
"bg-pickle-100",
|
|
1421
|
+
"text-black",
|
|
1422
|
+
"hover:bg-pickle-80",
|
|
1423
|
+
"active:bg-pickle-60",
|
|
1424
|
+
"focus:outline-purple-100",
|
|
1425
|
+
"disabled:text-grey-40",
|
|
1426
|
+
"disabled:bg-grey-10"
|
|
1427
|
+
],
|
|
1428
|
+
"icon-secondary": [
|
|
1429
|
+
"bg-green-80",
|
|
1430
|
+
"text-white",
|
|
1431
|
+
"hover:bg-green-90",
|
|
1432
|
+
"active:bg-green-100",
|
|
1433
|
+
"focus:outline-pickle-100",
|
|
1434
|
+
"disabled:text-grey-40",
|
|
1435
|
+
"disabled:bg-grey-10"
|
|
1124
1436
|
]
|
|
1125
1437
|
},
|
|
1126
1438
|
size: {
|
|
1439
|
+
"extra-small": ["h-8", "text-xs", "px-3", "py-1"],
|
|
1127
1440
|
small: ["h-10", "text-sm", "px-4", "py-2"],
|
|
1128
1441
|
medium: ["h-12", "text-base", "px-6", "py-3"],
|
|
1129
1442
|
large: ["h-14", "text-lg", "px-8", "py-4"]
|
|
1443
|
+
},
|
|
1444
|
+
isLoading: {
|
|
1445
|
+
true: ["cursor-not-allowed", "pointer-events-none"]
|
|
1446
|
+
},
|
|
1447
|
+
asChild: {
|
|
1448
|
+
true: [],
|
|
1449
|
+
false: ["cursor-pointer", "pointer-events-auto"]
|
|
1130
1450
|
}
|
|
1131
1451
|
},
|
|
1132
1452
|
defaultVariants: {
|
|
1133
1453
|
variant: "neutral",
|
|
1134
|
-
size: "medium"
|
|
1454
|
+
size: "medium",
|
|
1455
|
+
isLoading: false,
|
|
1456
|
+
asChild: false
|
|
1135
1457
|
},
|
|
1136
1458
|
compoundVariants: [
|
|
1459
|
+
{
|
|
1460
|
+
variant: "link",
|
|
1461
|
+
size: "extra-small",
|
|
1462
|
+
class: ["h-3", "text-xs", "p-0"]
|
|
1463
|
+
},
|
|
1137
1464
|
{
|
|
1138
1465
|
variant: "link",
|
|
1139
1466
|
size: "small",
|
|
@@ -1148,6 +1475,66 @@ var buttonVariants = (0, import_cva5.cva)(
|
|
|
1148
1475
|
variant: "link",
|
|
1149
1476
|
size: "large",
|
|
1150
1477
|
class: ["h-6", "text-base", "p-0"]
|
|
1478
|
+
},
|
|
1479
|
+
{
|
|
1480
|
+
variant: "icon-outline",
|
|
1481
|
+
size: "extra-small",
|
|
1482
|
+
class: ["h-8", "w-8", "p-1.5", "[&>svg]:w-5", "[&>svg]:h-5"]
|
|
1483
|
+
},
|
|
1484
|
+
{
|
|
1485
|
+
variant: "icon-outline",
|
|
1486
|
+
size: "small",
|
|
1487
|
+
class: ["h-10", "w-10", "p-2", "[&>svg]:w-6", "[&>svg]:h-6"]
|
|
1488
|
+
},
|
|
1489
|
+
{
|
|
1490
|
+
variant: "icon-outline",
|
|
1491
|
+
size: "medium",
|
|
1492
|
+
class: ["h-12", "w-12", "p-2.5", "[&>svg]:w-7", "[&>svg]:h-7"]
|
|
1493
|
+
},
|
|
1494
|
+
{
|
|
1495
|
+
variant: "icon-outline",
|
|
1496
|
+
size: "large",
|
|
1497
|
+
class: ["h-14", "w-14", "p-3", "[&>svg]:w-8", "[&>svg]:h-8"]
|
|
1498
|
+
},
|
|
1499
|
+
{
|
|
1500
|
+
variant: "icon-primary",
|
|
1501
|
+
size: "extra-small",
|
|
1502
|
+
class: ["h-8", "w-8", "p-1.5", "[&>svg]:w-5", "[&>svg]:h-5"]
|
|
1503
|
+
},
|
|
1504
|
+
{
|
|
1505
|
+
variant: "icon-primary",
|
|
1506
|
+
size: "small",
|
|
1507
|
+
class: ["h-10", "w-10", "p-2", "[&>svg]:w-6", "[&>svg]:h-6"]
|
|
1508
|
+
},
|
|
1509
|
+
{
|
|
1510
|
+
variant: "icon-primary",
|
|
1511
|
+
size: "medium",
|
|
1512
|
+
class: ["h-12", "w-12", "p-2.5", "[&>svg]:w-7", "[&>svg]:h-7"]
|
|
1513
|
+
},
|
|
1514
|
+
{
|
|
1515
|
+
variant: "icon-primary",
|
|
1516
|
+
size: "large",
|
|
1517
|
+
class: ["h-14", "w-14", "p-3", "[&>svg]:w-8", "[&>svg]:h-8"]
|
|
1518
|
+
},
|
|
1519
|
+
{
|
|
1520
|
+
variant: "icon-secondary",
|
|
1521
|
+
size: "extra-small",
|
|
1522
|
+
class: ["h-8", "w-8", "p-1.5", "[&>svg]:w-5", "[&>svg]:h-5"]
|
|
1523
|
+
},
|
|
1524
|
+
{
|
|
1525
|
+
variant: "icon-secondary",
|
|
1526
|
+
size: "small",
|
|
1527
|
+
class: ["h-10", "w-10", "p-2", "[&>svg]:w-6", "[&>svg]:h-6"]
|
|
1528
|
+
},
|
|
1529
|
+
{
|
|
1530
|
+
variant: "icon-secondary",
|
|
1531
|
+
size: "medium",
|
|
1532
|
+
class: ["h-12", "w-12", "p-2.5", "[&>svg]:w-7", "[&>svg]:h-7"]
|
|
1533
|
+
},
|
|
1534
|
+
{
|
|
1535
|
+
variant: "icon-secondary",
|
|
1536
|
+
size: "large",
|
|
1537
|
+
class: ["h-14", "w-14", "p-3", "[&>svg]:w-8", "[&>svg]:h-8"]
|
|
1151
1538
|
}
|
|
1152
1539
|
]
|
|
1153
1540
|
}
|
|
@@ -1155,16 +1542,15 @@ var buttonVariants = (0, import_cva5.cva)(
|
|
|
1155
1542
|
|
|
1156
1543
|
// src/components/ui/Combobox.tsx
|
|
1157
1544
|
var import_cva6 = require("cva");
|
|
1158
|
-
var
|
|
1159
|
-
var
|
|
1545
|
+
var import_lucide_react11 = require("lucide-react");
|
|
1546
|
+
var import_react10 = require("react");
|
|
1160
1547
|
|
|
1161
1548
|
// src/components/primitives/popover.tsx
|
|
1162
1549
|
var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
|
|
1163
|
-
var
|
|
1164
|
-
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1550
|
+
var React10 = __toESM(require("react"), 1);
|
|
1165
1551
|
var Popover = PopoverPrimitive.Root;
|
|
1166
1552
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
1167
|
-
var PopoverContent =
|
|
1553
|
+
var PopoverContent = React10.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React10.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ React10.createElement(
|
|
1168
1554
|
PopoverPrimitive.Content,
|
|
1169
1555
|
{
|
|
1170
1556
|
ref,
|
|
@@ -1176,12 +1562,11 @@ var PopoverContent = React7.forwardRef(({ className, align = "center", sideOffse
|
|
|
1176
1562
|
),
|
|
1177
1563
|
...props
|
|
1178
1564
|
}
|
|
1179
|
-
)
|
|
1565
|
+
)));
|
|
1180
1566
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
1181
1567
|
|
|
1182
1568
|
// src/components/ui/Combobox.tsx
|
|
1183
|
-
var
|
|
1184
|
-
var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
1569
|
+
var Combobox = (0, import_react10.forwardRef)((props, ref) => {
|
|
1185
1570
|
const {
|
|
1186
1571
|
id,
|
|
1187
1572
|
name,
|
|
@@ -1201,17 +1586,17 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1201
1586
|
onChange: handleChange,
|
|
1202
1587
|
children: footer
|
|
1203
1588
|
} = props;
|
|
1204
|
-
const [selected, setSelected] = (0,
|
|
1205
|
-
const [open, setOpen] = (0,
|
|
1206
|
-
const isUserUpdate = (0,
|
|
1207
|
-
const IconComponent = icon &&
|
|
1589
|
+
const [selected, setSelected] = (0, import_react10.useState)([]);
|
|
1590
|
+
const [open, setOpen] = (0, import_react10.useState)(false);
|
|
1591
|
+
const isUserUpdate = (0, import_react10.useRef)(false);
|
|
1592
|
+
const IconComponent = icon && import_lucide_react11.icons[icon];
|
|
1208
1593
|
const hideSearchBox = options?.length <= 5;
|
|
1209
1594
|
const isDefault = variant === "default";
|
|
1210
1595
|
const isChip = variant === "chip";
|
|
1211
1596
|
const isEmpty = selected.length === 0;
|
|
1212
1597
|
const showChevron = isDefault ? isEmpty : true;
|
|
1213
1598
|
const close = () => setOpen(false);
|
|
1214
|
-
(0,
|
|
1599
|
+
(0, import_react10.useEffect)(() => {
|
|
1215
1600
|
if (!isUserUpdate.current) {
|
|
1216
1601
|
const valueArray = multiselect ? value ?? [] : value ? [value] : [];
|
|
1217
1602
|
setSelected(
|
|
@@ -1219,7 +1604,7 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1219
1604
|
);
|
|
1220
1605
|
}
|
|
1221
1606
|
}, [value, options, multiselect]);
|
|
1222
|
-
(0,
|
|
1607
|
+
(0, import_react10.useEffect)(() => {
|
|
1223
1608
|
if (isUserUpdate.current) {
|
|
1224
1609
|
if (multiselect) {
|
|
1225
1610
|
handleChange?.(selected.map((o) => o.value));
|
|
@@ -1251,111 +1636,91 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1251
1636
|
const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
|
|
1252
1637
|
return isDefault ? defaultLabel : label;
|
|
1253
1638
|
};
|
|
1254
|
-
return /* @__PURE__ */
|
|
1255
|
-
|
|
1256
|
-
|
|
1639
|
+
return /* @__PURE__ */ React.createElement("div", { className: cn("flex flex-col gap-1", className) }, isDefault && /* @__PURE__ */ React.createElement(
|
|
1640
|
+
Label_default,
|
|
1641
|
+
{
|
|
1642
|
+
text: label,
|
|
1643
|
+
htmlFor: name,
|
|
1644
|
+
required,
|
|
1645
|
+
description,
|
|
1646
|
+
className: classNames?.label
|
|
1647
|
+
}
|
|
1648
|
+
), /* @__PURE__ */ React.createElement("div", { className: "relative flex" }, /* @__PURE__ */ React.createElement(Popover, { open, onOpenChange: setOpen }, /* @__PURE__ */ React.createElement(
|
|
1649
|
+
PopoverTrigger,
|
|
1650
|
+
{
|
|
1651
|
+
asChild: true,
|
|
1652
|
+
disabled: options.length === 0,
|
|
1653
|
+
"data-testid": `${id ?? name}-combobox-trigger`
|
|
1654
|
+
},
|
|
1655
|
+
/* @__PURE__ */ React.createElement(
|
|
1656
|
+
"div",
|
|
1257
1657
|
{
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
}
|
|
1264
|
-
),
|
|
1265
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "relative flex", children: [
|
|
1266
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
|
|
1267
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1268
|
-
PopoverTrigger,
|
|
1269
|
-
{
|
|
1270
|
-
asChild: true,
|
|
1271
|
-
disabled: options.length === 0,
|
|
1272
|
-
"data-testid": `${id ?? name}-combobox-trigger`,
|
|
1273
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
1274
|
-
"div",
|
|
1275
|
-
{
|
|
1276
|
-
ref,
|
|
1277
|
-
className: cn(
|
|
1278
|
-
triggerVariants({ variant, size }),
|
|
1279
|
-
isDefault && !isEmpty && "pr-10",
|
|
1280
|
-
classNames?.trigger
|
|
1281
|
-
),
|
|
1282
|
-
"aria-expanded": open,
|
|
1283
|
-
children: [
|
|
1284
|
-
isDefault && IconComponent && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(IconComponent, { className: "h-4 w-4 shrink-0" }),
|
|
1285
|
-
isChip && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Badge, { variant: "purple", children: selected.length }),
|
|
1286
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1287
|
-
"span",
|
|
1288
|
-
{
|
|
1289
|
-
className: cn(
|
|
1290
|
-
"w-full truncate leading-normal",
|
|
1291
|
-
isDefault && isEmpty && "text-grey-40"
|
|
1292
|
-
),
|
|
1293
|
-
children: handleDisplayValue()
|
|
1294
|
-
}
|
|
1295
|
-
),
|
|
1296
|
-
showChevron && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1297
|
-
import_lucide_react10.ChevronDownIcon,
|
|
1298
|
-
{
|
|
1299
|
-
className: "shrink-0 transform group-data-[state=open]:rotate-180",
|
|
1300
|
-
size: "16"
|
|
1301
|
-
}
|
|
1302
|
-
)
|
|
1303
|
-
]
|
|
1304
|
-
}
|
|
1305
|
-
)
|
|
1306
|
-
}
|
|
1658
|
+
ref,
|
|
1659
|
+
className: cn(
|
|
1660
|
+
triggerVariants({ variant, size }),
|
|
1661
|
+
isDefault && !isEmpty && "pr-10",
|
|
1662
|
+
classNames?.trigger
|
|
1307
1663
|
),
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
classNames?.content
|
|
1315
|
-
),
|
|
1316
|
-
collisionPadding: 8,
|
|
1317
|
-
sideOffset: 4,
|
|
1318
|
-
align: "start",
|
|
1319
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Command, { children: [
|
|
1320
|
-
!hideSearchBox && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommandInput, { placeholder: "Search..." }),
|
|
1321
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(CommandList, { children: [
|
|
1322
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommandEmpty, { children: "No results" }),
|
|
1323
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommandGroup, { children: options.map(({ id: id2, ...option }) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1324
|
-
CommandItem,
|
|
1325
|
-
{
|
|
1326
|
-
value: option.title,
|
|
1327
|
-
onSelect: () => handleSelect(option.value),
|
|
1328
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1329
|
-
ListItem_default,
|
|
1330
|
-
{
|
|
1331
|
-
className: cn(classNames?.items, "truncate py-1"),
|
|
1332
|
-
isSelected: selected.some((s) => s.value === option.value),
|
|
1333
|
-
hasCheckbox: multiselect,
|
|
1334
|
-
...option
|
|
1335
|
-
}
|
|
1336
|
-
)
|
|
1337
|
-
},
|
|
1338
|
-
id2
|
|
1339
|
-
)) })
|
|
1340
|
-
] }),
|
|
1341
|
-
!!footer && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Separator, {}),
|
|
1342
|
-
footer && footer({ close })
|
|
1343
|
-
] })
|
|
1344
|
-
}
|
|
1345
|
-
)
|
|
1346
|
-
] }),
|
|
1347
|
-
isDefault && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1348
|
-
"button",
|
|
1664
|
+
"aria-expanded": open
|
|
1665
|
+
},
|
|
1666
|
+
isDefault && IconComponent && /* @__PURE__ */ React.createElement(IconComponent, { className: "h-4 w-4 shrink-0" }),
|
|
1667
|
+
isChip && !isEmpty && /* @__PURE__ */ React.createElement(Badge, { variant: "purple" }, selected.length),
|
|
1668
|
+
/* @__PURE__ */ React.createElement(
|
|
1669
|
+
"span",
|
|
1349
1670
|
{
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1671
|
+
className: cn(
|
|
1672
|
+
"w-full truncate leading-normal",
|
|
1673
|
+
isDefault && isEmpty && "text-grey-40"
|
|
1674
|
+
)
|
|
1675
|
+
},
|
|
1676
|
+
handleDisplayValue()
|
|
1677
|
+
),
|
|
1678
|
+
showChevron && /* @__PURE__ */ React.createElement(
|
|
1679
|
+
import_lucide_react11.ChevronDownIcon,
|
|
1680
|
+
{
|
|
1681
|
+
className: "shrink-0 transform group-data-[state=open]:rotate-180",
|
|
1682
|
+
size: "16"
|
|
1683
|
+
}
|
|
1684
|
+
)
|
|
1685
|
+
)
|
|
1686
|
+
), /* @__PURE__ */ React.createElement(
|
|
1687
|
+
PopoverContent,
|
|
1688
|
+
{
|
|
1689
|
+
className: cn(
|
|
1690
|
+
"flex w-full max-w-xs flex-col overflow-hidden p-0",
|
|
1691
|
+
"max-h-[--radix-popover-content-available-height]",
|
|
1692
|
+
classNames?.content
|
|
1693
|
+
),
|
|
1694
|
+
collisionPadding: 8,
|
|
1695
|
+
sideOffset: 4,
|
|
1696
|
+
align: "start"
|
|
1697
|
+
},
|
|
1698
|
+
/* @__PURE__ */ React.createElement(Command, null, !hideSearchBox && /* @__PURE__ */ React.createElement(CommandInput, { placeholder: "Search..." }), /* @__PURE__ */ React.createElement(CommandList, null, /* @__PURE__ */ React.createElement(CommandEmpty, null, "No results"), /* @__PURE__ */ React.createElement(CommandGroup, null, options.map(({ id: id2, ...option }) => /* @__PURE__ */ React.createElement(
|
|
1699
|
+
CommandItem,
|
|
1700
|
+
{
|
|
1701
|
+
key: id2,
|
|
1702
|
+
value: option.title,
|
|
1703
|
+
onSelect: () => handleSelect(option.value)
|
|
1704
|
+
},
|
|
1705
|
+
/* @__PURE__ */ React.createElement(
|
|
1706
|
+
ListItem_default,
|
|
1707
|
+
{
|
|
1708
|
+
className: cn(classNames?.items, "truncate py-1"),
|
|
1709
|
+
isSelected: selected.some((s) => s.value === option.value),
|
|
1710
|
+
hasCheckbox: multiselect,
|
|
1711
|
+
...option
|
|
1354
1712
|
}
|
|
1355
1713
|
)
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1714
|
+
)))), !!footer && /* @__PURE__ */ React.createElement(Separator, null), footer && footer({ close }))
|
|
1715
|
+
)), isDefault && !isEmpty && /* @__PURE__ */ React.createElement(
|
|
1716
|
+
"button",
|
|
1717
|
+
{
|
|
1718
|
+
type: "button",
|
|
1719
|
+
className: "absolute inset-y-0 right-1 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20",
|
|
1720
|
+
onClick: handleClear
|
|
1721
|
+
},
|
|
1722
|
+
/* @__PURE__ */ React.createElement(import_lucide_react11.CircleX, { className: "h-4 w-4 text-green-100" })
|
|
1723
|
+
)), /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error }));
|
|
1359
1724
|
});
|
|
1360
1725
|
Combobox.displayName = "Combobox";
|
|
1361
1726
|
var triggerVariants = (0, import_cva6.cva)(
|
|
@@ -1386,62 +1751,50 @@ var triggerVariants = (0, import_cva6.cva)(
|
|
|
1386
1751
|
|
|
1387
1752
|
// src/components/ui/Switch.tsx
|
|
1388
1753
|
var SwitchPrimitive = __toESM(require("@radix-ui/react-switch"), 1);
|
|
1389
|
-
var
|
|
1390
|
-
var
|
|
1391
|
-
var Switch = (0, import_react7.forwardRef)(
|
|
1754
|
+
var import_react11 = require("react");
|
|
1755
|
+
var Switch = (0, import_react11.forwardRef)(
|
|
1392
1756
|
({ label, error, className, ...props }, ref) => {
|
|
1393
|
-
return /* @__PURE__ */
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
),
|
|
1406
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("label", { className: "pl-4 text-sm leading-none text-inherit", htmlFor: props.name, children: [
|
|
1407
|
-
label,
|
|
1408
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ErrorMessage_default, { message: error, className: "mt-1" })
|
|
1409
|
-
] })
|
|
1410
|
-
] });
|
|
1757
|
+
return /* @__PURE__ */ React.createElement("div", { className: cn("flex items-center", props.disabled && "opacity-50") }, /* @__PURE__ */ React.createElement(
|
|
1758
|
+
SwitchPrimitive.Root,
|
|
1759
|
+
{
|
|
1760
|
+
className: cn(
|
|
1761
|
+
"relative h-[25px] w-[42px] cursor-default rounded-full bg-grey-20 shadow-md outline-none focus:outline-purple-100 data-[state=checked]:bg-green-90",
|
|
1762
|
+
className
|
|
1763
|
+
),
|
|
1764
|
+
ref,
|
|
1765
|
+
...props
|
|
1766
|
+
},
|
|
1767
|
+
/* @__PURE__ */ React.createElement(SwitchPrimitive.Thumb, { className: "block h-[21px] w-[21px] translate-x-0.5 rounded-full bg-white shadow-[0_2px_2px] transition-transform duration-100 will-change-transform data-[state=checked]:translate-x-[19px]" })
|
|
1768
|
+
), label && /* @__PURE__ */ React.createElement("label", { className: "pl-4 text-sm leading-none text-inherit", htmlFor: props.name }, label, /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error, className: "mt-1" })));
|
|
1411
1769
|
}
|
|
1412
1770
|
);
|
|
1413
1771
|
Switch.displayName = "Switch";
|
|
1414
1772
|
|
|
1415
1773
|
// src/components/ui/Radio.tsx
|
|
1416
|
-
var
|
|
1774
|
+
var import_react13 = require("react");
|
|
1417
1775
|
|
|
1418
1776
|
// src/components/primitives/radio-group.tsx
|
|
1419
1777
|
var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
|
|
1420
|
-
var
|
|
1421
|
-
var
|
|
1422
|
-
var RadioGroup = (0, import_react8.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(RadioGroupPrimitive.Root, { className, ...props, ref }));
|
|
1778
|
+
var import_react12 = require("react");
|
|
1779
|
+
var RadioGroup = (0, import_react12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(RadioGroupPrimitive.Root, { className, ...props, ref }));
|
|
1423
1780
|
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
1424
|
-
var RadioGroupItem = (0,
|
|
1425
|
-
return /* @__PURE__ */
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
),
|
|
1437
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("label", { htmlFor: props.id, className: "text-sm peer-data-[disabled]:text-grey-40", children })
|
|
1438
|
-
] });
|
|
1781
|
+
var RadioGroupItem = (0, import_react12.forwardRef)(({ className, children, ...props }, ref) => {
|
|
1782
|
+
return /* @__PURE__ */ React.createElement("div", { className: "group flex flex-row items-center gap-2" }, /* @__PURE__ */ React.createElement(
|
|
1783
|
+
RadioGroupPrimitive.Item,
|
|
1784
|
+
{
|
|
1785
|
+
ref,
|
|
1786
|
+
className: cn(
|
|
1787
|
+
"peer aspect-square h-4 rounded-full border border-grey-10 shadow outline outline-1 outline-offset-2 outline-transparent focus:outline-none focus:outline-purple-100 focus-visible:ring-1 focus-visible:ring-ring active:border-green-80 disabled:cursor-not-allowed disabled:opacity-50 group-hover:border-grey-20 data-[state=checked]:border-4 data-[disabled]:border-grey-20 data-[state=checked]:border-green-90 data-[disabled]:bg-grey-10 data-[state=checked]:group-hover:border-green-80",
|
|
1788
|
+
className
|
|
1789
|
+
),
|
|
1790
|
+
...props
|
|
1791
|
+
}
|
|
1792
|
+
), /* @__PURE__ */ React.createElement("label", { htmlFor: props.id, className: "text-sm peer-data-[disabled]:text-grey-40" }, children));
|
|
1439
1793
|
});
|
|
1440
1794
|
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
1441
1795
|
|
|
1442
1796
|
// src/components/ui/Radio.tsx
|
|
1443
|
-
var
|
|
1444
|
-
var Radio = (0, import_react9.forwardRef)(
|
|
1797
|
+
var Radio = (0, import_react13.forwardRef)(
|
|
1445
1798
|
({
|
|
1446
1799
|
label,
|
|
1447
1800
|
error,
|
|
@@ -1452,46 +1805,41 @@ var Radio = (0, import_react9.forwardRef)(
|
|
|
1452
1805
|
orientation,
|
|
1453
1806
|
...props
|
|
1454
1807
|
}, ref) => {
|
|
1455
|
-
return /* @__PURE__ */
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1808
|
+
return /* @__PURE__ */ React.createElement("div", { className: cn("flex flex-col gap-1", classNames?.root) }, /* @__PURE__ */ React.createElement(Label_default, { text: label, description, required: props.required }), /* @__PURE__ */ React.createElement(
|
|
1809
|
+
RadioGroup,
|
|
1810
|
+
{
|
|
1811
|
+
ref,
|
|
1812
|
+
className: cn(
|
|
1813
|
+
"flex text-sm",
|
|
1814
|
+
orientation === "vertical" ? "flex-col gap-2" : "flex-row gap-4",
|
|
1815
|
+
classNames?.group
|
|
1816
|
+
),
|
|
1817
|
+
onValueChange: handleValueChange,
|
|
1818
|
+
...props
|
|
1819
|
+
},
|
|
1820
|
+
options?.map(({ id, title, value }) => /* @__PURE__ */ React.createElement(
|
|
1821
|
+
RadioGroupItem,
|
|
1459
1822
|
{
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
children: options?.map(({ id, title, value }) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1469
|
-
RadioGroupItem,
|
|
1470
|
-
{
|
|
1471
|
-
value,
|
|
1472
|
-
id: `radio-group-item-${title}`,
|
|
1473
|
-
className: classNames?.item,
|
|
1474
|
-
children: title
|
|
1475
|
-
},
|
|
1476
|
-
id
|
|
1477
|
-
))
|
|
1478
|
-
}
|
|
1479
|
-
),
|
|
1480
|
-
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ErrorMessage_default, { message: error })
|
|
1481
|
-
] });
|
|
1823
|
+
key: id,
|
|
1824
|
+
value,
|
|
1825
|
+
id: `radio-group-item-${title}`,
|
|
1826
|
+
className: classNames?.item
|
|
1827
|
+
},
|
|
1828
|
+
title
|
|
1829
|
+
))
|
|
1830
|
+
), /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error }));
|
|
1482
1831
|
}
|
|
1483
1832
|
);
|
|
1484
1833
|
Radio.displayName = "Radio";
|
|
1485
1834
|
|
|
1486
1835
|
// src/components/ui/Counter.tsx
|
|
1487
1836
|
var import_cva7 = require("cva");
|
|
1488
|
-
var
|
|
1489
|
-
var
|
|
1490
|
-
var
|
|
1491
|
-
var Counter = (0, import_react10.forwardRef)(
|
|
1837
|
+
var import_lucide_react12 = require("lucide-react");
|
|
1838
|
+
var import_react14 = require("react");
|
|
1839
|
+
var Counter = (0, import_react14.forwardRef)(
|
|
1492
1840
|
({ label, error, min, max, step = 1, description, theme, value, classNames, onChange, ...props }, ref) => {
|
|
1493
|
-
const [count, setCount] = (0,
|
|
1494
|
-
(0,
|
|
1841
|
+
const [count, setCount] = (0, import_react14.useState)(0);
|
|
1842
|
+
(0, import_react14.useEffect)(() => {
|
|
1495
1843
|
setCount(value ?? 0);
|
|
1496
1844
|
}, [value]);
|
|
1497
1845
|
const handleChange = (e) => {
|
|
@@ -1522,56 +1870,50 @@ var Counter = (0, import_react10.forwardRef)(
|
|
|
1522
1870
|
onChange?.(newValue);
|
|
1523
1871
|
setCount(newValue);
|
|
1524
1872
|
};
|
|
1525
|
-
return /* @__PURE__ */
|
|
1873
|
+
return /* @__PURE__ */ React.createElement(
|
|
1526
1874
|
"div",
|
|
1527
1875
|
{
|
|
1528
1876
|
className: cn("flex w-auto flex-col gap-1", classNames?.root),
|
|
1529
|
-
"data-testid": `counter-wrapper-${props.id}
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
}
|
|
1570
|
-
)
|
|
1571
|
-
] }),
|
|
1572
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ErrorMessage_default, { message: error })
|
|
1573
|
-
]
|
|
1574
|
-
}
|
|
1877
|
+
"data-testid": `counter-wrapper-${props.id}`
|
|
1878
|
+
},
|
|
1879
|
+
label && /* @__PURE__ */ React.createElement(
|
|
1880
|
+
Label_default,
|
|
1881
|
+
{
|
|
1882
|
+
text: label,
|
|
1883
|
+
htmlFor: props.name,
|
|
1884
|
+
required: props.required,
|
|
1885
|
+
description,
|
|
1886
|
+
className: classNames?.label
|
|
1887
|
+
}
|
|
1888
|
+
),
|
|
1889
|
+
/* @__PURE__ */ React.createElement("div", { className: "relative flex w-[122px] flex-row items-center" }, /* @__PURE__ */ React.createElement(
|
|
1890
|
+
"button",
|
|
1891
|
+
{
|
|
1892
|
+
type: "button",
|
|
1893
|
+
className: "absolute inset-y-0 left-1 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20",
|
|
1894
|
+
onClick: decrement
|
|
1895
|
+
},
|
|
1896
|
+
/* @__PURE__ */ React.createElement(import_lucide_react12.Minus, { className: "h-4 w-4 text-green-100" })
|
|
1897
|
+
), /* @__PURE__ */ React.createElement(
|
|
1898
|
+
"input",
|
|
1899
|
+
{
|
|
1900
|
+
className: cn(counterVariants({ theme }), classNames?.input),
|
|
1901
|
+
ref,
|
|
1902
|
+
value: count,
|
|
1903
|
+
onChange: handleChange,
|
|
1904
|
+
"data-testid": `counter-element-${props.id}`,
|
|
1905
|
+
...props
|
|
1906
|
+
}
|
|
1907
|
+
), /* @__PURE__ */ React.createElement(
|
|
1908
|
+
"button",
|
|
1909
|
+
{
|
|
1910
|
+
type: "button",
|
|
1911
|
+
className: "absolute inset-y-0 right-1 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20",
|
|
1912
|
+
onClick: increment
|
|
1913
|
+
},
|
|
1914
|
+
/* @__PURE__ */ React.createElement(import_lucide_react12.Plus, { className: "h-4 w-4 text-green-100" })
|
|
1915
|
+
)),
|
|
1916
|
+
/* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error })
|
|
1575
1917
|
);
|
|
1576
1918
|
}
|
|
1577
1919
|
);
|
|
@@ -1629,13 +1971,12 @@ var counterVariants = (0, import_cva7.cva)(
|
|
|
1629
1971
|
// src/components/ui/Icon.tsx
|
|
1630
1972
|
var import_react_slot2 = require("@radix-ui/react-slot");
|
|
1631
1973
|
var import_cva8 = require("cva");
|
|
1632
|
-
var
|
|
1974
|
+
var import_react15 = require("react");
|
|
1633
1975
|
var import_tailwind_merge3 = require("tailwind-merge");
|
|
1634
|
-
var
|
|
1635
|
-
var Icon = (0, import_react11.forwardRef)(
|
|
1976
|
+
var Icon = (0, import_react15.forwardRef)(
|
|
1636
1977
|
({ variant, size, active = false, readonly = false, className, ...props }, ref) => {
|
|
1637
1978
|
const Component = readonly ? import_react_slot2.Slot : "button";
|
|
1638
|
-
return /* @__PURE__ */
|
|
1979
|
+
return /* @__PURE__ */ React.createElement(
|
|
1639
1980
|
Component,
|
|
1640
1981
|
{
|
|
1641
1982
|
className: cn(
|
|
@@ -1704,14 +2045,13 @@ var iconVariants = (0, import_cva8.cva)(
|
|
|
1704
2045
|
);
|
|
1705
2046
|
|
|
1706
2047
|
// src/components/ui/InputOtp.tsx
|
|
1707
|
-
var
|
|
2048
|
+
var import_react16 = require("react");
|
|
1708
2049
|
|
|
1709
2050
|
// src/components/primitives/input-otp.tsx
|
|
1710
2051
|
var import_input_otp = require("input-otp");
|
|
1711
|
-
var
|
|
1712
|
-
var
|
|
1713
|
-
var
|
|
1714
|
-
var InputOTP = React8.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2052
|
+
var import_lucide_react13 = require("lucide-react");
|
|
2053
|
+
var React11 = __toESM(require("react"), 1);
|
|
2054
|
+
var InputOTP = React11.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ React11.createElement(
|
|
1715
2055
|
import_input_otp.OTPInput,
|
|
1716
2056
|
{
|
|
1717
2057
|
ref,
|
|
@@ -1724,12 +2064,12 @@ var InputOTP = React8.forwardRef(({ className, containerClassName, ...props }, r
|
|
|
1724
2064
|
}
|
|
1725
2065
|
));
|
|
1726
2066
|
InputOTP.displayName = "InputOTP";
|
|
1727
|
-
var InputOTPGroup =
|
|
2067
|
+
var InputOTPGroup = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React11.createElement("div", { ref, className: cn("flex items-center", className), ...props }));
|
|
1728
2068
|
InputOTPGroup.displayName = "InputOTPGroup";
|
|
1729
|
-
var InputOTPSlot =
|
|
1730
|
-
const inputOTPContext =
|
|
2069
|
+
var InputOTPSlot = React11.forwardRef(({ index, error, className, ...props }, ref) => {
|
|
2070
|
+
const inputOTPContext = React11.useContext(import_input_otp.OTPInputContext);
|
|
1731
2071
|
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
|
|
1732
|
-
return /* @__PURE__ */
|
|
2072
|
+
return /* @__PURE__ */ React11.createElement(
|
|
1733
2073
|
"div",
|
|
1734
2074
|
{
|
|
1735
2075
|
ref,
|
|
@@ -1739,57 +2079,52 @@ var InputOTPSlot = React8.forwardRef(({ index, error, className, ...props }, ref
|
|
|
1739
2079
|
error && "border-red-500 dark:border-red-400",
|
|
1740
2080
|
className
|
|
1741
2081
|
),
|
|
1742
|
-
...props
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
]
|
|
1747
|
-
}
|
|
2082
|
+
...props
|
|
2083
|
+
},
|
|
2084
|
+
char,
|
|
2085
|
+
hasFakeCaret && /* @__PURE__ */ React11.createElement("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React11.createElement("div", { className: "h-4 w-px animate-caret-blink bg-neutral-950 duration-1000 dark:bg-neutral-50" }))
|
|
1748
2086
|
);
|
|
1749
2087
|
});
|
|
1750
2088
|
InputOTPSlot.displayName = "InputOTPSlot";
|
|
1751
|
-
var InputOTPSeparator =
|
|
2089
|
+
var InputOTPSeparator = React11.forwardRef(({ ...props }, ref) => /* @__PURE__ */ React11.createElement("div", { ref, role: "separator", ...props }, /* @__PURE__ */ React11.createElement(import_lucide_react13.Dot, null)));
|
|
1752
2090
|
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
1753
2091
|
|
|
1754
2092
|
// src/components/ui/InputOtp.tsx
|
|
1755
|
-
var
|
|
1756
|
-
var InputOtp = (0, import_react12.forwardRef)(
|
|
2093
|
+
var InputOtp = (0, import_react16.forwardRef)(
|
|
1757
2094
|
({ digits, label, description, error, ...props }, ref) => {
|
|
1758
|
-
return /* @__PURE__ */
|
|
2095
|
+
return /* @__PURE__ */ React.createElement(
|
|
1759
2096
|
"div",
|
|
1760
2097
|
{
|
|
1761
2098
|
className: "group flex w-full flex-col gap-1",
|
|
1762
|
-
"data-testid": `input-otp-wrapper-${props.id}
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
]
|
|
1792
|
-
}
|
|
2099
|
+
"data-testid": `input-otp-wrapper-${props.id}`
|
|
2100
|
+
},
|
|
2101
|
+
label && /* @__PURE__ */ React.createElement(
|
|
2102
|
+
Label_default,
|
|
2103
|
+
{
|
|
2104
|
+
text: label,
|
|
2105
|
+
htmlFor: props.name,
|
|
2106
|
+
required: props.required,
|
|
2107
|
+
description
|
|
2108
|
+
}
|
|
2109
|
+
),
|
|
2110
|
+
/* @__PURE__ */ React.createElement("div", { className: "relative flex flex-row items-center" }, /* @__PURE__ */ React.createElement(
|
|
2111
|
+
InputOTP,
|
|
2112
|
+
{
|
|
2113
|
+
ref,
|
|
2114
|
+
maxLength: digits,
|
|
2115
|
+
"data-testid": `input-otp-element-${props.id}`,
|
|
2116
|
+
...props
|
|
2117
|
+
},
|
|
2118
|
+
[...Array(digits)].map((_, index) => /* @__PURE__ */ React.createElement(InputOTPGroup, { key: index }, /* @__PURE__ */ React.createElement(
|
|
2119
|
+
InputOTPSlot,
|
|
2120
|
+
{
|
|
2121
|
+
"data-testid": `input-otp-slot-${index}`,
|
|
2122
|
+
index,
|
|
2123
|
+
error: Boolean(error)
|
|
2124
|
+
}
|
|
2125
|
+
)))
|
|
2126
|
+
)),
|
|
2127
|
+
/* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error })
|
|
1793
2128
|
);
|
|
1794
2129
|
}
|
|
1795
2130
|
);
|
|
@@ -1797,7 +2132,7 @@ InputOtp.displayName = "Input";
|
|
|
1797
2132
|
|
|
1798
2133
|
// src/components/ui/LinkButton.tsx
|
|
1799
2134
|
var import_link2 = __toESM(require("next/link"), 1);
|
|
1800
|
-
var
|
|
2135
|
+
var import_react17 = __toESM(require("react"), 1);
|
|
1801
2136
|
var LinkButton = ({
|
|
1802
2137
|
disabled = false,
|
|
1803
2138
|
useAnchor = false,
|
|
@@ -1806,27 +2141,26 @@ var LinkButton = ({
|
|
|
1806
2141
|
...props
|
|
1807
2142
|
}) => {
|
|
1808
2143
|
const Component = useAnchor ? "a" : import_link2.default;
|
|
1809
|
-
return /* @__PURE__ */
|
|
2144
|
+
return /* @__PURE__ */ import_react17.default.createElement(
|
|
1810
2145
|
Component,
|
|
1811
2146
|
{
|
|
1812
2147
|
href,
|
|
1813
2148
|
className: `inline-flex items-center justify-center gap-2 rounded-full text-sm font-bold leading-tight text-black underline outline-dashed outline-2 outline-offset-2 outline-transparent hover:text-purple-100 focus:text-black focus:outline-purple-100 active:text-purple-80 ${disabled ? "pointer-events-none text-grey-40" : ""} `,
|
|
1814
2149
|
...disabled && { "aria-disabled": true, tabIndex: -1 },
|
|
1815
|
-
...props
|
|
1816
|
-
|
|
1817
|
-
|
|
2150
|
+
...props
|
|
2151
|
+
},
|
|
2152
|
+
children
|
|
1818
2153
|
);
|
|
1819
2154
|
};
|
|
1820
2155
|
|
|
1821
2156
|
// src/components/ui/ReadMore.tsx
|
|
1822
|
-
var
|
|
2157
|
+
var import_react18 = require("react");
|
|
1823
2158
|
var import_react_markdown = __toESM(require("react-markdown"), 1);
|
|
1824
|
-
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
1825
2159
|
function ReadMore({ text, ...props }) {
|
|
1826
|
-
const [isExpanded, setIsExpanded] = (0,
|
|
1827
|
-
const [maxWords, setMaxWords] = (0,
|
|
2160
|
+
const [isExpanded, setIsExpanded] = (0, import_react18.useState)(false);
|
|
2161
|
+
const [maxWords, setMaxWords] = (0, import_react18.useState)(160);
|
|
1828
2162
|
const isOverMaxWords = text.split(" ").length > maxWords;
|
|
1829
|
-
(0,
|
|
2163
|
+
(0, import_react18.useEffect)(() => {
|
|
1830
2164
|
const updateMaxWords = () => {
|
|
1831
2165
|
const windowWidth = window.innerWidth;
|
|
1832
2166
|
if (windowWidth <= 768) {
|
|
@@ -1848,39 +2182,33 @@ function ReadMore({ text, ...props }) {
|
|
|
1848
2182
|
}
|
|
1849
2183
|
const toggleText = () => setIsExpanded(!isExpanded);
|
|
1850
2184
|
const snippet = createReadMoreText(text, maxWords, isExpanded);
|
|
1851
|
-
return /* @__PURE__ */ (
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
"Read ",
|
|
1862
|
-
isExpanded ? "less" : "more"
|
|
1863
|
-
] })
|
|
1864
|
-
}
|
|
1865
|
-
)
|
|
1866
|
-
] });
|
|
2185
|
+
return /* @__PURE__ */ React.createElement("div", { ...props }, /* @__PURE__ */ React.createElement("div", { "data-testid": "read-more-text", className: "prose lg:prose-lg" }, /* @__PURE__ */ React.createElement(import_react_markdown.default, null, snippet)), isOverMaxWords && /* @__PURE__ */ React.createElement(
|
|
2186
|
+
Button,
|
|
2187
|
+
{
|
|
2188
|
+
type: "button",
|
|
2189
|
+
className: "mt-2 flex items-center justify-center",
|
|
2190
|
+
variant: "link",
|
|
2191
|
+
onClick: toggleText
|
|
2192
|
+
},
|
|
2193
|
+
/* @__PURE__ */ React.createElement("p", { className: "text-sm font-bold underline underline-offset-2" }, "Read ", isExpanded ? "less" : "more")
|
|
2194
|
+
));
|
|
1867
2195
|
}
|
|
1868
2196
|
|
|
1869
2197
|
// src/components/ui/DatePicker.tsx
|
|
1870
2198
|
var import_cva9 = require("cva");
|
|
1871
2199
|
var import_date_fns = require("date-fns");
|
|
1872
|
-
var
|
|
1873
|
-
var
|
|
2200
|
+
var import_lucide_react15 = require("lucide-react");
|
|
2201
|
+
var import_react19 = require("react");
|
|
1874
2202
|
|
|
1875
2203
|
// src/components/ui/calendar.tsx
|
|
1876
|
-
var
|
|
2204
|
+
var import_lucide_react14 = require("lucide-react");
|
|
2205
|
+
var React14 = __toESM(require("react"), 1);
|
|
1877
2206
|
var import_react_day_picker = require("react-day-picker");
|
|
1878
2207
|
|
|
1879
2208
|
// src/components/ui/buttonShadcn.tsx
|
|
1880
2209
|
var import_react_slot3 = require("@radix-ui/react-slot");
|
|
1881
2210
|
var import_class_variance_authority = require("class-variance-authority");
|
|
1882
|
-
var
|
|
1883
|
-
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
2211
|
+
var React13 = __toESM(require("react"), 1);
|
|
1884
2212
|
var buttonVariants2 = (0, import_class_variance_authority.cva)(
|
|
1885
2213
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-neutral-950 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 dark:focus-visible:ring-neutral-300",
|
|
1886
2214
|
{
|
|
@@ -1906,18 +2234,17 @@ var buttonVariants2 = (0, import_class_variance_authority.cva)(
|
|
|
1906
2234
|
}
|
|
1907
2235
|
}
|
|
1908
2236
|
);
|
|
1909
|
-
var Button2 =
|
|
2237
|
+
var Button2 = React13.forwardRef(
|
|
1910
2238
|
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
1911
2239
|
const Comp = asChild ? import_react_slot3.Slot : "button";
|
|
1912
|
-
return /* @__PURE__ */
|
|
2240
|
+
return /* @__PURE__ */ React13.createElement(Comp, { className: cn(buttonVariants2({ variant, size, className })), ref, ...props });
|
|
1913
2241
|
}
|
|
1914
2242
|
);
|
|
1915
2243
|
Button2.displayName = "Button";
|
|
1916
2244
|
|
|
1917
2245
|
// src/components/ui/calendar.tsx
|
|
1918
|
-
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
1919
2246
|
function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
|
|
1920
|
-
return /* @__PURE__ */
|
|
2247
|
+
return /* @__PURE__ */ React14.createElement(
|
|
1921
2248
|
import_react_day_picker.DayPicker,
|
|
1922
2249
|
{
|
|
1923
2250
|
showOutsideDays,
|
|
@@ -1957,8 +2284,8 @@ function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
|
|
|
1957
2284
|
...classNames
|
|
1958
2285
|
},
|
|
1959
2286
|
components: {
|
|
1960
|
-
IconLeft: ({ className: className2, ...props2 }) => /* @__PURE__ */
|
|
1961
|
-
IconRight: ({ className: className2, ...props2 }) => /* @__PURE__ */
|
|
2287
|
+
IconLeft: ({ className: className2, ...props2 }) => /* @__PURE__ */ React14.createElement(import_lucide_react14.ChevronLeft, { className: cn("h-4 w-4", className2), ...props2 }),
|
|
2288
|
+
IconRight: ({ className: className2, ...props2 }) => /* @__PURE__ */ React14.createElement(import_lucide_react14.ChevronRight, { className: cn("h-4 w-4", className2), ...props2 })
|
|
1962
2289
|
},
|
|
1963
2290
|
...props
|
|
1964
2291
|
}
|
|
@@ -1967,11 +2294,10 @@ function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
|
|
|
1967
2294
|
Calendar.displayName = "Calendar";
|
|
1968
2295
|
|
|
1969
2296
|
// src/components/ui/DatePicker.tsx
|
|
1970
|
-
var
|
|
1971
|
-
var DatePicker = (0, import_react14.forwardRef)(
|
|
2297
|
+
var DatePicker = (0, import_react19.forwardRef)(
|
|
1972
2298
|
({ label, description, required, classNames, value, onChange, error, id, testId }, ref) => {
|
|
1973
|
-
const [date, setDate] = (0,
|
|
1974
|
-
(0,
|
|
2299
|
+
const [date, setDate] = (0, import_react19.useState)(null);
|
|
2300
|
+
(0, import_react19.useEffect)(() => {
|
|
1975
2301
|
setDate(value ?? null);
|
|
1976
2302
|
}, [value]);
|
|
1977
2303
|
const handleDateSelect = (dateSelected) => {
|
|
@@ -1979,35 +2305,25 @@ var DatePicker = (0, import_react14.forwardRef)(
|
|
|
1979
2305
|
onChange?.(dateSelected);
|
|
1980
2306
|
setDate(dateSelected);
|
|
1981
2307
|
};
|
|
1982
|
-
return /* @__PURE__ */
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
selected: date || void 0,
|
|
2002
|
-
onSelect: handleDateSelect,
|
|
2003
|
-
captionLayout: "dropdown",
|
|
2004
|
-
showOutsideDays: true,
|
|
2005
|
-
className: classNames?.calendar
|
|
2006
|
-
}
|
|
2007
|
-
) })
|
|
2008
|
-
] }),
|
|
2009
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ErrorMessage_default, { message: error })
|
|
2010
|
-
] });
|
|
2308
|
+
return /* @__PURE__ */ React.createElement("div", { id, className: cn("flex w-auto flex-col gap-1") }, label && /* @__PURE__ */ React.createElement(
|
|
2309
|
+
Label_default,
|
|
2310
|
+
{
|
|
2311
|
+
text: label,
|
|
2312
|
+
required,
|
|
2313
|
+
description,
|
|
2314
|
+
className: classNames?.label
|
|
2315
|
+
}
|
|
2316
|
+
), /* @__PURE__ */ React.createElement(Popover, null, /* @__PURE__ */ React.createElement(PopoverTrigger, { "data-testid": testId }, /* @__PURE__ */ React.createElement("div", { className: cn(datePickerStyle(), classNames?.input) }, /* @__PURE__ */ React.createElement(import_lucide_react15.Calendar, { size: 16 }), date ? (0, import_date_fns.format)(date, "MM/dd/yyyy") : "Select a date")), /* @__PURE__ */ React.createElement(PopoverContent, { ref }, /* @__PURE__ */ React.createElement(
|
|
2317
|
+
Calendar,
|
|
2318
|
+
{
|
|
2319
|
+
mode: "single",
|
|
2320
|
+
selected: date || void 0,
|
|
2321
|
+
onSelect: handleDateSelect,
|
|
2322
|
+
captionLayout: "dropdown",
|
|
2323
|
+
showOutsideDays: true,
|
|
2324
|
+
className: classNames?.calendar
|
|
2325
|
+
}
|
|
2326
|
+
))), /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error }));
|
|
2011
2327
|
}
|
|
2012
2328
|
);
|
|
2013
2329
|
var datePickerStyle = (0, import_cva9.cva)([
|
|
@@ -2045,7 +2361,6 @@ var datePickerStyle = (0, import_cva9.cva)([
|
|
|
2045
2361
|
// src/components/ui/StepTabs.tsx
|
|
2046
2362
|
var Tabs = __toESM(require("@radix-ui/react-tabs"), 1);
|
|
2047
2363
|
var import_cva10 = require("cva");
|
|
2048
|
-
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
2049
2364
|
var tabParentVariants = (0, import_cva10.cva)("flex flex-col", {
|
|
2050
2365
|
variants: {
|
|
2051
2366
|
variant: {
|
|
@@ -2096,45 +2411,42 @@ function StepTabs({
|
|
|
2096
2411
|
variant,
|
|
2097
2412
|
...props
|
|
2098
2413
|
}) {
|
|
2099
|
-
return /* @__PURE__ */
|
|
2414
|
+
return /* @__PURE__ */ React.createElement(
|
|
2100
2415
|
Tabs.Root,
|
|
2101
2416
|
{
|
|
2102
2417
|
value: currentStep,
|
|
2103
2418
|
onValueChange: setCurrentStep,
|
|
2104
2419
|
defaultValue: defaultValue ?? "0",
|
|
2105
2420
|
className: cn(tabParentVariants({ variant }), className),
|
|
2106
|
-
...props
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
]
|
|
2130
|
-
}
|
|
2421
|
+
...props
|
|
2422
|
+
},
|
|
2423
|
+
/* @__PURE__ */ React.createElement(Tabs.List, { className: cn(headerVariants({ variant })) }, list.length > 1 && list.map((item, index) => /* @__PURE__ */ React.createElement(
|
|
2424
|
+
Tabs.Trigger,
|
|
2425
|
+
{
|
|
2426
|
+
key: `${item}-${index}`,
|
|
2427
|
+
className: cn(singleTabVariants({ variant }), classNameTab),
|
|
2428
|
+
value: index.toString()
|
|
2429
|
+
},
|
|
2430
|
+
item
|
|
2431
|
+
))),
|
|
2432
|
+
children && children.map((child, index) => /* @__PURE__ */ React.createElement(
|
|
2433
|
+
Tabs.Content,
|
|
2434
|
+
{
|
|
2435
|
+
key: index,
|
|
2436
|
+
className: cn(
|
|
2437
|
+
"grow rounded-b-md bg-white p-5 outline-none",
|
|
2438
|
+
variant === "minimal" && "border-t"
|
|
2439
|
+
),
|
|
2440
|
+
value: index.toString()
|
|
2441
|
+
},
|
|
2442
|
+
child
|
|
2443
|
+
))
|
|
2131
2444
|
);
|
|
2132
2445
|
}
|
|
2133
2446
|
|
|
2134
2447
|
// src/components/ui/DismissibleBanner.tsx
|
|
2135
|
-
var
|
|
2136
|
-
var
|
|
2137
|
-
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
2448
|
+
var import_lucide_react16 = require("lucide-react");
|
|
2449
|
+
var import_react20 = require("react");
|
|
2138
2450
|
function DismissibleBanner({
|
|
2139
2451
|
children,
|
|
2140
2452
|
cookieId,
|
|
@@ -2143,8 +2455,8 @@ function DismissibleBanner({
|
|
|
2143
2455
|
buttonClassNames
|
|
2144
2456
|
}) {
|
|
2145
2457
|
const safeId = encodeURIComponent(cookieId);
|
|
2146
|
-
const [isVisible, setIsVisible] = (0,
|
|
2147
|
-
(0,
|
|
2458
|
+
const [isVisible, setIsVisible] = (0, import_react20.useState)(false);
|
|
2459
|
+
(0, import_react20.useEffect)(() => {
|
|
2148
2460
|
const cookies = document.cookie.split(";");
|
|
2149
2461
|
const isDismissed = cookies.some((cookie) => cookie.trim().startsWith(`${safeId}=true`));
|
|
2150
2462
|
if (!isDismissed) {
|
|
@@ -2156,26 +2468,24 @@ function DismissibleBanner({
|
|
|
2156
2468
|
setIsVisible(false);
|
|
2157
2469
|
};
|
|
2158
2470
|
if (!isVisible) return null;
|
|
2159
|
-
return /* @__PURE__ */
|
|
2471
|
+
return /* @__PURE__ */ React.createElement(
|
|
2160
2472
|
"nav",
|
|
2161
2473
|
{
|
|
2162
2474
|
className: cn(
|
|
2163
2475
|
"align-center flex w-full items-center justify-between gap-2 bg-blue-100 px-4 py-3",
|
|
2164
2476
|
className
|
|
2165
|
-
)
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
]
|
|
2178
|
-
}
|
|
2477
|
+
)
|
|
2478
|
+
},
|
|
2479
|
+
/* @__PURE__ */ React.createElement("div", { className: cn("w-full text-center text-sm text-green-100", textClassNames) }, children),
|
|
2480
|
+
/* @__PURE__ */ React.createElement(
|
|
2481
|
+
"button",
|
|
2482
|
+
{
|
|
2483
|
+
className: cn("text-green-100", buttonClassNames),
|
|
2484
|
+
"aria-label": "Close banner",
|
|
2485
|
+
onClick: handleDismiss
|
|
2486
|
+
},
|
|
2487
|
+
/* @__PURE__ */ React.createElement(import_lucide_react16.X, { size: 28 })
|
|
2488
|
+
)
|
|
2179
2489
|
);
|
|
2180
2490
|
}
|
|
2181
2491
|
|
|
@@ -2609,17 +2919,12 @@ function salaryRange(salary, showUnitText = true) {
|
|
|
2609
2919
|
}
|
|
2610
2920
|
|
|
2611
2921
|
// src/components/company/CompanyBenefits.tsx
|
|
2612
|
-
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
2613
2922
|
function CompanyBenefits({ benefits }) {
|
|
2614
2923
|
if (!benefits) return null;
|
|
2615
|
-
return /* @__PURE__ */
|
|
2616
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("h2", { className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg", children: "Company benefits" }),
|
|
2617
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("ul", { className: "flex flex-col gap-3", children: benefits.map((benefit, i) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("li", { className: "text-base text-grey-80", children: benefit }, `${benefit}-${i}`)) })
|
|
2618
|
-
] });
|
|
2924
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-2", "data-testid": "company-benefits" }, /* @__PURE__ */ React.createElement("h2", { className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg" }, "Company benefits"), /* @__PURE__ */ React.createElement("ul", { className: "flex flex-col gap-3" }, benefits.map((benefit, i) => /* @__PURE__ */ React.createElement("li", { key: `${benefit}-${i}`, className: "text-base text-grey-80" }, benefit))));
|
|
2619
2925
|
}
|
|
2620
2926
|
|
|
2621
2927
|
// src/components/company/CompanyInformation.tsx
|
|
2622
|
-
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
2623
2928
|
function CompanyInformation({
|
|
2624
2929
|
name,
|
|
2625
2930
|
how,
|
|
@@ -2627,116 +2932,81 @@ function CompanyInformation({
|
|
|
2627
2932
|
wow,
|
|
2628
2933
|
website
|
|
2629
2934
|
}) {
|
|
2630
|
-
return /* @__PURE__ */
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
] })
|
|
2649
|
-
] }),
|
|
2650
|
-
wow && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex gap-2", children: [
|
|
2651
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: "\u{1F31F}" }),
|
|
2652
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("p", { className: "text-base text-grey-80", children: [
|
|
2653
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "pr-1 font-bold", children: "Wow Factor" }),
|
|
2654
|
-
wow
|
|
2655
|
-
] })
|
|
2656
|
-
] }),
|
|
2657
|
-
website && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2658
|
-
LinkButton,
|
|
2659
|
-
{
|
|
2660
|
-
"data-testid": "company-website-link",
|
|
2661
|
-
href: website,
|
|
2662
|
-
target: "_blank",
|
|
2663
|
-
rel: "noopener noreferrer",
|
|
2664
|
-
children: "Website"
|
|
2665
|
-
}
|
|
2666
|
-
) })
|
|
2667
|
-
] });
|
|
2935
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-2" }, /* @__PURE__ */ React.createElement(
|
|
2936
|
+
"h2",
|
|
2937
|
+
{
|
|
2938
|
+
"data-testid": "company-name",
|
|
2939
|
+
className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg"
|
|
2940
|
+
},
|
|
2941
|
+
"About ",
|
|
2942
|
+
name
|
|
2943
|
+
), how && /* @__PURE__ */ React.createElement("p", { "data-testid": "company-information", className: "text-base text-grey-80" }, how), mission && /* @__PURE__ */ React.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React.createElement("span", null, "\u{1F680}"), /* @__PURE__ */ React.createElement("p", { className: "text-base text-grey-80" }, /* @__PURE__ */ React.createElement("span", { className: "pr-1 font-bold" }, "Mission"), mission)), wow && /* @__PURE__ */ React.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React.createElement("span", null, "\u{1F31F}"), /* @__PURE__ */ React.createElement("p", { className: "text-base text-grey-80" }, /* @__PURE__ */ React.createElement("span", { className: "pr-1 font-bold" }, "Wow Factor"), wow)), website && /* @__PURE__ */ React.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React.createElement(
|
|
2944
|
+
LinkButton,
|
|
2945
|
+
{
|
|
2946
|
+
"data-testid": "company-website-link",
|
|
2947
|
+
href: website,
|
|
2948
|
+
target: "_blank",
|
|
2949
|
+
rel: "noopener noreferrer"
|
|
2950
|
+
},
|
|
2951
|
+
"Website"
|
|
2952
|
+
)));
|
|
2668
2953
|
}
|
|
2669
2954
|
|
|
2670
2955
|
// src/components/company/CompanyTake.tsx
|
|
2671
|
-
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
2672
2956
|
function CompanyTake({ content, avatarSrc }) {
|
|
2673
2957
|
if (!content) return null;
|
|
2674
|
-
return /* @__PURE__ */
|
|
2958
|
+
return /* @__PURE__ */ React.createElement(
|
|
2675
2959
|
"div",
|
|
2676
2960
|
{
|
|
2677
2961
|
"data-testid": "company-take",
|
|
2678
|
-
className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6"
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Avatar, { name: "Jon Lee", src: avatarSrc }),
|
|
2684
|
-
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex flex-col flex-wrap items-start", children: [
|
|
2685
|
-
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "text-sm font-bold text-white", children: "Jon Lee, PT, DPT, OCS, FAAOMPT, MBA" }),
|
|
2686
|
-
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "text-xs font-normal text-grey-30", children: "Pickle co-founder" })
|
|
2687
|
-
] })
|
|
2688
|
-
] })
|
|
2689
|
-
]
|
|
2690
|
-
}
|
|
2962
|
+
className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6"
|
|
2963
|
+
},
|
|
2964
|
+
/* @__PURE__ */ React.createElement("p", { className: "text-lg font-bold text-white sm:text-xl" }, "The Real Dill \u2618\uFE0F"),
|
|
2965
|
+
/* @__PURE__ */ React.createElement("div", { className: "mt-2 flex items-center justify-start" }, /* @__PURE__ */ React.createElement("p", { className: "text-sm font-normal text-grey-10" }, content)),
|
|
2966
|
+
/* @__PURE__ */ React.createElement("div", { className: "mt-8 flex w-full items-center gap-3" }, /* @__PURE__ */ React.createElement(Avatar, { name: "Jon Lee", src: avatarSrc }), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col flex-wrap items-start" }, /* @__PURE__ */ React.createElement("p", { className: "text-sm font-bold text-white" }, "Jon Lee, PT, DPT, OCS, FAAOMPT, MBA"), /* @__PURE__ */ React.createElement("p", { className: "text-xs font-normal text-grey-30" }, "Pickle co-founder")))
|
|
2691
2967
|
);
|
|
2692
2968
|
}
|
|
2693
2969
|
|
|
2694
2970
|
// src/components/jobPost/JobDescription.tsx
|
|
2695
|
-
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
2696
2971
|
function JobDescription({ description }) {
|
|
2697
2972
|
if (!description) return null;
|
|
2698
|
-
return /* @__PURE__ */
|
|
2699
|
-
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("h3", { className: "text-xl font-bold", children: "Job Description" }),
|
|
2700
|
-
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ReadMore, { text: description })
|
|
2701
|
-
] });
|
|
2973
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex w-full flex-col gap-2" }, /* @__PURE__ */ React.createElement("h3", { className: "text-xl font-bold" }, "Job Description"), /* @__PURE__ */ React.createElement(ReadMore, { text: description }));
|
|
2702
2974
|
}
|
|
2703
2975
|
|
|
2704
2976
|
// src/components/jobPost/JobHeader.tsx
|
|
2705
|
-
var
|
|
2977
|
+
var import_lucide_react19 = require("lucide-react");
|
|
2706
2978
|
var import_image = __toESM(require("next/image"), 1);
|
|
2707
2979
|
|
|
2708
2980
|
// src/components/buttons/BackButton.tsx
|
|
2709
|
-
var
|
|
2981
|
+
var import_lucide_react17 = require("lucide-react");
|
|
2710
2982
|
var import_navigation2 = require("next/navigation");
|
|
2711
2983
|
|
|
2712
2984
|
// src/hooks/useWindowHistory.ts
|
|
2713
|
-
var
|
|
2985
|
+
var import_react22 = require("react");
|
|
2714
2986
|
|
|
2715
2987
|
// src/contexts/WindowHistoryProvider.tsx
|
|
2716
2988
|
var import_navigation = require("next/navigation");
|
|
2717
|
-
var
|
|
2718
|
-
var
|
|
2719
|
-
var WindowHistoryContext = (0, import_react16.createContext)({});
|
|
2989
|
+
var import_react21 = require("react");
|
|
2990
|
+
var WindowHistoryContext = (0, import_react21.createContext)({});
|
|
2720
2991
|
function WindowHistoryProvider({ children }) {
|
|
2721
|
-
const [history, setHistory] = (0,
|
|
2992
|
+
const [history, setHistory] = (0, import_react21.useState)([]);
|
|
2722
2993
|
const searchParams = (0, import_navigation.useSearchParams)();
|
|
2723
|
-
(0,
|
|
2994
|
+
(0, import_react21.useEffect)(() => {
|
|
2724
2995
|
setHistory(
|
|
2725
2996
|
(prev) => prev.at(-1) === window.location.href ? prev : [...prev, window.location.href]
|
|
2726
2997
|
);
|
|
2727
2998
|
}, [searchParams]);
|
|
2728
|
-
const contextValue = (0,
|
|
2729
|
-
return /* @__PURE__ */
|
|
2999
|
+
const contextValue = (0, import_react21.useMemo)(() => ({ history }), [history]);
|
|
3000
|
+
return /* @__PURE__ */ React.createElement(WindowHistoryContext.Provider, { value: contextValue }, children);
|
|
2730
3001
|
}
|
|
2731
3002
|
|
|
2732
3003
|
// src/hooks/useWindowHistory.ts
|
|
2733
3004
|
function useWindowHistory() {
|
|
2734
|
-
const windowHistoryContext = (0,
|
|
3005
|
+
const windowHistoryContext = (0, import_react22.useContext)(WindowHistoryContext);
|
|
2735
3006
|
return windowHistoryContext;
|
|
2736
3007
|
}
|
|
2737
3008
|
|
|
2738
3009
|
// src/components/buttons/BackButton.tsx
|
|
2739
|
-
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
2740
3010
|
function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
2741
3011
|
const { history } = useWindowHistory();
|
|
2742
3012
|
const router = (0, import_navigation2.useRouter)();
|
|
@@ -2749,7 +3019,7 @@ function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
|
2749
3019
|
router.push(fallbackHref ?? "/");
|
|
2750
3020
|
}
|
|
2751
3021
|
};
|
|
2752
|
-
return /* @__PURE__ */
|
|
3022
|
+
return /* @__PURE__ */ React.createElement(
|
|
2753
3023
|
Icon,
|
|
2754
3024
|
{
|
|
2755
3025
|
"aria-label": "back button",
|
|
@@ -2757,39 +3027,38 @@ function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
|
2757
3027
|
size: "small",
|
|
2758
3028
|
onClick: goBack,
|
|
2759
3029
|
className,
|
|
2760
|
-
...props
|
|
2761
|
-
|
|
2762
|
-
|
|
3030
|
+
...props
|
|
3031
|
+
},
|
|
3032
|
+
/* @__PURE__ */ React.createElement(import_lucide_react17.X, null)
|
|
2763
3033
|
);
|
|
2764
3034
|
}
|
|
2765
3035
|
|
|
2766
3036
|
// src/lib/icons.ts
|
|
2767
|
-
var
|
|
3037
|
+
var import_lucide_react18 = require("lucide-react");
|
|
2768
3038
|
var iconMap = {
|
|
2769
|
-
house:
|
|
2770
|
-
layers:
|
|
2771
|
-
users:
|
|
2772
|
-
settings:
|
|
2773
|
-
building:
|
|
2774
|
-
bell:
|
|
2775
|
-
wallet:
|
|
2776
|
-
contact:
|
|
2777
|
-
banknote:
|
|
2778
|
-
"message-square-dot":
|
|
2779
|
-
"life-buoy":
|
|
2780
|
-
"building-2":
|
|
2781
|
-
"gallery-vertical-end":
|
|
2782
|
-
"square-kanban":
|
|
2783
|
-
"briefcase-business":
|
|
2784
|
-
"circle-user":
|
|
2785
|
-
"key-round":
|
|
2786
|
-
"clock-2":
|
|
2787
|
-
"circle-user-round":
|
|
2788
|
-
"map-pin":
|
|
3039
|
+
house: import_lucide_react18.Home,
|
|
3040
|
+
layers: import_lucide_react18.Layers,
|
|
3041
|
+
users: import_lucide_react18.Users,
|
|
3042
|
+
settings: import_lucide_react18.Settings,
|
|
3043
|
+
building: import_lucide_react18.Building,
|
|
3044
|
+
bell: import_lucide_react18.Bell,
|
|
3045
|
+
wallet: import_lucide_react18.Wallet,
|
|
3046
|
+
contact: import_lucide_react18.Contact,
|
|
3047
|
+
banknote: import_lucide_react18.Banknote,
|
|
3048
|
+
"message-square-dot": import_lucide_react18.MessageSquareDot,
|
|
3049
|
+
"life-buoy": import_lucide_react18.LifeBuoy,
|
|
3050
|
+
"building-2": import_lucide_react18.Building2,
|
|
3051
|
+
"gallery-vertical-end": import_lucide_react18.GalleryVerticalEnd,
|
|
3052
|
+
"square-kanban": import_lucide_react18.SquareKanban,
|
|
3053
|
+
"briefcase-business": import_lucide_react18.BriefcaseBusiness,
|
|
3054
|
+
"circle-user": import_lucide_react18.CircleUser,
|
|
3055
|
+
"key-round": import_lucide_react18.KeyRound,
|
|
3056
|
+
"clock-2": import_lucide_react18.Clock2,
|
|
3057
|
+
"circle-user-round": import_lucide_react18.CircleUserRound,
|
|
3058
|
+
"map-pin": import_lucide_react18.MapPin
|
|
2789
3059
|
};
|
|
2790
3060
|
|
|
2791
3061
|
// src/components/jobPost/JobHeader.tsx
|
|
2792
|
-
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
2793
3062
|
function JobHeader({
|
|
2794
3063
|
title,
|
|
2795
3064
|
subtitles,
|
|
@@ -2805,130 +3074,111 @@ function JobHeader({
|
|
|
2805
3074
|
}) {
|
|
2806
3075
|
const renderIcon = (icon) => {
|
|
2807
3076
|
const Icon2 = iconMap[icon];
|
|
2808
|
-
return /* @__PURE__ */
|
|
3077
|
+
return /* @__PURE__ */ React.createElement(Icon2, { size: 18 });
|
|
2809
3078
|
};
|
|
2810
|
-
return /* @__PURE__ */
|
|
3079
|
+
return /* @__PURE__ */ React.createElement(
|
|
2811
3080
|
"div",
|
|
2812
3081
|
{
|
|
2813
3082
|
"data-testid": "job-header-root",
|
|
2814
3083
|
className: cn(
|
|
2815
3084
|
"-mt-8 flex w-full flex-col items-center justify-between gap-6 md:-mt-0",
|
|
2816
3085
|
!standalone && "rounded-3xl"
|
|
3086
|
+
)
|
|
3087
|
+
},
|
|
3088
|
+
!standalone && /* @__PURE__ */ React.createElement("div", { className: "relative flex min-h-16 w-full items-center rounded-t-3xl bg-transparent md:min-h-24 md:flex-row lg:min-h-32" }, /* @__PURE__ */ React.createElement(
|
|
3089
|
+
import_image.default,
|
|
3090
|
+
{
|
|
3091
|
+
className: "h-full w-full rounded-t-3xl object-cover",
|
|
3092
|
+
src: bannerSrc,
|
|
3093
|
+
alt: "job banner",
|
|
3094
|
+
fill: true
|
|
3095
|
+
}
|
|
3096
|
+
), /* @__PURE__ */ React.createElement(
|
|
3097
|
+
BackButton,
|
|
3098
|
+
{
|
|
3099
|
+
acceptedRoutes: backAcceptedRoutes,
|
|
3100
|
+
fallbackHref: backFallbackHref,
|
|
3101
|
+
className: "absolute right-2 top-2 flex items-center justify-center text-white sm:hidden",
|
|
3102
|
+
"data-testid": "job-header-back-button"
|
|
3103
|
+
}
|
|
3104
|
+
), /* @__PURE__ */ React.createElement(
|
|
3105
|
+
"div",
|
|
3106
|
+
{
|
|
3107
|
+
className: "absolute left-4 top-8 md:left-6 md:top-16 lg:top-24",
|
|
3108
|
+
"data-testid": "job-header-avatar"
|
|
3109
|
+
},
|
|
3110
|
+
/* @__PURE__ */ React.createElement(
|
|
3111
|
+
Avatar,
|
|
3112
|
+
{
|
|
3113
|
+
size: "large",
|
|
3114
|
+
target: "_blank",
|
|
3115
|
+
href: avatarHref,
|
|
3116
|
+
name: avatarName,
|
|
3117
|
+
src: avatarSrc,
|
|
3118
|
+
rel: "noopener noreferrer"
|
|
3119
|
+
}
|
|
3120
|
+
)
|
|
3121
|
+
)),
|
|
3122
|
+
/* @__PURE__ */ React.createElement("div", { className: "flex w-full flex-col items-start justify-start gap-4 px-6" }, /* @__PURE__ */ React.createElement("div", { className: "flex flex-col md:flex-row" }, standalone && /* @__PURE__ */ React.createElement("div", { className: "-mt-4 mr-4 md:mt-0", "data-testid": "job-header-avatar" }, /* @__PURE__ */ React.createElement(
|
|
3123
|
+
Avatar,
|
|
3124
|
+
{
|
|
3125
|
+
size: "large",
|
|
3126
|
+
target: "_blank",
|
|
3127
|
+
href: avatarHref,
|
|
3128
|
+
name: avatarName,
|
|
3129
|
+
src: avatarSrc,
|
|
3130
|
+
rel: "noopener noreferrer"
|
|
3131
|
+
}
|
|
3132
|
+
)), /* @__PURE__ */ React.createElement("div", { className: "prose mt-4 flex w-full items-center text-grey-80 lg:prose-lg" }, subtitles?.map((subtitle, i) => /* @__PURE__ */ React.createElement(
|
|
3133
|
+
"div",
|
|
3134
|
+
{
|
|
3135
|
+
key: subtitle,
|
|
3136
|
+
"data-testid": `job-header-subtitle-${i}`,
|
|
3137
|
+
className: "flex items-center"
|
|
3138
|
+
},
|
|
3139
|
+
subtitle,
|
|
3140
|
+
i < subtitles.length - 1 && /* @__PURE__ */ React.createElement(import_lucide_react19.Dot, { className: "mx-1 shrink-0", size: 10 })
|
|
3141
|
+
)))), /* @__PURE__ */ React.createElement(
|
|
3142
|
+
"div",
|
|
3143
|
+
{
|
|
3144
|
+
"data-testid": "job-header-content",
|
|
3145
|
+
className: "mt-2 flex w-full flex-row flex-wrap items-center justify-between gap-1"
|
|
3146
|
+
},
|
|
3147
|
+
/* @__PURE__ */ React.createElement(
|
|
3148
|
+
"h2",
|
|
3149
|
+
{
|
|
3150
|
+
"data-testid": "job-header-title",
|
|
3151
|
+
className: "break-word max-w-full text-2xl font-bold text-black sm:max-w-2xl md:max-w-lg"
|
|
3152
|
+
},
|
|
3153
|
+
title
|
|
2817
3154
|
),
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
2845
|
-
{
|
|
2846
|
-
size: "large",
|
|
2847
|
-
target: "_blank",
|
|
2848
|
-
href: avatarHref,
|
|
2849
|
-
name: avatarName,
|
|
2850
|
-
src: avatarSrc,
|
|
2851
|
-
rel: "noopener noreferrer"
|
|
2852
|
-
}
|
|
2853
|
-
)
|
|
2854
|
-
}
|
|
2855
|
-
)
|
|
2856
|
-
] }),
|
|
2857
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex w-full flex-col items-start justify-start gap-4 px-6", children: [
|
|
2858
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex flex-col md:flex-row", children: [
|
|
2859
|
-
standalone && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "-mt-4 mr-4 md:mt-0", "data-testid": "job-header-avatar", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2860
|
-
Avatar,
|
|
2861
|
-
{
|
|
2862
|
-
size: "large",
|
|
2863
|
-
target: "_blank",
|
|
2864
|
-
href: avatarHref,
|
|
2865
|
-
name: avatarName,
|
|
2866
|
-
src: avatarSrc,
|
|
2867
|
-
rel: "noopener noreferrer"
|
|
2868
|
-
}
|
|
2869
|
-
) }),
|
|
2870
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "prose mt-4 flex w-full items-center text-grey-80 lg:prose-lg", children: subtitles?.map((subtitle, i) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2871
|
-
"div",
|
|
2872
|
-
{
|
|
2873
|
-
"data-testid": `job-header-subtitle-${i}`,
|
|
2874
|
-
className: "flex items-center",
|
|
2875
|
-
children: [
|
|
2876
|
-
subtitle,
|
|
2877
|
-
i < subtitles.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react18.Dot, { className: "mx-1 shrink-0", size: 10 })
|
|
2878
|
-
]
|
|
2879
|
-
},
|
|
2880
|
-
subtitle
|
|
2881
|
-
)) })
|
|
2882
|
-
] }),
|
|
2883
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2884
|
-
"div",
|
|
2885
|
-
{
|
|
2886
|
-
"data-testid": "job-header-content",
|
|
2887
|
-
className: "mt-2 flex w-full flex-row flex-wrap items-center justify-between gap-1",
|
|
2888
|
-
children: [
|
|
2889
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2890
|
-
"h2",
|
|
2891
|
-
{
|
|
2892
|
-
"data-testid": "job-header-title",
|
|
2893
|
-
className: "break-word max-w-full text-2xl font-bold text-black sm:max-w-2xl md:max-w-lg",
|
|
2894
|
-
children: title
|
|
2895
|
-
}
|
|
2896
|
-
),
|
|
2897
|
-
!!actions && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2898
|
-
"div",
|
|
2899
|
-
{
|
|
2900
|
-
className: "flex w-full justify-end gap-2 md:w-auto",
|
|
2901
|
-
"data-testid": "job-header-actions",
|
|
2902
|
-
children: actions
|
|
2903
|
-
}
|
|
2904
|
-
)
|
|
2905
|
-
]
|
|
2906
|
-
}
|
|
2907
|
-
),
|
|
2908
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2909
|
-
"div",
|
|
2910
|
-
{
|
|
2911
|
-
"data-testid": "job-header-tags",
|
|
2912
|
-
className: "flex flex-row flex-wrap items-center justify-start gap-2",
|
|
2913
|
-
children: tags?.map(({ name, label, icon }) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2914
|
-
Chip_default,
|
|
2915
|
-
{
|
|
2916
|
-
size: "small",
|
|
2917
|
-
variant: "neutral",
|
|
2918
|
-
"aria-label": name,
|
|
2919
|
-
"data-testid": `job-header-tag-${name}`,
|
|
2920
|
-
children: [
|
|
2921
|
-
renderIcon(icon),
|
|
2922
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { children: label })
|
|
2923
|
-
]
|
|
2924
|
-
},
|
|
2925
|
-
`${name}-${label}`
|
|
2926
|
-
))
|
|
2927
|
-
}
|
|
2928
|
-
)
|
|
2929
|
-
] })
|
|
2930
|
-
]
|
|
2931
|
-
}
|
|
3155
|
+
!!actions && /* @__PURE__ */ React.createElement(
|
|
3156
|
+
"div",
|
|
3157
|
+
{
|
|
3158
|
+
className: "flex w-full justify-end gap-2 md:w-auto",
|
|
3159
|
+
"data-testid": "job-header-actions"
|
|
3160
|
+
},
|
|
3161
|
+
actions
|
|
3162
|
+
)
|
|
3163
|
+
), /* @__PURE__ */ React.createElement(
|
|
3164
|
+
"div",
|
|
3165
|
+
{
|
|
3166
|
+
"data-testid": "job-header-tags",
|
|
3167
|
+
className: "flex flex-row flex-wrap items-center justify-start gap-2"
|
|
3168
|
+
},
|
|
3169
|
+
tags?.map(({ name, label, icon }) => /* @__PURE__ */ React.createElement(
|
|
3170
|
+
Chip_default,
|
|
3171
|
+
{
|
|
3172
|
+
key: `${name}-${label}`,
|
|
3173
|
+
size: "small",
|
|
3174
|
+
variant: "neutral",
|
|
3175
|
+
"aria-label": name,
|
|
3176
|
+
"data-testid": `job-header-tag-${name}`
|
|
3177
|
+
},
|
|
3178
|
+
renderIcon(icon),
|
|
3179
|
+
/* @__PURE__ */ React.createElement("span", null, label)
|
|
3180
|
+
))
|
|
3181
|
+
))
|
|
2932
3182
|
);
|
|
2933
3183
|
}
|
|
2934
3184
|
|
|
@@ -2936,7 +3186,7 @@ function JobHeader({
|
|
|
2936
3186
|
var DateFns = __toESM(require("date-fns"), 1);
|
|
2937
3187
|
|
|
2938
3188
|
// src/hooks/useDisplayText.ts
|
|
2939
|
-
var
|
|
3189
|
+
var import_react23 = require("react");
|
|
2940
3190
|
|
|
2941
3191
|
// src/lib/mappings.ts
|
|
2942
3192
|
var employmentTypeDisplayText = {
|
|
@@ -3380,9 +3630,9 @@ var DisplayTextService = class {
|
|
|
3380
3630
|
|
|
3381
3631
|
// src/hooks/useDisplayText.ts
|
|
3382
3632
|
var useDisplayText = (scope, value) => {
|
|
3383
|
-
const [displayText, setDisplayText] = (0,
|
|
3384
|
-
const displayService = (0,
|
|
3385
|
-
(0,
|
|
3633
|
+
const [displayText, setDisplayText] = (0, import_react23.useState)("");
|
|
3634
|
+
const displayService = (0, import_react23.useMemo)(() => new DisplayTextService(), []);
|
|
3635
|
+
(0, import_react23.useEffect)(() => {
|
|
3386
3636
|
if (!displayService || !value) {
|
|
3387
3637
|
setDisplayText("");
|
|
3388
3638
|
return;
|
|
@@ -3443,7 +3693,6 @@ function getAddressList(jobPost) {
|
|
|
3443
3693
|
}
|
|
3444
3694
|
|
|
3445
3695
|
// src/components/jobPost/JobPost.tsx
|
|
3446
|
-
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
3447
3696
|
function JobPost({
|
|
3448
3697
|
job,
|
|
3449
3698
|
bannerSrc,
|
|
@@ -3489,97 +3738,80 @@ function JobPost({
|
|
|
3489
3738
|
label
|
|
3490
3739
|
}))
|
|
3491
3740
|
].filter((t) => !!t);
|
|
3492
|
-
return /* @__PURE__ */
|
|
3741
|
+
return /* @__PURE__ */ React.createElement(
|
|
3493
3742
|
"div",
|
|
3494
3743
|
{
|
|
3495
3744
|
className: cn(
|
|
3496
3745
|
"flex flex-col gap-10 pb-4",
|
|
3497
3746
|
!standalone && "border-1 rounded-3xl border-grey-5"
|
|
3498
|
-
)
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
|
|
3505
|
-
|
|
3506
|
-
|
|
3507
|
-
|
|
3508
|
-
|
|
3509
|
-
|
|
3510
|
-
|
|
3511
|
-
|
|
3512
|
-
|
|
3513
|
-
|
|
3514
|
-
|
|
3515
|
-
|
|
3516
|
-
|
|
3517
|
-
|
|
3518
|
-
|
|
3519
|
-
|
|
3520
|
-
|
|
3521
|
-
|
|
3522
|
-
|
|
3523
|
-
|
|
3524
|
-
|
|
3525
|
-
|
|
3526
|
-
|
|
3527
|
-
|
|
3528
|
-
|
|
3529
|
-
|
|
3530
|
-
|
|
3531
|
-
|
|
3532
|
-
|
|
3533
|
-
|
|
3534
|
-
|
|
3535
|
-
|
|
3536
|
-
|
|
3537
|
-
{
|
|
3538
|
-
benefits: job.hiringOrganization?.companyCareers?.companyBenefits?.map((b) => b.title).filter((d) => d !== void 0)
|
|
3539
|
-
}
|
|
3540
|
-
)
|
|
3541
|
-
] })
|
|
3542
|
-
]
|
|
3543
|
-
}
|
|
3747
|
+
)
|
|
3748
|
+
},
|
|
3749
|
+
/* @__PURE__ */ React.createElement(
|
|
3750
|
+
JobHeader,
|
|
3751
|
+
{
|
|
3752
|
+
title: job.title,
|
|
3753
|
+
bannerSrc,
|
|
3754
|
+
avatarName: job.hiringOrganization?.companyName,
|
|
3755
|
+
avatarSrc: job.hiringOrganization?.logo?.asset?.url,
|
|
3756
|
+
subtitles: [job.hiringOrganization?.companyName ?? "", `Posted ${formattedDate}`],
|
|
3757
|
+
actions,
|
|
3758
|
+
standalone,
|
|
3759
|
+
avatarHref,
|
|
3760
|
+
backFallbackHref: fallbackHref,
|
|
3761
|
+
backAcceptedRoutes,
|
|
3762
|
+
tags
|
|
3763
|
+
}
|
|
3764
|
+
),
|
|
3765
|
+
/* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-8 px-6" }, /* @__PURE__ */ React.createElement(JobDescription, { description: job.description }), /* @__PURE__ */ React.createElement(
|
|
3766
|
+
CompanyTake,
|
|
3767
|
+
{
|
|
3768
|
+
avatarSrc,
|
|
3769
|
+
content: job.hiringOrganization?.companyNDG?.companyNDGTake
|
|
3770
|
+
}
|
|
3771
|
+
), /* @__PURE__ */ React.createElement(
|
|
3772
|
+
CompanyInformation,
|
|
3773
|
+
{
|
|
3774
|
+
name: job.hiringOrganization?.companyName ?? "",
|
|
3775
|
+
how: job.hiringOrganization?.companyPhilosophy?.companyHow,
|
|
3776
|
+
mission: job.hiringOrganization?.companyPhilosophy?.companyMission,
|
|
3777
|
+
wow: job.hiringOrganization?.companyNDG?.companyWow,
|
|
3778
|
+
website: job.hiringOrganization?.companyWebsite
|
|
3779
|
+
}
|
|
3780
|
+
), /* @__PURE__ */ React.createElement(
|
|
3781
|
+
CompanyBenefits,
|
|
3782
|
+
{
|
|
3783
|
+
benefits: job.hiringOrganization?.companyCareers?.companyBenefits?.map((b) => b.title).filter((d) => d !== void 0)
|
|
3784
|
+
}
|
|
3785
|
+
))
|
|
3544
3786
|
);
|
|
3545
3787
|
}
|
|
3546
3788
|
|
|
3547
3789
|
// src/components/jobCard/JobLocation.tsx
|
|
3548
|
-
var
|
|
3549
|
-
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
3790
|
+
var import_lucide_react20 = require("lucide-react");
|
|
3550
3791
|
function JobLocation({ jobPost }) {
|
|
3551
3792
|
const locations = getAddressList(jobPost);
|
|
3552
3793
|
if (!locations || locations.length === 0) return null;
|
|
3553
3794
|
const primaryOffice = locations[0];
|
|
3554
3795
|
const extendedLocations = locations.slice(1).map((address) => address);
|
|
3555
|
-
return /* @__PURE__ */
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3559
|
-
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
|
|
3564
|
-
|
|
3565
|
-
|
|
3566
|
-
|
|
3567
|
-
|
|
3568
|
-
|
|
3569
|
-
|
|
3570
|
-
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
TooltipContent,
|
|
3575
|
-
{
|
|
3576
|
-
className: "border-1 rounded-md border border-grey-5 bg-white p-2",
|
|
3577
|
-
"data-testid": "job-location-tooltip-content",
|
|
3578
|
-
children: extendedLocations.map((location) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "text-nowrap text-sm", children: location }, location))
|
|
3579
|
-
}
|
|
3580
|
-
)
|
|
3581
|
-
] }) })
|
|
3582
|
-
] });
|
|
3796
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2", "data-testid": "job-location-element" }, /* @__PURE__ */ React.createElement(import_lucide_react20.MapPin, { size: 16 }), /* @__PURE__ */ React.createElement("span", { className: "text-sm font-thin" }, primaryOffice), extendedLocations.length > 0 && /* @__PURE__ */ React.createElement(TooltipProvider, null, /* @__PURE__ */ React.createElement(Tooltip, null, /* @__PURE__ */ React.createElement(TooltipTrigger, null, /* @__PURE__ */ React.createElement(
|
|
3797
|
+
Chip_default,
|
|
3798
|
+
{
|
|
3799
|
+
className: "font-bold",
|
|
3800
|
+
size: "small",
|
|
3801
|
+
variant: "jobLocation",
|
|
3802
|
+
"data-testid": "job-location-tooltip"
|
|
3803
|
+
},
|
|
3804
|
+
"+ ",
|
|
3805
|
+
extendedLocations.length,
|
|
3806
|
+
" more"
|
|
3807
|
+
)), /* @__PURE__ */ React.createElement(
|
|
3808
|
+
TooltipContent,
|
|
3809
|
+
{
|
|
3810
|
+
className: "border-1 rounded-md border border-grey-5 bg-white p-2",
|
|
3811
|
+
"data-testid": "job-location-tooltip-content"
|
|
3812
|
+
},
|
|
3813
|
+
extendedLocations.map((location) => /* @__PURE__ */ React.createElement("div", { key: location, className: "text-nowrap text-sm" }, location))
|
|
3814
|
+
))));
|
|
3583
3815
|
}
|
|
3584
3816
|
|
|
3585
3817
|
// src/types/data/company_service_latest.ts
|