@next-degree/pickle-shared-js 0.12.7 → 0.13.0
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-BzaIPM-N.d.ts} +2297 -2297
- package/dist/{company_service_sanity-KaAGfnNV.d.ts → company_service_sanity-Zy8TiORb.d.cts} +2297 -2297
- 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 +2 -3
- package/dist/components/ui/Chip.d.ts +2 -3
- 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.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-DIxMXVLl.d.ts} +2 -2
- package/dist/{displayText-DW0qiJqh.d.cts → displayText-DRyxjHTZ.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_latest-C_TEBzCf.d.cts → job_posting_service_latest-7q4A7RpW.d.cts} +1171 -1171
- package/dist/{job_posting_service_latest-C_TEBzCf.d.ts → job_posting_service_latest-7q4A7RpW.d.ts} +1171 -1171
- package/dist/{job_posting_service_latest-DdgK8Nnz.d.cts → job_posting_service_latest-BrZndMS6.d.cts} +1171 -1171
- package/dist/{job_posting_service_latest-DdgK8Nnz.d.ts → job_posting_service_latest-BrZndMS6.d.ts} +1171 -1171
- package/dist/{job_posting_service_sanity-BNq-Am9N.d.cts → job_posting_service_sanity-B5NZ-7tI.d.cts} +2126 -2126
- package/dist/{job_posting_service_sanity-BKo9TBDT.d.ts → job_posting_service_sanity-LlRkfIpt.d.ts} +2126 -2126
- 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 +149 -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 +4 -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-BwbaqchJ.d.cts} +1220 -1220
- package/dist/{company_service_latest-CITz7F53.d.ts → company_service_latest-BwbaqchJ.d.ts} +1220 -1220
- package/dist/{company_service_latest-C7Moeufo.d.cts → company_service_latest-FHqG4LjA.d.cts} +1220 -1220
- package/dist/{company_service_latest-C7Moeufo.d.ts → company_service_latest-FHqG4LjA.d.ts} +1220 -1220
- package/dist/{shared_pickle_output_latest-CXBCG04N.d.cts → shared_pickle_output_latest-CKHNY1lx.d.cts} +42 -42
- package/dist/{shared_pickle_output_latest-CXBCG04N.d.ts → shared_pickle_output_latest-CKHNY1lx.d.ts} +42 -42
- package/dist/{shared_pickle_output_latest-CtvHTPeX.d.cts → shared_pickle_output_latest-DIPgxUul.d.cts} +42 -42
- package/dist/{shared_pickle_output_latest-CtvHTPeX.d.ts → shared_pickle_output_latest-DIPgxUul.d.ts} +42 -42
package/dist/index.js
CHANGED
|
@@ -6,9 +6,9 @@ var __export = (target, all) => {
|
|
|
6
6
|
|
|
7
7
|
// src/components/ui/Chip.tsx
|
|
8
8
|
import { cva } from "cva";
|
|
9
|
+
import React2 from "react";
|
|
9
10
|
import { twMerge } from "tailwind-merge";
|
|
10
|
-
|
|
11
|
-
var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ jsx("div", { className: twMerge(chipVariants({ variant, size, className })), ...props });
|
|
11
|
+
var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ React2.createElement("div", { className: twMerge(chipVariants({ variant, size, className })), ...props });
|
|
12
12
|
var chipVariants = cva(["flex", "items-center", "rounded-3xl", "border", "w-fit"], {
|
|
13
13
|
variants: {
|
|
14
14
|
variant: {
|
|
@@ -44,10 +44,9 @@ function cn(...inputs) {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
// src/components/ui/ErrorMessage.tsx
|
|
47
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
48
47
|
function ErrorMessage({ message, className, ...props }) {
|
|
49
48
|
if (!message) return null;
|
|
50
|
-
return /* @__PURE__ */
|
|
49
|
+
return /* @__PURE__ */ React.createElement("p", { className: cn("px-1 text-xs text-red-600", className), ...props }, message);
|
|
51
50
|
}
|
|
52
51
|
var ErrorMessage_default = ErrorMessage;
|
|
53
52
|
|
|
@@ -56,12 +55,11 @@ import { InfoIcon } from "lucide-react";
|
|
|
56
55
|
|
|
57
56
|
// src/components/primitives/tooltip.tsx
|
|
58
57
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
59
|
-
import * as
|
|
60
|
-
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
58
|
+
import * as React3 from "react";
|
|
61
59
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
62
60
|
var Tooltip = TooltipPrimitive.Root;
|
|
63
61
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
64
|
-
var TooltipContent =
|
|
62
|
+
var TooltipContent = React3.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React3.createElement(
|
|
65
63
|
TooltipPrimitive.Content,
|
|
66
64
|
{
|
|
67
65
|
ref,
|
|
@@ -76,34 +74,24 @@ var TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props },
|
|
|
76
74
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
77
75
|
|
|
78
76
|
// src/components/ui/Label.tsx
|
|
79
|
-
import { jsx as jsx4, jsxs } from "react/jsx-runtime";
|
|
80
77
|
function Label({ text, required, description, className, ...props }) {
|
|
81
78
|
if (!text) return null;
|
|
82
|
-
return /* @__PURE__ */
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
]
|
|
95
|
-
}
|
|
96
|
-
),
|
|
97
|
-
!!description && /* @__PURE__ */ jsx4(TooltipProvider, { children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
98
|
-
/* @__PURE__ */ jsx4(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx4(InfoIcon, { className: "h-4 w-4" }) }),
|
|
99
|
-
/* @__PURE__ */ jsx4(TooltipContent, { className: "max-w-48", children: description })
|
|
100
|
-
] }) })
|
|
101
|
-
] });
|
|
79
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex w-full flex-row gap-1" }, /* @__PURE__ */ React.createElement(
|
|
80
|
+
"label",
|
|
81
|
+
{
|
|
82
|
+
className: cn(
|
|
83
|
+
"text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
84
|
+
className
|
|
85
|
+
),
|
|
86
|
+
...props
|
|
87
|
+
},
|
|
88
|
+
text,
|
|
89
|
+
required && /* @__PURE__ */ React.createElement("span", { className: "text-red-600" }, "\xA0*")
|
|
90
|
+
), !!description && /* @__PURE__ */ React.createElement(TooltipProvider, null, /* @__PURE__ */ React.createElement(Tooltip, null, /* @__PURE__ */ React.createElement(TooltipTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(InfoIcon, { className: "h-4 w-4" })), /* @__PURE__ */ React.createElement(TooltipContent, { className: "max-w-48" }, description))));
|
|
102
91
|
}
|
|
103
92
|
var Label_default = Label;
|
|
104
93
|
|
|
105
94
|
// src/components/ui/Input.tsx
|
|
106
|
-
import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
107
95
|
var Input = forwardRef2(
|
|
108
96
|
({ label, error, description, theme, icon, onClear, value, onChange, classNames, ...props }, ref) => {
|
|
109
97
|
const handleClear = () => {
|
|
@@ -114,47 +102,39 @@ var Input = forwardRef2(
|
|
|
114
102
|
const placeholder = props.placeholder ?? (icon === "Search" ? "Search..." : "");
|
|
115
103
|
const hasIcon = !!icon;
|
|
116
104
|
const iconColor = theme === "dark" ? "text-white" : "text-grey-80";
|
|
117
|
-
return /* @__PURE__ */
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
),
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
className: `absolute right-3 h-4 w-4 cursor-pointer ${iconColor}`,
|
|
151
|
-
onClick: handleClear,
|
|
152
|
-
"data-testid": "clear-button"
|
|
153
|
-
}
|
|
154
|
-
)
|
|
155
|
-
] }),
|
|
156
|
-
/* @__PURE__ */ jsx5(ErrorMessage_default, { message: error })
|
|
157
|
-
] });
|
|
105
|
+
return /* @__PURE__ */ React.createElement("div", { className: "group flex w-full flex-col gap-1", "data-testid": `input-wrapper-${props.id}` }, label && /* @__PURE__ */ React.createElement(
|
|
106
|
+
Label_default,
|
|
107
|
+
{
|
|
108
|
+
text: label,
|
|
109
|
+
htmlFor: props.name,
|
|
110
|
+
required: props.required,
|
|
111
|
+
description,
|
|
112
|
+
className: classNames?.label
|
|
113
|
+
}
|
|
114
|
+
), /* @__PURE__ */ React.createElement("div", { className: "relative flex flex-row items-center" }, IconComponent && /* @__PURE__ */ React.createElement(
|
|
115
|
+
IconComponent,
|
|
116
|
+
{
|
|
117
|
+
className: `absolute left-3 h-4 w-4 ${iconColor} opacity-50 group-hover:opacity-100`
|
|
118
|
+
}
|
|
119
|
+
), /* @__PURE__ */ React.createElement(
|
|
120
|
+
"input",
|
|
121
|
+
{
|
|
122
|
+
className: cn(inputVariants({ theme, hasIcon })),
|
|
123
|
+
ref,
|
|
124
|
+
placeholder,
|
|
125
|
+
value,
|
|
126
|
+
onChange,
|
|
127
|
+
"data-testid": `input-element-${props.id}`,
|
|
128
|
+
...props
|
|
129
|
+
}
|
|
130
|
+
), hasIcon && value && /* @__PURE__ */ React.createElement(
|
|
131
|
+
X,
|
|
132
|
+
{
|
|
133
|
+
className: `absolute right-3 h-4 w-4 cursor-pointer ${iconColor}`,
|
|
134
|
+
onClick: handleClear,
|
|
135
|
+
"data-testid": "clear-button"
|
|
136
|
+
}
|
|
137
|
+
)), /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error }));
|
|
158
138
|
}
|
|
159
139
|
);
|
|
160
140
|
Input.displayName = "Input";
|
|
@@ -218,8 +198,7 @@ import { Check, Minus } from "lucide-react";
|
|
|
218
198
|
import {
|
|
219
199
|
forwardRef as forwardRef3
|
|
220
200
|
} from "react";
|
|
221
|
-
|
|
222
|
-
var CheckboxToggle = forwardRef3(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
|
|
201
|
+
var CheckboxToggle = forwardRef3(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
|
223
202
|
CheckboxPrimitive.Root,
|
|
224
203
|
{
|
|
225
204
|
ref,
|
|
@@ -248,41 +227,32 @@ var CheckboxToggle = forwardRef3(({ className, ...props }, ref) => /* @__PURE__
|
|
|
248
227
|
props.disabled && "bg-grey-20 data-[state=checked]:bg-grey-20 data-[state=checked]:text-foreground",
|
|
249
228
|
className
|
|
250
229
|
),
|
|
251
|
-
...props
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
/* @__PURE__ */ jsx6(Minus, { className: "hidden h-4 w-4 group-data-[state=indeterminate]:block" })
|
|
255
|
-
] })
|
|
256
|
-
}
|
|
230
|
+
...props
|
|
231
|
+
},
|
|
232
|
+
/* @__PURE__ */ React.createElement(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current" }, /* @__PURE__ */ React.createElement(Check, { className: "hidden h-4 w-4 group-data-[state=checked]:block" }), /* @__PURE__ */ React.createElement(Minus, { className: "hidden h-4 w-4 group-data-[state=indeterminate]:block" }))
|
|
257
233
|
));
|
|
258
234
|
CheckboxToggle.displayName = CheckboxPrimitive.Root.displayName;
|
|
259
235
|
var Checkbox = forwardRef3(
|
|
260
236
|
({ error, classNames, children, ...props }, ref) => {
|
|
261
237
|
const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`;
|
|
262
|
-
return /* @__PURE__ */
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
/* @__PURE__ */ jsx6(ErrorMessage_default, { message: error, className: "mt-1" })
|
|
276
|
-
]
|
|
277
|
-
}
|
|
278
|
-
)
|
|
279
|
-
] });
|
|
238
|
+
return /* @__PURE__ */ React.createElement("div", { className: cn("flex space-x-2", classNames?.wrapper) }, /* @__PURE__ */ React.createElement(CheckboxToggle, { id, ref, ...props }), /* @__PURE__ */ React.createElement(
|
|
239
|
+
"label",
|
|
240
|
+
{
|
|
241
|
+
htmlFor: id,
|
|
242
|
+
className: cn(
|
|
243
|
+
"text-sm",
|
|
244
|
+
props.disabled && "pointer-events-none text-grey-40",
|
|
245
|
+
classNames?.label
|
|
246
|
+
)
|
|
247
|
+
},
|
|
248
|
+
children,
|
|
249
|
+
/* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error, className: "mt-1" })
|
|
250
|
+
));
|
|
280
251
|
}
|
|
281
252
|
);
|
|
282
253
|
Checkbox.displayName = "Checkbox";
|
|
283
254
|
|
|
284
255
|
// src/components/ui/ListItem.tsx
|
|
285
|
-
import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
286
256
|
function ListItem({
|
|
287
257
|
icon,
|
|
288
258
|
hasCheckbox,
|
|
@@ -296,12 +266,12 @@ function ListItem({
|
|
|
296
266
|
const getIconIfValid = (icon2) => {
|
|
297
267
|
if (icon2 in icons2) {
|
|
298
268
|
const IconComponent = icons2[icon2];
|
|
299
|
-
return /* @__PURE__ */
|
|
269
|
+
return /* @__PURE__ */ React.createElement(IconComponent, { size: 14 });
|
|
300
270
|
}
|
|
301
271
|
return null;
|
|
302
272
|
};
|
|
303
273
|
const optionIcon = icon ? getIconIfValid(icon) : void 0;
|
|
304
|
-
return /* @__PURE__ */
|
|
274
|
+
return /* @__PURE__ */ React.createElement(
|
|
305
275
|
"li",
|
|
306
276
|
{
|
|
307
277
|
className: cn(
|
|
@@ -309,70 +279,392 @@ function ListItem({
|
|
|
309
279
|
className
|
|
310
280
|
),
|
|
311
281
|
...props,
|
|
312
|
-
"data-state": isSelected ? "checked" : "unchecked"
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
size: 16
|
|
325
|
-
}
|
|
326
|
-
)
|
|
327
|
-
]
|
|
328
|
-
}
|
|
282
|
+
"data-state": isSelected ? "checked" : "unchecked"
|
|
283
|
+
},
|
|
284
|
+
optionIcon && /* @__PURE__ */ React.createElement("span", { className: "mr-2" }, optionIcon),
|
|
285
|
+
hasCheckbox && /* @__PURE__ */ React.createElement(Checkbox, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
|
|
286
|
+
/* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", null, title), /* @__PURE__ */ React.createElement("p", { className: "text-xs text-grey-80" }, description)),
|
|
287
|
+
/* @__PURE__ */ React.createElement(
|
|
288
|
+
CheckIcon,
|
|
289
|
+
{
|
|
290
|
+
className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
|
|
291
|
+
size: 16
|
|
292
|
+
}
|
|
293
|
+
)
|
|
329
294
|
);
|
|
330
295
|
}
|
|
331
296
|
var ListItem_default = ListItem;
|
|
332
297
|
|
|
333
|
-
// src/components/ui/MapComponent.tsx
|
|
334
|
-
import {
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
298
|
+
// src/components/ui/Map/MapComponent.tsx
|
|
299
|
+
import { APIProvider } from "@vis.gl/react-google-maps";
|
|
300
|
+
|
|
301
|
+
// src/components/ui/Map/constants.ts
|
|
302
|
+
var DEFAULT_POSITION = { lat: 40.715021, lng: -74.00459 };
|
|
303
|
+
var DEFAULT_ZOOM = 10;
|
|
304
|
+
var CLUSTER_DISTANCE_THRESHOLD = 1e-3;
|
|
305
|
+
var PIN_COLORS = {
|
|
306
|
+
background: "#0B5441",
|
|
307
|
+
borderColor: "#EBFDF1",
|
|
308
|
+
glyphColor: "#D4F500"
|
|
309
|
+
};
|
|
310
|
+
var FOCUS_CIRCLE_STYLES = {
|
|
311
|
+
strokeColor: "#0B5441",
|
|
312
|
+
strokeOpacity: 0.8,
|
|
313
|
+
strokeWeight: 2,
|
|
314
|
+
fillColor: "#0B5441",
|
|
315
|
+
fillOpacity: 0.1,
|
|
316
|
+
clickable: false,
|
|
317
|
+
zIndex: 1
|
|
318
|
+
};
|
|
319
|
+
var CLUSTERING_CONFIG = {
|
|
320
|
+
radius: 60,
|
|
321
|
+
maxZoom: 16,
|
|
322
|
+
minPoints: 2
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
// src/components/ui/Map/hooks.ts
|
|
326
|
+
import { useMemo, useState } from "react";
|
|
327
|
+
import useSupercluster from "use-supercluster";
|
|
328
|
+
|
|
329
|
+
// src/components/ui/Map/utils.ts
|
|
330
|
+
function getCenterForCoordinates(coords) {
|
|
331
|
+
if (coords.length === 0) return DEFAULT_POSITION;
|
|
332
|
+
const avgLat = coords.reduce((sum, coord) => sum + coord.lat, 0) / coords.length;
|
|
333
|
+
const avgLng = coords.reduce((sum, coord) => sum + coord.lng, 0) / coords.length;
|
|
334
|
+
return { lat: avgLat, lng: avgLng };
|
|
335
|
+
}
|
|
336
|
+
function getZoomForCoordinates(coords, defaultZoom) {
|
|
337
|
+
if (coords.length <= 1) return defaultZoom;
|
|
338
|
+
const lats = coords.map((coord) => coord.lat);
|
|
339
|
+
const lngs = coords.map((coord) => coord.lng);
|
|
340
|
+
const latDiff = Math.max(...lats) - Math.min(...lats);
|
|
341
|
+
const lngDiff = Math.max(...lngs) - Math.min(...lngs);
|
|
342
|
+
const maxDiff = Math.max(latDiff, lngDiff);
|
|
343
|
+
if (maxDiff > 0.1) return 8;
|
|
344
|
+
if (maxDiff > 0.05) return 10;
|
|
345
|
+
if (maxDiff > 0.01) return 12;
|
|
346
|
+
return 14;
|
|
347
|
+
}
|
|
348
|
+
function filterClusterCoordinates(coordinates, clusterLat, clusterLng) {
|
|
349
|
+
return coordinates.filter((coord) => {
|
|
350
|
+
const latDiff = Math.abs(coord.lat - clusterLat);
|
|
351
|
+
const lngDiff = Math.abs(coord.lng - clusterLng);
|
|
352
|
+
const distance = Math.sqrt(latDiff * latDiff + lngDiff * lngDiff);
|
|
353
|
+
return distance < CLUSTER_DISTANCE_THRESHOLD;
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// src/components/ui/Map/clustering.ts
|
|
358
|
+
function convertCoordinatesToGeoJSON(coordinates) {
|
|
359
|
+
return coordinates.map((coord, index) => ({
|
|
360
|
+
type: "Feature",
|
|
361
|
+
properties: {
|
|
362
|
+
cluster: false,
|
|
363
|
+
pointId: index,
|
|
364
|
+
data: coord.data
|
|
365
|
+
},
|
|
366
|
+
geometry: {
|
|
367
|
+
type: "Point",
|
|
368
|
+
coordinates: [coord.lng, coord.lat]
|
|
369
|
+
}
|
|
370
|
+
}));
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
// src/components/ui/Map/hooks.ts
|
|
374
|
+
function useMapBounds(_coordinates) {
|
|
375
|
+
const [bounds, setBounds] = useState([
|
|
376
|
+
[-180, -85],
|
|
377
|
+
[180, 85]
|
|
378
|
+
]);
|
|
379
|
+
return { bounds, setBounds };
|
|
380
|
+
}
|
|
381
|
+
function useZoomLevel(initialZoom) {
|
|
382
|
+
const [zoomLevel, setZoomLevel] = useState(initialZoom);
|
|
383
|
+
return { zoomLevel, setZoomLevel };
|
|
384
|
+
}
|
|
385
|
+
function useClusters(coordinates, bounds, zoomLevel) {
|
|
386
|
+
const points = useMemo(() => {
|
|
387
|
+
if (!coordinates) return [];
|
|
388
|
+
return convertCoordinatesToGeoJSON(coordinates);
|
|
389
|
+
}, [coordinates]);
|
|
390
|
+
const { clusters, supercluster } = useSupercluster({
|
|
391
|
+
points,
|
|
392
|
+
bounds: [-180, -85, 180, 85],
|
|
393
|
+
// Use global bounds for consistency
|
|
394
|
+
zoom: zoomLevel || 10,
|
|
395
|
+
options: CLUSTERING_CONFIG
|
|
396
|
+
});
|
|
397
|
+
return { clusters, supercluster };
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
// src/components/ui/Map/MapContent.tsx
|
|
401
|
+
import { AdvancedMarker as AdvancedMarker3, Map, Pin as Pin2, useMap, useMapsLibrary } from "@vis.gl/react-google-maps";
|
|
402
|
+
import { useCallback } from "react";
|
|
403
|
+
|
|
404
|
+
// src/components/ui/Map/ClusterMarker.tsx
|
|
405
|
+
import { AdvancedMarker } from "@vis.gl/react-google-maps";
|
|
406
|
+
function ClusterMarker({
|
|
407
|
+
cluster,
|
|
408
|
+
coordinates,
|
|
409
|
+
onPinClick,
|
|
410
|
+
onPinHover,
|
|
411
|
+
zoomToLevel,
|
|
412
|
+
supercluster
|
|
413
|
+
}) {
|
|
414
|
+
const [lng, lat] = cluster.geometry.coordinates;
|
|
415
|
+
const { point_count: pointCount } = cluster.properties;
|
|
416
|
+
const handleClick = () => {
|
|
417
|
+
const clusterCoordinates = filterClusterCoordinates(coordinates, lat, lng);
|
|
418
|
+
onPinClick?.(clusterCoordinates);
|
|
419
|
+
const expansionZoom = supercluster.getClusterExpansionZoom(cluster.id);
|
|
420
|
+
zoomToLevel(expansionZoom);
|
|
421
|
+
};
|
|
422
|
+
const handleMouseEnter = () => {
|
|
423
|
+
const clusterCoordinates = filterClusterCoordinates(coordinates, lat, lng);
|
|
424
|
+
onPinHover?.(clusterCoordinates);
|
|
425
|
+
};
|
|
426
|
+
const handleMouseLeave = () => onPinHover?.(null);
|
|
427
|
+
return /* @__PURE__ */ React.createElement(
|
|
428
|
+
AdvancedMarker,
|
|
429
|
+
{
|
|
430
|
+
key: `cluster-${cluster.id}`,
|
|
431
|
+
position: { lat, lng },
|
|
432
|
+
onClick: handleClick,
|
|
433
|
+
onMouseEnter: handleMouseEnter,
|
|
434
|
+
onMouseLeave: handleMouseLeave
|
|
435
|
+
},
|
|
436
|
+
/* @__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 || "?"))
|
|
437
|
+
);
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
// src/components/ui/Map/FocusCircle.tsx
|
|
441
|
+
import { useEffect, useMemo as useMemo2, useRef } from "react";
|
|
442
|
+
function FocusCircle({
|
|
443
|
+
focusPoint,
|
|
444
|
+
radiusMiles,
|
|
445
|
+
map,
|
|
446
|
+
mapsLibrary
|
|
447
|
+
}) {
|
|
448
|
+
const circleRef = useRef(null);
|
|
449
|
+
const circleProps = useMemo2(() => {
|
|
450
|
+
if (!focusPoint || !radiusMiles) return null;
|
|
451
|
+
return {
|
|
452
|
+
center: focusPoint,
|
|
453
|
+
radius: radiusMiles * 1609.34
|
|
454
|
+
};
|
|
455
|
+
}, [focusPoint, radiusMiles]);
|
|
456
|
+
useEffect(() => {
|
|
457
|
+
if (!map || !mapsLibrary || !circleProps) {
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
if (!circleRef.current) {
|
|
461
|
+
const circle = new google.maps.Circle({
|
|
462
|
+
center: circleProps.center,
|
|
463
|
+
radius: circleProps.radius,
|
|
464
|
+
...FOCUS_CIRCLE_STYLES,
|
|
465
|
+
map
|
|
466
|
+
});
|
|
467
|
+
circleRef.current = circle;
|
|
468
|
+
} else {
|
|
469
|
+
circleRef.current.setCenter(circleProps.center);
|
|
470
|
+
circleRef.current.setRadius(circleProps.radius);
|
|
471
|
+
}
|
|
472
|
+
}, [map, mapsLibrary, circleProps]);
|
|
473
|
+
useEffect(() => {
|
|
474
|
+
return () => {
|
|
475
|
+
if (circleRef.current) {
|
|
476
|
+
circleRef.current.setMap(null);
|
|
477
|
+
circleRef.current = null;
|
|
478
|
+
}
|
|
479
|
+
};
|
|
480
|
+
}, []);
|
|
481
|
+
return null;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// src/components/ui/Map/IndividualMarker.tsx
|
|
485
|
+
import { AdvancedMarker as AdvancedMarker2, Pin } from "@vis.gl/react-google-maps";
|
|
486
|
+
function IndividualMarker({
|
|
487
|
+
coordinate,
|
|
488
|
+
onPinClick,
|
|
489
|
+
onPinHover
|
|
490
|
+
}) {
|
|
491
|
+
const handleMouseEnter = () => onPinHover?.(coordinate);
|
|
492
|
+
const handleMouseLeave = () => onPinHover?.(null);
|
|
493
|
+
const handleClick = () => onPinClick?.(coordinate);
|
|
494
|
+
return /* @__PURE__ */ React.createElement(
|
|
495
|
+
AdvancedMarker2,
|
|
496
|
+
{
|
|
497
|
+
position: { lat: coordinate.lat, lng: coordinate.lng },
|
|
498
|
+
onMouseEnter: handleMouseEnter,
|
|
499
|
+
onMouseLeave: handleMouseLeave,
|
|
500
|
+
onClick: handleClick
|
|
501
|
+
},
|
|
502
|
+
/* @__PURE__ */ React.createElement(Pin, { ...PIN_COLORS })
|
|
503
|
+
);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
// src/components/ui/Map/MapContent.tsx
|
|
507
|
+
function MapContent({
|
|
338
508
|
mapId,
|
|
509
|
+
mapCenter,
|
|
510
|
+
mapZoom,
|
|
339
511
|
position,
|
|
512
|
+
coordinates,
|
|
513
|
+
clusters,
|
|
514
|
+
supercluster,
|
|
515
|
+
onPinHover,
|
|
516
|
+
onPinClick,
|
|
517
|
+
focusPoint,
|
|
518
|
+
radiusMiles,
|
|
340
519
|
className,
|
|
341
|
-
|
|
520
|
+
setBounds,
|
|
521
|
+
setZoomLevel
|
|
342
522
|
}) {
|
|
343
|
-
const
|
|
344
|
-
const
|
|
345
|
-
|
|
523
|
+
const map = useMap();
|
|
524
|
+
const mapsLibrary = useMapsLibrary("maps");
|
|
525
|
+
const zoomToLevel = useCallback(
|
|
526
|
+
(newZoom) => {
|
|
527
|
+
if (map) {
|
|
528
|
+
map.setZoom(newZoom);
|
|
529
|
+
}
|
|
530
|
+
},
|
|
531
|
+
[map]
|
|
532
|
+
);
|
|
533
|
+
const handleBoundsChanged = (e) => {
|
|
534
|
+
if (e.detail.bounds) {
|
|
535
|
+
const bounds = e.detail.bounds;
|
|
536
|
+
setBounds([
|
|
537
|
+
[bounds.south, bounds.west],
|
|
538
|
+
[bounds.north, bounds.east]
|
|
539
|
+
]);
|
|
540
|
+
}
|
|
541
|
+
};
|
|
542
|
+
const handleZoomChanged = (e) => {
|
|
543
|
+
if (e.detail.zoom) {
|
|
544
|
+
setZoomLevel(e.detail.zoom);
|
|
545
|
+
}
|
|
546
|
+
};
|
|
547
|
+
const handleCameraChanged = (e) => {
|
|
548
|
+
if (e.detail.zoom) {
|
|
549
|
+
setZoomLevel(e.detail.zoom);
|
|
550
|
+
}
|
|
551
|
+
};
|
|
552
|
+
return /* @__PURE__ */ React.createElement("div", { className: cn("relative h-screen max-w-full", className) }, /* @__PURE__ */ React.createElement(
|
|
346
553
|
Map,
|
|
347
554
|
{
|
|
348
|
-
defaultZoom:
|
|
349
|
-
|
|
555
|
+
defaultZoom: mapZoom,
|
|
556
|
+
defaultCenter: mapCenter,
|
|
350
557
|
mapId,
|
|
351
|
-
keyboardShortcuts:
|
|
558
|
+
keyboardShortcuts: true,
|
|
352
559
|
disableDefaultUI: true,
|
|
353
560
|
zoomControl: true,
|
|
354
|
-
|
|
561
|
+
onBoundsChanged: handleBoundsChanged,
|
|
562
|
+
onZoomChanged: handleZoomChanged,
|
|
563
|
+
onCameraChanged: handleCameraChanged
|
|
564
|
+
},
|
|
565
|
+
position && !coordinates && /* @__PURE__ */ React.createElement(AdvancedMarker3, { position }, /* @__PURE__ */ React.createElement(Pin2, { ...PIN_COLORS })),
|
|
566
|
+
coordinates && clusters.map((cluster) => {
|
|
567
|
+
const { cluster: isCluster } = cluster.properties;
|
|
568
|
+
if (isCluster) {
|
|
569
|
+
return /* @__PURE__ */ React.createElement(
|
|
570
|
+
ClusterMarker,
|
|
571
|
+
{
|
|
572
|
+
key: `cluster-${cluster.id}`,
|
|
573
|
+
cluster,
|
|
574
|
+
coordinates,
|
|
575
|
+
onPinClick,
|
|
576
|
+
onPinHover,
|
|
577
|
+
zoomToLevel,
|
|
578
|
+
supercluster
|
|
579
|
+
}
|
|
580
|
+
);
|
|
581
|
+
}
|
|
582
|
+
const originalPoint = coordinates[cluster.properties.pointId];
|
|
583
|
+
return /* @__PURE__ */ React.createElement(
|
|
584
|
+
IndividualMarker,
|
|
585
|
+
{
|
|
586
|
+
key: `marker-${cluster.properties.pointId}`,
|
|
587
|
+
coordinate: originalPoint,
|
|
588
|
+
onPinClick,
|
|
589
|
+
onPinHover
|
|
590
|
+
}
|
|
591
|
+
);
|
|
592
|
+
}),
|
|
593
|
+
coordinates && clusters.length === 0 && coordinates.map((coord, index) => /* @__PURE__ */ React.createElement(
|
|
594
|
+
IndividualMarker,
|
|
595
|
+
{
|
|
596
|
+
key: `fallback-${index}`,
|
|
597
|
+
coordinate: coord,
|
|
598
|
+
onPinClick,
|
|
599
|
+
onPinHover
|
|
600
|
+
}
|
|
601
|
+
)),
|
|
602
|
+
focusPoint && radiusMiles && /* @__PURE__ */ React.createElement(
|
|
603
|
+
FocusCircle,
|
|
604
|
+
{
|
|
605
|
+
focusPoint,
|
|
606
|
+
radiusMiles,
|
|
607
|
+
map,
|
|
608
|
+
mapsLibrary
|
|
609
|
+
}
|
|
610
|
+
)
|
|
611
|
+
));
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
// src/components/ui/Map/MapComponent.tsx
|
|
615
|
+
function MapComponent({
|
|
616
|
+
apiKey,
|
|
617
|
+
mapId,
|
|
618
|
+
position,
|
|
619
|
+
coordinates,
|
|
620
|
+
onPinHover,
|
|
621
|
+
onPinClick,
|
|
622
|
+
focusPoint,
|
|
623
|
+
radiusMiles,
|
|
624
|
+
className,
|
|
625
|
+
zoom = 10
|
|
626
|
+
}) {
|
|
627
|
+
const { bounds, setBounds } = useMapBounds(coordinates);
|
|
628
|
+
const { zoomLevel, setZoomLevel } = useZoomLevel(zoom || DEFAULT_ZOOM);
|
|
629
|
+
const { clusters, supercluster } = useClusters(coordinates, bounds, zoomLevel);
|
|
630
|
+
const mapCenter = coordinates && coordinates.length > 0 ? getCenterForCoordinates(coordinates) : position || DEFAULT_POSITION;
|
|
631
|
+
const mapZoom = coordinates && coordinates.length > 1 ? getZoomForCoordinates(coordinates, zoom) : position ? zoom : DEFAULT_ZOOM;
|
|
632
|
+
return /* @__PURE__ */ React.createElement(APIProvider, { apiKey }, /* @__PURE__ */ React.createElement(
|
|
633
|
+
MapContent,
|
|
634
|
+
{
|
|
635
|
+
mapId,
|
|
636
|
+
mapCenter,
|
|
637
|
+
mapZoom,
|
|
638
|
+
position,
|
|
639
|
+
coordinates,
|
|
640
|
+
clusters,
|
|
641
|
+
supercluster,
|
|
642
|
+
onPinHover,
|
|
643
|
+
onPinClick,
|
|
644
|
+
focusPoint,
|
|
645
|
+
radiusMiles,
|
|
646
|
+
className,
|
|
647
|
+
setBounds,
|
|
648
|
+
setZoomLevel
|
|
355
649
|
}
|
|
356
|
-
)
|
|
650
|
+
));
|
|
357
651
|
}
|
|
358
|
-
var MapComponent_default = MapComponent;
|
|
359
652
|
|
|
360
653
|
// src/components/ui/PlacesQueryInput.tsx
|
|
361
654
|
import { CircleX, LoaderCircle } from "lucide-react";
|
|
362
|
-
import { useCallback, useEffect, useRef, useState } from "react";
|
|
655
|
+
import { useCallback as useCallback2, useEffect as useEffect2, useRef as useRef2, useState as useState2 } from "react";
|
|
363
656
|
|
|
364
657
|
// src/components/primitives/command.tsx
|
|
365
658
|
import { Command as CommandPrimitive } from "cmdk";
|
|
366
659
|
import { Search } from "lucide-react";
|
|
367
|
-
import * as
|
|
660
|
+
import * as React5 from "react";
|
|
368
661
|
|
|
369
662
|
// src/components/primitives/dialog.tsx
|
|
370
663
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
371
664
|
import { X as X2 } from "lucide-react";
|
|
372
|
-
import * as
|
|
373
|
-
import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
665
|
+
import * as React4 from "react";
|
|
374
666
|
var DialogPortal = DialogPrimitive.Portal;
|
|
375
|
-
var DialogOverlay =
|
|
667
|
+
var DialogOverlay = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React4.createElement(
|
|
376
668
|
DialogPrimitive.Overlay,
|
|
377
669
|
{
|
|
378
670
|
ref,
|
|
@@ -384,31 +676,23 @@ var DialogOverlay = React2.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
384
676
|
}
|
|
385
677
|
));
|
|
386
678
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
387
|
-
var DialogContent =
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
className
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
/* @__PURE__ */ jsxs5(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: [
|
|
401
|
-
/* @__PURE__ */ jsx9(X2, { className: "h-4 w-4" }),
|
|
402
|
-
/* @__PURE__ */ jsx9("span", { className: "sr-only", children: "Close" })
|
|
403
|
-
] })
|
|
404
|
-
]
|
|
405
|
-
}
|
|
406
|
-
)
|
|
407
|
-
] }));
|
|
679
|
+
var DialogContent = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React4.createElement(DialogPortal, null, /* @__PURE__ */ React4.createElement(DialogOverlay, null), /* @__PURE__ */ React4.createElement(
|
|
680
|
+
DialogPrimitive.Content,
|
|
681
|
+
{
|
|
682
|
+
ref,
|
|
683
|
+
className: cn(
|
|
684
|
+
"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",
|
|
685
|
+
className
|
|
686
|
+
),
|
|
687
|
+
...props
|
|
688
|
+
},
|
|
689
|
+
children,
|
|
690
|
+
/* @__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(X2, { className: "h-4 w-4" }), /* @__PURE__ */ React4.createElement("span", { className: "sr-only" }, "Close"))
|
|
691
|
+
)));
|
|
408
692
|
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
409
|
-
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */
|
|
693
|
+
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ React4.createElement("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props });
|
|
410
694
|
DialogHeader.displayName = "DialogHeader";
|
|
411
|
-
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */
|
|
695
|
+
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ React4.createElement(
|
|
412
696
|
"div",
|
|
413
697
|
{
|
|
414
698
|
className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className),
|
|
@@ -416,7 +700,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx9(
|
|
|
416
700
|
}
|
|
417
701
|
);
|
|
418
702
|
DialogFooter.displayName = "DialogFooter";
|
|
419
|
-
var DialogTitle =
|
|
703
|
+
var DialogTitle = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React4.createElement(
|
|
420
704
|
DialogPrimitive.Title,
|
|
421
705
|
{
|
|
422
706
|
ref,
|
|
@@ -425,7 +709,7 @@ var DialogTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
425
709
|
}
|
|
426
710
|
));
|
|
427
711
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
428
|
-
var DialogDescription =
|
|
712
|
+
var DialogDescription = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React4.createElement(
|
|
429
713
|
DialogPrimitive.Description,
|
|
430
714
|
{
|
|
431
715
|
ref,
|
|
@@ -436,8 +720,7 @@ var DialogDescription = React2.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
436
720
|
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
437
721
|
|
|
438
722
|
// src/components/primitives/command.tsx
|
|
439
|
-
|
|
440
|
-
var Command = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
723
|
+
var Command = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
|
|
441
724
|
CommandPrimitive,
|
|
442
725
|
{
|
|
443
726
|
ref,
|
|
@@ -449,22 +732,19 @@ var Command = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
|
|
|
449
732
|
}
|
|
450
733
|
));
|
|
451
734
|
Command.displayName = CommandPrimitive.displayName;
|
|
452
|
-
var CommandInput =
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
className
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
}
|
|
464
|
-
)
|
|
465
|
-
] }));
|
|
735
|
+
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(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }), /* @__PURE__ */ React5.createElement(
|
|
736
|
+
CommandPrimitive.Input,
|
|
737
|
+
{
|
|
738
|
+
ref,
|
|
739
|
+
className: cn(
|
|
740
|
+
"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",
|
|
741
|
+
className
|
|
742
|
+
),
|
|
743
|
+
...props
|
|
744
|
+
}
|
|
745
|
+
)));
|
|
466
746
|
CommandInput.displayName = CommandPrimitive.Input.displayName;
|
|
467
|
-
var CommandList =
|
|
747
|
+
var CommandList = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
|
|
468
748
|
CommandPrimitive.List,
|
|
469
749
|
{
|
|
470
750
|
ref,
|
|
@@ -473,9 +753,9 @@ var CommandList = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
473
753
|
}
|
|
474
754
|
));
|
|
475
755
|
CommandList.displayName = CommandPrimitive.List.displayName;
|
|
476
|
-
var CommandEmpty =
|
|
756
|
+
var CommandEmpty = React5.forwardRef((props, ref) => /* @__PURE__ */ React5.createElement(CommandPrimitive.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
|
|
477
757
|
CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
|
|
478
|
-
var CommandGroup =
|
|
758
|
+
var CommandGroup = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
|
|
479
759
|
CommandPrimitive.Group,
|
|
480
760
|
{
|
|
481
761
|
ref,
|
|
@@ -487,7 +767,7 @@ var CommandGroup = React3.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
487
767
|
}
|
|
488
768
|
));
|
|
489
769
|
CommandGroup.displayName = CommandPrimitive.Group.displayName;
|
|
490
|
-
var CommandSeparator =
|
|
770
|
+
var CommandSeparator = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
|
|
491
771
|
CommandPrimitive.Separator,
|
|
492
772
|
{
|
|
493
773
|
ref,
|
|
@@ -496,7 +776,7 @@ var CommandSeparator = React3.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
496
776
|
}
|
|
497
777
|
));
|
|
498
778
|
CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
|
|
499
|
-
var CommandItem =
|
|
779
|
+
var CommandItem = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
|
|
500
780
|
CommandPrimitive.Item,
|
|
501
781
|
{
|
|
502
782
|
ref,
|
|
@@ -509,7 +789,7 @@ var CommandItem = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
509
789
|
));
|
|
510
790
|
CommandItem.displayName = CommandPrimitive.Item.displayName;
|
|
511
791
|
var CommandShortcut = ({ className, ...props }) => {
|
|
512
|
-
return /* @__PURE__ */
|
|
792
|
+
return /* @__PURE__ */ React5.createElement(
|
|
513
793
|
"span",
|
|
514
794
|
{
|
|
515
795
|
className: cn("ml-auto text-xs tracking-widest text-neutral-500", className),
|
|
@@ -570,20 +850,19 @@ var geocode = async (address, key) => {
|
|
|
570
850
|
};
|
|
571
851
|
|
|
572
852
|
// src/components/ui/PlacesQueryInput.tsx
|
|
573
|
-
import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
574
853
|
function PlacesQueryInput({
|
|
575
854
|
apiKey,
|
|
576
855
|
selected,
|
|
577
856
|
onSelect,
|
|
578
857
|
className
|
|
579
858
|
}) {
|
|
580
|
-
const [predictions, setPredictions] =
|
|
581
|
-
const [input, setInput] =
|
|
582
|
-
const [isLoadingPredictions, setIsLoadingPredictions] =
|
|
583
|
-
const [shouldOpenUpward, setShouldOpenUpward] =
|
|
584
|
-
const timeoutRef =
|
|
585
|
-
const inputRef =
|
|
586
|
-
const debouncedAutocomplete =
|
|
859
|
+
const [predictions, setPredictions] = useState2(null);
|
|
860
|
+
const [input, setInput] = useState2(selected?.description ?? "");
|
|
861
|
+
const [isLoadingPredictions, setIsLoadingPredictions] = useState2(false);
|
|
862
|
+
const [shouldOpenUpward, setShouldOpenUpward] = useState2(false);
|
|
863
|
+
const timeoutRef = useRef2(null);
|
|
864
|
+
const inputRef = useRef2(null);
|
|
865
|
+
const debouncedAutocomplete = useCallback2((value) => {
|
|
587
866
|
if (timeoutRef.current) {
|
|
588
867
|
clearTimeout(timeoutRef.current);
|
|
589
868
|
}
|
|
@@ -619,7 +898,7 @@ function PlacesQueryInput({
|
|
|
619
898
|
setInput("");
|
|
620
899
|
};
|
|
621
900
|
const handleBlur = () => setTimeout(() => setPredictions(null), 200);
|
|
622
|
-
|
|
901
|
+
useEffect2(() => {
|
|
623
902
|
const checkDropdownPosition = () => {
|
|
624
903
|
if (inputRef.current) {
|
|
625
904
|
const rect = inputRef.current.getBoundingClientRect();
|
|
@@ -631,50 +910,41 @@ function PlacesQueryInput({
|
|
|
631
910
|
window.addEventListener("resize", checkDropdownPosition);
|
|
632
911
|
return () => window.removeEventListener("resize", checkDropdownPosition);
|
|
633
912
|
}, []);
|
|
634
|
-
return /* @__PURE__ */
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
913
|
+
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(
|
|
914
|
+
CommandInput,
|
|
915
|
+
{
|
|
916
|
+
placeholder: "Type an address to search...",
|
|
917
|
+
value: input,
|
|
918
|
+
onValueChange: handleInputChange,
|
|
919
|
+
className: "truncate pr-8"
|
|
920
|
+
}
|
|
921
|
+
), isLoadingPredictions && /* @__PURE__ */ React.createElement(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(
|
|
922
|
+
"button",
|
|
923
|
+
{
|
|
924
|
+
type: "button",
|
|
925
|
+
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",
|
|
926
|
+
onClick: handleClear
|
|
927
|
+
},
|
|
928
|
+
/* @__PURE__ */ React.createElement(CircleX, { className: "h-4 w-4 text-green-100" })
|
|
929
|
+
)), predictions && /* @__PURE__ */ React.createElement(
|
|
930
|
+
CommandList,
|
|
931
|
+
{
|
|
932
|
+
className: cn(
|
|
933
|
+
"absolute z-50 w-full rounded-md border bg-white shadow-lg",
|
|
934
|
+
shouldOpenUpward ? "bottom-full" : "top-full"
|
|
654
935
|
)
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
936
|
+
},
|
|
937
|
+
/* @__PURE__ */ React.createElement(CommandEmpty, null, "No results"),
|
|
938
|
+
/* @__PURE__ */ React.createElement(CommandGroup, null, predictions.map((prediction) => /* @__PURE__ */ React.createElement(
|
|
939
|
+
CommandItem,
|
|
658
940
|
{
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
CommandItem,
|
|
667
|
-
{
|
|
668
|
-
onSelect: () => handleSelect(prediction),
|
|
669
|
-
className: "truncate",
|
|
670
|
-
children: prediction.description
|
|
671
|
-
},
|
|
672
|
-
prediction.place_id
|
|
673
|
-
)) })
|
|
674
|
-
]
|
|
675
|
-
}
|
|
676
|
-
)
|
|
677
|
-
] }) });
|
|
941
|
+
key: prediction.place_id,
|
|
942
|
+
onSelect: () => handleSelect(prediction),
|
|
943
|
+
className: "truncate"
|
|
944
|
+
},
|
|
945
|
+
prediction.description
|
|
946
|
+
)))
|
|
947
|
+
)));
|
|
678
948
|
}
|
|
679
949
|
var PlacesQueryInput_default = PlacesQueryInput;
|
|
680
950
|
|
|
@@ -683,16 +953,15 @@ import * as SelectPrimitive from "@radix-ui/react-select";
|
|
|
683
953
|
import { CheckIcon as CheckIcon2, ChevronDownIcon, X as X3 } from "lucide-react";
|
|
684
954
|
import {
|
|
685
955
|
forwardRef as forwardRef7,
|
|
686
|
-
useEffect as
|
|
687
|
-
useRef as
|
|
688
|
-
useState as
|
|
956
|
+
useEffect as useEffect3,
|
|
957
|
+
useRef as useRef3,
|
|
958
|
+
useState as useState3
|
|
689
959
|
} from "react";
|
|
690
960
|
|
|
691
961
|
// src/components/primitives/separator.tsx
|
|
692
962
|
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
693
|
-
import * as
|
|
694
|
-
|
|
695
|
-
var Separator = React4.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx12(
|
|
963
|
+
import * as React6 from "react";
|
|
964
|
+
var Separator = React6.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ React6.createElement(
|
|
696
965
|
SeparatorPrimitive.Root,
|
|
697
966
|
{
|
|
698
967
|
ref,
|
|
@@ -709,7 +978,6 @@ var Separator = React4.forwardRef(({ className, orientation = "horizontal", deco
|
|
|
709
978
|
Separator.displayName = SeparatorPrimitive.Root.displayName;
|
|
710
979
|
|
|
711
980
|
// src/components/ui/Select.tsx
|
|
712
|
-
import { Fragment, jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
713
981
|
var Select = forwardRef7(
|
|
714
982
|
({
|
|
715
983
|
label,
|
|
@@ -725,10 +993,10 @@ var Select = forwardRef7(
|
|
|
725
993
|
...props
|
|
726
994
|
}, ref) => {
|
|
727
995
|
const { value, defaultValue, dir, className, onChange, ...rest } = props;
|
|
728
|
-
const [selected, setSelected] =
|
|
729
|
-
const [open, setOpen] =
|
|
730
|
-
const containerRef =
|
|
731
|
-
|
|
996
|
+
const [selected, setSelected] = useState3([]);
|
|
997
|
+
const [open, setOpen] = useState3(false);
|
|
998
|
+
const containerRef = useRef3(null);
|
|
999
|
+
useEffect3(() => {
|
|
732
1000
|
if (!value) return setSelected([]);
|
|
733
1001
|
setSelected(Array.isArray(value) ? value : [value]);
|
|
734
1002
|
}, [value]);
|
|
@@ -747,148 +1015,127 @@ var Select = forwardRef7(
|
|
|
747
1015
|
});
|
|
748
1016
|
onChange?.(multiselect ? newSelected : newValue);
|
|
749
1017
|
}
|
|
750
|
-
return /* @__PURE__ */
|
|
1018
|
+
return /* @__PURE__ */ React.createElement(
|
|
751
1019
|
"div",
|
|
752
1020
|
{
|
|
753
1021
|
className: cn("flex w-full flex-col gap-1", className),
|
|
754
1022
|
ref: containerRef,
|
|
755
|
-
"data-testid": `${(label ?? id)?.toLowerCase()}-select-element
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
1023
|
+
"data-testid": `${(label ?? id)?.toLowerCase()}-select-element`
|
|
1024
|
+
},
|
|
1025
|
+
/* @__PURE__ */ React.createElement(
|
|
1026
|
+
Label_default,
|
|
1027
|
+
{
|
|
1028
|
+
text: label,
|
|
1029
|
+
htmlFor: props.name,
|
|
1030
|
+
required: props.required,
|
|
1031
|
+
description,
|
|
1032
|
+
className: classNames?.label
|
|
1033
|
+
}
|
|
1034
|
+
),
|
|
1035
|
+
/* @__PURE__ */ React.createElement(
|
|
1036
|
+
SelectPrimitive.Root,
|
|
1037
|
+
{
|
|
1038
|
+
open,
|
|
1039
|
+
value: selected.join(","),
|
|
1040
|
+
onOpenChange: handleOnOpenChange,
|
|
1041
|
+
onValueChange: multiselect ? void 0 : handleChange,
|
|
1042
|
+
defaultValue: typeof defaultValue === "string" ? defaultValue : void 0,
|
|
1043
|
+
dir: dir === "rtl" ? "rtl" : "ltr",
|
|
1044
|
+
...rest
|
|
1045
|
+
},
|
|
1046
|
+
/* @__PURE__ */ React.createElement(
|
|
1047
|
+
SelectPrimitive.Trigger,
|
|
1048
|
+
{
|
|
1049
|
+
ref,
|
|
1050
|
+
className: cn(
|
|
1051
|
+
"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",
|
|
1052
|
+
classNames?.trigger
|
|
1053
|
+
)
|
|
1054
|
+
},
|
|
1055
|
+
/* @__PURE__ */ React.createElement("span", { className: "truncate" }, /* @__PURE__ */ React.createElement(
|
|
1056
|
+
SelectPrimitive.Value,
|
|
1057
|
+
{
|
|
1058
|
+
placeholder: placeholder ?? "Select an option",
|
|
1059
|
+
"aria-label": getLabel()
|
|
1060
|
+
},
|
|
1061
|
+
getLabel()
|
|
1062
|
+
)),
|
|
1063
|
+
/* @__PURE__ */ React.createElement(
|
|
1064
|
+
ChevronDownIcon,
|
|
759
1065
|
{
|
|
760
|
-
text:
|
|
761
|
-
|
|
762
|
-
required: props.required,
|
|
763
|
-
description,
|
|
764
|
-
className: classNames?.label
|
|
1066
|
+
className: "transform text-black group-data-[state=open]:rotate-180",
|
|
1067
|
+
size: "16"
|
|
765
1068
|
}
|
|
766
|
-
)
|
|
767
|
-
|
|
768
|
-
|
|
1069
|
+
)
|
|
1070
|
+
),
|
|
1071
|
+
/* @__PURE__ */ React.createElement(SelectPrimitive.Portal, { container: containerRef.current }, /* @__PURE__ */ React.createElement(
|
|
1072
|
+
SelectPrimitive.Content,
|
|
1073
|
+
{
|
|
1074
|
+
hideWhenDetached: true,
|
|
1075
|
+
className: cn(
|
|
1076
|
+
"z-10 max-h-[var(--radix-select-content-available-height)] overflow-hidden rounded-md bg-white py-2 shadow-lg",
|
|
1077
|
+
"w-[var(--radix-select-trigger-width)] min-w-[var(--radix-select-trigger-width)]",
|
|
1078
|
+
classNames?.content
|
|
1079
|
+
),
|
|
1080
|
+
position: "popper",
|
|
1081
|
+
align: dropdownAlign,
|
|
1082
|
+
sideOffset: 4,
|
|
1083
|
+
onPointerDownOutside: toggleOpen,
|
|
1084
|
+
onKeyDown: closeOnEscape
|
|
1085
|
+
},
|
|
1086
|
+
/* @__PURE__ */ React.createElement(SelectPrimitive.Viewport, null, multiselect && !!chipLabels?.length && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
1087
|
+
SelectPrimitive.Group,
|
|
1088
|
+
{
|
|
1089
|
+
className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
|
|
1090
|
+
"data-testid": "selected-labels"
|
|
1091
|
+
},
|
|
1092
|
+
chipLabels?.map(
|
|
1093
|
+
(chip) => chip && /* @__PURE__ */ React.createElement(Chip_default, { key: chip.title, size: "small", variant: "primary" }, /* @__PURE__ */ React.createElement("span", null, chip.title), /* @__PURE__ */ React.createElement(
|
|
1094
|
+
X3,
|
|
1095
|
+
{
|
|
1096
|
+
size: 18,
|
|
1097
|
+
"data-testid": `chip-remove-${chip.value}`,
|
|
1098
|
+
className: "cursor-pointer",
|
|
1099
|
+
onClick: () => handleChange(chip.value)
|
|
1100
|
+
}
|
|
1101
|
+
))
|
|
1102
|
+
)
|
|
1103
|
+
), /* @__PURE__ */ React.createElement(Separator, null)), options?.map(({ id: id2, title, value: value2, description: description2 }) => /* @__PURE__ */ React.createElement(
|
|
1104
|
+
SelectPrimitive.Item,
|
|
769
1105
|
{
|
|
770
|
-
|
|
771
|
-
value:
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
children: [
|
|
787
|
-
/* @__PURE__ */ jsx13("span", { className: "truncate", children: /* @__PURE__ */ jsx13(
|
|
788
|
-
SelectPrimitive.Value,
|
|
789
|
-
{
|
|
790
|
-
placeholder: placeholder ?? "Select an option",
|
|
791
|
-
"aria-label": getLabel(),
|
|
792
|
-
children: getLabel()
|
|
793
|
-
}
|
|
794
|
-
) }),
|
|
795
|
-
/* @__PURE__ */ jsx13(
|
|
796
|
-
ChevronDownIcon,
|
|
797
|
-
{
|
|
798
|
-
className: "transform text-black group-data-[state=open]:rotate-180",
|
|
799
|
-
size: "16"
|
|
800
|
-
}
|
|
801
|
-
)
|
|
802
|
-
]
|
|
803
|
-
}
|
|
1106
|
+
key: id2,
|
|
1107
|
+
value: value2,
|
|
1108
|
+
className: cn(
|
|
1109
|
+
"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",
|
|
1110
|
+
classNames?.item
|
|
1111
|
+
),
|
|
1112
|
+
"data-state": selected.includes(value2) ? "checked" : "unchecked",
|
|
1113
|
+
onKeyDown: (e) => setValueOnEnter(e, value2),
|
|
1114
|
+
onClick: () => handleChange(value2)
|
|
1115
|
+
},
|
|
1116
|
+
/* @__PURE__ */ React.createElement(
|
|
1117
|
+
CheckIcon2,
|
|
1118
|
+
{
|
|
1119
|
+
className: cn(
|
|
1120
|
+
"absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
|
|
1121
|
+
classNames?.checkmark
|
|
804
1122
|
),
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
/* @__PURE__ */ jsx13(
|
|
822
|
-
SelectPrimitive.Group,
|
|
823
|
-
{
|
|
824
|
-
className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
|
|
825
|
-
"data-testid": "selected-labels",
|
|
826
|
-
children: chipLabels?.map(
|
|
827
|
-
(chip) => chip && /* @__PURE__ */ jsxs8(Chip_default, { size: "small", variant: "primary", children: [
|
|
828
|
-
/* @__PURE__ */ jsx13("span", { children: chip.title }),
|
|
829
|
-
/* @__PURE__ */ jsx13(
|
|
830
|
-
X3,
|
|
831
|
-
{
|
|
832
|
-
size: 18,
|
|
833
|
-
"data-testid": `chip-remove-${chip.value}`,
|
|
834
|
-
className: "cursor-pointer",
|
|
835
|
-
onClick: () => handleChange(chip.value)
|
|
836
|
-
}
|
|
837
|
-
)
|
|
838
|
-
] }, chip.title)
|
|
839
|
-
)
|
|
840
|
-
}
|
|
841
|
-
),
|
|
842
|
-
/* @__PURE__ */ jsx13(Separator, {})
|
|
843
|
-
] }),
|
|
844
|
-
options?.map(({ id: id2, title, value: value2, description: description2 }) => /* @__PURE__ */ jsxs8(
|
|
845
|
-
SelectPrimitive.Item,
|
|
846
|
-
{
|
|
847
|
-
value: value2,
|
|
848
|
-
className: cn(
|
|
849
|
-
"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",
|
|
850
|
-
classNames?.item
|
|
851
|
-
),
|
|
852
|
-
"data-state": selected.includes(value2) ? "checked" : "unchecked",
|
|
853
|
-
onKeyDown: (e) => setValueOnEnter(e, value2),
|
|
854
|
-
onClick: () => handleChange(value2),
|
|
855
|
-
children: [
|
|
856
|
-
/* @__PURE__ */ jsx13(
|
|
857
|
-
CheckIcon2,
|
|
858
|
-
{
|
|
859
|
-
className: cn(
|
|
860
|
-
"absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
|
|
861
|
-
classNames?.checkmark
|
|
862
|
-
),
|
|
863
|
-
size: 16
|
|
864
|
-
}
|
|
865
|
-
),
|
|
866
|
-
/* @__PURE__ */ jsx13(SelectPrimitive.ItemText, { children: title }),
|
|
867
|
-
description2 && /* @__PURE__ */ jsx13("span", { className: "block text-sm text-grey-70", children: description2 })
|
|
868
|
-
]
|
|
869
|
-
},
|
|
870
|
-
id2
|
|
871
|
-
)),
|
|
872
|
-
!!footer && /* @__PURE__ */ jsxs8(Fragment, { children: [
|
|
873
|
-
/* @__PURE__ */ jsx13(Separator, {}),
|
|
874
|
-
/* @__PURE__ */ jsx13(
|
|
875
|
-
SelectPrimitive.Group,
|
|
876
|
-
{
|
|
877
|
-
className: "mt-2 flex flex-row flex-wrap gap-1 px-2",
|
|
878
|
-
"data-testid": "selected-labels",
|
|
879
|
-
children: footer
|
|
880
|
-
}
|
|
881
|
-
)
|
|
882
|
-
] })
|
|
883
|
-
] })
|
|
884
|
-
}
|
|
885
|
-
) })
|
|
886
|
-
]
|
|
887
|
-
}
|
|
888
|
-
),
|
|
889
|
-
/* @__PURE__ */ jsx13(ErrorMessage_default, { message: error })
|
|
890
|
-
]
|
|
891
|
-
}
|
|
1123
|
+
size: 16
|
|
1124
|
+
}
|
|
1125
|
+
),
|
|
1126
|
+
/* @__PURE__ */ React.createElement(SelectPrimitive.ItemText, null, title),
|
|
1127
|
+
description2 && /* @__PURE__ */ React.createElement("span", { className: "block text-sm text-grey-70" }, description2)
|
|
1128
|
+
)), !!footer && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Separator, null), /* @__PURE__ */ React.createElement(
|
|
1129
|
+
SelectPrimitive.Group,
|
|
1130
|
+
{
|
|
1131
|
+
className: "mt-2 flex flex-row flex-wrap gap-1 px-2",
|
|
1132
|
+
"data-testid": "selected-labels"
|
|
1133
|
+
},
|
|
1134
|
+
footer
|
|
1135
|
+
)))
|
|
1136
|
+
))
|
|
1137
|
+
),
|
|
1138
|
+
/* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error })
|
|
892
1139
|
);
|
|
893
1140
|
}
|
|
894
1141
|
);
|
|
@@ -901,9 +1148,8 @@ import Link from "next/link";
|
|
|
901
1148
|
|
|
902
1149
|
// src/components/primitives/avatar.tsx
|
|
903
1150
|
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
904
|
-
import * as
|
|
905
|
-
|
|
906
|
-
var AvatarBase = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
|
|
1151
|
+
import * as React7 from "react";
|
|
1152
|
+
var AvatarBase = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React7.createElement(
|
|
907
1153
|
AvatarPrimitive.Root,
|
|
908
1154
|
{
|
|
909
1155
|
ref,
|
|
@@ -912,7 +1158,7 @@ var AvatarBase = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
912
1158
|
}
|
|
913
1159
|
));
|
|
914
1160
|
AvatarBase.displayName = AvatarPrimitive.Root.displayName;
|
|
915
|
-
var AvatarImage =
|
|
1161
|
+
var AvatarImage = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React7.createElement(
|
|
916
1162
|
AvatarPrimitive.Image,
|
|
917
1163
|
{
|
|
918
1164
|
ref,
|
|
@@ -922,7 +1168,7 @@ var AvatarImage = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
922
1168
|
}
|
|
923
1169
|
));
|
|
924
1170
|
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
925
|
-
var AvatarFallback =
|
|
1171
|
+
var AvatarFallback = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React7.createElement(
|
|
926
1172
|
AvatarPrimitive.Fallback,
|
|
927
1173
|
{
|
|
928
1174
|
ref,
|
|
@@ -936,17 +1182,13 @@ var AvatarFallback = React5.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
936
1182
|
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
937
1183
|
|
|
938
1184
|
// src/components/ui/Avatar.tsx
|
|
939
|
-
import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
940
1185
|
function Avatar({ size, src, href, name, ...linkProps }) {
|
|
941
1186
|
const fallbackShort = name?.slice(0, 2);
|
|
942
1187
|
const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
|
|
943
1188
|
const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
|
|
944
|
-
const renderAvatar = () => /* @__PURE__ */
|
|
945
|
-
/* @__PURE__ */ jsx15(AvatarImage, { src, alt: name }),
|
|
946
|
-
/* @__PURE__ */ jsx15(AvatarFallback, { children: fallback?.toUpperCase() })
|
|
947
|
-
] });
|
|
1189
|
+
const renderAvatar = () => /* @__PURE__ */ React.createElement(AvatarBase, { className: avatarVariants({ size }) }, /* @__PURE__ */ React.createElement(AvatarImage, { src, alt: name }), /* @__PURE__ */ React.createElement(AvatarFallback, null, fallback?.toUpperCase()));
|
|
948
1190
|
if (href) {
|
|
949
|
-
return /* @__PURE__ */
|
|
1191
|
+
return /* @__PURE__ */ React.createElement(Link, { href, ...linkProps }, renderAvatar());
|
|
950
1192
|
}
|
|
951
1193
|
return renderAvatar();
|
|
952
1194
|
}
|
|
@@ -965,7 +1207,7 @@ var avatarVariants = cva3("ring ring-white ring-2", {
|
|
|
965
1207
|
|
|
966
1208
|
// src/components/ui/Badge.tsx
|
|
967
1209
|
import { cva as cva4 } from "cva";
|
|
968
|
-
import
|
|
1210
|
+
import * as React8 from "react";
|
|
969
1211
|
var badgeVariants = cva4("rounded-full px-2 py-0.5 text-xs font-semibold", {
|
|
970
1212
|
variants: {
|
|
971
1213
|
variant: {
|
|
@@ -979,31 +1221,42 @@ var badgeVariants = cva4("rounded-full px-2 py-0.5 text-xs font-semibold", {
|
|
|
979
1221
|
}
|
|
980
1222
|
});
|
|
981
1223
|
function Badge({ className, variant, ...props }) {
|
|
982
|
-
return /* @__PURE__ */
|
|
1224
|
+
return /* @__PURE__ */ React8.createElement("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
983
1225
|
}
|
|
984
1226
|
|
|
985
1227
|
// src/components/ui/Button.tsx
|
|
986
1228
|
import { Slot } from "@radix-ui/react-slot";
|
|
987
1229
|
import { cva as cva5 } from "cva";
|
|
988
|
-
import {
|
|
989
|
-
import {
|
|
1230
|
+
import { Loader2 } from "lucide-react";
|
|
1231
|
+
import React9, { forwardRef as forwardRef9 } from "react";
|
|
990
1232
|
var Button = forwardRef9(
|
|
991
|
-
({
|
|
1233
|
+
({
|
|
1234
|
+
className,
|
|
1235
|
+
variant,
|
|
1236
|
+
size,
|
|
1237
|
+
asChild = false,
|
|
1238
|
+
type = "button",
|
|
1239
|
+
children,
|
|
1240
|
+
isLoading = false,
|
|
1241
|
+
...props
|
|
1242
|
+
}, ref) => {
|
|
992
1243
|
const Component = asChild ? Slot : "button";
|
|
993
|
-
return /* @__PURE__ */
|
|
1244
|
+
return /* @__PURE__ */ React9.createElement(
|
|
994
1245
|
Component,
|
|
995
1246
|
{
|
|
996
|
-
className: cn(buttonVariants({ variant, size, className })),
|
|
1247
|
+
className: cn(buttonVariants({ variant, size, className, isLoading, asChild })),
|
|
997
1248
|
type,
|
|
998
1249
|
ref,
|
|
999
1250
|
...props
|
|
1000
|
-
}
|
|
1251
|
+
},
|
|
1252
|
+
asChild ? children : /* @__PURE__ */ React9.createElement(React9.Fragment, null, children, isLoading && /* @__PURE__ */ React9.createElement("div", { className: "absolute inset-0 flex items-center justify-center bg-white/30 backdrop-blur-[0.5px]" }, /* @__PURE__ */ React9.createElement(Loader2, { className: "h-5 w-5 animate-spin text-gray-800" })))
|
|
1001
1253
|
);
|
|
1002
1254
|
}
|
|
1003
1255
|
);
|
|
1004
1256
|
Button.displayName = "Button";
|
|
1005
1257
|
var buttonVariants = cva5(
|
|
1006
1258
|
[
|
|
1259
|
+
"relative",
|
|
1007
1260
|
"flex",
|
|
1008
1261
|
"items-center",
|
|
1009
1262
|
"justify-center",
|
|
@@ -1013,7 +1266,8 @@ var buttonVariants = cva5(
|
|
|
1013
1266
|
"outline-2",
|
|
1014
1267
|
"outline-offset-2",
|
|
1015
1268
|
"outline-dashed",
|
|
1016
|
-
"outline-transparent"
|
|
1269
|
+
"outline-transparent",
|
|
1270
|
+
"overflow-hidden"
|
|
1017
1271
|
],
|
|
1018
1272
|
{
|
|
1019
1273
|
variants: {
|
|
@@ -1060,19 +1314,92 @@ var buttonVariants = cva5(
|
|
|
1060
1314
|
"focus:text-black",
|
|
1061
1315
|
"focus:outline-purple-100",
|
|
1062
1316
|
"active:text-purple-80"
|
|
1317
|
+
],
|
|
1318
|
+
"outline-primary": [
|
|
1319
|
+
"bg-transparent",
|
|
1320
|
+
"border-2",
|
|
1321
|
+
"border-pickle-100",
|
|
1322
|
+
"text-pickle-100",
|
|
1323
|
+
"hover:bg-pickle-100",
|
|
1324
|
+
"hover:text-black",
|
|
1325
|
+
"active:bg-pickle-80",
|
|
1326
|
+
"active:text-black",
|
|
1327
|
+
"focus:outline-purple-100",
|
|
1328
|
+
"disabled:text-grey-40",
|
|
1329
|
+
"disabled:border-grey-40",
|
|
1330
|
+
"disabled:hover:bg-transparent",
|
|
1331
|
+
"disabled:hover:text-grey-40"
|
|
1332
|
+
],
|
|
1333
|
+
"outline-secondary": [
|
|
1334
|
+
"bg-transparent",
|
|
1335
|
+
"border-2",
|
|
1336
|
+
"border-green-80",
|
|
1337
|
+
"text-green-80",
|
|
1338
|
+
"hover:bg-green-80",
|
|
1339
|
+
"hover:text-white",
|
|
1340
|
+
"active:bg-green-90",
|
|
1341
|
+
"active:text-white",
|
|
1342
|
+
"focus:outline-pickle-100",
|
|
1343
|
+
"disabled:text-grey-40",
|
|
1344
|
+
"disabled:border-grey-40",
|
|
1345
|
+
"disabled:hover:bg-transparent",
|
|
1346
|
+
"disabled:hover:text-grey-40"
|
|
1347
|
+
],
|
|
1348
|
+
"icon-outline": [
|
|
1349
|
+
"bg-transparent",
|
|
1350
|
+
"text-black",
|
|
1351
|
+
"hover:bg-grey-5",
|
|
1352
|
+
"active:bg-grey-10",
|
|
1353
|
+
"focus:outline-purple-100",
|
|
1354
|
+
"disabled:text-grey-40",
|
|
1355
|
+
"disabled:hover:bg-transparent",
|
|
1356
|
+
"disabled:hover:text-grey-40"
|
|
1357
|
+
],
|
|
1358
|
+
"icon-primary": [
|
|
1359
|
+
"bg-pickle-100",
|
|
1360
|
+
"text-black",
|
|
1361
|
+
"hover:bg-pickle-80",
|
|
1362
|
+
"active:bg-pickle-60",
|
|
1363
|
+
"focus:outline-purple-100",
|
|
1364
|
+
"disabled:text-grey-40",
|
|
1365
|
+
"disabled:bg-grey-10"
|
|
1366
|
+
],
|
|
1367
|
+
"icon-secondary": [
|
|
1368
|
+
"bg-green-80",
|
|
1369
|
+
"text-white",
|
|
1370
|
+
"hover:bg-green-90",
|
|
1371
|
+
"active:bg-green-100",
|
|
1372
|
+
"focus:outline-pickle-100",
|
|
1373
|
+
"disabled:text-grey-40",
|
|
1374
|
+
"disabled:bg-grey-10"
|
|
1063
1375
|
]
|
|
1064
1376
|
},
|
|
1065
1377
|
size: {
|
|
1378
|
+
"extra-small": ["h-8", "text-xs", "px-3", "py-1"],
|
|
1066
1379
|
small: ["h-10", "text-sm", "px-4", "py-2"],
|
|
1067
1380
|
medium: ["h-12", "text-base", "px-6", "py-3"],
|
|
1068
1381
|
large: ["h-14", "text-lg", "px-8", "py-4"]
|
|
1382
|
+
},
|
|
1383
|
+
isLoading: {
|
|
1384
|
+
true: ["cursor-not-allowed", "pointer-events-none"]
|
|
1385
|
+
},
|
|
1386
|
+
asChild: {
|
|
1387
|
+
true: [],
|
|
1388
|
+
false: ["cursor-pointer", "pointer-events-auto"]
|
|
1069
1389
|
}
|
|
1070
1390
|
},
|
|
1071
1391
|
defaultVariants: {
|
|
1072
1392
|
variant: "neutral",
|
|
1073
|
-
size: "medium"
|
|
1393
|
+
size: "medium",
|
|
1394
|
+
isLoading: false,
|
|
1395
|
+
asChild: false
|
|
1074
1396
|
},
|
|
1075
1397
|
compoundVariants: [
|
|
1398
|
+
{
|
|
1399
|
+
variant: "link",
|
|
1400
|
+
size: "extra-small",
|
|
1401
|
+
class: ["h-3", "text-xs", "p-0"]
|
|
1402
|
+
},
|
|
1076
1403
|
{
|
|
1077
1404
|
variant: "link",
|
|
1078
1405
|
size: "small",
|
|
@@ -1087,6 +1414,66 @@ var buttonVariants = cva5(
|
|
|
1087
1414
|
variant: "link",
|
|
1088
1415
|
size: "large",
|
|
1089
1416
|
class: ["h-6", "text-base", "p-0"]
|
|
1417
|
+
},
|
|
1418
|
+
{
|
|
1419
|
+
variant: "icon-outline",
|
|
1420
|
+
size: "extra-small",
|
|
1421
|
+
class: ["h-8", "w-8", "p-2"]
|
|
1422
|
+
},
|
|
1423
|
+
{
|
|
1424
|
+
variant: "icon-outline",
|
|
1425
|
+
size: "small",
|
|
1426
|
+
class: ["h-10", "w-10", "p-3"]
|
|
1427
|
+
},
|
|
1428
|
+
{
|
|
1429
|
+
variant: "icon-outline",
|
|
1430
|
+
size: "medium",
|
|
1431
|
+
class: ["h-12", "w-12", "p-4"]
|
|
1432
|
+
},
|
|
1433
|
+
{
|
|
1434
|
+
variant: "icon-outline",
|
|
1435
|
+
size: "large",
|
|
1436
|
+
class: ["h-14", "w-14", "p-4"]
|
|
1437
|
+
},
|
|
1438
|
+
{
|
|
1439
|
+
variant: "icon-primary",
|
|
1440
|
+
size: "extra-small",
|
|
1441
|
+
class: ["h-8", "w-8", "p-2"]
|
|
1442
|
+
},
|
|
1443
|
+
{
|
|
1444
|
+
variant: "icon-primary",
|
|
1445
|
+
size: "small",
|
|
1446
|
+
class: ["h-10", "w-10", "p-3"]
|
|
1447
|
+
},
|
|
1448
|
+
{
|
|
1449
|
+
variant: "icon-primary",
|
|
1450
|
+
size: "medium",
|
|
1451
|
+
class: ["h-12", "w-12", "p-4"]
|
|
1452
|
+
},
|
|
1453
|
+
{
|
|
1454
|
+
variant: "icon-primary",
|
|
1455
|
+
size: "large",
|
|
1456
|
+
class: ["h-14", "w-14", "p-4"]
|
|
1457
|
+
},
|
|
1458
|
+
{
|
|
1459
|
+
variant: "icon-secondary",
|
|
1460
|
+
size: "extra-small",
|
|
1461
|
+
class: ["h-8", "w-8", "p-2"]
|
|
1462
|
+
},
|
|
1463
|
+
{
|
|
1464
|
+
variant: "icon-secondary",
|
|
1465
|
+
size: "small",
|
|
1466
|
+
class: ["h-10", "w-10", "p-3"]
|
|
1467
|
+
},
|
|
1468
|
+
{
|
|
1469
|
+
variant: "icon-secondary",
|
|
1470
|
+
size: "medium",
|
|
1471
|
+
class: ["h-12", "w-12", "p-4"]
|
|
1472
|
+
},
|
|
1473
|
+
{
|
|
1474
|
+
variant: "icon-secondary",
|
|
1475
|
+
size: "large",
|
|
1476
|
+
class: ["h-14", "w-14", "p-4"]
|
|
1090
1477
|
}
|
|
1091
1478
|
]
|
|
1092
1479
|
}
|
|
@@ -1095,15 +1482,14 @@ var buttonVariants = cva5(
|
|
|
1095
1482
|
// src/components/ui/Combobox.tsx
|
|
1096
1483
|
import { cva as cva6 } from "cva";
|
|
1097
1484
|
import { ChevronDownIcon as ChevronDownIcon2, CircleX as CircleX2, icons as icons3 } from "lucide-react";
|
|
1098
|
-
import { forwardRef as forwardRef11, useEffect as
|
|
1485
|
+
import { forwardRef as forwardRef11, useEffect as useEffect4, useRef as useRef4, useState as useState4 } from "react";
|
|
1099
1486
|
|
|
1100
1487
|
// src/components/primitives/popover.tsx
|
|
1101
1488
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
1102
|
-
import * as
|
|
1103
|
-
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
1489
|
+
import * as React10 from "react";
|
|
1104
1490
|
var Popover = PopoverPrimitive.Root;
|
|
1105
1491
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
1106
|
-
var PopoverContent =
|
|
1492
|
+
var PopoverContent = React10.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React10.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ React10.createElement(
|
|
1107
1493
|
PopoverPrimitive.Content,
|
|
1108
1494
|
{
|
|
1109
1495
|
ref,
|
|
@@ -1115,11 +1501,10 @@ var PopoverContent = React7.forwardRef(({ className, align = "center", sideOffse
|
|
|
1115
1501
|
),
|
|
1116
1502
|
...props
|
|
1117
1503
|
}
|
|
1118
|
-
)
|
|
1504
|
+
)));
|
|
1119
1505
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
1120
1506
|
|
|
1121
1507
|
// src/components/ui/Combobox.tsx
|
|
1122
|
-
import { jsx as jsx19, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1123
1508
|
var Combobox = forwardRef11((props, ref) => {
|
|
1124
1509
|
const {
|
|
1125
1510
|
id,
|
|
@@ -1140,9 +1525,9 @@ var Combobox = forwardRef11((props, ref) => {
|
|
|
1140
1525
|
onChange: handleChange,
|
|
1141
1526
|
children: footer
|
|
1142
1527
|
} = props;
|
|
1143
|
-
const [selected, setSelected] =
|
|
1144
|
-
const [open, setOpen] =
|
|
1145
|
-
const isUserUpdate =
|
|
1528
|
+
const [selected, setSelected] = useState4([]);
|
|
1529
|
+
const [open, setOpen] = useState4(false);
|
|
1530
|
+
const isUserUpdate = useRef4(false);
|
|
1146
1531
|
const IconComponent = icon && icons3[icon];
|
|
1147
1532
|
const hideSearchBox = options?.length <= 5;
|
|
1148
1533
|
const isDefault = variant === "default";
|
|
@@ -1150,7 +1535,7 @@ var Combobox = forwardRef11((props, ref) => {
|
|
|
1150
1535
|
const isEmpty = selected.length === 0;
|
|
1151
1536
|
const showChevron = isDefault ? isEmpty : true;
|
|
1152
1537
|
const close = () => setOpen(false);
|
|
1153
|
-
|
|
1538
|
+
useEffect4(() => {
|
|
1154
1539
|
if (!isUserUpdate.current) {
|
|
1155
1540
|
const valueArray = multiselect ? value ?? [] : value ? [value] : [];
|
|
1156
1541
|
setSelected(
|
|
@@ -1158,7 +1543,7 @@ var Combobox = forwardRef11((props, ref) => {
|
|
|
1158
1543
|
);
|
|
1159
1544
|
}
|
|
1160
1545
|
}, [value, options, multiselect]);
|
|
1161
|
-
|
|
1546
|
+
useEffect4(() => {
|
|
1162
1547
|
if (isUserUpdate.current) {
|
|
1163
1548
|
if (multiselect) {
|
|
1164
1549
|
handleChange?.(selected.map((o) => o.value));
|
|
@@ -1190,111 +1575,91 @@ var Combobox = forwardRef11((props, ref) => {
|
|
|
1190
1575
|
const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
|
|
1191
1576
|
return isDefault ? defaultLabel : label;
|
|
1192
1577
|
};
|
|
1193
|
-
return /* @__PURE__ */
|
|
1194
|
-
|
|
1195
|
-
|
|
1578
|
+
return /* @__PURE__ */ React.createElement("div", { className: cn("flex flex-col gap-1", className) }, isDefault && /* @__PURE__ */ React.createElement(
|
|
1579
|
+
Label_default,
|
|
1580
|
+
{
|
|
1581
|
+
text: label,
|
|
1582
|
+
htmlFor: name,
|
|
1583
|
+
required,
|
|
1584
|
+
description,
|
|
1585
|
+
className: classNames?.label
|
|
1586
|
+
}
|
|
1587
|
+
), /* @__PURE__ */ React.createElement("div", { className: "relative flex" }, /* @__PURE__ */ React.createElement(Popover, { open, onOpenChange: setOpen }, /* @__PURE__ */ React.createElement(
|
|
1588
|
+
PopoverTrigger,
|
|
1589
|
+
{
|
|
1590
|
+
asChild: true,
|
|
1591
|
+
disabled: options.length === 0,
|
|
1592
|
+
"data-testid": `${id ?? name}-combobox-trigger`
|
|
1593
|
+
},
|
|
1594
|
+
/* @__PURE__ */ React.createElement(
|
|
1595
|
+
"div",
|
|
1196
1596
|
{
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
}
|
|
1203
|
-
),
|
|
1204
|
-
/* @__PURE__ */ jsxs10("div", { className: "relative flex", children: [
|
|
1205
|
-
/* @__PURE__ */ jsxs10(Popover, { open, onOpenChange: setOpen, children: [
|
|
1206
|
-
/* @__PURE__ */ jsx19(
|
|
1207
|
-
PopoverTrigger,
|
|
1208
|
-
{
|
|
1209
|
-
asChild: true,
|
|
1210
|
-
disabled: options.length === 0,
|
|
1211
|
-
"data-testid": `${id ?? name}-combobox-trigger`,
|
|
1212
|
-
children: /* @__PURE__ */ jsxs10(
|
|
1213
|
-
"div",
|
|
1214
|
-
{
|
|
1215
|
-
ref,
|
|
1216
|
-
className: cn(
|
|
1217
|
-
triggerVariants({ variant, size }),
|
|
1218
|
-
isDefault && !isEmpty && "pr-10",
|
|
1219
|
-
classNames?.trigger
|
|
1220
|
-
),
|
|
1221
|
-
"aria-expanded": open,
|
|
1222
|
-
children: [
|
|
1223
|
-
isDefault && IconComponent && /* @__PURE__ */ jsx19(IconComponent, { className: "h-4 w-4 shrink-0" }),
|
|
1224
|
-
isChip && !isEmpty && /* @__PURE__ */ jsx19(Badge, { variant: "purple", children: selected.length }),
|
|
1225
|
-
/* @__PURE__ */ jsx19(
|
|
1226
|
-
"span",
|
|
1227
|
-
{
|
|
1228
|
-
className: cn(
|
|
1229
|
-
"w-full truncate leading-normal",
|
|
1230
|
-
isDefault && isEmpty && "text-grey-40"
|
|
1231
|
-
),
|
|
1232
|
-
children: handleDisplayValue()
|
|
1233
|
-
}
|
|
1234
|
-
),
|
|
1235
|
-
showChevron && /* @__PURE__ */ jsx19(
|
|
1236
|
-
ChevronDownIcon2,
|
|
1237
|
-
{
|
|
1238
|
-
className: "shrink-0 transform group-data-[state=open]:rotate-180",
|
|
1239
|
-
size: "16"
|
|
1240
|
-
}
|
|
1241
|
-
)
|
|
1242
|
-
]
|
|
1243
|
-
}
|
|
1244
|
-
)
|
|
1245
|
-
}
|
|
1597
|
+
ref,
|
|
1598
|
+
className: cn(
|
|
1599
|
+
triggerVariants({ variant, size }),
|
|
1600
|
+
isDefault && !isEmpty && "pr-10",
|
|
1601
|
+
classNames?.trigger
|
|
1246
1602
|
),
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
classNames?.content
|
|
1254
|
-
),
|
|
1255
|
-
collisionPadding: 8,
|
|
1256
|
-
sideOffset: 4,
|
|
1257
|
-
align: "start",
|
|
1258
|
-
children: /* @__PURE__ */ jsxs10(Command, { children: [
|
|
1259
|
-
!hideSearchBox && /* @__PURE__ */ jsx19(CommandInput, { placeholder: "Search..." }),
|
|
1260
|
-
/* @__PURE__ */ jsxs10(CommandList, { children: [
|
|
1261
|
-
/* @__PURE__ */ jsx19(CommandEmpty, { children: "No results" }),
|
|
1262
|
-
/* @__PURE__ */ jsx19(CommandGroup, { children: options.map(({ id: id2, ...option }) => /* @__PURE__ */ jsx19(
|
|
1263
|
-
CommandItem,
|
|
1264
|
-
{
|
|
1265
|
-
value: option.title,
|
|
1266
|
-
onSelect: () => handleSelect(option.value),
|
|
1267
|
-
children: /* @__PURE__ */ jsx19(
|
|
1268
|
-
ListItem_default,
|
|
1269
|
-
{
|
|
1270
|
-
className: cn(classNames?.items, "truncate py-1"),
|
|
1271
|
-
isSelected: selected.some((s) => s.value === option.value),
|
|
1272
|
-
hasCheckbox: multiselect,
|
|
1273
|
-
...option
|
|
1274
|
-
}
|
|
1275
|
-
)
|
|
1276
|
-
},
|
|
1277
|
-
id2
|
|
1278
|
-
)) })
|
|
1279
|
-
] }),
|
|
1280
|
-
!!footer && /* @__PURE__ */ jsx19(Separator, {}),
|
|
1281
|
-
footer && footer({ close })
|
|
1282
|
-
] })
|
|
1283
|
-
}
|
|
1284
|
-
)
|
|
1285
|
-
] }),
|
|
1286
|
-
isDefault && !isEmpty && /* @__PURE__ */ jsx19(
|
|
1287
|
-
"button",
|
|
1603
|
+
"aria-expanded": open
|
|
1604
|
+
},
|
|
1605
|
+
isDefault && IconComponent && /* @__PURE__ */ React.createElement(IconComponent, { className: "h-4 w-4 shrink-0" }),
|
|
1606
|
+
isChip && !isEmpty && /* @__PURE__ */ React.createElement(Badge, { variant: "purple" }, selected.length),
|
|
1607
|
+
/* @__PURE__ */ React.createElement(
|
|
1608
|
+
"span",
|
|
1288
1609
|
{
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1610
|
+
className: cn(
|
|
1611
|
+
"w-full truncate leading-normal",
|
|
1612
|
+
isDefault && isEmpty && "text-grey-40"
|
|
1613
|
+
)
|
|
1614
|
+
},
|
|
1615
|
+
handleDisplayValue()
|
|
1616
|
+
),
|
|
1617
|
+
showChevron && /* @__PURE__ */ React.createElement(
|
|
1618
|
+
ChevronDownIcon2,
|
|
1619
|
+
{
|
|
1620
|
+
className: "shrink-0 transform group-data-[state=open]:rotate-180",
|
|
1621
|
+
size: "16"
|
|
1622
|
+
}
|
|
1623
|
+
)
|
|
1624
|
+
)
|
|
1625
|
+
), /* @__PURE__ */ React.createElement(
|
|
1626
|
+
PopoverContent,
|
|
1627
|
+
{
|
|
1628
|
+
className: cn(
|
|
1629
|
+
"flex w-full max-w-xs flex-col overflow-hidden p-0",
|
|
1630
|
+
"max-h-[--radix-popover-content-available-height]",
|
|
1631
|
+
classNames?.content
|
|
1632
|
+
),
|
|
1633
|
+
collisionPadding: 8,
|
|
1634
|
+
sideOffset: 4,
|
|
1635
|
+
align: "start"
|
|
1636
|
+
},
|
|
1637
|
+
/* @__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(
|
|
1638
|
+
CommandItem,
|
|
1639
|
+
{
|
|
1640
|
+
key: id2,
|
|
1641
|
+
value: option.title,
|
|
1642
|
+
onSelect: () => handleSelect(option.value)
|
|
1643
|
+
},
|
|
1644
|
+
/* @__PURE__ */ React.createElement(
|
|
1645
|
+
ListItem_default,
|
|
1646
|
+
{
|
|
1647
|
+
className: cn(classNames?.items, "truncate py-1"),
|
|
1648
|
+
isSelected: selected.some((s) => s.value === option.value),
|
|
1649
|
+
hasCheckbox: multiselect,
|
|
1650
|
+
...option
|
|
1293
1651
|
}
|
|
1294
1652
|
)
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1653
|
+
)))), !!footer && /* @__PURE__ */ React.createElement(Separator, null), footer && footer({ close }))
|
|
1654
|
+
)), isDefault && !isEmpty && /* @__PURE__ */ React.createElement(
|
|
1655
|
+
"button",
|
|
1656
|
+
{
|
|
1657
|
+
type: "button",
|
|
1658
|
+
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",
|
|
1659
|
+
onClick: handleClear
|
|
1660
|
+
},
|
|
1661
|
+
/* @__PURE__ */ React.createElement(CircleX2, { className: "h-4 w-4 text-green-100" })
|
|
1662
|
+
)), /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error }));
|
|
1298
1663
|
});
|
|
1299
1664
|
Combobox.displayName = "Combobox";
|
|
1300
1665
|
var triggerVariants = cva6(
|
|
@@ -1326,27 +1691,20 @@ var triggerVariants = cva6(
|
|
|
1326
1691
|
// src/components/ui/Switch.tsx
|
|
1327
1692
|
import * as SwitchPrimitive from "@radix-ui/react-switch";
|
|
1328
1693
|
import { forwardRef as forwardRef12 } from "react";
|
|
1329
|
-
import { jsx as jsx20, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1330
1694
|
var Switch = forwardRef12(
|
|
1331
|
-
({ label, error, className, ...props }, ref) => {
|
|
1332
|
-
return /* @__PURE__ */
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
),
|
|
1345
|
-
label && /* @__PURE__ */ jsxs11("label", { className: "pl-4 text-sm leading-none text-inherit", htmlFor: props.name, children: [
|
|
1346
|
-
label,
|
|
1347
|
-
/* @__PURE__ */ jsx20(ErrorMessage_default, { message: error, className: "mt-1" })
|
|
1348
|
-
] })
|
|
1349
|
-
] });
|
|
1695
|
+
({ label, error, className, ...props }, ref) => {
|
|
1696
|
+
return /* @__PURE__ */ React.createElement("div", { className: cn("flex items-center", props.disabled && "opacity-50") }, /* @__PURE__ */ React.createElement(
|
|
1697
|
+
SwitchPrimitive.Root,
|
|
1698
|
+
{
|
|
1699
|
+
className: cn(
|
|
1700
|
+
"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",
|
|
1701
|
+
className
|
|
1702
|
+
),
|
|
1703
|
+
ref,
|
|
1704
|
+
...props
|
|
1705
|
+
},
|
|
1706
|
+
/* @__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]" })
|
|
1707
|
+
), 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" })));
|
|
1350
1708
|
}
|
|
1351
1709
|
);
|
|
1352
1710
|
Switch.displayName = "Switch";
|
|
@@ -1359,29 +1717,24 @@ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
|
1359
1717
|
import {
|
|
1360
1718
|
forwardRef as forwardRef13
|
|
1361
1719
|
} from "react";
|
|
1362
|
-
|
|
1363
|
-
var RadioGroup = forwardRef13(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(RadioGroupPrimitive.Root, { className, ...props, ref }));
|
|
1720
|
+
var RadioGroup = forwardRef13(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(RadioGroupPrimitive.Root, { className, ...props, ref }));
|
|
1364
1721
|
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
1365
1722
|
var RadioGroupItem = forwardRef13(({ className, children, ...props }, ref) => {
|
|
1366
|
-
return /* @__PURE__ */
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
),
|
|
1378
|
-
/* @__PURE__ */ jsx21("label", { htmlFor: props.id, className: "text-sm peer-data-[disabled]:text-grey-40", children })
|
|
1379
|
-
] });
|
|
1723
|
+
return /* @__PURE__ */ React.createElement("div", { className: "group flex flex-row items-center gap-2" }, /* @__PURE__ */ React.createElement(
|
|
1724
|
+
RadioGroupPrimitive.Item,
|
|
1725
|
+
{
|
|
1726
|
+
ref,
|
|
1727
|
+
className: cn(
|
|
1728
|
+
"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",
|
|
1729
|
+
className
|
|
1730
|
+
),
|
|
1731
|
+
...props
|
|
1732
|
+
}
|
|
1733
|
+
), /* @__PURE__ */ React.createElement("label", { htmlFor: props.id, className: "text-sm peer-data-[disabled]:text-grey-40" }, children));
|
|
1380
1734
|
});
|
|
1381
1735
|
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
1382
1736
|
|
|
1383
1737
|
// src/components/ui/Radio.tsx
|
|
1384
|
-
import { jsx as jsx22, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1385
1738
|
var Radio = forwardRef14(
|
|
1386
1739
|
({
|
|
1387
1740
|
label,
|
|
@@ -1393,33 +1746,29 @@ var Radio = forwardRef14(
|
|
|
1393
1746
|
orientation,
|
|
1394
1747
|
...props
|
|
1395
1748
|
}, ref) => {
|
|
1396
|
-
return /* @__PURE__ */
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1749
|
+
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(
|
|
1750
|
+
RadioGroup,
|
|
1751
|
+
{
|
|
1752
|
+
ref,
|
|
1753
|
+
className: cn(
|
|
1754
|
+
"flex text-sm",
|
|
1755
|
+
orientation === "vertical" ? "flex-col gap-2" : "flex-row gap-4",
|
|
1756
|
+
classNames?.group
|
|
1757
|
+
),
|
|
1758
|
+
onValueChange: handleValueChange,
|
|
1759
|
+
...props
|
|
1760
|
+
},
|
|
1761
|
+
options?.map(({ id, title, value }) => /* @__PURE__ */ React.createElement(
|
|
1762
|
+
RadioGroupItem,
|
|
1400
1763
|
{
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
children: options?.map(({ id, title, value }) => /* @__PURE__ */ jsx22(
|
|
1410
|
-
RadioGroupItem,
|
|
1411
|
-
{
|
|
1412
|
-
value,
|
|
1413
|
-
id: `radio-group-item-${title}`,
|
|
1414
|
-
className: classNames?.item,
|
|
1415
|
-
children: title
|
|
1416
|
-
},
|
|
1417
|
-
id
|
|
1418
|
-
))
|
|
1419
|
-
}
|
|
1420
|
-
),
|
|
1421
|
-
/* @__PURE__ */ jsx22(ErrorMessage_default, { message: error })
|
|
1422
|
-
] });
|
|
1764
|
+
key: id,
|
|
1765
|
+
value,
|
|
1766
|
+
id: `radio-group-item-${title}`,
|
|
1767
|
+
className: classNames?.item
|
|
1768
|
+
},
|
|
1769
|
+
title
|
|
1770
|
+
))
|
|
1771
|
+
), /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error }));
|
|
1423
1772
|
}
|
|
1424
1773
|
);
|
|
1425
1774
|
Radio.displayName = "Radio";
|
|
@@ -1427,12 +1776,11 @@ Radio.displayName = "Radio";
|
|
|
1427
1776
|
// src/components/ui/Counter.tsx
|
|
1428
1777
|
import { cva as cva7 } from "cva";
|
|
1429
1778
|
import { Minus as Minus2, Plus } from "lucide-react";
|
|
1430
|
-
import { forwardRef as forwardRef15, useEffect as
|
|
1431
|
-
import { jsx as jsx23, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1779
|
+
import { forwardRef as forwardRef15, useEffect as useEffect5, useState as useState5 } from "react";
|
|
1432
1780
|
var Counter = forwardRef15(
|
|
1433
1781
|
({ label, error, min, max, step = 1, description, theme, value, classNames, onChange, ...props }, ref) => {
|
|
1434
|
-
const [count, setCount] =
|
|
1435
|
-
|
|
1782
|
+
const [count, setCount] = useState5(0);
|
|
1783
|
+
useEffect5(() => {
|
|
1436
1784
|
setCount(value ?? 0);
|
|
1437
1785
|
}, [value]);
|
|
1438
1786
|
const handleChange = (e) => {
|
|
@@ -1463,56 +1811,50 @@ var Counter = forwardRef15(
|
|
|
1463
1811
|
onChange?.(newValue);
|
|
1464
1812
|
setCount(newValue);
|
|
1465
1813
|
};
|
|
1466
|
-
return /* @__PURE__ */
|
|
1814
|
+
return /* @__PURE__ */ React.createElement(
|
|
1467
1815
|
"div",
|
|
1468
1816
|
{
|
|
1469
1817
|
className: cn("flex w-auto flex-col gap-1", classNames?.root),
|
|
1470
|
-
"data-testid": `counter-wrapper-${props.id}
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
}
|
|
1511
|
-
)
|
|
1512
|
-
] }),
|
|
1513
|
-
/* @__PURE__ */ jsx23(ErrorMessage_default, { message: error })
|
|
1514
|
-
]
|
|
1515
|
-
}
|
|
1818
|
+
"data-testid": `counter-wrapper-${props.id}`
|
|
1819
|
+
},
|
|
1820
|
+
label && /* @__PURE__ */ React.createElement(
|
|
1821
|
+
Label_default,
|
|
1822
|
+
{
|
|
1823
|
+
text: label,
|
|
1824
|
+
htmlFor: props.name,
|
|
1825
|
+
required: props.required,
|
|
1826
|
+
description,
|
|
1827
|
+
className: classNames?.label
|
|
1828
|
+
}
|
|
1829
|
+
),
|
|
1830
|
+
/* @__PURE__ */ React.createElement("div", { className: "relative flex w-[122px] flex-row items-center" }, /* @__PURE__ */ React.createElement(
|
|
1831
|
+
"button",
|
|
1832
|
+
{
|
|
1833
|
+
type: "button",
|
|
1834
|
+
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",
|
|
1835
|
+
onClick: decrement
|
|
1836
|
+
},
|
|
1837
|
+
/* @__PURE__ */ React.createElement(Minus2, { className: "h-4 w-4 text-green-100" })
|
|
1838
|
+
), /* @__PURE__ */ React.createElement(
|
|
1839
|
+
"input",
|
|
1840
|
+
{
|
|
1841
|
+
className: cn(counterVariants({ theme }), classNames?.input),
|
|
1842
|
+
ref,
|
|
1843
|
+
value: count,
|
|
1844
|
+
onChange: handleChange,
|
|
1845
|
+
"data-testid": `counter-element-${props.id}`,
|
|
1846
|
+
...props
|
|
1847
|
+
}
|
|
1848
|
+
), /* @__PURE__ */ React.createElement(
|
|
1849
|
+
"button",
|
|
1850
|
+
{
|
|
1851
|
+
type: "button",
|
|
1852
|
+
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",
|
|
1853
|
+
onClick: increment
|
|
1854
|
+
},
|
|
1855
|
+
/* @__PURE__ */ React.createElement(Plus, { className: "h-4 w-4 text-green-100" })
|
|
1856
|
+
)),
|
|
1857
|
+
/* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error })
|
|
1516
1858
|
);
|
|
1517
1859
|
}
|
|
1518
1860
|
);
|
|
@@ -1572,11 +1914,10 @@ import { Slot as Slot2 } from "@radix-ui/react-slot";
|
|
|
1572
1914
|
import { cva as cva8 } from "cva";
|
|
1573
1915
|
import { forwardRef as forwardRef16 } from "react";
|
|
1574
1916
|
import { twMerge as twMerge3 } from "tailwind-merge";
|
|
1575
|
-
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
1576
1917
|
var Icon = forwardRef16(
|
|
1577
1918
|
({ variant, size, active = false, readonly = false, className, ...props }, ref) => {
|
|
1578
1919
|
const Component = readonly ? Slot2 : "button";
|
|
1579
|
-
return /* @__PURE__ */
|
|
1920
|
+
return /* @__PURE__ */ React.createElement(
|
|
1580
1921
|
Component,
|
|
1581
1922
|
{
|
|
1582
1923
|
className: cn(
|
|
@@ -1650,9 +1991,8 @@ import { forwardRef as forwardRef18 } from "react";
|
|
|
1650
1991
|
// src/components/primitives/input-otp.tsx
|
|
1651
1992
|
import { OTPInput, OTPInputContext } from "input-otp";
|
|
1652
1993
|
import { Dot } from "lucide-react";
|
|
1653
|
-
import * as
|
|
1654
|
-
|
|
1655
|
-
var InputOTP = React8.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx25(
|
|
1994
|
+
import * as React11 from "react";
|
|
1995
|
+
var InputOTP = React11.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ React11.createElement(
|
|
1656
1996
|
OTPInput,
|
|
1657
1997
|
{
|
|
1658
1998
|
ref,
|
|
@@ -1665,12 +2005,12 @@ var InputOTP = React8.forwardRef(({ className, containerClassName, ...props }, r
|
|
|
1665
2005
|
}
|
|
1666
2006
|
));
|
|
1667
2007
|
InputOTP.displayName = "InputOTP";
|
|
1668
|
-
var InputOTPGroup =
|
|
2008
|
+
var InputOTPGroup = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React11.createElement("div", { ref, className: cn("flex items-center", className), ...props }));
|
|
1669
2009
|
InputOTPGroup.displayName = "InputOTPGroup";
|
|
1670
|
-
var InputOTPSlot =
|
|
1671
|
-
const inputOTPContext =
|
|
2010
|
+
var InputOTPSlot = React11.forwardRef(({ index, error, className, ...props }, ref) => {
|
|
2011
|
+
const inputOTPContext = React11.useContext(OTPInputContext);
|
|
1672
2012
|
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
|
|
1673
|
-
return /* @__PURE__ */
|
|
2013
|
+
return /* @__PURE__ */ React11.createElement(
|
|
1674
2014
|
"div",
|
|
1675
2015
|
{
|
|
1676
2016
|
ref,
|
|
@@ -1680,57 +2020,52 @@ var InputOTPSlot = React8.forwardRef(({ index, error, className, ...props }, ref
|
|
|
1680
2020
|
error && "border-red-500 dark:border-red-400",
|
|
1681
2021
|
className
|
|
1682
2022
|
),
|
|
1683
|
-
...props
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
]
|
|
1688
|
-
}
|
|
2023
|
+
...props
|
|
2024
|
+
},
|
|
2025
|
+
char,
|
|
2026
|
+
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" }))
|
|
1689
2027
|
);
|
|
1690
2028
|
});
|
|
1691
2029
|
InputOTPSlot.displayName = "InputOTPSlot";
|
|
1692
|
-
var InputOTPSeparator =
|
|
2030
|
+
var InputOTPSeparator = React11.forwardRef(({ ...props }, ref) => /* @__PURE__ */ React11.createElement("div", { ref, role: "separator", ...props }, /* @__PURE__ */ React11.createElement(Dot, null)));
|
|
1693
2031
|
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
1694
2032
|
|
|
1695
2033
|
// src/components/ui/InputOtp.tsx
|
|
1696
|
-
import { jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1697
2034
|
var InputOtp = forwardRef18(
|
|
1698
2035
|
({ digits, label, description, error, ...props }, ref) => {
|
|
1699
|
-
return /* @__PURE__ */
|
|
2036
|
+
return /* @__PURE__ */ React.createElement(
|
|
1700
2037
|
"div",
|
|
1701
2038
|
{
|
|
1702
2039
|
className: "group flex w-full flex-col gap-1",
|
|
1703
|
-
"data-testid": `input-otp-wrapper-${props.id}
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
]
|
|
1733
|
-
}
|
|
2040
|
+
"data-testid": `input-otp-wrapper-${props.id}`
|
|
2041
|
+
},
|
|
2042
|
+
label && /* @__PURE__ */ React.createElement(
|
|
2043
|
+
Label_default,
|
|
2044
|
+
{
|
|
2045
|
+
text: label,
|
|
2046
|
+
htmlFor: props.name,
|
|
2047
|
+
required: props.required,
|
|
2048
|
+
description
|
|
2049
|
+
}
|
|
2050
|
+
),
|
|
2051
|
+
/* @__PURE__ */ React.createElement("div", { className: "relative flex flex-row items-center" }, /* @__PURE__ */ React.createElement(
|
|
2052
|
+
InputOTP,
|
|
2053
|
+
{
|
|
2054
|
+
ref,
|
|
2055
|
+
maxLength: digits,
|
|
2056
|
+
"data-testid": `input-otp-element-${props.id}`,
|
|
2057
|
+
...props
|
|
2058
|
+
},
|
|
2059
|
+
[...Array(digits)].map((_, index) => /* @__PURE__ */ React.createElement(InputOTPGroup, { key: index }, /* @__PURE__ */ React.createElement(
|
|
2060
|
+
InputOTPSlot,
|
|
2061
|
+
{
|
|
2062
|
+
"data-testid": `input-otp-slot-${index}`,
|
|
2063
|
+
index,
|
|
2064
|
+
error: Boolean(error)
|
|
2065
|
+
}
|
|
2066
|
+
)))
|
|
2067
|
+
)),
|
|
2068
|
+
/* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error })
|
|
1734
2069
|
);
|
|
1735
2070
|
}
|
|
1736
2071
|
);
|
|
@@ -1738,7 +2073,7 @@ InputOtp.displayName = "Input";
|
|
|
1738
2073
|
|
|
1739
2074
|
// src/components/ui/LinkButton.tsx
|
|
1740
2075
|
import Link2 from "next/link";
|
|
1741
|
-
import
|
|
2076
|
+
import React12 from "react";
|
|
1742
2077
|
var LinkButton = ({
|
|
1743
2078
|
disabled = false,
|
|
1744
2079
|
useAnchor = false,
|
|
@@ -1747,27 +2082,26 @@ var LinkButton = ({
|
|
|
1747
2082
|
...props
|
|
1748
2083
|
}) => {
|
|
1749
2084
|
const Component = useAnchor ? "a" : Link2;
|
|
1750
|
-
return /* @__PURE__ */
|
|
2085
|
+
return /* @__PURE__ */ React12.createElement(
|
|
1751
2086
|
Component,
|
|
1752
2087
|
{
|
|
1753
2088
|
href,
|
|
1754
2089
|
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" : ""} `,
|
|
1755
2090
|
...disabled && { "aria-disabled": true, tabIndex: -1 },
|
|
1756
|
-
...props
|
|
1757
|
-
|
|
1758
|
-
|
|
2091
|
+
...props
|
|
2092
|
+
},
|
|
2093
|
+
children
|
|
1759
2094
|
);
|
|
1760
2095
|
};
|
|
1761
2096
|
|
|
1762
2097
|
// src/components/ui/ReadMore.tsx
|
|
1763
|
-
import { useEffect as
|
|
2098
|
+
import { useEffect as useEffect6, useState as useState6 } from "react";
|
|
1764
2099
|
import Markdown from "react-markdown";
|
|
1765
|
-
import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1766
2100
|
function ReadMore({ text, ...props }) {
|
|
1767
|
-
const [isExpanded, setIsExpanded] =
|
|
1768
|
-
const [maxWords, setMaxWords] =
|
|
2101
|
+
const [isExpanded, setIsExpanded] = useState6(false);
|
|
2102
|
+
const [maxWords, setMaxWords] = useState6(160);
|
|
1769
2103
|
const isOverMaxWords = text.split(" ").length > maxWords;
|
|
1770
|
-
|
|
2104
|
+
useEffect6(() => {
|
|
1771
2105
|
const updateMaxWords = () => {
|
|
1772
2106
|
const windowWidth = window.innerWidth;
|
|
1773
2107
|
if (windowWidth <= 768) {
|
|
@@ -1789,39 +2123,33 @@ function ReadMore({ text, ...props }) {
|
|
|
1789
2123
|
}
|
|
1790
2124
|
const toggleText = () => setIsExpanded(!isExpanded);
|
|
1791
2125
|
const snippet = createReadMoreText(text, maxWords, isExpanded);
|
|
1792
|
-
return /* @__PURE__ */
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
"Read ",
|
|
1803
|
-
isExpanded ? "less" : "more"
|
|
1804
|
-
] })
|
|
1805
|
-
}
|
|
1806
|
-
)
|
|
1807
|
-
] });
|
|
2126
|
+
return /* @__PURE__ */ React.createElement("div", { ...props }, /* @__PURE__ */ React.createElement("div", { "data-testid": "read-more-text", className: "prose lg:prose-lg" }, /* @__PURE__ */ React.createElement(Markdown, null, snippet)), isOverMaxWords && /* @__PURE__ */ React.createElement(
|
|
2127
|
+
Button,
|
|
2128
|
+
{
|
|
2129
|
+
type: "button",
|
|
2130
|
+
className: "mt-2 flex items-center justify-center",
|
|
2131
|
+
variant: "link",
|
|
2132
|
+
onClick: toggleText
|
|
2133
|
+
},
|
|
2134
|
+
/* @__PURE__ */ React.createElement("p", { className: "text-sm font-bold underline underline-offset-2" }, "Read ", isExpanded ? "less" : "more")
|
|
2135
|
+
));
|
|
1808
2136
|
}
|
|
1809
2137
|
|
|
1810
2138
|
// src/components/ui/DatePicker.tsx
|
|
1811
2139
|
import { cva as cva10 } from "cva";
|
|
1812
2140
|
import { format } from "date-fns";
|
|
1813
2141
|
import { Calendar as CalendarIcon } from "lucide-react";
|
|
1814
|
-
import { forwardRef as forwardRef20, useEffect as
|
|
2142
|
+
import { forwardRef as forwardRef20, useEffect as useEffect7, useState as useState7 } from "react";
|
|
1815
2143
|
|
|
1816
2144
|
// src/components/ui/calendar.tsx
|
|
1817
2145
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
2146
|
+
import * as React14 from "react";
|
|
1818
2147
|
import { DayPicker } from "react-day-picker";
|
|
1819
2148
|
|
|
1820
2149
|
// src/components/ui/buttonShadcn.tsx
|
|
1821
2150
|
import { Slot as Slot3 } from "@radix-ui/react-slot";
|
|
1822
2151
|
import { cva as cva9 } from "class-variance-authority";
|
|
1823
|
-
import * as
|
|
1824
|
-
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
2152
|
+
import * as React13 from "react";
|
|
1825
2153
|
var buttonVariants2 = cva9(
|
|
1826
2154
|
"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",
|
|
1827
2155
|
{
|
|
@@ -1847,18 +2175,17 @@ var buttonVariants2 = cva9(
|
|
|
1847
2175
|
}
|
|
1848
2176
|
}
|
|
1849
2177
|
);
|
|
1850
|
-
var Button2 =
|
|
2178
|
+
var Button2 = React13.forwardRef(
|
|
1851
2179
|
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
1852
2180
|
const Comp = asChild ? Slot3 : "button";
|
|
1853
|
-
return /* @__PURE__ */
|
|
2181
|
+
return /* @__PURE__ */ React13.createElement(Comp, { className: cn(buttonVariants2({ variant, size, className })), ref, ...props });
|
|
1854
2182
|
}
|
|
1855
2183
|
);
|
|
1856
2184
|
Button2.displayName = "Button";
|
|
1857
2185
|
|
|
1858
2186
|
// src/components/ui/calendar.tsx
|
|
1859
|
-
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
1860
2187
|
function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
|
|
1861
|
-
return /* @__PURE__ */
|
|
2188
|
+
return /* @__PURE__ */ React14.createElement(
|
|
1862
2189
|
DayPicker,
|
|
1863
2190
|
{
|
|
1864
2191
|
showOutsideDays,
|
|
@@ -1898,8 +2225,8 @@ function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
|
|
|
1898
2225
|
...classNames
|
|
1899
2226
|
},
|
|
1900
2227
|
components: {
|
|
1901
|
-
IconLeft: ({ className: className2, ...props2 }) => /* @__PURE__ */
|
|
1902
|
-
IconRight: ({ className: className2, ...props2 }) => /* @__PURE__ */
|
|
2228
|
+
IconLeft: ({ className: className2, ...props2 }) => /* @__PURE__ */ React14.createElement(ChevronLeft, { className: cn("h-4 w-4", className2), ...props2 }),
|
|
2229
|
+
IconRight: ({ className: className2, ...props2 }) => /* @__PURE__ */ React14.createElement(ChevronRight, { className: cn("h-4 w-4", className2), ...props2 })
|
|
1903
2230
|
},
|
|
1904
2231
|
...props
|
|
1905
2232
|
}
|
|
@@ -1908,11 +2235,10 @@ function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
|
|
|
1908
2235
|
Calendar.displayName = "Calendar";
|
|
1909
2236
|
|
|
1910
2237
|
// src/components/ui/DatePicker.tsx
|
|
1911
|
-
import { jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1912
2238
|
var DatePicker = forwardRef20(
|
|
1913
2239
|
({ label, description, required, classNames, value, onChange, error, id, testId }, ref) => {
|
|
1914
|
-
const [date, setDate] =
|
|
1915
|
-
|
|
2240
|
+
const [date, setDate] = useState7(null);
|
|
2241
|
+
useEffect7(() => {
|
|
1916
2242
|
setDate(value ?? null);
|
|
1917
2243
|
}, [value]);
|
|
1918
2244
|
const handleDateSelect = (dateSelected) => {
|
|
@@ -1920,35 +2246,25 @@ var DatePicker = forwardRef20(
|
|
|
1920
2246
|
onChange?.(dateSelected);
|
|
1921
2247
|
setDate(dateSelected);
|
|
1922
2248
|
};
|
|
1923
|
-
return /* @__PURE__ */
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
selected: date || void 0,
|
|
1943
|
-
onSelect: handleDateSelect,
|
|
1944
|
-
captionLayout: "dropdown",
|
|
1945
|
-
showOutsideDays: true,
|
|
1946
|
-
className: classNames?.calendar
|
|
1947
|
-
}
|
|
1948
|
-
) })
|
|
1949
|
-
] }),
|
|
1950
|
-
/* @__PURE__ */ jsx31(ErrorMessage_default, { message: error })
|
|
1951
|
-
] });
|
|
2249
|
+
return /* @__PURE__ */ React.createElement("div", { id, className: cn("flex w-auto flex-col gap-1") }, label && /* @__PURE__ */ React.createElement(
|
|
2250
|
+
Label_default,
|
|
2251
|
+
{
|
|
2252
|
+
text: label,
|
|
2253
|
+
required,
|
|
2254
|
+
description,
|
|
2255
|
+
className: classNames?.label
|
|
2256
|
+
}
|
|
2257
|
+
), /* @__PURE__ */ React.createElement(Popover, null, /* @__PURE__ */ React.createElement(PopoverTrigger, { "data-testid": testId }, /* @__PURE__ */ React.createElement("div", { className: cn(datePickerStyle(), classNames?.input) }, /* @__PURE__ */ React.createElement(CalendarIcon, { size: 16 }), date ? format(date, "MM/dd/yyyy") : "Select a date")), /* @__PURE__ */ React.createElement(PopoverContent, { ref }, /* @__PURE__ */ React.createElement(
|
|
2258
|
+
Calendar,
|
|
2259
|
+
{
|
|
2260
|
+
mode: "single",
|
|
2261
|
+
selected: date || void 0,
|
|
2262
|
+
onSelect: handleDateSelect,
|
|
2263
|
+
captionLayout: "dropdown",
|
|
2264
|
+
showOutsideDays: true,
|
|
2265
|
+
className: classNames?.calendar
|
|
2266
|
+
}
|
|
2267
|
+
))), /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error }));
|
|
1952
2268
|
}
|
|
1953
2269
|
);
|
|
1954
2270
|
var datePickerStyle = cva10([
|
|
@@ -1986,7 +2302,6 @@ var datePickerStyle = cva10([
|
|
|
1986
2302
|
// src/components/ui/StepTabs.tsx
|
|
1987
2303
|
import * as Tabs from "@radix-ui/react-tabs";
|
|
1988
2304
|
import { cva as cva11 } from "cva";
|
|
1989
|
-
import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1990
2305
|
var tabParentVariants = cva11("flex flex-col", {
|
|
1991
2306
|
variants: {
|
|
1992
2307
|
variant: {
|
|
@@ -2037,45 +2352,42 @@ function StepTabs({
|
|
|
2037
2352
|
variant,
|
|
2038
2353
|
...props
|
|
2039
2354
|
}) {
|
|
2040
|
-
return /* @__PURE__ */
|
|
2355
|
+
return /* @__PURE__ */ React.createElement(
|
|
2041
2356
|
Tabs.Root,
|
|
2042
2357
|
{
|
|
2043
2358
|
value: currentStep,
|
|
2044
2359
|
onValueChange: setCurrentStep,
|
|
2045
2360
|
defaultValue: defaultValue ?? "0",
|
|
2046
2361
|
className: cn(tabParentVariants({ variant }), className),
|
|
2047
|
-
...props
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
]
|
|
2071
|
-
}
|
|
2362
|
+
...props
|
|
2363
|
+
},
|
|
2364
|
+
/* @__PURE__ */ React.createElement(Tabs.List, { className: cn(headerVariants({ variant })) }, list.length > 1 && list.map((item, index) => /* @__PURE__ */ React.createElement(
|
|
2365
|
+
Tabs.Trigger,
|
|
2366
|
+
{
|
|
2367
|
+
key: `${item}-${index}`,
|
|
2368
|
+
className: cn(singleTabVariants({ variant }), classNameTab),
|
|
2369
|
+
value: index.toString()
|
|
2370
|
+
},
|
|
2371
|
+
item
|
|
2372
|
+
))),
|
|
2373
|
+
children && children.map((child, index) => /* @__PURE__ */ React.createElement(
|
|
2374
|
+
Tabs.Content,
|
|
2375
|
+
{
|
|
2376
|
+
key: index,
|
|
2377
|
+
className: cn(
|
|
2378
|
+
"grow rounded-b-md bg-white p-5 outline-none",
|
|
2379
|
+
variant === "minimal" && "border-t"
|
|
2380
|
+
),
|
|
2381
|
+
value: index.toString()
|
|
2382
|
+
},
|
|
2383
|
+
child
|
|
2384
|
+
))
|
|
2072
2385
|
);
|
|
2073
2386
|
}
|
|
2074
2387
|
|
|
2075
2388
|
// src/components/ui/DismissibleBanner.tsx
|
|
2076
2389
|
import { X as X4 } from "lucide-react";
|
|
2077
|
-
import { useEffect as
|
|
2078
|
-
import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2390
|
+
import { useEffect as useEffect8, useState as useState8 } from "react";
|
|
2079
2391
|
function DismissibleBanner({
|
|
2080
2392
|
children,
|
|
2081
2393
|
cookieId,
|
|
@@ -2084,8 +2396,8 @@ function DismissibleBanner({
|
|
|
2084
2396
|
buttonClassNames
|
|
2085
2397
|
}) {
|
|
2086
2398
|
const safeId = encodeURIComponent(cookieId);
|
|
2087
|
-
const [isVisible, setIsVisible] =
|
|
2088
|
-
|
|
2399
|
+
const [isVisible, setIsVisible] = useState8(false);
|
|
2400
|
+
useEffect8(() => {
|
|
2089
2401
|
const cookies = document.cookie.split(";");
|
|
2090
2402
|
const isDismissed = cookies.some((cookie) => cookie.trim().startsWith(`${safeId}=true`));
|
|
2091
2403
|
if (!isDismissed) {
|
|
@@ -2097,26 +2409,24 @@ function DismissibleBanner({
|
|
|
2097
2409
|
setIsVisible(false);
|
|
2098
2410
|
};
|
|
2099
2411
|
if (!isVisible) return null;
|
|
2100
|
-
return /* @__PURE__ */
|
|
2412
|
+
return /* @__PURE__ */ React.createElement(
|
|
2101
2413
|
"nav",
|
|
2102
2414
|
{
|
|
2103
2415
|
className: cn(
|
|
2104
2416
|
"align-center flex w-full items-center justify-between gap-2 bg-blue-100 px-4 py-3",
|
|
2105
2417
|
className
|
|
2106
|
-
)
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
]
|
|
2119
|
-
}
|
|
2418
|
+
)
|
|
2419
|
+
},
|
|
2420
|
+
/* @__PURE__ */ React.createElement("div", { className: cn("w-full text-center text-sm text-green-100", textClassNames) }, children),
|
|
2421
|
+
/* @__PURE__ */ React.createElement(
|
|
2422
|
+
"button",
|
|
2423
|
+
{
|
|
2424
|
+
className: cn("text-green-100", buttonClassNames),
|
|
2425
|
+
"aria-label": "Close banner",
|
|
2426
|
+
onClick: handleDismiss
|
|
2427
|
+
},
|
|
2428
|
+
/* @__PURE__ */ React.createElement(X4, { size: 28 })
|
|
2429
|
+
)
|
|
2120
2430
|
);
|
|
2121
2431
|
}
|
|
2122
2432
|
|
|
@@ -2550,17 +2860,12 @@ function salaryRange(salary, showUnitText = true) {
|
|
|
2550
2860
|
}
|
|
2551
2861
|
|
|
2552
2862
|
// src/components/company/CompanyBenefits.tsx
|
|
2553
|
-
import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2554
2863
|
function CompanyBenefits({ benefits }) {
|
|
2555
2864
|
if (!benefits) return null;
|
|
2556
|
-
return /* @__PURE__ */
|
|
2557
|
-
/* @__PURE__ */ jsx34("h2", { className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg", children: "Company benefits" }),
|
|
2558
|
-
/* @__PURE__ */ jsx34("ul", { className: "flex flex-col gap-3", children: benefits.map((benefit, i) => /* @__PURE__ */ jsx34("li", { className: "text-base text-grey-80", children: benefit }, `${benefit}-${i}`)) })
|
|
2559
|
-
] });
|
|
2865
|
+
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))));
|
|
2560
2866
|
}
|
|
2561
2867
|
|
|
2562
2868
|
// src/components/company/CompanyInformation.tsx
|
|
2563
|
-
import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2564
2869
|
function CompanyInformation({
|
|
2565
2870
|
name,
|
|
2566
2871
|
how,
|
|
@@ -2568,78 +2873,45 @@ function CompanyInformation({
|
|
|
2568
2873
|
wow,
|
|
2569
2874
|
website
|
|
2570
2875
|
}) {
|
|
2571
|
-
return /* @__PURE__ */
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
] })
|
|
2590
|
-
] }),
|
|
2591
|
-
wow && /* @__PURE__ */ jsxs22("div", { className: "flex gap-2", children: [
|
|
2592
|
-
/* @__PURE__ */ jsx35("span", { children: "\u{1F31F}" }),
|
|
2593
|
-
/* @__PURE__ */ jsxs22("p", { className: "text-base text-grey-80", children: [
|
|
2594
|
-
/* @__PURE__ */ jsx35("span", { className: "pr-1 font-bold", children: "Wow Factor" }),
|
|
2595
|
-
wow
|
|
2596
|
-
] })
|
|
2597
|
-
] }),
|
|
2598
|
-
website && /* @__PURE__ */ jsx35("div", { className: "pt-2", children: /* @__PURE__ */ jsx35(
|
|
2599
|
-
LinkButton,
|
|
2600
|
-
{
|
|
2601
|
-
"data-testid": "company-website-link",
|
|
2602
|
-
href: website,
|
|
2603
|
-
target: "_blank",
|
|
2604
|
-
rel: "noopener noreferrer",
|
|
2605
|
-
children: "Website"
|
|
2606
|
-
}
|
|
2607
|
-
) })
|
|
2608
|
-
] });
|
|
2876
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-2" }, /* @__PURE__ */ React.createElement(
|
|
2877
|
+
"h2",
|
|
2878
|
+
{
|
|
2879
|
+
"data-testid": "company-name",
|
|
2880
|
+
className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg"
|
|
2881
|
+
},
|
|
2882
|
+
"About ",
|
|
2883
|
+
name
|
|
2884
|
+
), 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(
|
|
2885
|
+
LinkButton,
|
|
2886
|
+
{
|
|
2887
|
+
"data-testid": "company-website-link",
|
|
2888
|
+
href: website,
|
|
2889
|
+
target: "_blank",
|
|
2890
|
+
rel: "noopener noreferrer"
|
|
2891
|
+
},
|
|
2892
|
+
"Website"
|
|
2893
|
+
)));
|
|
2609
2894
|
}
|
|
2610
2895
|
|
|
2611
2896
|
// src/components/company/CompanyTake.tsx
|
|
2612
|
-
import { jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2613
2897
|
function CompanyTake({ content, avatarSrc }) {
|
|
2614
2898
|
if (!content) return null;
|
|
2615
|
-
return /* @__PURE__ */
|
|
2899
|
+
return /* @__PURE__ */ React.createElement(
|
|
2616
2900
|
"div",
|
|
2617
2901
|
{
|
|
2618
2902
|
"data-testid": "company-take",
|
|
2619
|
-
className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6"
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
/* @__PURE__ */ jsx36(Avatar, { name: "Jon Lee", src: avatarSrc }),
|
|
2625
|
-
/* @__PURE__ */ jsxs23("div", { className: "flex flex-col flex-wrap items-start", children: [
|
|
2626
|
-
/* @__PURE__ */ jsx36("p", { className: "text-sm font-bold text-white", children: "Jon Lee, PT, DPT, OCS, FAAOMPT, MBA" }),
|
|
2627
|
-
/* @__PURE__ */ jsx36("p", { className: "text-xs font-normal text-grey-30", children: "Pickle co-founder" })
|
|
2628
|
-
] })
|
|
2629
|
-
] })
|
|
2630
|
-
]
|
|
2631
|
-
}
|
|
2903
|
+
className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6"
|
|
2904
|
+
},
|
|
2905
|
+
/* @__PURE__ */ React.createElement("p", { className: "text-lg font-bold text-white sm:text-xl" }, "The Real Dill \u2618\uFE0F"),
|
|
2906
|
+
/* @__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)),
|
|
2907
|
+
/* @__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")))
|
|
2632
2908
|
);
|
|
2633
2909
|
}
|
|
2634
2910
|
|
|
2635
2911
|
// src/components/jobPost/JobDescription.tsx
|
|
2636
|
-
import { jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2637
2912
|
function JobDescription({ description }) {
|
|
2638
2913
|
if (!description) return null;
|
|
2639
|
-
return /* @__PURE__ */
|
|
2640
|
-
/* @__PURE__ */ jsx37("h3", { className: "text-xl font-bold", children: "Job Description" }),
|
|
2641
|
-
/* @__PURE__ */ jsx37(ReadMore, { text: description })
|
|
2642
|
-
] });
|
|
2914
|
+
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 }));
|
|
2643
2915
|
}
|
|
2644
2916
|
|
|
2645
2917
|
// src/components/jobPost/JobHeader.tsx
|
|
@@ -2655,19 +2927,18 @@ import { useContext as useContext2 } from "react";
|
|
|
2655
2927
|
|
|
2656
2928
|
// src/contexts/WindowHistoryProvider.tsx
|
|
2657
2929
|
import { useSearchParams } from "next/navigation";
|
|
2658
|
-
import { createContext, useEffect as
|
|
2659
|
-
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
2930
|
+
import { createContext, useEffect as useEffect9, useMemo as useMemo3, useState as useState9 } from "react";
|
|
2660
2931
|
var WindowHistoryContext = createContext({});
|
|
2661
2932
|
function WindowHistoryProvider({ children }) {
|
|
2662
|
-
const [history, setHistory] =
|
|
2933
|
+
const [history, setHistory] = useState9([]);
|
|
2663
2934
|
const searchParams = useSearchParams();
|
|
2664
|
-
|
|
2935
|
+
useEffect9(() => {
|
|
2665
2936
|
setHistory(
|
|
2666
2937
|
(prev) => prev.at(-1) === window.location.href ? prev : [...prev, window.location.href]
|
|
2667
2938
|
);
|
|
2668
2939
|
}, [searchParams]);
|
|
2669
|
-
const contextValue =
|
|
2670
|
-
return /* @__PURE__ */
|
|
2940
|
+
const contextValue = useMemo3(() => ({ history }), [history]);
|
|
2941
|
+
return /* @__PURE__ */ React.createElement(WindowHistoryContext.Provider, { value: contextValue }, children);
|
|
2671
2942
|
}
|
|
2672
2943
|
|
|
2673
2944
|
// src/hooks/useWindowHistory.ts
|
|
@@ -2677,7 +2948,6 @@ function useWindowHistory() {
|
|
|
2677
2948
|
}
|
|
2678
2949
|
|
|
2679
2950
|
// src/components/buttons/BackButton.tsx
|
|
2680
|
-
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
2681
2951
|
function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
2682
2952
|
const { history } = useWindowHistory();
|
|
2683
2953
|
const router = useRouter();
|
|
@@ -2690,7 +2960,7 @@ function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
|
2690
2960
|
router.push(fallbackHref ?? "/");
|
|
2691
2961
|
}
|
|
2692
2962
|
};
|
|
2693
|
-
return /* @__PURE__ */
|
|
2963
|
+
return /* @__PURE__ */ React.createElement(
|
|
2694
2964
|
Icon,
|
|
2695
2965
|
{
|
|
2696
2966
|
"aria-label": "back button",
|
|
@@ -2698,9 +2968,9 @@ function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
|
2698
2968
|
size: "small",
|
|
2699
2969
|
onClick: goBack,
|
|
2700
2970
|
className,
|
|
2701
|
-
...props
|
|
2702
|
-
|
|
2703
|
-
|
|
2971
|
+
...props
|
|
2972
|
+
},
|
|
2973
|
+
/* @__PURE__ */ React.createElement(X5, null)
|
|
2704
2974
|
);
|
|
2705
2975
|
}
|
|
2706
2976
|
|
|
@@ -2751,7 +3021,6 @@ var iconMap = {
|
|
|
2751
3021
|
};
|
|
2752
3022
|
|
|
2753
3023
|
// src/components/jobPost/JobHeader.tsx
|
|
2754
|
-
import { jsx as jsx40, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2755
3024
|
function JobHeader({
|
|
2756
3025
|
title,
|
|
2757
3026
|
subtitles,
|
|
@@ -2767,130 +3036,111 @@ function JobHeader({
|
|
|
2767
3036
|
}) {
|
|
2768
3037
|
const renderIcon = (icon) => {
|
|
2769
3038
|
const Icon2 = iconMap[icon];
|
|
2770
|
-
return /* @__PURE__ */
|
|
3039
|
+
return /* @__PURE__ */ React.createElement(Icon2, { size: 18 });
|
|
2771
3040
|
};
|
|
2772
|
-
return /* @__PURE__ */
|
|
3041
|
+
return /* @__PURE__ */ React.createElement(
|
|
2773
3042
|
"div",
|
|
2774
3043
|
{
|
|
2775
3044
|
"data-testid": "job-header-root",
|
|
2776
3045
|
className: cn(
|
|
2777
3046
|
"-mt-8 flex w-full flex-col items-center justify-between gap-6 md:-mt-0",
|
|
2778
3047
|
!standalone && "rounded-3xl"
|
|
3048
|
+
)
|
|
3049
|
+
},
|
|
3050
|
+
!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(
|
|
3051
|
+
Image2,
|
|
3052
|
+
{
|
|
3053
|
+
className: "h-full w-full rounded-t-3xl object-cover",
|
|
3054
|
+
src: bannerSrc,
|
|
3055
|
+
alt: "job banner",
|
|
3056
|
+
fill: true
|
|
3057
|
+
}
|
|
3058
|
+
), /* @__PURE__ */ React.createElement(
|
|
3059
|
+
BackButton,
|
|
3060
|
+
{
|
|
3061
|
+
acceptedRoutes: backAcceptedRoutes,
|
|
3062
|
+
fallbackHref: backFallbackHref,
|
|
3063
|
+
className: "absolute right-2 top-2 flex items-center justify-center text-white sm:hidden",
|
|
3064
|
+
"data-testid": "job-header-back-button"
|
|
3065
|
+
}
|
|
3066
|
+
), /* @__PURE__ */ React.createElement(
|
|
3067
|
+
"div",
|
|
3068
|
+
{
|
|
3069
|
+
className: "absolute left-4 top-8 md:left-6 md:top-16 lg:top-24",
|
|
3070
|
+
"data-testid": "job-header-avatar"
|
|
3071
|
+
},
|
|
3072
|
+
/* @__PURE__ */ React.createElement(
|
|
3073
|
+
Avatar,
|
|
3074
|
+
{
|
|
3075
|
+
size: "large",
|
|
3076
|
+
target: "_blank",
|
|
3077
|
+
href: avatarHref,
|
|
3078
|
+
name: avatarName,
|
|
3079
|
+
src: avatarSrc,
|
|
3080
|
+
rel: "noopener noreferrer"
|
|
3081
|
+
}
|
|
3082
|
+
)
|
|
3083
|
+
)),
|
|
3084
|
+
/* @__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(
|
|
3085
|
+
Avatar,
|
|
3086
|
+
{
|
|
3087
|
+
size: "large",
|
|
3088
|
+
target: "_blank",
|
|
3089
|
+
href: avatarHref,
|
|
3090
|
+
name: avatarName,
|
|
3091
|
+
src: avatarSrc,
|
|
3092
|
+
rel: "noopener noreferrer"
|
|
3093
|
+
}
|
|
3094
|
+
)), /* @__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(
|
|
3095
|
+
"div",
|
|
3096
|
+
{
|
|
3097
|
+
key: subtitle,
|
|
3098
|
+
"data-testid": `job-header-subtitle-${i}`,
|
|
3099
|
+
className: "flex items-center"
|
|
3100
|
+
},
|
|
3101
|
+
subtitle,
|
|
3102
|
+
i < subtitles.length - 1 && /* @__PURE__ */ React.createElement(Dot2, { className: "mx-1 shrink-0", size: 10 })
|
|
3103
|
+
)))), /* @__PURE__ */ React.createElement(
|
|
3104
|
+
"div",
|
|
3105
|
+
{
|
|
3106
|
+
"data-testid": "job-header-content",
|
|
3107
|
+
className: "mt-2 flex w-full flex-row flex-wrap items-center justify-between gap-1"
|
|
3108
|
+
},
|
|
3109
|
+
/* @__PURE__ */ React.createElement(
|
|
3110
|
+
"h2",
|
|
3111
|
+
{
|
|
3112
|
+
"data-testid": "job-header-title",
|
|
3113
|
+
className: "break-word max-w-full text-2xl font-bold text-black sm:max-w-2xl md:max-w-lg"
|
|
3114
|
+
},
|
|
3115
|
+
title
|
|
2779
3116
|
),
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
{
|
|
2808
|
-
size: "large",
|
|
2809
|
-
target: "_blank",
|
|
2810
|
-
href: avatarHref,
|
|
2811
|
-
name: avatarName,
|
|
2812
|
-
src: avatarSrc,
|
|
2813
|
-
rel: "noopener noreferrer"
|
|
2814
|
-
}
|
|
2815
|
-
)
|
|
2816
|
-
}
|
|
2817
|
-
)
|
|
2818
|
-
] }),
|
|
2819
|
-
/* @__PURE__ */ jsxs25("div", { className: "flex w-full flex-col items-start justify-start gap-4 px-6", children: [
|
|
2820
|
-
/* @__PURE__ */ jsxs25("div", { className: "flex flex-col md:flex-row", children: [
|
|
2821
|
-
standalone && /* @__PURE__ */ jsx40("div", { className: "-mt-4 mr-4 md:mt-0", "data-testid": "job-header-avatar", children: /* @__PURE__ */ jsx40(
|
|
2822
|
-
Avatar,
|
|
2823
|
-
{
|
|
2824
|
-
size: "large",
|
|
2825
|
-
target: "_blank",
|
|
2826
|
-
href: avatarHref,
|
|
2827
|
-
name: avatarName,
|
|
2828
|
-
src: avatarSrc,
|
|
2829
|
-
rel: "noopener noreferrer"
|
|
2830
|
-
}
|
|
2831
|
-
) }),
|
|
2832
|
-
/* @__PURE__ */ jsx40("div", { className: "prose mt-4 flex w-full items-center text-grey-80 lg:prose-lg", children: subtitles?.map((subtitle, i) => /* @__PURE__ */ jsxs25(
|
|
2833
|
-
"div",
|
|
2834
|
-
{
|
|
2835
|
-
"data-testid": `job-header-subtitle-${i}`,
|
|
2836
|
-
className: "flex items-center",
|
|
2837
|
-
children: [
|
|
2838
|
-
subtitle,
|
|
2839
|
-
i < subtitles.length - 1 && /* @__PURE__ */ jsx40(Dot2, { className: "mx-1 shrink-0", size: 10 })
|
|
2840
|
-
]
|
|
2841
|
-
},
|
|
2842
|
-
subtitle
|
|
2843
|
-
)) })
|
|
2844
|
-
] }),
|
|
2845
|
-
/* @__PURE__ */ jsxs25(
|
|
2846
|
-
"div",
|
|
2847
|
-
{
|
|
2848
|
-
"data-testid": "job-header-content",
|
|
2849
|
-
className: "mt-2 flex w-full flex-row flex-wrap items-center justify-between gap-1",
|
|
2850
|
-
children: [
|
|
2851
|
-
/* @__PURE__ */ jsx40(
|
|
2852
|
-
"h2",
|
|
2853
|
-
{
|
|
2854
|
-
"data-testid": "job-header-title",
|
|
2855
|
-
className: "break-word max-w-full text-2xl font-bold text-black sm:max-w-2xl md:max-w-lg",
|
|
2856
|
-
children: title
|
|
2857
|
-
}
|
|
2858
|
-
),
|
|
2859
|
-
!!actions && /* @__PURE__ */ jsx40(
|
|
2860
|
-
"div",
|
|
2861
|
-
{
|
|
2862
|
-
className: "flex w-full justify-end gap-2 md:w-auto",
|
|
2863
|
-
"data-testid": "job-header-actions",
|
|
2864
|
-
children: actions
|
|
2865
|
-
}
|
|
2866
|
-
)
|
|
2867
|
-
]
|
|
2868
|
-
}
|
|
2869
|
-
),
|
|
2870
|
-
/* @__PURE__ */ jsx40(
|
|
2871
|
-
"div",
|
|
2872
|
-
{
|
|
2873
|
-
"data-testid": "job-header-tags",
|
|
2874
|
-
className: "flex flex-row flex-wrap items-center justify-start gap-2",
|
|
2875
|
-
children: tags?.map(({ name, label, icon }) => /* @__PURE__ */ jsxs25(
|
|
2876
|
-
Chip_default,
|
|
2877
|
-
{
|
|
2878
|
-
size: "small",
|
|
2879
|
-
variant: "neutral",
|
|
2880
|
-
"aria-label": name,
|
|
2881
|
-
"data-testid": `job-header-tag-${name}`,
|
|
2882
|
-
children: [
|
|
2883
|
-
renderIcon(icon),
|
|
2884
|
-
/* @__PURE__ */ jsx40("span", { children: label })
|
|
2885
|
-
]
|
|
2886
|
-
},
|
|
2887
|
-
`${name}-${label}`
|
|
2888
|
-
))
|
|
2889
|
-
}
|
|
2890
|
-
)
|
|
2891
|
-
] })
|
|
2892
|
-
]
|
|
2893
|
-
}
|
|
3117
|
+
!!actions && /* @__PURE__ */ React.createElement(
|
|
3118
|
+
"div",
|
|
3119
|
+
{
|
|
3120
|
+
className: "flex w-full justify-end gap-2 md:w-auto",
|
|
3121
|
+
"data-testid": "job-header-actions"
|
|
3122
|
+
},
|
|
3123
|
+
actions
|
|
3124
|
+
)
|
|
3125
|
+
), /* @__PURE__ */ React.createElement(
|
|
3126
|
+
"div",
|
|
3127
|
+
{
|
|
3128
|
+
"data-testid": "job-header-tags",
|
|
3129
|
+
className: "flex flex-row flex-wrap items-center justify-start gap-2"
|
|
3130
|
+
},
|
|
3131
|
+
tags?.map(({ name, label, icon }) => /* @__PURE__ */ React.createElement(
|
|
3132
|
+
Chip_default,
|
|
3133
|
+
{
|
|
3134
|
+
key: `${name}-${label}`,
|
|
3135
|
+
size: "small",
|
|
3136
|
+
variant: "neutral",
|
|
3137
|
+
"aria-label": name,
|
|
3138
|
+
"data-testid": `job-header-tag-${name}`
|
|
3139
|
+
},
|
|
3140
|
+
renderIcon(icon),
|
|
3141
|
+
/* @__PURE__ */ React.createElement("span", null, label)
|
|
3142
|
+
))
|
|
3143
|
+
))
|
|
2894
3144
|
);
|
|
2895
3145
|
}
|
|
2896
3146
|
|
|
@@ -2898,7 +3148,7 @@ function JobHeader({
|
|
|
2898
3148
|
import * as DateFns from "date-fns";
|
|
2899
3149
|
|
|
2900
3150
|
// src/hooks/useDisplayText.ts
|
|
2901
|
-
import { useEffect as
|
|
3151
|
+
import { useEffect as useEffect10, useMemo as useMemo4, useState as useState10 } from "react";
|
|
2902
3152
|
|
|
2903
3153
|
// src/lib/mappings.ts
|
|
2904
3154
|
var employmentTypeDisplayText = {
|
|
@@ -3342,9 +3592,9 @@ var DisplayTextService = class {
|
|
|
3342
3592
|
|
|
3343
3593
|
// src/hooks/useDisplayText.ts
|
|
3344
3594
|
var useDisplayText = (scope, value) => {
|
|
3345
|
-
const [displayText, setDisplayText] =
|
|
3346
|
-
const displayService =
|
|
3347
|
-
|
|
3595
|
+
const [displayText, setDisplayText] = useState10("");
|
|
3596
|
+
const displayService = useMemo4(() => new DisplayTextService(), []);
|
|
3597
|
+
useEffect10(() => {
|
|
3348
3598
|
if (!displayService || !value) {
|
|
3349
3599
|
setDisplayText("");
|
|
3350
3600
|
return;
|
|
@@ -3405,7 +3655,6 @@ function getAddressList(jobPost) {
|
|
|
3405
3655
|
}
|
|
3406
3656
|
|
|
3407
3657
|
// src/components/jobPost/JobPost.tsx
|
|
3408
|
-
import { jsx as jsx41, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
3409
3658
|
function JobPost({
|
|
3410
3659
|
job,
|
|
3411
3660
|
bannerSrc,
|
|
@@ -3451,97 +3700,80 @@ function JobPost({
|
|
|
3451
3700
|
label
|
|
3452
3701
|
}))
|
|
3453
3702
|
].filter((t) => !!t);
|
|
3454
|
-
return /* @__PURE__ */
|
|
3703
|
+
return /* @__PURE__ */ React.createElement(
|
|
3455
3704
|
"div",
|
|
3456
3705
|
{
|
|
3457
3706
|
className: cn(
|
|
3458
3707
|
"flex flex-col gap-10 pb-4",
|
|
3459
3708
|
!standalone && "border-1 rounded-3xl border-grey-5"
|
|
3460
|
-
)
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
|
|
3485
|
-
|
|
3486
|
-
|
|
3487
|
-
|
|
3488
|
-
|
|
3489
|
-
|
|
3490
|
-
|
|
3491
|
-
|
|
3492
|
-
|
|
3493
|
-
|
|
3494
|
-
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
{
|
|
3500
|
-
benefits: job.hiringOrganization?.companyCareers?.companyBenefits?.map((b) => b.title).filter((d) => d !== void 0)
|
|
3501
|
-
}
|
|
3502
|
-
)
|
|
3503
|
-
] })
|
|
3504
|
-
]
|
|
3505
|
-
}
|
|
3709
|
+
)
|
|
3710
|
+
},
|
|
3711
|
+
/* @__PURE__ */ React.createElement(
|
|
3712
|
+
JobHeader,
|
|
3713
|
+
{
|
|
3714
|
+
title: job.title,
|
|
3715
|
+
bannerSrc,
|
|
3716
|
+
avatarName: job.hiringOrganization?.companyName,
|
|
3717
|
+
avatarSrc: job.hiringOrganization?.logo?.asset?.url,
|
|
3718
|
+
subtitles: [job.hiringOrganization?.companyName ?? "", `Posted ${formattedDate}`],
|
|
3719
|
+
actions,
|
|
3720
|
+
standalone,
|
|
3721
|
+
avatarHref,
|
|
3722
|
+
backFallbackHref: fallbackHref,
|
|
3723
|
+
backAcceptedRoutes,
|
|
3724
|
+
tags
|
|
3725
|
+
}
|
|
3726
|
+
),
|
|
3727
|
+
/* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-8 px-6" }, /* @__PURE__ */ React.createElement(JobDescription, { description: job.description }), /* @__PURE__ */ React.createElement(
|
|
3728
|
+
CompanyTake,
|
|
3729
|
+
{
|
|
3730
|
+
avatarSrc,
|
|
3731
|
+
content: job.hiringOrganization?.companyNDG?.companyNDGTake
|
|
3732
|
+
}
|
|
3733
|
+
), /* @__PURE__ */ React.createElement(
|
|
3734
|
+
CompanyInformation,
|
|
3735
|
+
{
|
|
3736
|
+
name: job.hiringOrganization?.companyName ?? "",
|
|
3737
|
+
how: job.hiringOrganization?.companyPhilosophy?.companyHow,
|
|
3738
|
+
mission: job.hiringOrganization?.companyPhilosophy?.companyMission,
|
|
3739
|
+
wow: job.hiringOrganization?.companyNDG?.companyWow,
|
|
3740
|
+
website: job.hiringOrganization?.companyWebsite
|
|
3741
|
+
}
|
|
3742
|
+
), /* @__PURE__ */ React.createElement(
|
|
3743
|
+
CompanyBenefits,
|
|
3744
|
+
{
|
|
3745
|
+
benefits: job.hiringOrganization?.companyCareers?.companyBenefits?.map((b) => b.title).filter((d) => d !== void 0)
|
|
3746
|
+
}
|
|
3747
|
+
))
|
|
3506
3748
|
);
|
|
3507
3749
|
}
|
|
3508
3750
|
|
|
3509
3751
|
// src/components/jobCard/JobLocation.tsx
|
|
3510
3752
|
import { MapPin as MapPin2 } from "lucide-react";
|
|
3511
|
-
import { jsx as jsx42, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
3512
3753
|
function JobLocation({ jobPost }) {
|
|
3513
3754
|
const locations = getAddressList(jobPost);
|
|
3514
3755
|
if (!locations || locations.length === 0) return null;
|
|
3515
3756
|
const primaryOffice = locations[0];
|
|
3516
3757
|
const extendedLocations = locations.slice(1).map((address) => address);
|
|
3517
|
-
return /* @__PURE__ */
|
|
3518
|
-
|
|
3519
|
-
|
|
3520
|
-
|
|
3521
|
-
|
|
3522
|
-
|
|
3523
|
-
|
|
3524
|
-
|
|
3525
|
-
|
|
3526
|
-
|
|
3527
|
-
|
|
3528
|
-
|
|
3529
|
-
|
|
3530
|
-
|
|
3531
|
-
|
|
3532
|
-
|
|
3533
|
-
|
|
3534
|
-
|
|
3535
|
-
|
|
3536
|
-
TooltipContent,
|
|
3537
|
-
{
|
|
3538
|
-
className: "border-1 rounded-md border border-grey-5 bg-white p-2",
|
|
3539
|
-
"data-testid": "job-location-tooltip-content",
|
|
3540
|
-
children: extendedLocations.map((location) => /* @__PURE__ */ jsx42("div", { className: "text-nowrap text-sm", children: location }, location))
|
|
3541
|
-
}
|
|
3542
|
-
)
|
|
3543
|
-
] }) })
|
|
3544
|
-
] });
|
|
3758
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2", "data-testid": "job-location-element" }, /* @__PURE__ */ React.createElement(MapPin2, { 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(
|
|
3759
|
+
Chip_default,
|
|
3760
|
+
{
|
|
3761
|
+
className: "font-bold",
|
|
3762
|
+
size: "small",
|
|
3763
|
+
variant: "jobLocation",
|
|
3764
|
+
"data-testid": "job-location-tooltip"
|
|
3765
|
+
},
|
|
3766
|
+
"+ ",
|
|
3767
|
+
extendedLocations.length,
|
|
3768
|
+
" more"
|
|
3769
|
+
)), /* @__PURE__ */ React.createElement(
|
|
3770
|
+
TooltipContent,
|
|
3771
|
+
{
|
|
3772
|
+
className: "border-1 rounded-md border border-grey-5 bg-white p-2",
|
|
3773
|
+
"data-testid": "job-location-tooltip-content"
|
|
3774
|
+
},
|
|
3775
|
+
extendedLocations.map((location) => /* @__PURE__ */ React.createElement("div", { key: location, className: "text-nowrap text-sm" }, location))
|
|
3776
|
+
))));
|
|
3545
3777
|
}
|
|
3546
3778
|
|
|
3547
3779
|
// src/types/data/company_service_latest.ts
|
|
@@ -3858,7 +4090,7 @@ export {
|
|
|
3858
4090
|
Label_default as Label,
|
|
3859
4091
|
LinkButton,
|
|
3860
4092
|
ListItem_default as ListItem,
|
|
3861
|
-
|
|
4093
|
+
MapComponent,
|
|
3862
4094
|
PlacesQueryInput_default as PlacesQueryInput,
|
|
3863
4095
|
Radio,
|
|
3864
4096
|
ReadMore,
|