@cellarnode/ui 0.17.1 → 0.17.4
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/chat/global-chat-widget.js +2 -2
- package/dist/chat/global-chat-widget.js.map +1 -1
- package/dist/chat/global-chat-widget.test.d.ts +2 -0
- package/dist/chat/global-chat-widget.test.d.ts.map +1 -0
- package/dist/chat/global-chat-widget.test.js +167 -0
- package/dist/chat/global-chat-widget.test.js.map +1 -0
- package/dist/chat/index.d.ts +0 -1
- package/dist/chat/index.d.ts.map +1 -1
- package/dist/chat/index.js +0 -1
- package/dist/chat/index.js.map +1 -1
- package/dist/components/__tests__/countdown-pill.test.d.ts +2 -0
- package/dist/components/__tests__/countdown-pill.test.d.ts.map +1 -0
- package/dist/components/__tests__/countdown-pill.test.js +28 -0
- package/dist/components/__tests__/countdown-pill.test.js.map +1 -0
- package/dist/components/__tests__/country-flag.test.d.ts +2 -0
- package/dist/components/__tests__/country-flag.test.d.ts.map +1 -0
- package/dist/components/__tests__/country-flag.test.js +20 -0
- package/dist/components/__tests__/country-flag.test.js.map +1 -0
- package/dist/components/__tests__/status-pill.test.d.ts +2 -0
- package/dist/components/__tests__/status-pill.test.d.ts.map +1 -0
- package/dist/components/__tests__/status-pill.test.js +24 -0
- package/dist/components/__tests__/status-pill.test.js.map +1 -0
- package/dist/components/bottle-extract-dialog.test.d.ts +2 -0
- package/dist/components/bottle-extract-dialog.test.d.ts.map +1 -0
- package/dist/components/bottle-extract-dialog.test.js +99 -0
- package/dist/components/bottle-extract-dialog.test.js.map +1 -0
- package/dist/components/branch-edit-banner.js +1 -1
- package/dist/components/branch-edit-banner.js.map +1 -1
- package/dist/components/branch-overview-panel.d.ts.map +1 -1
- package/dist/components/branch-overview-panel.js +8 -0
- package/dist/components/branch-overview-panel.js.map +1 -1
- package/dist/components/branch-overview-panel.stories.d.ts +8 -0
- package/dist/components/branch-overview-panel.stories.d.ts.map +1 -1
- package/dist/components/branch-overview-panel.stories.js.map +1 -1
- package/dist/components/branch-resolution-modal.d.ts.map +1 -1
- package/dist/components/branch-resolution-modal.js +9 -0
- package/dist/components/branch-resolution-modal.js.map +1 -1
- package/dist/components/branch-resolution-modal.stories.d.ts +9 -0
- package/dist/components/branch-resolution-modal.stories.d.ts.map +1 -1
- package/dist/components/branch-resolution-modal.stories.js.map +1 -1
- package/dist/components/branch-resolution-modal.test.js +9 -0
- package/dist/components/branch-resolution-modal.test.js.map +1 -1
- package/dist/components/card.js +2 -2
- package/dist/components/card.js.map +1 -1
- package/dist/components/celebration-pulse.d.ts.map +1 -1
- package/dist/components/celebration-pulse.js +1 -1
- package/dist/components/celebration-pulse.js.map +1 -1
- package/dist/components/confirmation-dialog.stories.d.ts +26 -0
- package/dist/components/confirmation-dialog.stories.d.ts.map +1 -0
- package/dist/components/confirmation-dialog.stories.js +94 -0
- package/dist/components/confirmation-dialog.stories.js.map +1 -0
- package/dist/components/countdown-pill.d.ts +7 -0
- package/dist/components/countdown-pill.d.ts.map +1 -0
- package/dist/components/countdown-pill.js +27 -0
- package/dist/components/countdown-pill.js.map +1 -0
- package/dist/components/countdown-pill.stories.d.ts +15 -0
- package/dist/components/countdown-pill.stories.d.ts.map +1 -0
- package/dist/components/countdown-pill.stories.js +14 -0
- package/dist/components/countdown-pill.stories.js.map +1 -0
- package/dist/components/country-flag.d.ts +6 -0
- package/dist/components/country-flag.d.ts.map +1 -0
- package/dist/components/country-flag.js +31 -0
- package/dist/components/country-flag.js.map +1 -0
- package/dist/components/country-flag.stories.d.ts +14 -0
- package/dist/components/country-flag.stories.d.ts.map +1 -0
- package/dist/components/country-flag.stories.js +16 -0
- package/dist/components/country-flag.stories.js.map +1 -0
- package/dist/components/drawer.js +1 -1
- package/dist/components/drawer.js.map +1 -1
- package/dist/components/journey-card.js +2 -2
- package/dist/components/journey-card.js.map +1 -1
- package/dist/components/journey-card.test.d.ts +2 -0
- package/dist/components/journey-card.test.d.ts.map +1 -0
- package/dist/components/journey-card.test.js +82 -0
- package/dist/components/journey-card.test.js.map +1 -0
- package/dist/components/kanban-board.stories.d.ts.map +1 -1
- package/dist/components/kanban-board.stories.js +13 -3
- package/dist/components/kanban-board.stories.js.map +1 -1
- package/dist/components/kanban-dnd-board.stories.d.ts.map +1 -1
- package/dist/components/kanban-dnd-board.stories.js +7 -4
- package/dist/components/kanban-dnd-board.stories.js.map +1 -1
- package/dist/components/label.js +1 -1
- package/dist/components/label.js.map +1 -1
- package/dist/components/offer-card.js +1 -1
- package/dist/components/offer-card.js.map +1 -1
- package/dist/components/offer-card.test.d.ts +2 -0
- package/dist/components/offer-card.test.d.ts.map +1 -0
- package/dist/components/offer-card.test.js +73 -0
- package/dist/components/offer-card.test.js.map +1 -0
- package/dist/components/period-select.stories.d.ts +29 -0
- package/dist/components/period-select.stories.d.ts.map +1 -0
- package/dist/components/period-select.stories.js +65 -0
- package/dist/components/period-select.stories.js.map +1 -0
- package/dist/components/product-card.js +1 -1
- package/dist/components/product-card.js.map +1 -1
- package/dist/components/product-card.stories.js +2 -2
- package/dist/components/product-card.stories.js.map +1 -1
- package/dist/components/reason-pill.js +1 -1
- package/dist/components/reason-pill.js.map +1 -1
- package/dist/components/score-chip.js +1 -1
- package/dist/components/score-chip.js.map +1 -1
- package/dist/components/shadcn-dialog.js +1 -1
- package/dist/components/shadcn-dialog.js.map +1 -1
- package/dist/components/sidebar/context.d.ts +24 -0
- package/dist/components/sidebar/context.d.ts.map +1 -0
- package/dist/components/sidebar/context.js +73 -0
- package/dist/components/sidebar/context.js.map +1 -0
- package/dist/components/sidebar/index.d.ts +9 -0
- package/dist/components/sidebar/index.d.ts.map +1 -0
- package/dist/components/sidebar/index.js +9 -0
- package/dist/components/sidebar/index.js.map +1 -0
- package/dist/components/sidebar/sidebar-group.d.ts +10 -0
- package/dist/components/sidebar/sidebar-group.d.ts.map +1 -0
- package/dist/components/sidebar/sidebar-group.js +21 -0
- package/dist/components/sidebar/sidebar-group.js.map +1 -0
- package/dist/components/sidebar/sidebar-inset.d.ts +3 -0
- package/dist/components/sidebar/sidebar-inset.d.ts.map +1 -0
- package/dist/components/sidebar/sidebar-inset.js +7 -0
- package/dist/components/sidebar/sidebar-inset.js.map +1 -0
- package/dist/components/sidebar/sidebar-menu-sub.d.ts +9 -0
- package/dist/components/sidebar/sidebar-menu-sub.d.ts.map +1 -0
- package/dist/components/sidebar/sidebar-menu-sub.js +15 -0
- package/dist/components/sidebar/sidebar-menu-sub.js.map +1 -0
- package/dist/components/sidebar/sidebar-menu.d.ts +23 -0
- package/dist/components/sidebar/sidebar-menu.d.ts.map +1 -0
- package/dist/components/sidebar/sidebar-menu.js +63 -0
- package/dist/components/sidebar/sidebar-menu.js.map +1 -0
- package/dist/components/sidebar/sidebar-sections.d.ts +8 -0
- package/dist/components/sidebar/sidebar-sections.d.ts.map +1 -0
- package/dist/components/sidebar/sidebar-sections.js +20 -0
- package/dist/components/sidebar/sidebar-sections.js.map +1 -0
- package/dist/components/sidebar/sidebar-trigger.d.ts +4 -0
- package/dist/components/sidebar/sidebar-trigger.d.ts.map +1 -0
- package/dist/components/sidebar/sidebar-trigger.js +17 -0
- package/dist/components/sidebar/sidebar-trigger.js.map +1 -0
- package/dist/components/sidebar/sidebar.d.ts +7 -0
- package/dist/components/sidebar/sidebar.d.ts.map +1 -0
- package/dist/components/sidebar/sidebar.js +26 -0
- package/dist/components/sidebar/sidebar.js.map +1 -0
- package/dist/components/status-pill.d.ts +7 -0
- package/dist/components/status-pill.d.ts.map +1 -0
- package/dist/components/status-pill.js +14 -0
- package/dist/components/status-pill.js.map +1 -0
- package/dist/components/status-pill.stories.d.ts +21 -0
- package/dist/components/status-pill.stories.d.ts.map +1 -0
- package/dist/components/status-pill.stories.js +18 -0
- package/dist/components/status-pill.stories.js.map +1 -0
- package/dist/components/toast.stories.d.ts +25 -0
- package/dist/components/toast.stories.d.ts.map +1 -0
- package/dist/components/toast.stories.js +38 -0
- package/dist/components/toast.stories.js.map +1 -0
- package/dist/components/toaster.stories.d.ts +19 -0
- package/dist/components/toaster.stories.d.ts.map +1 -0
- package/dist/components/toaster.stories.js +27 -0
- package/dist/components/toaster.stories.js.map +1 -0
- package/dist/components/variant-picker-dialog.stories.js +1 -1
- package/dist/components/variant-picker-dialog.stories.js.map +1 -1
- package/dist/globe/globe-scene-camera.d.ts +25 -0
- package/dist/globe/globe-scene-camera.d.ts.map +1 -0
- package/dist/globe/globe-scene-camera.js +59 -0
- package/dist/globe/globe-scene-camera.js.map +1 -0
- package/dist/globe/globe-scene-channel.d.ts +27 -0
- package/dist/globe/globe-scene-channel.d.ts.map +1 -0
- package/dist/globe/globe-scene-channel.js +60 -0
- package/dist/globe/globe-scene-channel.js.map +1 -0
- package/dist/globe/globe-scene-controls.d.ts +38 -0
- package/dist/globe/globe-scene-controls.d.ts.map +1 -0
- package/dist/globe/globe-scene-controls.js +62 -0
- package/dist/globe/globe-scene-controls.js.map +1 -0
- package/dist/globe/globe-scene-data.d.ts +16 -0
- package/dist/globe/globe-scene-data.d.ts.map +1 -0
- package/dist/globe/globe-scene-data.js +51 -0
- package/dist/globe/globe-scene-data.js.map +1 -0
- package/dist/globe/globe-scene-interactions.d.ts +11 -0
- package/dist/globe/globe-scene-interactions.d.ts.map +1 -0
- package/dist/globe/globe-scene-interactions.js +54 -0
- package/dist/globe/globe-scene-interactions.js.map +1 -0
- package/dist/globe/globe-scene-layers.d.ts +22 -0
- package/dist/globe/globe-scene-layers.d.ts.map +1 -0
- package/dist/globe/globe-scene-layers.js +170 -0
- package/dist/globe/globe-scene-layers.js.map +1 -0
- package/dist/globe/globe-scene-props.d.ts +32 -0
- package/dist/globe/globe-scene-props.d.ts.map +1 -0
- package/dist/globe/globe-scene-props.js +8 -0
- package/dist/globe/globe-scene-props.js.map +1 -0
- package/dist/globe/globe-scene-types.d.ts +34 -0
- package/dist/globe/globe-scene-types.d.ts.map +1 -0
- package/dist/globe/globe-scene-types.js +14 -0
- package/dist/globe/globe-scene-types.js.map +1 -0
- package/dist/globe/globe-scene.d.ts +10 -25
- package/dist/globe/globe-scene.d.ts.map +1 -1
- package/dist/globe/globe-scene.js +54 -349
- package/dist/globe/globe-scene.js.map +1 -1
- package/dist/hooks/__tests__/use-animated-number.test.d.ts +2 -0
- package/dist/hooks/__tests__/use-animated-number.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/use-animated-number.test.js +58 -0
- package/dist/hooks/__tests__/use-animated-number.test.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/use-animated-number.d.ts +6 -0
- package/dist/hooks/use-animated-number.d.ts.map +1 -0
- package/dist/hooks/use-animated-number.js +56 -0
- package/dist/hooks/use-animated-number.js.map +1 -0
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -6
- package/dist/index.js.map +1 -1
- package/dist/nav/app-sidebar.js +1 -1
- package/dist/nav/app-sidebar.js.map +1 -1
- package/dist/notifications/notification-badge.stories.d.ts +42 -0
- package/dist/notifications/notification-badge.stories.d.ts.map +1 -0
- package/dist/notifications/notification-badge.stories.js +42 -0
- package/dist/notifications/notification-badge.stories.js.map +1 -0
- package/dist/{components/kanban-card.stories.d.ts → notifications/notification-empty-state.stories.d.ts} +5 -5
- package/dist/notifications/notification-empty-state.stories.d.ts.map +1 -0
- package/dist/notifications/notification-empty-state.stories.js +22 -0
- package/dist/notifications/notification-empty-state.stories.js.map +1 -0
- package/dist/notifications/notification-item.stories.d.ts +41 -0
- package/dist/notifications/notification-item.stories.d.ts.map +1 -0
- package/dist/notifications/notification-item.stories.js +110 -0
- package/dist/notifications/notification-item.stories.js.map +1 -0
- package/dist/notifications/notification-list.stories.d.ts +25 -0
- package/dist/notifications/notification-list.stories.d.ts.map +1 -0
- package/dist/notifications/notification-list.stories.js +148 -0
- package/dist/notifications/notification-list.stories.js.map +1 -0
- package/dist/{components/classification-select.stories.d.ts → notifications/notification-page.stories.d.ts} +8 -5
- package/dist/notifications/notification-page.stories.d.ts.map +1 -0
- package/dist/notifications/notification-page.stories.js +140 -0
- package/dist/notifications/notification-page.stories.js.map +1 -0
- package/dist/notifications/notification-tray.stories.d.ts +21 -0
- package/dist/notifications/notification-tray.stories.d.ts.map +1 -0
- package/dist/notifications/notification-tray.stories.js +123 -0
- package/dist/notifications/notification-tray.stories.js.map +1 -0
- package/dist/notifications/push-prompt-banner.stories.d.ts +27 -0
- package/dist/notifications/push-prompt-banner.stories.d.ts.map +1 -0
- package/dist/notifications/push-prompt-banner.stories.js +33 -0
- package/dist/notifications/push-prompt-banner.stories.js.map +1 -0
- package/dist/offer/__tests__/opportunity-requirements.test.d.ts +2 -0
- package/dist/offer/__tests__/opportunity-requirements.test.d.ts.map +1 -0
- package/dist/offer/__tests__/opportunity-requirements.test.js +33 -0
- package/dist/offer/__tests__/opportunity-requirements.test.js.map +1 -0
- package/dist/offer/index.d.ts +1 -3
- package/dist/offer/index.d.ts.map +1 -1
- package/dist/offer/index.js +5 -2
- package/dist/offer/index.js.map +1 -1
- package/dist/offer/negotiation-event-card.stories.d.ts +1 -1
- package/dist/offer/negotiation-event-card.stories.d.ts.map +1 -1
- package/dist/offer/negotiation-event-card.stories.js +3 -1
- package/dist/offer/negotiation-event-card.stories.js.map +1 -1
- package/dist/offer/offer-detail-header.stories.d.ts +19 -0
- package/dist/offer/offer-detail-header.stories.d.ts.map +1 -0
- package/dist/offer/offer-detail-header.stories.js +59 -0
- package/dist/offer/offer-detail-header.stories.js.map +1 -0
- package/dist/offer/offer-detail-shell.stories.d.ts +17 -0
- package/dist/offer/offer-detail-shell.stories.d.ts.map +1 -0
- package/dist/offer/offer-detail-shell.stories.js +69 -0
- package/dist/offer/offer-detail-shell.stories.js.map +1 -0
- package/dist/offer/offer-detail-tabs.stories.d.ts +17 -0
- package/dist/offer/offer-detail-tabs.stories.d.ts.map +1 -0
- package/dist/offer/offer-detail-tabs.stories.js +66 -0
- package/dist/offer/offer-detail-tabs.stories.js.map +1 -0
- package/dist/offer/opportunity-requirements.d.ts.map +1 -1
- package/dist/offer/opportunity-requirements.js +4 -0
- package/dist/offer/opportunity-requirements.js.map +1 -1
- package/dist/opportunities/__tests__/opportunity-channel-badge.test.d.ts +2 -0
- package/dist/opportunities/__tests__/opportunity-channel-badge.test.d.ts.map +1 -0
- package/dist/opportunities/__tests__/opportunity-channel-badge.test.js +23 -0
- package/dist/opportunities/__tests__/opportunity-channel-badge.test.js.map +1 -0
- package/dist/opportunities/__tests__/opportunity-detail-panel.test.d.ts +2 -0
- package/dist/opportunities/__tests__/opportunity-detail-panel.test.d.ts.map +1 -0
- package/dist/opportunities/__tests__/opportunity-detail-panel.test.js +50 -0
- package/dist/opportunities/__tests__/opportunity-detail-panel.test.js.map +1 -0
- package/dist/opportunities/__tests__/opportunity-empty-state.test.d.ts +2 -0
- package/dist/opportunities/__tests__/opportunity-empty-state.test.d.ts.map +1 -0
- package/dist/opportunities/__tests__/opportunity-empty-state.test.js +19 -0
- package/dist/opportunities/__tests__/opportunity-empty-state.test.js.map +1 -0
- package/dist/opportunities/__tests__/opportunity-offers-count-chip.test.d.ts +2 -0
- package/dist/opportunities/__tests__/opportunity-offers-count-chip.test.d.ts.map +1 -0
- package/dist/opportunities/__tests__/opportunity-offers-count-chip.test.js +25 -0
- package/dist/opportunities/__tests__/opportunity-offers-count-chip.test.js.map +1 -0
- package/dist/opportunities/__tests__/opportunity-stacked-card.test.d.ts +2 -0
- package/dist/opportunities/__tests__/opportunity-stacked-card.test.d.ts.map +1 -0
- package/dist/opportunities/__tests__/opportunity-stacked-card.test.js +99 -0
- package/dist/opportunities/__tests__/opportunity-stacked-card.test.js.map +1 -0
- package/dist/opportunities/__tests__/opportunity-stacked-list.test.d.ts +2 -0
- package/dist/opportunities/__tests__/opportunity-stacked-list.test.d.ts.map +1 -0
- package/dist/opportunities/__tests__/opportunity-stacked-list.test.js +98 -0
- package/dist/opportunities/__tests__/opportunity-stacked-list.test.js.map +1 -0
- package/dist/opportunities/__tests__/section-field.test.d.ts +2 -0
- package/dist/opportunities/__tests__/section-field.test.d.ts.map +1 -0
- package/dist/opportunities/__tests__/section-field.test.js +28 -0
- package/dist/opportunities/__tests__/section-field.test.js.map +1 -0
- package/dist/opportunities/__tests__/two-column-section.test.d.ts +2 -0
- package/dist/opportunities/__tests__/two-column-section.test.d.ts.map +1 -0
- package/dist/opportunities/__tests__/two-column-section.test.js +25 -0
- package/dist/opportunities/__tests__/two-column-section.test.js.map +1 -0
- package/dist/opportunities/opportunities-table.js +1 -1
- package/dist/opportunities/opportunities-table.js.map +1 -1
- package/dist/opportunities/opportunities-table.test.d.ts +2 -0
- package/dist/opportunities/opportunities-table.test.d.ts.map +1 -0
- package/dist/opportunities/opportunities-table.test.js +87 -0
- package/dist/opportunities/opportunities-table.test.js.map +1 -0
- package/dist/opportunities/opportunity-channel-badge.d.ts +7 -0
- package/dist/opportunities/opportunity-channel-badge.d.ts.map +1 -0
- package/dist/opportunities/opportunity-channel-badge.js +13 -0
- package/dist/opportunities/opportunity-channel-badge.js.map +1 -0
- package/dist/opportunities/opportunity-channel-badge.stories.d.ts +13 -0
- package/dist/opportunities/opportunity-channel-badge.stories.d.ts.map +1 -0
- package/dist/opportunities/opportunity-channel-badge.stories.js +11 -0
- package/dist/opportunities/opportunity-channel-badge.stories.js.map +1 -0
- package/dist/opportunities/opportunity-detail-panel.d.ts +13 -0
- package/dist/opportunities/opportunity-detail-panel.d.ts.map +1 -0
- package/dist/opportunities/opportunity-detail-panel.js +19 -0
- package/dist/opportunities/opportunity-detail-panel.js.map +1 -0
- package/dist/opportunities/opportunity-detail-panel.stories.d.ts +14 -0
- package/dist/opportunities/opportunity-detail-panel.stories.d.ts.map +1 -0
- package/dist/opportunities/opportunity-detail-panel.stories.js +53 -0
- package/dist/opportunities/opportunity-detail-panel.stories.js.map +1 -0
- package/dist/opportunities/opportunity-empty-state.d.ts +10 -0
- package/dist/opportunities/opportunity-empty-state.d.ts.map +1 -0
- package/dist/opportunities/opportunity-empty-state.js +6 -0
- package/dist/opportunities/opportunity-empty-state.js.map +1 -0
- package/dist/opportunities/opportunity-empty-state.stories.d.ts +13 -0
- package/dist/opportunities/opportunity-empty-state.stories.d.ts.map +1 -0
- package/dist/opportunities/opportunity-empty-state.stories.js +13 -0
- package/dist/opportunities/opportunity-empty-state.stories.js.map +1 -0
- package/dist/opportunities/opportunity-offers-count-chip.d.ts +6 -0
- package/dist/opportunities/opportunity-offers-count-chip.d.ts.map +1 -0
- package/dist/opportunities/opportunity-offers-count-chip.js +8 -0
- package/dist/opportunities/opportunity-offers-count-chip.js.map +1 -0
- package/dist/opportunities/opportunity-offers-count-chip.stories.d.ts +13 -0
- package/dist/opportunities/opportunity-offers-count-chip.stories.d.ts.map +1 -0
- package/dist/opportunities/opportunity-offers-count-chip.stories.js +11 -0
- package/dist/opportunities/opportunity-offers-count-chip.stories.js.map +1 -0
- package/dist/opportunities/opportunity-stacked-card.d.ts +20 -0
- package/dist/opportunities/opportunity-stacked-card.d.ts.map +1 -0
- package/dist/opportunities/opportunity-stacked-card.js +48 -0
- package/dist/opportunities/opportunity-stacked-card.js.map +1 -0
- package/dist/opportunities/opportunity-stacked-card.stories.d.ts +23 -0
- package/dist/opportunities/opportunity-stacked-card.stories.d.ts.map +1 -0
- package/dist/opportunities/opportunity-stacked-card.stories.js +143 -0
- package/dist/opportunities/opportunity-stacked-card.stories.js.map +1 -0
- package/dist/opportunities/opportunity-stacked-list.d.ts +28 -0
- package/dist/opportunities/opportunity-stacked-list.d.ts.map +1 -0
- package/dist/opportunities/opportunity-stacked-list.js +49 -0
- package/dist/opportunities/opportunity-stacked-list.js.map +1 -0
- package/dist/opportunities/opportunity-stacked-list.stories.d.ts +16 -0
- package/dist/opportunities/opportunity-stacked-list.stories.d.ts.map +1 -0
- package/dist/opportunities/opportunity-stacked-list.stories.js +38 -0
- package/dist/opportunities/opportunity-stacked-list.stories.js.map +1 -0
- package/dist/opportunities/section-field.d.ts +8 -0
- package/dist/opportunities/section-field.d.ts.map +1 -0
- package/dist/opportunities/section-field.js +9 -0
- package/dist/opportunities/section-field.js.map +1 -0
- package/dist/opportunities/section-field.stories.d.ts +13 -0
- package/dist/opportunities/section-field.stories.d.ts.map +1 -0
- package/dist/opportunities/section-field.stories.js +15 -0
- package/dist/opportunities/section-field.stories.js.map +1 -0
- package/dist/opportunities/two-column-section.d.ts +10 -0
- package/dist/opportunities/two-column-section.d.ts.map +1 -0
- package/dist/opportunities/two-column-section.js +21 -0
- package/dist/opportunities/two-column-section.js.map +1 -0
- package/dist/opportunities/two-column-section.stories.d.ts +12 -0
- package/dist/opportunities/two-column-section.stories.d.ts.map +1 -0
- package/dist/opportunities/two-column-section.stories.js +26 -0
- package/dist/opportunities/two-column-section.stories.js.map +1 -0
- package/dist/opportunities/types.d.ts +76 -0
- package/dist/opportunities/types.d.ts.map +1 -0
- package/dist/opportunities/types.js +2 -0
- package/dist/opportunities/types.js.map +1 -0
- package/dist/org/invite-member-dialog.stories.d.ts +24 -0
- package/dist/org/invite-member-dialog.stories.d.ts.map +1 -0
- package/dist/org/invite-member-dialog.stories.js +34 -0
- package/dist/org/invite-member-dialog.stories.js.map +1 -0
- package/dist/org/team-hero-banner.stories.d.ts +25 -0
- package/dist/org/team-hero-banner.stories.d.ts.map +1 -0
- package/dist/org/team-hero-banner.stories.js +53 -0
- package/dist/org/team-hero-banner.stories.js.map +1 -0
- package/dist/org/team-member-menu.stories.d.ts +19 -0
- package/dist/org/team-member-menu.stories.d.ts.map +1 -0
- package/dist/org/team-member-menu.stories.js +27 -0
- package/dist/org/team-member-menu.stories.js.map +1 -0
- package/dist/org/team-member-row.stories.d.ts +26 -0
- package/dist/org/team-member-row.stories.d.ts.map +1 -0
- package/dist/org/team-member-row.stories.js +61 -0
- package/dist/org/team-member-row.stories.js.map +1 -0
- package/dist/org/team-pending-row.stories.d.ts +23 -0
- package/dist/org/team-pending-row.stories.d.ts.map +1 -0
- package/dist/org/team-pending-row.stories.js +45 -0
- package/dist/org/team-pending-row.stories.js.map +1 -0
- package/dist/skeleton/__tests__/provider.test.js +11 -1
- package/dist/skeleton/__tests__/provider.test.js.map +1 -1
- package/dist/skeleton/provider.d.ts +11 -1
- package/dist/skeleton/provider.d.ts.map +1 -1
- package/dist/skeleton/provider.js +2 -2
- package/dist/skeleton/provider.js.map +1 -1
- package/package.json +1 -1
- package/src/theme/tokens.css +78 -0
- package/dist/chat/messenger-chat-header.d.ts +0 -14
- package/dist/chat/messenger-chat-header.d.ts.map +0 -1
- package/dist/chat/messenger-chat-header.js +0 -25
- package/dist/chat/messenger-chat-header.js.map +0 -1
- package/dist/components/asset-list.d.ts +0 -34
- package/dist/components/asset-list.d.ts.map +0 -1
- package/dist/components/asset-list.js +0 -34
- package/dist/components/asset-list.js.map +0 -1
- package/dist/components/asset-list.stories.d.ts +0 -20
- package/dist/components/asset-list.stories.d.ts.map +0 -1
- package/dist/components/asset-list.stories.js +0 -50
- package/dist/components/asset-list.stories.js.map +0 -1
- package/dist/components/classification-select.d.ts +0 -24
- package/dist/components/classification-select.d.ts.map +0 -1
- package/dist/components/classification-select.js +0 -51
- package/dist/components/classification-select.js.map +0 -1
- package/dist/components/classification-select.stories.d.ts.map +0 -1
- package/dist/components/classification-select.stories.js +0 -100
- package/dist/components/classification-select.stories.js.map +0 -1
- package/dist/components/completed-offer-card.d.ts +0 -34
- package/dist/components/completed-offer-card.d.ts.map +0 -1
- package/dist/components/completed-offer-card.js +0 -20
- package/dist/components/completed-offer-card.js.map +0 -1
- package/dist/components/completed-offer-card.stories.d.ts +0 -17
- package/dist/components/completed-offer-card.stories.d.ts.map +0 -1
- package/dist/components/completed-offer-card.stories.js +0 -75
- package/dist/components/completed-offer-card.stories.js.map +0 -1
- package/dist/components/kanban-card.d.ts +0 -8
- package/dist/components/kanban-card.d.ts.map +0 -1
- package/dist/components/kanban-card.js +0 -13
- package/dist/components/kanban-card.js.map +0 -1
- package/dist/components/kanban-card.stories.d.ts.map +0 -1
- package/dist/components/kanban-card.stories.js +0 -30
- package/dist/components/kanban-card.stories.js.map +0 -1
- package/dist/components/price-comparison.d.ts +0 -13
- package/dist/components/price-comparison.d.ts.map +0 -1
- package/dist/components/price-comparison.js +0 -60
- package/dist/components/price-comparison.js.map +0 -1
- package/dist/components/price-comparison.stories.d.ts +0 -11
- package/dist/components/price-comparison.stories.d.ts.map +0 -1
- package/dist/components/price-comparison.stories.js +0 -56
- package/dist/components/price-comparison.stories.js.map +0 -1
- package/dist/components/pricing-reference-card.d.ts +0 -13
- package/dist/components/pricing-reference-card.d.ts.map +0 -1
- package/dist/components/pricing-reference-card.js +0 -38
- package/dist/components/pricing-reference-card.js.map +0 -1
- package/dist/components/pricing-reference-card.stories.d.ts +0 -11
- package/dist/components/pricing-reference-card.stories.d.ts.map +0 -1
- package/dist/components/pricing-reference-card.stories.js +0 -54
- package/dist/components/pricing-reference-card.stories.js.map +0 -1
- package/dist/components/pricing-reference-card.test.d.ts +0 -2
- package/dist/components/pricing-reference-card.test.d.ts.map +0 -1
- package/dist/components/pricing-reference-card.test.js +0 -31
- package/dist/components/pricing-reference-card.test.js.map +0 -1
- package/dist/components/sidebar.d.ts +0 -68
- package/dist/components/sidebar.d.ts.map +0 -1
- package/dist/components/sidebar.js +0 -208
- package/dist/components/sidebar.js.map +0 -1
- package/dist/offer/negotiation-event-card.d.ts +0 -9
- package/dist/offer/negotiation-event-card.d.ts.map +0 -1
- package/dist/offer/negotiation-event-card.js +0 -39
- package/dist/offer/negotiation-event-card.js.map +0 -1
- package/dist/offer/org-banner.d.ts +0 -11
- package/dist/offer/org-banner.d.ts.map +0 -1
- package/dist/offer/org-banner.js +0 -19
- package/dist/offer/org-banner.js.map +0 -1
- package/dist/offer/org-banner.stories.d.ts +0 -18
- package/dist/offer/org-banner.stories.d.ts.map +0 -1
- package/dist/offer/org-banner.stories.js +0 -51
- package/dist/offer/org-banner.stories.js.map +0 -1
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { describe, it, expect } from "vitest";
|
|
3
|
+
import { render, screen } from "@testing-library/react";
|
|
4
|
+
import userEvent from "@testing-library/user-event";
|
|
5
|
+
import { OpportunityStackedCard } from "../opportunity-stacked-card";
|
|
6
|
+
import { SkeletonProvider } from "../../skeleton/provider";
|
|
7
|
+
const opp = {
|
|
8
|
+
id: "opp-1",
|
|
9
|
+
tenderId: "tender-1",
|
|
10
|
+
productName: "Organic Prosecco DOCG",
|
|
11
|
+
buyerName: "Systembolaget",
|
|
12
|
+
countryCode: "SE",
|
|
13
|
+
subtitleFacts: [
|
|
14
|
+
{ type: "text", text: "Monopoly" },
|
|
15
|
+
{ type: "text", text: "Launch Q2 2026" },
|
|
16
|
+
{ type: "count", value: 12000, suffix: "bottles" },
|
|
17
|
+
],
|
|
18
|
+
deadline: new Date("2026-05-01T12:00:00Z"),
|
|
19
|
+
status: "open",
|
|
20
|
+
};
|
|
21
|
+
describe("OpportunityStackedCard — slots and disclosure markup", () => {
|
|
22
|
+
it("renders buyerName · productName as the title, heading level 3", () => {
|
|
23
|
+
render(_jsx(OpportunityStackedCard, { opportunity: opp, leftBadge: _jsx("span", { children: "badge" }), metaRight: _jsx("span", { children: "meta" }), primaryAction: _jsx("button", { children: "Go" }), tabs: [] }));
|
|
24
|
+
const heading = screen.getByRole("heading", { level: 3 });
|
|
25
|
+
expect(heading).toHaveTextContent(/Systembolaget · Organic Prosecco DOCG/);
|
|
26
|
+
});
|
|
27
|
+
it("renders left + right slots + primary action", () => {
|
|
28
|
+
render(_jsx(OpportunityStackedCard, { opportunity: opp, leftBadge: _jsx("span", { "data-testid": "left", children: "L" }), metaRight: _jsx("span", { "data-testid": "meta", children: "M" }), primaryAction: _jsx("button", { children: "Go" }), tabs: [] }));
|
|
29
|
+
expect(screen.getByTestId("left")).toBeInTheDocument();
|
|
30
|
+
expect(screen.getByTestId("meta")).toBeInTheDocument();
|
|
31
|
+
expect(screen.getByRole("button", { name: "Go" })).toBeInTheDocument();
|
|
32
|
+
});
|
|
33
|
+
it("primary action button is a SIBLING of the expand-trigger button (no nested buttons)", () => {
|
|
34
|
+
const { container } = render(_jsx(OpportunityStackedCard, { opportunity: opp, leftBadge: null, metaRight: null, primaryAction: _jsx("button", { children: "Go" }), tabs: [] }));
|
|
35
|
+
const buttons = container.querySelectorAll("button");
|
|
36
|
+
for (const b of Array.from(buttons)) {
|
|
37
|
+
expect(b.querySelector("button")).toBeNull();
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
it("when tabs are provided: expand trigger has aria-expanded=false initially + aria-controls pointing to a panel id", () => {
|
|
41
|
+
render(_jsx(OpportunityStackedCard, { opportunity: opp, leftBadge: null, metaRight: null, primaryAction: null, tabs: [{ id: "overview", label: "Overview", content: _jsx("div", { children: "ov" }) }] }));
|
|
42
|
+
const trigger = screen.getByRole("button", { name: /expand details/i });
|
|
43
|
+
expect(trigger).toHaveAttribute("aria-expanded", "false");
|
|
44
|
+
const panelId = trigger.getAttribute("aria-controls");
|
|
45
|
+
expect(panelId).toBeTruthy();
|
|
46
|
+
});
|
|
47
|
+
it("tabs=[] hides the expand trigger (title renders as heading-only, not a button)", () => {
|
|
48
|
+
render(_jsx(OpportunityStackedCard, { opportunity: opp, leftBadge: null, metaRight: null, primaryAction: null, tabs: [] }));
|
|
49
|
+
expect(screen.queryByRole("button", { name: /expand details/i })).not.toBeInTheDocument();
|
|
50
|
+
expect(screen.getByRole("heading", { level: 3 })).toBeInTheDocument();
|
|
51
|
+
});
|
|
52
|
+
it("uses the count-style subtitle fact (12,000 bottles appears in the rendered subtitle area)", () => {
|
|
53
|
+
render(_jsx(OpportunityStackedCard, { opportunity: opp, leftBadge: null, metaRight: null, primaryAction: null, tabs: [] }));
|
|
54
|
+
// The number counter tweens from 0 to 12000; at initial render with prefers-reduced-motion default (no match in jsdom), it's in flight.
|
|
55
|
+
// We assert the suffix + format framework exists.
|
|
56
|
+
expect(screen.getByText(/bottles/)).toBeInTheDocument();
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe("OpportunityStackedCard — expand, readOnly, deEmphasized, skeleton", () => {
|
|
60
|
+
const baseProps = {
|
|
61
|
+
opportunity: opp,
|
|
62
|
+
leftBadge: _jsx("span", { children: "L" }),
|
|
63
|
+
metaRight: _jsx("span", { children: "M" }),
|
|
64
|
+
primaryAction: _jsx("button", { children: "Go" }),
|
|
65
|
+
tabs: [
|
|
66
|
+
{ id: "overview", label: "Overview", content: _jsx("div", { children: "ov-body" }) },
|
|
67
|
+
{ id: "timeline", label: "Timeline", content: _jsx("div", { children: "tl-body" }) },
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
it("toggles expanded state on trigger click and shows the detail panel", async () => {
|
|
71
|
+
const user = userEvent.setup();
|
|
72
|
+
render(_jsx(OpportunityStackedCard, { ...baseProps }));
|
|
73
|
+
const trigger = screen.getByRole("button", { name: /expand details/i });
|
|
74
|
+
expect(trigger).toHaveAttribute("aria-expanded", "false");
|
|
75
|
+
await user.click(trigger);
|
|
76
|
+
expect(trigger).toHaveAttribute("aria-expanded", "true");
|
|
77
|
+
expect(screen.getByText("ov-body")).toBeVisible();
|
|
78
|
+
});
|
|
79
|
+
it("controlled mode honors the `expanded` prop", () => {
|
|
80
|
+
const { rerender } = render(_jsx(OpportunityStackedCard, { ...baseProps, expanded: false, onExpandChange: () => { } }));
|
|
81
|
+
expect(screen.queryByText("ov-body")).not.toBeInTheDocument();
|
|
82
|
+
rerender(_jsx(OpportunityStackedCard, { ...baseProps, expanded: true, onExpandChange: () => { } }));
|
|
83
|
+
expect(screen.getByText("ov-body")).toBeVisible();
|
|
84
|
+
});
|
|
85
|
+
it("readOnly mode disables the trigger — heading renders as non-button", () => {
|
|
86
|
+
render(_jsx(OpportunityStackedCard, { ...baseProps, readOnly: true }));
|
|
87
|
+
expect(screen.queryByRole("button", { name: /expand details/i })).not.toBeInTheDocument();
|
|
88
|
+
expect(screen.getByRole("heading", { level: 3 })).toBeInTheDocument();
|
|
89
|
+
});
|
|
90
|
+
it("deEmphasized sets data-de-emphasized on the article", () => {
|
|
91
|
+
const { container } = render(_jsx(OpportunityStackedCard, { ...baseProps, deEmphasized: true }));
|
|
92
|
+
expect(container.querySelector("[data-de-emphasized]")).toBeTruthy();
|
|
93
|
+
});
|
|
94
|
+
it("Skeleton static export renders inside SkeletonProvider without errors", () => {
|
|
95
|
+
render(_jsx(SkeletonProvider, { children: _jsx(OpportunityStackedCard.Skeleton, {}) }));
|
|
96
|
+
// No assertion beyond mounting cleanly
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=opportunity-stacked-card.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opportunity-stacked-card.test.js","sourceRoot":"","sources":["../../../src/opportunities/__tests__/opportunity-stacked-card.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opportunity-stacked-list.test.d.ts","sourceRoot":"","sources":["../../../src/opportunities/__tests__/opportunity-stacked-list.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { describe, it, expect, vi } from "vitest";
|
|
4
|
+
import { render, screen } from "@testing-library/react";
|
|
5
|
+
import userEvent from "@testing-library/user-event";
|
|
6
|
+
import { OpportunityStackedList } from "../opportunity-stacked-list";
|
|
7
|
+
import { OpportunityStackedCard } from "../opportunity-stacked-card";
|
|
8
|
+
const makeOpp = (id, name) => ({
|
|
9
|
+
id, tenderId: `t-${id}`, productName: name, buyerName: "Buyer",
|
|
10
|
+
countryCode: "SE", subtitleFacts: [{ type: "text", text: "info" }],
|
|
11
|
+
deadline: null, status: "open",
|
|
12
|
+
});
|
|
13
|
+
const tabs = [{ id: "overview", label: "Overview", content: _jsx("div", { children: "body" }) }];
|
|
14
|
+
describe("OpportunityStackedList", () => {
|
|
15
|
+
it("renders one card per opportunity via renderCard", () => {
|
|
16
|
+
const opps = [makeOpp("1", "A"), makeOpp("2", "B")];
|
|
17
|
+
render(_jsx(OpportunityStackedList, { opportunities: opps, renderCard: (opp, ctx) => (_jsx(OpportunityStackedCard, { opportunity: opp, leftBadge: null, metaRight: null, primaryAction: null, tabs: tabs, expanded: ctx.isExpanded, onExpandChange: ctx.onToggleExpand })) }));
|
|
18
|
+
expect(screen.getByText(/Buyer · A/)).toBeInTheDocument();
|
|
19
|
+
expect(screen.getByText(/Buyer · B/)).toBeInTheDocument();
|
|
20
|
+
});
|
|
21
|
+
it("accordionMode=true expands only one row at a time", async () => {
|
|
22
|
+
const user = userEvent.setup();
|
|
23
|
+
const opps = [makeOpp("1", "A"), makeOpp("2", "B")];
|
|
24
|
+
render(_jsx(OpportunityStackedList, { opportunities: opps, accordionMode: true, renderCard: (opp, ctx) => (_jsx(OpportunityStackedCard, { opportunity: opp, leftBadge: null, metaRight: null, primaryAction: null, tabs: tabs, expanded: ctx.isExpanded, onExpandChange: ctx.onToggleExpand })) }));
|
|
25
|
+
const triggers = screen.getAllByRole("button", { name: /expand details/i });
|
|
26
|
+
await user.click(triggers[0]);
|
|
27
|
+
expect(triggers[0]).toHaveAttribute("aria-expanded", "true");
|
|
28
|
+
await user.click(triggers[1]);
|
|
29
|
+
expect(triggers[0]).toHaveAttribute("aria-expanded", "false");
|
|
30
|
+
expect(triggers[1]).toHaveAttribute("aria-expanded", "true");
|
|
31
|
+
});
|
|
32
|
+
it("accordionMode=false allows multiple rows expanded", async () => {
|
|
33
|
+
const user = userEvent.setup();
|
|
34
|
+
const opps = [makeOpp("1", "A"), makeOpp("2", "B")];
|
|
35
|
+
render(_jsx(OpportunityStackedList, { opportunities: opps, renderCard: (opp, ctx) => (_jsx(OpportunityStackedCard, { opportunity: opp, leftBadge: null, metaRight: null, primaryAction: null, tabs: tabs, expanded: ctx.isExpanded, onExpandChange: ctx.onToggleExpand })) }));
|
|
36
|
+
const triggers = screen.getAllByRole("button", { name: /expand details/i });
|
|
37
|
+
await user.click(triggers[0]);
|
|
38
|
+
await user.click(triggers[1]);
|
|
39
|
+
expect(triggers[0]).toHaveAttribute("aria-expanded", "true");
|
|
40
|
+
expect(triggers[1]).toHaveAttribute("aria-expanded", "true");
|
|
41
|
+
});
|
|
42
|
+
it("renders empty state when opportunities is empty", () => {
|
|
43
|
+
render(_jsx(OpportunityStackedList, { opportunities: [], renderCard: () => null, emptyState: _jsx("div", { "data-testid": "empty", children: "nope" }) }));
|
|
44
|
+
expect(screen.getByTestId("empty")).toBeInTheDocument();
|
|
45
|
+
});
|
|
46
|
+
it("renders default empty state if none provided", () => {
|
|
47
|
+
render(_jsx(OpportunityStackedList, { opportunities: [], renderCard: () => null }));
|
|
48
|
+
expect(screen.getByRole("heading", { name: /no opportunities to show/i })).toBeInTheDocument();
|
|
49
|
+
});
|
|
50
|
+
it("renders Skeleton count rows when isLoading=true", () => {
|
|
51
|
+
const { container } = render(_jsx(OpportunityStackedList, { opportunities: [], renderCard: () => null, isLoading: true }));
|
|
52
|
+
expect(container.querySelectorAll("[data-skeleton]").length).toBeGreaterThan(0);
|
|
53
|
+
});
|
|
54
|
+
it("sets data-refetch-pulse on the wrapper when isRefetching", () => {
|
|
55
|
+
const { container } = render(_jsx(OpportunityStackedList, { opportunities: [makeOpp("1", "A")], renderCard: () => null, isRefetching: true }));
|
|
56
|
+
expect(container.querySelector("[data-refetch-pulse='true']")).toBeTruthy();
|
|
57
|
+
});
|
|
58
|
+
it("sets data-opportunity-highlight='pulse' on the matching row when highlightId is active", () => {
|
|
59
|
+
const opps = [makeOpp("1", "A"), makeOpp("2", "B")];
|
|
60
|
+
const { container } = render(_jsx(OpportunityStackedList, { opportunities: opps, highlightId: "2", renderCard: (opp) => _jsx("div", { "data-opp-id": opp.id, children: opp.productName }) }));
|
|
61
|
+
const wrappers = Array.from(container.querySelectorAll("[data-opportunity-highlight]"));
|
|
62
|
+
expect(wrappers.length).toBe(1);
|
|
63
|
+
expect(wrappers[0].getAttribute("data-opportunity-highlight")).toBe("pulse");
|
|
64
|
+
});
|
|
65
|
+
it("clears data-opportunity-highlight when parent changes highlightId to undefined", () => {
|
|
66
|
+
const opps = [makeOpp("1", "A"), makeOpp("2", "B")];
|
|
67
|
+
const { container, rerender } = render(_jsx(OpportunityStackedList, { opportunities: opps, highlightId: "2", renderCard: (opp) => _jsx("div", { "data-opp-id": opp.id, children: opp.productName }) }));
|
|
68
|
+
expect(container.querySelector("[data-opportunity-highlight='pulse']")).toBeTruthy();
|
|
69
|
+
rerender(_jsx(OpportunityStackedList, { opportunities: opps, renderCard: (opp) => _jsx("div", { "data-opp-id": opp.id, children: opp.productName }) }));
|
|
70
|
+
expect(container.querySelector("[data-opportunity-highlight='pulse']")).toBeNull();
|
|
71
|
+
});
|
|
72
|
+
it("is safe under React StrictMode — exactly one row per opportunity (no double wrappers)", () => {
|
|
73
|
+
const opps = [makeOpp("1", "A"), makeOpp("2", "B"), makeOpp("3", "C")];
|
|
74
|
+
const { container } = render(_jsx(React.StrictMode, { children: _jsx(OpportunityStackedList, { opportunities: opps, renderCard: (opp) => _jsx("div", { "data-opp-id": opp.id, children: opp.productName }) }) }));
|
|
75
|
+
const rows = container.querySelectorAll("[data-opp-id]");
|
|
76
|
+
expect(rows.length).toBe(3);
|
|
77
|
+
});
|
|
78
|
+
it("respects prefers-reduced-motion (rendered rows are visible, not hidden by motion transform)", () => {
|
|
79
|
+
vi.stubGlobal("matchMedia", vi.fn().mockImplementation((q) => ({
|
|
80
|
+
matches: q.includes("prefers-reduced-motion: reduce"),
|
|
81
|
+
media: q, addListener: () => { }, removeListener: () => { },
|
|
82
|
+
addEventListener: () => { }, removeEventListener: () => { }, dispatchEvent: () => false, onchange: null,
|
|
83
|
+
})));
|
|
84
|
+
const opps = [makeOpp("1", "A")];
|
|
85
|
+
const { container } = render(_jsx(OpportunityStackedList, { opportunities: opps, renderCard: (opp) => _jsx("div", { "data-opp-id": opp.id, children: opp.productName }) }));
|
|
86
|
+
const row = container.querySelector("[data-opp-id]");
|
|
87
|
+
const style = window.getComputedStyle(row);
|
|
88
|
+
expect(style.opacity).not.toBe("0");
|
|
89
|
+
vi.unstubAllGlobals();
|
|
90
|
+
});
|
|
91
|
+
it("renders a skip link and a skip-target marker", () => {
|
|
92
|
+
const opps = [makeOpp("1", "A")];
|
|
93
|
+
const { container } = render(_jsx(OpportunityStackedList, { opportunities: opps, renderCard: (opp) => _jsx("div", { "data-opp-id": opp.id, children: opp.productName }) }));
|
|
94
|
+
expect(screen.getByText(/skip opportunity list/i)).toBeInTheDocument();
|
|
95
|
+
expect(container.querySelector("#opportunities-list-end")).toBeTruthy();
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=opportunity-stacked-list.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opportunity-stacked-list.test.js","sourceRoot":"","sources":["../../../src/opportunities/__tests__/opportunity-stacked-list.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-field.test.d.ts","sourceRoot":"","sources":["../../../src/opportunities/__tests__/section-field.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { describe, it, expect } from "vitest";
|
|
3
|
+
import { render, screen } from "@testing-library/react";
|
|
4
|
+
import { SectionField } from "../section-field";
|
|
5
|
+
describe("SectionField", () => {
|
|
6
|
+
it("renders label + value when value is present", () => {
|
|
7
|
+
render(_jsx(SectionField, { label: "Volume", value: "12,000 bottles" }));
|
|
8
|
+
expect(screen.getByText("Volume")).toBeInTheDocument();
|
|
9
|
+
expect(screen.getByText("12,000 bottles")).toBeInTheDocument();
|
|
10
|
+
});
|
|
11
|
+
it("returns null when value is null", () => {
|
|
12
|
+
const { container } = render(_jsx(SectionField, { label: "Empty", value: null }));
|
|
13
|
+
expect(container.firstChild).toBeNull();
|
|
14
|
+
});
|
|
15
|
+
it("returns null when value is empty string", () => {
|
|
16
|
+
const { container } = render(_jsx(SectionField, { label: "Empty", value: "" }));
|
|
17
|
+
expect(container.firstChild).toBeNull();
|
|
18
|
+
});
|
|
19
|
+
it("returns null when value is empty array", () => {
|
|
20
|
+
const { container } = render(_jsx(SectionField, { label: "Empty", value: [] }));
|
|
21
|
+
expect(container.firstChild).toBeNull();
|
|
22
|
+
});
|
|
23
|
+
it("renders ReactNode values", () => {
|
|
24
|
+
render(_jsx(SectionField, { label: "Notes", value: _jsx("span", { "data-testid": "custom", children: "hi" }) }));
|
|
25
|
+
expect(screen.getByTestId("custom")).toBeInTheDocument();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=section-field.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-field.test.js","sourceRoot":"","sources":["../../../src/opportunities/__tests__/section-field.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,KAAC,YAAY,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAC,gBAAgB,GAAG,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,YAAY,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAE,IAAI,GAAI,CAAC,CAAC;QAC1E,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,YAAY,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAC,EAAE,GAAG,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,YAAY,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAE,EAAE,GAAI,CAAC,CAAC;QACxE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,KAAC,YAAY,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAE,8BAAkB,QAAQ,mBAAU,GAAI,CAAC,CAAC;QACpF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"two-column-section.test.d.ts","sourceRoot":"","sources":["../../../src/opportunities/__tests__/two-column-section.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { describe, it, expect } from "vitest";
|
|
3
|
+
import { render, screen } from "@testing-library/react";
|
|
4
|
+
import { TwoColumnSection } from "../two-column-section";
|
|
5
|
+
import { SectionField } from "../section-field";
|
|
6
|
+
describe("TwoColumnSection", () => {
|
|
7
|
+
it("renders section when at least one SectionField has a value", () => {
|
|
8
|
+
render(_jsxs(TwoColumnSection, { title: "Product requirements", children: [_jsx(SectionField, { label: "Category", value: "Sparkling wine" }), _jsx(SectionField, { label: "Empty", value: null })] }));
|
|
9
|
+
expect(screen.getByRole("heading", { name: /product requirements/i })).toBeInTheDocument();
|
|
10
|
+
expect(screen.getByText("Sparkling wine")).toBeInTheDocument();
|
|
11
|
+
});
|
|
12
|
+
it("returns null when every child renders null", () => {
|
|
13
|
+
const { container } = render(_jsxs(TwoColumnSection, { title: "Should not render", children: [_jsx(SectionField, { label: "A", value: null }), _jsx(SectionField, { label: "B", value: "" })] }));
|
|
14
|
+
expect(container.firstChild).toBeNull();
|
|
15
|
+
});
|
|
16
|
+
it("renders description when provided", () => {
|
|
17
|
+
render(_jsx(TwoColumnSection, { title: "Title", description: "Some description text", children: _jsx(SectionField, { label: "X", value: "y" }) }));
|
|
18
|
+
expect(screen.getByText(/some description text/i)).toBeInTheDocument();
|
|
19
|
+
});
|
|
20
|
+
it("renders icon with aria-hidden wrapper", () => {
|
|
21
|
+
const { container } = render(_jsx(TwoColumnSection, { title: "Title", icon: _jsx("svg", { "data-testid": "icon" }), children: _jsx(SectionField, { label: "X", value: "y" }) }));
|
|
22
|
+
expect(container.querySelector("[aria-hidden]")).toBeTruthy();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=two-column-section.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"two-column-section.test.js","sourceRoot":"","sources":["../../../src/opportunities/__tests__/two-column-section.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,CACJ,MAAC,gBAAgB,IAAC,KAAK,EAAC,sBAAsB,aAC5C,KAAC,YAAY,IAAC,KAAK,EAAC,UAAU,EAAC,KAAK,EAAC,gBAAgB,GAAG,EACxD,KAAC,YAAY,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAE,IAAI,GAAI,IAC1B,CACpB,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAC3F,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,MAAC,gBAAgB,IAAC,KAAK,EAAC,mBAAmB,aACzC,KAAC,YAAY,IAAC,KAAK,EAAC,GAAG,EAAC,KAAK,EAAE,IAAI,GAAI,EACvC,KAAC,YAAY,IAAC,KAAK,EAAC,GAAG,EAAC,KAAK,EAAC,EAAE,GAAG,IAClB,CACpB,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CACJ,KAAC,gBAAgB,IAAC,KAAK,EAAC,OAAO,EAAC,WAAW,EAAC,uBAAuB,YACjE,KAAC,YAAY,IAAC,KAAK,EAAC,GAAG,EAAC,KAAK,EAAC,GAAG,GAAG,GACnB,CACpB,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,gBAAgB,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAE,6BAAiB,MAAM,GAAG,YAC9D,KAAC,YAAY,IAAC,KAAK,EAAC,GAAG,EAAC,KAAK,EAAC,GAAG,GAAG,GACnB,CACpB,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -76,7 +76,7 @@ function OpportunityRowItem({ row, density, renderLink, getRowHref, }) {
|
|
|
76
76
|
const href = getRowHref?.(row);
|
|
77
77
|
const flag = getFlag(row.countryOfOrigin);
|
|
78
78
|
const nameContent = (_jsx("span", { className: "text-sm font-semibold text-foreground hover:underline", children: row.name }));
|
|
79
|
-
return (_jsxs("li", { className: "bg-card", children: [_jsxs("div", { className: cn("flex items-center gap-3 px-4", density === "comfortable" ? "py-3.5" : "py-2"), children: [_jsx("span", { className: "shrink-0 text-xl
|
|
79
|
+
return (_jsxs("li", { className: "bg-card", children: [_jsxs("div", { className: cn("flex items-center gap-3 px-4", density === "comfortable" ? "py-3.5" : "py-2"), children: [_jsx("span", { className: "shrink-0 text-xl/none", role: "img", "aria-label": row.countryOfOrigin ?? "Unknown country", children: flag }), _jsxs("div", { className: "min-w-0 flex-1", children: [href && renderLink ? (renderLink(href, nameContent)) : (nameContent), row.marketIdentifier && (_jsx("p", { className: "truncate text-xs text-muted-foreground", children: row.marketIdentifier }))] }), row.beverageType && (_jsx("span", { className: "hidden shrink-0 rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground sm:inline-block", children: row.beverageType })), _jsx(StatusBadge, { status: row.status }), _jsx("span", { className: "hidden shrink-0 md:inline-flex", children: _jsx(DeadlineDisplay, { deadline: row.submissionDeadline }) }), _jsx("button", { type: "button", onClick: () => setExpanded((v) => !v), "aria-expanded": expanded, "aria-label": expanded ? "Collapse details" : "Expand details", className: "shrink-0 rounded-md p-1 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: _jsx(ChevronDown, { className: cn("size-4 transition-transform duration-200", expanded && "rotate-180") }) })] }), _jsx(AnimatePresence, { initial: false, children: expanded && (_jsx(motion.div, { initial: { height: 0, opacity: 0 }, animate: { height: "auto", opacity: 1 }, exit: { height: 0, opacity: 0 }, transition: { duration: 0.2, ease: "easeInOut" }, className: "overflow-hidden", children: _jsx("div", { className: "border-t border-border/40 bg-muted/20 px-4 pb-4 pt-3", children: _jsxs("div", { className: "grid grid-cols-2 gap-4 md:grid-cols-3", children: [_jsx(DetailField, { label: "Country of Origin", children: row.countryOfOrigin
|
|
80
80
|
? `${flag} ${row.countryOfOrigin}`
|
|
81
81
|
: "—" }), _jsx(DetailField, { label: "Beverage Type", children: row.beverageType ?? "—" }), _jsx(DetailField, { label: "Submission Deadline", children: _jsx(DeadlineDisplay, { deadline: row.submissionDeadline, full: true }) }), _jsx(DetailField, { label: "Market Identifier", children: row.marketIdentifier ?? "—" }), _jsx(DetailField, { label: "Status", children: _jsx(StatusBadge, { status: row.status }) })] }) }) }, "detail")) })] }));
|
|
82
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opportunities-table.js","sourceRoot":"","sources":["../../src/opportunities/opportunities-table.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EACL,KAAK,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,YAAY,EACZ,KAAK,EACL,KAAK,GACN,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AA4BlD,iFAAiF;AAEjF,MAAM,aAAa,GAA2B;IAC5C,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAC1D,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAC1D,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAC1D,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAC1D,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAC1D,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAC1D,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAC1D,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;CAC3D,CAAC;AAEF,MAAM,mBAAmB,GAA2B;IAClD,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI;IACtE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;IAC5D,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI;IACxD,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;IAChE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;IAC9D,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;IACnE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI;IACpE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACnE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI;IACxD,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;IAC1D,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;IAClE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI;CACvD,CAAC;AAEF,SAAS,OAAO,CAAC,OAAuB;IACtC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrD,CAAC;AAED,iFAAiF;AAEjF,SAAS,WAAW,CAAC,EAAE,MAAM,EAAsB;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACxC,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,2EAA2E,EAC3E,UAAU,KAAK,MAAM;YACnB,8EAA8E,EAChF,UAAU,KAAK,QAAQ,IAAI,gCAAgC,EAC3D,UAAU,KAAK,OAAO;YACpB,sEAAsE,EACxE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC/C,gCAAgC,CACnC,YAEA,MAAM,GACF,CACR,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,EACvB,QAAQ,EACR,IAAI,GAAG,KAAK,GAIb;IACC,IAAI,CAAC,QAAQ;QAAE,OAAO,eAAM,SAAS,EAAC,uBAAuB,uBAAS,CAAC;IAEvE,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,oEAAoE;IACpE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CACxB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAC/C,CAAC;IAEF,OAAO,CACL,gBACE,SAAS,EAAE,EAAE,CACX,wCAAwC,EACxC,IAAI,IAAI,kBAAkB,EAC1B,CAAC,IAAI,IAAI,QAAQ,IAAI,CAAC,IAAI,oCAAoC,EAC9D,CAAC,IAAI,IAAI,QAAQ,GAAG,CAAC,IAAI,wCAAwC,CAClE,aAED,KAAC,KAAK,IAAC,SAAS,EAAC,mBAAmB,GAAG,EACtC,IAAI;gBACH,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;gBACrB,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,IAC7C,CACR,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,SAAS,WAAW,CAAC,EAAE,OAAO,EAAwB;IACpD,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,8BAA8B,EAC9B,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAC9C,aAED,KAAC,QAAQ,IAAC,SAAS,EAAC,4BAA4B,GAAG,EACnD,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,QAAQ,IAAC,SAAS,EAAC,oBAAoB,GAAG,EAC3C,KAAC,QAAQ,IAAC,SAAS,EAAC,kBAAkB,GAAG,IACrC,EACN,KAAC,QAAQ,IAAC,SAAS,EAAC,uBAAuB,GAAG,EAC9C,KAAC,QAAQ,IAAC,SAAS,EAAC,uBAAuB,GAAG,EAC9C,KAAC,QAAQ,IAAC,SAAS,EAAC,kBAAkB,GAAG,EACzC,KAAC,QAAQ,IAAC,SAAS,EAAC,yBAAyB,GAAG,IAC7C,CACN,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,SAAS,WAAW,CAAC,EACnB,KAAK,EACL,QAAQ,GAIT;IACC,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,aACpC,eAAM,SAAS,EAAC,2CAA2C,YAAE,KAAK,GAAQ,EAC1E,eAAM,SAAS,EAAC,yBAAyB,YAAE,QAAQ,GAAQ,IACvD,CACP,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,SAAS,kBAAkB,CAAC,EAC1B,GAAG,EACH,OAAO,EACP,UAAU,EACV,UAAU,GAMX;IACC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAE1C,MAAM,WAAW,GAAG,CAClB,eAAM,SAAS,EAAC,uDAAuD,YACpE,GAAG,CAAC,IAAI,GACJ,CACR,CAAC;IAEF,OAAO,CACL,cAAI,SAAS,EAAC,SAAS,aAErB,eACE,SAAS,EAAE,EAAE,CACX,8BAA8B,EAC9B,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAC9C,aAGD,eACE,SAAS,EAAC,+BAA+B,EACzC,IAAI,EAAC,KAAK,gBACE,GAAG,CAAC,eAAe,IAAI,iBAAiB,YAEnD,IAAI,GACA,EAGP,eAAK,SAAS,EAAC,gBAAgB,aAC5B,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CACpB,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAC9B,CAAC,CAAC,CAAC,CACF,WAAW,CACZ,EACA,GAAG,CAAC,gBAAgB,IAAI,CACvB,YAAG,SAAS,EAAC,wCAAwC,YAClD,GAAG,CAAC,gBAAgB,GACnB,CACL,IACG,EAGL,GAAG,CAAC,YAAY,IAAI,CACnB,eAAM,SAAS,EAAC,iGAAiG,YAC9G,GAAG,CAAC,YAAY,GACZ,CACR,EAGD,KAAC,WAAW,IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAI,EAGnC,eAAM,SAAS,EAAC,gCAAgC,YAC9C,KAAC,eAAe,IAAC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,GAAI,GAChD,EAGP,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,mBACtB,QAAQ,gBACX,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,EAC5D,SAAS,EAAC,8KAA8K,YAExL,KAAC,WAAW,IACV,SAAS,EAAE,EAAE,CACX,0CAA0C,EAC1C,QAAQ,IAAI,YAAY,CACzB,GACD,GACK,IACL,EAGN,KAAC,eAAe,IAAC,OAAO,EAAE,KAAK,YAC5B,QAAQ,IAAI,CACX,KAAC,MAAM,CAAC,GAAG,IAET,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAClC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,EACvC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAC/B,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,EAChD,SAAS,EAAC,iBAAiB,YAE3B,cAAK,SAAS,EAAC,sDAAsD,YACnE,eAAK,SAAS,EAAC,uCAAuC,aACpD,KAAC,WAAW,IAAC,KAAK,EAAC,mBAAmB,YACnC,GAAG,CAAC,eAAe;wCAClB,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,eAAe,EAAE;wCAClC,CAAC,CAAC,GAAG,GACK,EACd,KAAC,WAAW,IAAC,KAAK,EAAC,eAAe,YAC/B,GAAG,CAAC,YAAY,IAAI,GAAG,GACZ,EACd,KAAC,WAAW,IAAC,KAAK,EAAC,qBAAqB,YACtC,KAAC,eAAe,IAAC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,EAAE,IAAI,SAAG,GAC9C,EACd,KAAC,WAAW,IAAC,KAAK,EAAC,mBAAmB,YACnC,GAAG,CAAC,gBAAgB,IAAI,GAAG,GAChB,EACd,KAAC,WAAW,IAAC,KAAK,EAAC,QAAQ,YACzB,KAAC,WAAW,IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAI,GACvB,IACV,GACF,IA3BF,QAAQ,CA4BD,CACd,GACe,IACf,CACN,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,aAAa,GAAgC;IACjD,EAAE,WAAW,EAAE,MAAM,EAAE;IACvB,EAAE,WAAW,EAAE,kBAAkB,EAAE;IACnC,EAAE,WAAW,EAAE,cAAc,EAAE;IAC/B,EAAE,WAAW,EAAE,iBAAiB,EAAE;IAClC,EAAE,WAAW,EAAE,QAAQ,EAAE;IACzB,EAAE,WAAW,EAAE,oBAAoB,EAAE;CACtC,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,EACjC,IAAI,EACJ,SAAS,GAAG,KAAK,EACjB,UAAU,EACV,UAAU,EACV,YAAY,GAAG,yBAAyB,EACxC,QAAQ,GAAG,EAAE,GACW;IACxB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAU,aAAa,CAAC,CAAC;IAErE,4DAA4D;IAC5D,MAAM,KAAK,GAAG,aAAa,CAAC;QAC1B,IAAI;QACJ,OAAO,EAAE,aAAa;QACtB,KAAK,EAAE,EAAE,YAAY,EAAE;QACvB,oBAAoB,EAAE,eAAe;QACrC,cAAc,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,WAAmB,EAAE,EAAE;YACtD,MAAM,CAAC,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;YACpC,OAAO,CACL,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC3C,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;gBACnE,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;gBAC/D,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CACnE,CAAC;QACJ,CAAC;QACD,eAAe,EAAE,eAAe,EAAE;QAClC,mBAAmB,EAAE,mBAAmB,EAAE;QAC1C,qBAAqB,EAAE,qBAAqB,EAAE;QAC9C,YAAY,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE;KAC3C,CAAC,CAAC;IAEH,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;IAClD,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACvC,MAAM,aAAa,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;IAE9D,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aAExB,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAK,SAAS,EAAC,iBAAiB,aAC9B,KAAC,MAAM,IAAC,SAAS,EAAC,2FAA2F,GAAG,EAChH,KAAC,WAAW,IACV,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAChD,WAAW,EAAC,0CAAqC,EACjD,SAAS,EAAC,MAAM,GAChB,IACE,EACN,eAAK,SAAS,EAAC,kCAAkC,aAC/C,KAAC,YAAY,IACX,OAAO,EAAE,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAC1D,IAAI,EAAC,SAAS,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EACxC,KAAK,EAAC,qBAAqB,YAE3B,KAAC,KAAK,IAAC,SAAS,EAAC,QAAQ,GAAG,GACf,EACf,KAAC,YAAY,IACX,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EACtD,IAAI,EAAC,SAAS,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EACpC,KAAK,EAAC,iBAAiB,YAEvB,KAAC,KAAK,IAAC,SAAS,EAAC,QAAQ,GAAG,GACf,IACX,EACL,CAAC,SAAS,IAAI,CACb,gBAAM,SAAS,EAAC,wCAAwC,aACrD,aAAa,OAAG,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,IACjE,CACR,IACG,EAGN,aAAI,SAAS,EAAC,uFAAuF,YAClG,SAAS,CAAC,CAAC,CAAC,CACX,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,4DAA4D;gBAC5D,KAAC,WAAW,IAAS,OAAO,EAAE,OAAO,IAAnB,CAAC,CAAsB,CAC1C,CAAC,CACH,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC1C,aAAI,SAAS,EAAC,iDAAiD,YAC5D,YAAY,GACV,CACN,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpC,KAAC,kBAAkB,IAEjB,GAAG,EAAE,GAAG,CAAC,QAAQ,EACjB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,IAJjB,GAAG,CAAC,EAAE,CAKX,CACH,CAAC,CACH,GACE,EAGJ,CAAC,SAAS,IAAI,SAAS,GAAG,CAAC,IAAI,CAC9B,eAAK,SAAS,EAAC,yCAAyC,aACtD,aAAG,SAAS,EAAC,+BAA+B,sBACpC,SAAS,GAAG,CAAC,UAAM,SAAS,IAChC,EACJ,eAAK,SAAS,EAAC,2BAA2B,aACxC,MAAC,YAAY,IACX,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,EACnC,QAAQ,EAAE,CAAC,KAAK,CAAC,kBAAkB,EAAE,aAErC,KAAC,WAAW,IAAC,SAAS,EAAC,QAAQ,GAAG,gBAErB,EACf,MAAC,YAAY,IACX,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAC/B,QAAQ,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,qBAGjC,KAAC,YAAY,IAAC,SAAS,EAAC,QAAQ,GAAG,IACtB,IACX,IACF,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"opportunities-table.js","sourceRoot":"","sources":["../../src/opportunities/opportunities-table.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opportunities-table.test.d.ts","sourceRoot":"","sources":["../../src/opportunities/opportunities-table.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { describe, it, expect, vi } from "vitest";
|
|
3
|
+
import { fireEvent, render, screen } from "@testing-library/react";
|
|
4
|
+
import { OpportunitiesTable, } from "./opportunities-table";
|
|
5
|
+
// ─── Invariants under test ──────────────────────────────────────────────────
|
|
6
|
+
//
|
|
7
|
+
// 1. Empty state renders the configured empty message when `data=[]`.
|
|
8
|
+
// 2. Loading state renders skeletons and hides the row count / empty message.
|
|
9
|
+
// 3. Custom emptyMessage overrides the default.
|
|
10
|
+
// 4. The search input filters rows by name.
|
|
11
|
+
// 5. Row expand toggle flips aria-expanded and reveals the detail grid.
|
|
12
|
+
// 6. When `getRowHref` + `renderLink` are provided, the name is wrapped by
|
|
13
|
+
// the link renderer (consumer-provided routing).
|
|
14
|
+
//
|
|
15
|
+
// We do NOT test date formatting (date-fns / time-sensitive) or every flag
|
|
16
|
+
// mapping — those are cosmetic and would thrash with locale/data changes.
|
|
17
|
+
const rows = [
|
|
18
|
+
{
|
|
19
|
+
id: "opp-1",
|
|
20
|
+
name: "Nordic Beer Tender 2026",
|
|
21
|
+
marketIdentifier: "SYS-2026-001",
|
|
22
|
+
beverageType: "Beer",
|
|
23
|
+
countryOfOrigin: "Sweden",
|
|
24
|
+
status: "open",
|
|
25
|
+
submissionDeadline: new Date(Date.now() + 14 * 24 * 60 * 60 * 1000).toISOString(),
|
|
26
|
+
createdAt: new Date().toISOString(),
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: "opp-2",
|
|
30
|
+
name: "French Wine RFP",
|
|
31
|
+
marketIdentifier: "SYS-2026-002",
|
|
32
|
+
beverageType: "Wine",
|
|
33
|
+
countryOfOrigin: "France",
|
|
34
|
+
status: "closed",
|
|
35
|
+
submissionDeadline: new Date(Date.now() - 5 * 24 * 60 * 60 * 1000).toISOString(),
|
|
36
|
+
createdAt: new Date().toISOString(),
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
describe("OpportunitiesTable", () => {
|
|
40
|
+
it("renders the default empty-state message when data is empty", () => {
|
|
41
|
+
render(_jsx(OpportunitiesTable, { data: [] }));
|
|
42
|
+
expect(screen.getByText(/no opportunities found/i)).toBeInTheDocument();
|
|
43
|
+
});
|
|
44
|
+
it("renders a custom emptyMessage when provided", () => {
|
|
45
|
+
render(_jsx(OpportunitiesTable, { data: [], emptyMessage: "Nothing matches your filters." }));
|
|
46
|
+
expect(screen.getByText(/nothing matches your filters/i)).toBeInTheDocument();
|
|
47
|
+
});
|
|
48
|
+
it("renders loading skeletons and hides the row count when isLoading", () => {
|
|
49
|
+
const { container } = render(_jsx(OpportunitiesTable, { data: [], isLoading: true }));
|
|
50
|
+
// Skeleton list items — there should be the 5 placeholder <li> entries.
|
|
51
|
+
const listItems = container.querySelectorAll("ul > li");
|
|
52
|
+
expect(listItems.length).toBe(5);
|
|
53
|
+
// The "N opportunities" count chip is suppressed while loading.
|
|
54
|
+
expect(screen.queryByText(/opportunit(y|ies)$/i)).not.toBeInTheDocument();
|
|
55
|
+
});
|
|
56
|
+
it("renders a row per data item with its name and market identifier", () => {
|
|
57
|
+
render(_jsx(OpportunitiesTable, { data: rows }));
|
|
58
|
+
expect(screen.getByText(/nordic beer tender 2026/i)).toBeInTheDocument();
|
|
59
|
+
expect(screen.getByText(/french wine rfp/i)).toBeInTheDocument();
|
|
60
|
+
expect(screen.getByText(/SYS-2026-001/)).toBeInTheDocument();
|
|
61
|
+
});
|
|
62
|
+
it("filters rows via the search input (global filter)", () => {
|
|
63
|
+
render(_jsx(OpportunitiesTable, { data: rows }));
|
|
64
|
+
const search = screen.getByPlaceholderText(/search name/i);
|
|
65
|
+
fireEvent.change(search, { target: { value: "wine" } });
|
|
66
|
+
expect(screen.queryByText(/nordic beer tender/i)).not.toBeInTheDocument();
|
|
67
|
+
expect(screen.getByText(/french wine rfp/i)).toBeInTheDocument();
|
|
68
|
+
});
|
|
69
|
+
it("flips aria-expanded when the row expand toggle is clicked", () => {
|
|
70
|
+
render(_jsx(OpportunitiesTable, { data: [rows[0]] }));
|
|
71
|
+
const toggle = screen.getByRole("button", { name: /expand details/i });
|
|
72
|
+
expect(toggle).toHaveAttribute("aria-expanded", "false");
|
|
73
|
+
fireEvent.click(toggle);
|
|
74
|
+
// After clicking, aria flips to true and the aria-label rotates.
|
|
75
|
+
expect(screen.getByRole("button", { name: /collapse details/i })).toHaveAttribute("aria-expanded", "true");
|
|
76
|
+
});
|
|
77
|
+
it("uses renderLink + getRowHref to wrap row names when provided", () => {
|
|
78
|
+
const renderLink = vi.fn((href, children) => (_jsx("a", { href: href, "data-testid": "stub-link", children: children })));
|
|
79
|
+
render(_jsx(OpportunitiesTable, { data: rows, renderLink: renderLink, getRowHref: (row) => `/ops/${row.id}` }));
|
|
80
|
+
// Consumer link renderer was invoked for each row
|
|
81
|
+
expect(renderLink).toHaveBeenCalled();
|
|
82
|
+
const links = screen.getAllByTestId("stub-link");
|
|
83
|
+
expect(links.length).toBe(rows.length);
|
|
84
|
+
expect(links[0]).toHaveAttribute("href", "/ops/opp-1");
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=opportunities-table.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opportunities-table.test.js","sourceRoot":"","sources":["../../src/opportunities/opportunities-table.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { OpportunityChannelType } from "./types";
|
|
2
|
+
export interface ChannelBadgeProps {
|
|
3
|
+
channel: OpportunityChannelType;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function ChannelBadge({ channel, className }: ChannelBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=opportunity-channel-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opportunity-channel-badge.d.ts","sourceRoot":"","sources":["../../src/opportunities/opportunity-channel-badge.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,sBAAsB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,iBAAiB,2CAQrE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Store, User, Globe2 } from "lucide-react";
|
|
3
|
+
import { cn } from "../lib/utils";
|
|
4
|
+
const variants = {
|
|
5
|
+
monopoly: { label: "Monopoly", Icon: Store, classes: "bg-violet-50 text-violet-800 ring-1 ring-inset ring-violet-200" },
|
|
6
|
+
importer: { label: "Importer", Icon: User, classes: "bg-sky-50 text-sky-800 ring-1 ring-inset ring-sky-200" },
|
|
7
|
+
open: { label: "Open Market", Icon: Globe2, classes: "bg-slate-100 text-slate-700 ring-1 ring-inset ring-slate-200" },
|
|
8
|
+
};
|
|
9
|
+
export function ChannelBadge({ channel, className }) {
|
|
10
|
+
const { label, Icon, classes } = variants[channel];
|
|
11
|
+
return (_jsxs("span", { "data-channel": channel, className: cn("inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium", classes, className), children: [_jsx(Icon, { "aria-hidden": true, className: "size-3.5" }), label] }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=opportunity-channel-badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opportunity-channel-badge.js","sourceRoot":"","sources":["../../src/opportunities/opportunity-channel-badge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,MAAM,QAAQ,GAAmJ;IAC/J,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAO,IAAI,EAAE,KAAK,EAAG,OAAO,EAAE,gEAAgE,EAAE;IAC7H,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAO,IAAI,EAAE,IAAI,EAAI,OAAO,EAAE,uDAAuD,EAAE;IACpH,IAAI,EAAM,EAAE,KAAK,EAAE,aAAa,EAAI,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,8DAA8D,EAAE;CAC5H,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,EAAqB;IACpE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,CACL,gCAAoB,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,iFAAiF,EAAE,OAAO,EAAE,SAAS,CAAC,aAC/I,KAAC,IAAI,yBAAa,SAAS,EAAC,UAAU,GAAG,EACxC,KAAK,IACD,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { ChannelBadge } from "./opportunity-channel-badge";
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: typeof ChannelBadge;
|
|
6
|
+
tags: string[];
|
|
7
|
+
};
|
|
8
|
+
export default meta;
|
|
9
|
+
type Story = StoryObj<typeof meta>;
|
|
10
|
+
export declare const Monopoly: Story;
|
|
11
|
+
export declare const Importer: Story;
|
|
12
|
+
export declare const OpenMarket: Story;
|
|
13
|
+
//# sourceMappingURL=opportunity-channel-badge.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opportunity-channel-badge.stories.d.ts","sourceRoot":"","sources":["../../src/opportunities/opportunity-channel-badge.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,QAAA,MAAM,IAAI;;;;CAI2B,CAAC;AACtC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,QAAQ,EAAE,KAAyC,CAAC;AACjE,eAAO,MAAM,QAAQ,EAAE,KAAyC,CAAC;AACjE,eAAO,MAAM,UAAU,EAAE,KAAqC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ChannelBadge } from "./opportunity-channel-badge";
|
|
2
|
+
const meta = {
|
|
3
|
+
title: "Opportunities/ChannelBadge",
|
|
4
|
+
component: ChannelBadge,
|
|
5
|
+
tags: ["autodocs"],
|
|
6
|
+
};
|
|
7
|
+
export default meta;
|
|
8
|
+
export const Monopoly = { args: { channel: "monopoly" } };
|
|
9
|
+
export const Importer = { args: { channel: "importer" } };
|
|
10
|
+
export const OpenMarket = { args: { channel: "open" } };
|
|
11
|
+
//# sourceMappingURL=opportunity-channel-badge.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opportunity-channel-badge.stories.js","sourceRoot":"","sources":["../../src/opportunities/opportunity-channel-badge.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,4BAA4B;IACnC,SAAS,EAAE,YAAY;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;CACiB,CAAC;AACtC,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,QAAQ,GAAU,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC;AACjE,MAAM,CAAC,MAAM,QAAQ,GAAU,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC;AACjE,MAAM,CAAC,MAAM,UAAU,GAAU,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { OpportunityTab } from "./types";
|
|
3
|
+
export interface OpportunityDetailPanelProps {
|
|
4
|
+
tabs: OpportunityTab[];
|
|
5
|
+
defaultTabId?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
declare const OpportunityDetailPanelWithSkeleton: React.FC<OpportunityDetailPanelProps> & {
|
|
9
|
+
Skeleton: React.FC;
|
|
10
|
+
};
|
|
11
|
+
export { OpportunityDetailPanelWithSkeleton as OpportunityDetailPanel };
|
|
12
|
+
export type { OpportunityDetailPanelProps as OpportunityDetailPanelComponentProps };
|
|
13
|
+
//# sourceMappingURL=opportunity-detail-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opportunity-detail-panel.d.ts","sourceRoot":"","sources":["../../src/opportunities/opportunity-detail-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkED,QAAA,MAAM,kCAAkC,EAA6B,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAAC,GAAG;IAC3G,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;CACpB,CAAC;AAGF,OAAO,EAAE,kCAAkC,IAAI,sBAAsB,EAAE,CAAC;AACxE,YAAY,EAAE,2BAA2B,IAAI,oCAAoC,EAAE,CAAC"}
|