diff --git a/.eslintrc.js b/.eslintrc.js index d6285afeb1b8f..73da9704eee46 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -86,6 +86,11 @@ module.exports = { name: '@ant-design/icons', message: 'Please use icons from the @posthog/icons package instead', }, + { + name: 'antd', + importNames: ['Tooltip'], + message: 'Please use Tooltip from @posthog/lemon-ui instead.', + }, ], }, ], diff --git a/.github/workflows/ci-frontend.yml b/.github/workflows/ci-frontend.yml index 3411304b8795a..3095150406246 100644 --- a/.github/workflows/ci-frontend.yml +++ b/.github/workflows/ci-frontend.yml @@ -50,7 +50,10 @@ jobs: run: pnpm prettier:check - name: Lint with ESLint - run: pnpm eslint + run: pnpm lint:js + + - name: Lint with Stylelint + run: pnpm lint:css - name: Generate logic types and run typescript with strict run: pnpm typegen:write && pnpm typescript:check @@ -58,6 +61,13 @@ jobs: - name: Check if "schema.json" is up to date run: pnpm schema:build:json && git diff --exit-code + - name: Check toolbar bundle size + uses: preactjs/compressed-size-action@v2 + with: + build-script: 'build' + compression: 'none' + pattern: 'frontend/dist/toolbar.js' + jest: runs-on: ubuntu-latest name: Jest test (${{ matrix.chunk }}) diff --git a/.storybook/test-runner.ts b/.storybook/test-runner.ts index cf02d028151b9..8decd13e17a65 100644 --- a/.storybook/test-runner.ts +++ b/.storybook/test-runner.ts @@ -121,7 +121,7 @@ async function expectStoryToMatchSnapshot( document.body.classList.add('storybook-test-runner') }) if (waitForLoadersToDisappear) { - await Promise.all(LOADER_SELECTORS.map((selector) => page.waitForSelector(selector, { state: 'detached' }))) + await page.waitForSelector(LOADER_SELECTORS.join(','), { state: 'detached' }) } if (waitForSelector) { await page.waitForSelector(waitForSelector) diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 0000000000000..46b4d2996945c --- /dev/null +++ b/.stylelintignore @@ -0,0 +1 @@ +frontend/dist/ diff --git a/.stylelintrc.js b/.stylelintrc.js new file mode 100644 index 0000000000000..5df820f88d8fb --- /dev/null +++ b/.stylelintrc.js @@ -0,0 +1,48 @@ +module.exports = { + extends: 'stylelint-config-standard-scss', // TODO: Enable separately, as the diff will be significant + // TODO: Enable separately, as the diff will be significant "plugins": ["stylelint-order"], + rules: { + 'no-descending-specificity': null, + 'number-max-precision': 5, + 'value-keyword-case': [ + 'lower', + { + // CSS Color Module Level 3 says currentColor, Level 4 candidate says currentcolor + // Sticking to Level 3 for now + camelCaseSvgKeywords: true, + }, + ], + // Sadly Safari only started supporting the range syntax of media queries in 2023, so let's switch to that + // ('context' value) in 2024, once support is better https://caniuse.com/?search=range%20context + 'media-feature-range-notation': 'prefix', + 'selector-class-pattern': [ + '^[A-Za-z0-9_-]+(__[A-Za-z0-9_-]+)?(--[A-Za-z0-9-]+)?$', + { + message: 'Expected class selector to match Block__Element--Modifier or plain snake-case', + }, + ], + 'selector-id-pattern': [ + '^[A-Za-z0-9_-]+(__[A-Za-z0-9_-]+)?(--[A-Za-z0-9_-]+)?$', + { + message: 'Expected id selector to match Block__Element--Modifier or plain kebak-case', + }, + ], + 'keyframes-name-pattern': [ + '^[A-Za-z0-9_-]+__[A-Za-z0-9_-]+$', + { + message: 'Expected keyframe name to match Block__Animation', + }, + ], + 'scss/dollar-variable-pattern': [ + '^[A-Za-z_]+[A-Za-z0-9_-]+$', + { + message: 'Expected variable to match kebab-case or snake_case', + }, + ], + 'scss/operator-no-newline-after': null, // Doesn't always play well with prettier + 'scss/at-extend-no-missing-placeholder': null, + 'scss/comment-no-empty': null, + // "order/order": ["dollar-variables", "custom-properties", "declarations", "rules", "at-rules"], + // "order/properties-order": ["width", "height"], + }, +} diff --git a/.vscode/launch.json b/.vscode/launch.json index 22bf39b718019..51101a38d3d73 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -21,15 +21,15 @@ "redbeat.RedBeatScheduler", "--without-heartbeat", "--without-gossip", - "--without-mingle" + "--without-mingle", + "-Ofair", + "-n", + "node@%h" ], "env": { - "PYTHONUNBUFFERED": "1", + "SKIP_ASYNC_MIGRATIONS_SETUP": "0", "DEBUG": "1", - "CLICKHOUSE_SECURE": "False", - "KAFKA_HOSTS": "localhost:9092", - "DATABASE_URL": "postgres://posthog:posthog@localhost:5432/posthog", - "WORKER_CONCURRENCY": "2", + "BILLING_SERVICE_URL": "https://billing.dev.posthog.dev", "SKIP_SERVICE_VERSION_REQUIREMENTS": "1" } }, diff --git a/cypress/e2e/billingv2.cy.ts b/cypress/e2e/billingv2.cy.ts index 3c01f489e1f78..5fa21e7b99d2f 100644 --- a/cypress/e2e/billingv2.cy.ts +++ b/cypress/e2e/billingv2.cy.ts @@ -9,12 +9,14 @@ describe('Billing', () => { cy.intercept('/api/billing-v2/deactivate?products=product_analytics', { fixture: 'api/billing-v2/billing-v2-unsubscribed-product-analytics.json', }).as('unsubscribeProductAnalytics') + cy.get('[data-attr=more-button]').first().click() cy.contains('.LemonButton', 'Unsubscribe').click() cy.get('.LemonModal__content h3').should( 'contain', 'Why are you unsubscribing from Product analytics + data stack?' ) + cy.get('[data-attr=unsubscribe-reason-survey-textarea]').type('Product analytics') cy.contains('.LemonModal .LemonButton', 'Unsubscribe').click() cy.get('.LemonModal').should('not.exist') diff --git a/cypress/e2e/exports.cy.ts b/cypress/e2e/exports.cy.ts index 6f48901de6303..46ce9dabffab9 100644 --- a/cypress/e2e/exports.cy.ts +++ b/cypress/e2e/exports.cy.ts @@ -15,7 +15,7 @@ describe('Exporting Insights', () => { ) cy.visit(urls.insightNew()) // apply filter - cy.get('[data-attr=insight-filters-add-filter-group]').click() + cy.get('[data-attr$=add-filter-group]').click() cy.get('[data-attr=property-select-toggle-0]').click() cy.get('[data-attr=taxonomic-filter-searchfield]').click() cy.get('[data-attr=prop-filter-event_properties-1]').click({ force: true }) diff --git a/cypress/e2e/insights-navigation-open-directly.cy.ts b/cypress/e2e/insights-navigation-open-directly.cy.ts index 406445d9f6636..4eec9fcd7aba7 100644 --- a/cypress/e2e/insights-navigation-open-directly.cy.ts +++ b/cypress/e2e/insights-navigation-open-directly.cy.ts @@ -30,7 +30,7 @@ describe('Insights', () => { describe('opening a new insight directly', () => { it('can open a new trends insight', () => { insight.newInsight('TRENDS') - cy.get('.trends-insights-container canvas').should('exist') + cy.get('.TrendsInsight canvas').should('exist') cy.get('tr').should('have.length.gte', 2) }) @@ -52,12 +52,12 @@ describe('Insights', () => { it('can open a new stickiness insight', () => { insight.newInsight('STICKINESS') - cy.get('.trends-insights-container canvas').should('exist') + cy.get('.TrendsInsight canvas').should('exist') }) it('can open a new lifecycle insight', () => { insight.newInsight('LIFECYCLE') - cy.get('.trends-insights-container canvas').should('exist') + cy.get('.TrendsInsight canvas').should('exist') }) it('can open a new SQL insight', () => { diff --git a/cypress/e2e/insights-navigation-open-sql-insight-first.cy.ts b/cypress/e2e/insights-navigation-open-sql-insight-first.cy.ts index ca286d2e7c765..2b03880515ece 100644 --- a/cypress/e2e/insights-navigation-open-sql-insight-first.cy.ts +++ b/cypress/e2e/insights-navigation-open-sql-insight-first.cy.ts @@ -42,7 +42,7 @@ describe('Insights', () => { it('can open a new trends insight', () => { insight.clickTab('TRENDS') - cy.get('.trends-insights-container canvas').should('exist') + cy.get('.TrendsInsight canvas').should('exist') cy.get('tr').should('have.length.gte', 2) cy.contains('tr', 'No insight results').should('not.exist') }) @@ -65,12 +65,12 @@ describe('Insights', () => { it('can open a new stickiness insight', () => { insight.clickTab('STICKINESS') - cy.get('.trends-insights-container canvas').should('exist') + cy.get('.TrendsInsight canvas').should('exist') }) it('can open a new lifecycle insight', () => { insight.clickTab('LIFECYCLE') - cy.get('.trends-insights-container canvas').should('exist') + cy.get('.TrendsInsight canvas').should('exist') }) it('can open a new SQL insight', () => { diff --git a/cypress/e2e/insights-navigation.cy.ts b/cypress/e2e/insights-navigation.cy.ts index 7adf79c284cba..a3526833bee81 100644 --- a/cypress/e2e/insights-navigation.cy.ts +++ b/cypress/e2e/insights-navigation.cy.ts @@ -62,7 +62,7 @@ describe('Insights', () => { cy.get('.DataTable tr').should('have.length.gte', 2) insight.clickTab('TRENDS') - cy.get('.trends-insights-container canvas').should('exist') + cy.get('.TrendsInsight canvas').should('exist') cy.get('tr').should('have.length.gte', 2) cy.contains('tr', 'No insight results').should('not.exist') @@ -73,7 +73,7 @@ describe('Insights', () => { cy.get('.DataTable tr').should('have.length.gte', 2) insight.clickTab('TRENDS') - cy.get('.trends-insights-container canvas').should('exist') + cy.get('.TrendsInsight canvas').should('exist') cy.get('tr').should('have.length.gte', 2) cy.contains('tr', 'No insight results').should('not.exist') }) diff --git a/cypress/e2e/retention.cy.ts b/cypress/e2e/retention.cy.ts index 4cc13baa89df3..155534da63ad9 100644 --- a/cypress/e2e/retention.cy.ts +++ b/cypress/e2e/retention.cy.ts @@ -15,7 +15,7 @@ describe('Retention', () => { // cy.get('[data-attr=insight-retention-add-filter-group]').click() // cy.get('[data-attr=property-select-toggle-0]').click() - cy.get('[data-attr=insight-filters-add-filter-group]').click() + cy.get('[data-attr$=add-filter-group]').click() cy.get('[data-attr=property-select-toggle-0]').click() cy.get('[data-attr=taxonomic-filter-searchfield]').click() cy.get('[data-attr=taxonomic-filter-searchfield]').type('is_demo') diff --git a/cypress/e2e/trends.cy.ts b/cypress/e2e/trends.cy.ts index f04a247597cc2..4db6c8ee95a2e 100644 --- a/cypress/e2e/trends.cy.ts +++ b/cypress/e2e/trends.cy.ts @@ -92,7 +92,7 @@ describe('Trends', () => { cy.get('.taxonomic-infinite-list').find('.taxonomic-list-row').contains('Pageview').click({ force: true }) cy.get('[data-attr=trend-element-subject-0]').should('have.text', 'Pageview') - cy.get('[data-attr=insight-filters-add-filter-group]').click() + cy.get('[data-attr$=add-filter-group]').click() cy.get('[data-attr=property-select-toggle-0]').click() cy.get('[data-attr=taxonomic-filter-searchfield]').click() cy.get('[data-attr=prop-filter-event_properties-1]').click({ force: true }) diff --git a/cypress/productAnalytics/index.ts b/cypress/productAnalytics/index.ts index a641cb3d0f56a..be38c6e01b393 100644 --- a/cypress/productAnalytics/index.ts +++ b/cypress/productAnalytics/index.ts @@ -55,7 +55,7 @@ export function interceptInsightLoad(insightType: string): string { export const insight = { applyFilter: (): void => { - cy.get('[data-attr=insight-filters-add-filter-group]').click() + cy.get('[data-attr$=add-filter-group]').click() cy.get('[data-attr=property-select-toggle-0]').click() cy.get('[data-attr=taxonomic-filter-searchfield]').click() cy.get('[data-attr=prop-filter-event_properties-1]').click({ force: true }) diff --git a/ee/api/test/test_billing.py b/ee/api/test/test_billing.py index 72fc15a2f9008..88addd2d7f416 100644 --- a/ee/api/test/test_billing.py +++ b/ee/api/test/test_billing.py @@ -366,7 +366,7 @@ def mock_implementation(url: str, headers: Any = None, params: Any = None) -> Ma "usage_summary": { "events": {"limit": None, "usage": 0}, "recordings": {"limit": None, "usage": 0}, - "row_synced": {"limit": None, "usage": 0}, + "rows_synced": {"limit": None, "usage": 0}, }, "free_trial_until": None, "current_total_amount_usd": "0.00", diff --git a/ee/billing/billing_manager.py b/ee/billing/billing_manager.py index 23f9bd0bad498..a906f6796603e 100644 --- a/ee/billing/billing_manager.py +++ b/ee/billing/billing_manager.py @@ -191,15 +191,6 @@ def _get_stripe_portal_url(self, organization: Organization) -> BillingStatus: return data["url"] - def _get_plans(self, plan_keys: Optional[str]): - res = requests.get( - f'{BILLING_SERVICE_URL}/api/plans{"?keys=" + plan_keys if plan_keys else ""}', - ) - - handle_billing_service_error(res) - - return res.json() - def _get_products(self, organization: Optional[Organization]): headers = {} params = {"plan": "standard"} diff --git a/ee/clickhouse/queries/test/__snapshots__/test_lifecycle.ambr b/ee/clickhouse/queries/test/__snapshots__/test_lifecycle.ambr index 29eb93b4ae929..5acb951590251 100644 --- a/ee/clickhouse/queries/test/__snapshots__/test_lifecycle.ambr +++ b/ee/clickhouse/queries/test/__snapshots__/test_lifecycle.ambr @@ -352,7 +352,7 @@ AND event = '$pageview' AND timestamp >= toDateTime(dateTrunc('day', toDateTime('2021-04-28 00:00:00', 'UTC'))) - INTERVAL 1 day AND timestamp < toDateTime(dateTrunc('day', toDateTime('2021-05-05 23:59:59', 'UTC'))) + INTERVAL 1 day - AND (and(like(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, '$current_url'), ''), 'null'), '^"|"$', ''), '%example%'), 1)) + AND (and(ifNull(like(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, '$current_url'), ''), 'null'), '^"|"$', ''), '%example%'), 0), 1)) GROUP BY pdi.person_id) GROUP BY start_of_period, status) @@ -426,7 +426,7 @@ AND event = '$pageview' AND timestamp >= toDateTime(dateTrunc('day', toDateTime('2021-04-28 00:00:00', 'UTC'))) - INTERVAL 1 day AND timestamp < toDateTime(dateTrunc('day', toDateTime('2021-05-05 23:59:59', 'UTC'))) + INTERVAL 1 day - AND (and(like(nullIf(nullIf(events.`mat_$current_url`, ''), 'null'), '%example%'), 1)) + AND (and(ifNull(like(nullIf(nullIf(events.`mat_$current_url`, ''), 'null'), '%example%'), 0), 1)) GROUP BY pdi.person_id) GROUP BY start_of_period, status) @@ -501,7 +501,7 @@ AND event = '$pageview' AND timestamp >= toDateTime(dateTrunc('day', toDateTime('2021-04-28 00:00:00', 'UTC'))) - INTERVAL 1 day AND timestamp < toDateTime(dateTrunc('day', toDateTime('2021-05-05 23:59:59', 'UTC'))) + INTERVAL 1 day - AND (like(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(person_properties, 'email'), ''), 'null'), '^"|"$', ''), '%test.com')) + AND (ifNull(like(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(person_properties, 'email'), ''), 'null'), '^"|"$', ''), '%test.com'), 0)) GROUP BY pdi.person_id) GROUP BY start_of_period, status) @@ -576,7 +576,7 @@ AND event = '$pageview' AND timestamp >= toDateTime(dateTrunc('day', toDateTime('2021-04-28 00:00:00', 'UTC'))) - INTERVAL 1 day AND timestamp < toDateTime(dateTrunc('day', toDateTime('2021-05-05 23:59:59', 'UTC'))) + INTERVAL 1 day - AND (like(nullIf(nullIf(mat_pp_email, ''), 'null'), '%test.com')) + AND (ifNull(like(nullIf(nullIf(mat_pp_email, ''), 'null'), '%test.com'), 0)) GROUP BY pdi.person_id) GROUP BY start_of_period, status) diff --git a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr index d185a7a063790..09cddbe7f6756 100644 --- a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr +++ b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr @@ -1613,8 +1613,7 @@ AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') AND ((has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', ''))) - AND (ifNull(ilike(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, 'hogql'), ''), 'null'), '^"|"$', ''), 'true'), isNull(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, 'hogql'), ''), 'null'), '^"|"$', '')) - and isNull('true')))) + AND (ifNull(ilike(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, 'hogql'), ''), 'null'), '^"|"$', ''), 'true'), 0))) GROUP BY value ORDER BY count DESC, value DESC LIMIT 25 @@ -1655,8 +1654,7 @@ WHERE e.team_id = 2 AND event = '$pageview' AND ((has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', ''))) - AND (ifNull(ilike(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, 'hogql'), ''), 'null'), '^"|"$', ''), 'true'), isNull(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, 'hogql'), ''), 'null'), '^"|"$', '')) - and isNull('true')))) + AND (ifNull(ilike(replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, 'hogql'), ''), 'null'), '^"|"$', ''), 'true'), 0))) AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') AND replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') in (['test', 'control']) diff --git a/frontend/__snapshots__/components-cards-insight-card--insight-card.png b/frontend/__snapshots__/components-cards-insight-card--insight-card.png index 3c8919af6eeb8..eaa0ed7df25ed 100644 Binary files a/frontend/__snapshots__/components-cards-insight-card--insight-card.png and b/frontend/__snapshots__/components-cards-insight-card--insight-card.png differ diff --git a/frontend/__snapshots__/components-cards-text-card--template.png b/frontend/__snapshots__/components-cards-text-card--template.png index 4eee8836ab698..3c045b8354ba6 100644 Binary files a/frontend/__snapshots__/components-cards-text-card--template.png and b/frontend/__snapshots__/components-cards-text-card--template.png differ diff --git a/frontend/__snapshots__/components-networkrequesttiming--basic.png b/frontend/__snapshots__/components-networkrequesttiming--basic.png new file mode 100644 index 0000000000000..8247b433f71c8 Binary files /dev/null and b/frontend/__snapshots__/components-networkrequesttiming--basic.png differ diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight.png index cf79e173859f2..f0559ae34642d 100644 Binary files a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight.png and b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--funnel-left-to-right-breakdown-insight.png b/frontend/__snapshots__/exporter-exporter--funnel-left-to-right-breakdown-insight.png index 38244e35ae9d8..aa5a9eab7354f 100644 Binary files a/frontend/__snapshots__/exporter-exporter--funnel-left-to-right-breakdown-insight.png and b/frontend/__snapshots__/exporter-exporter--funnel-left-to-right-breakdown-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--funnel-left-to-right-insight.png b/frontend/__snapshots__/exporter-exporter--funnel-left-to-right-insight.png index 4a04621ca44de..dd92bf6b0ef79 100644 Binary files a/frontend/__snapshots__/exporter-exporter--funnel-left-to-right-insight.png and b/frontend/__snapshots__/exporter-exporter--funnel-left-to-right-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--funnel-time-to-convert-insight.png b/frontend/__snapshots__/exporter-exporter--funnel-time-to-convert-insight.png index c403c659e15df..e97ac272bc3b5 100644 Binary files a/frontend/__snapshots__/exporter-exporter--funnel-time-to-convert-insight.png and b/frontend/__snapshots__/exporter-exporter--funnel-time-to-convert-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--funnel-top-to-bottom-breakdown-insight.png b/frontend/__snapshots__/exporter-exporter--funnel-top-to-bottom-breakdown-insight.png index ec9d14b04e8ca..20d72c16238e4 100644 Binary files a/frontend/__snapshots__/exporter-exporter--funnel-top-to-bottom-breakdown-insight.png and b/frontend/__snapshots__/exporter-exporter--funnel-top-to-bottom-breakdown-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--funnel-top-to-bottom-insight.png b/frontend/__snapshots__/exporter-exporter--funnel-top-to-bottom-insight.png index 6f5b39c1f9d3e..c7f2676ae1bf2 100644 Binary files a/frontend/__snapshots__/exporter-exporter--funnel-top-to-bottom-insight.png and b/frontend/__snapshots__/exporter-exporter--funnel-top-to-bottom-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--lifecycle-insight.png b/frontend/__snapshots__/exporter-exporter--lifecycle-insight.png index fdcbbd24236f1..49e132b82db76 100644 Binary files a/frontend/__snapshots__/exporter-exporter--lifecycle-insight.png and b/frontend/__snapshots__/exporter-exporter--lifecycle-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--retention-breakdown-insight.png b/frontend/__snapshots__/exporter-exporter--retention-breakdown-insight.png index 082bdb9907417..7185efea76ab6 100644 Binary files a/frontend/__snapshots__/exporter-exporter--retention-breakdown-insight.png and b/frontend/__snapshots__/exporter-exporter--retention-breakdown-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--retention-insight.png b/frontend/__snapshots__/exporter-exporter--retention-insight.png index c62fc70ac088b..e91b842102b86 100644 Binary files a/frontend/__snapshots__/exporter-exporter--retention-insight.png and b/frontend/__snapshots__/exporter-exporter--retention-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--stickiness-insight.png b/frontend/__snapshots__/exporter-exporter--stickiness-insight.png index 1c1e95908112f..3fc3e03143c98 100644 Binary files a/frontend/__snapshots__/exporter-exporter--stickiness-insight.png and b/frontend/__snapshots__/exporter-exporter--stickiness-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-area-breakdown-insight.png b/frontend/__snapshots__/exporter-exporter--trends-area-breakdown-insight.png index 24ffc71713a28..7de2045284f44 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-area-breakdown-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-area-breakdown-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-area-insight.png b/frontend/__snapshots__/exporter-exporter--trends-area-insight.png index 56ac86a94a237..41d262d023141 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-area-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-area-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-bar-breakdown-insight.png b/frontend/__snapshots__/exporter-exporter--trends-bar-breakdown-insight.png index 3c95a30cc395a..e197249c208ce 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-bar-breakdown-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-bar-breakdown-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-bar-insight.png b/frontend/__snapshots__/exporter-exporter--trends-bar-insight.png index 56ac86a94a237..41d262d023141 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-bar-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-bar-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-breakdown-insight.png b/frontend/__snapshots__/exporter-exporter--trends-line-breakdown-insight.png index 3c95a30cc395a..e197249c208ce 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-line-breakdown-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-line-breakdown-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-insight.png b/frontend/__snapshots__/exporter-exporter--trends-line-insight.png index 56ac86a94a237..41d262d023141 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-line-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-line-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-line-multi-insight.png b/frontend/__snapshots__/exporter-exporter--trends-line-multi-insight.png index 75529341446f0..93c140d75f49a 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-line-multi-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-line-multi-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-number-insight.png b/frontend/__snapshots__/exporter-exporter--trends-number-insight.png index ec6d628426da3..e661eaa4de199 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-number-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-number-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-pie-breakdown-insight.png b/frontend/__snapshots__/exporter-exporter--trends-pie-breakdown-insight.png index 7a1f9dfceee8c..61ac574a3c443 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-pie-breakdown-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-pie-breakdown-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-pie-insight.png b/frontend/__snapshots__/exporter-exporter--trends-pie-insight.png index 825a772994d7d..03e5f0a529a8a 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-pie-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-pie-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-table-breakdown-insight.png b/frontend/__snapshots__/exporter-exporter--trends-table-breakdown-insight.png index 036f84e322323..282daf6b30543 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-table-breakdown-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-table-breakdown-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-table-insight.png b/frontend/__snapshots__/exporter-exporter--trends-table-insight.png index 21d2a42f9eaf2..5223b75398630 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-table-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-table-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-value-breakdown-insight.png b/frontend/__snapshots__/exporter-exporter--trends-value-breakdown-insight.png index 3fff287337545..3575438a7ad30 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-value-breakdown-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-value-breakdown-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-value-insight.png b/frontend/__snapshots__/exporter-exporter--trends-value-insight.png index 56ac86a94a237..41d262d023141 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-value-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-value-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--trends-world-map-insight.png b/frontend/__snapshots__/exporter-exporter--trends-world-map-insight.png index d4b629b6536ad..7654fa3f75324 100644 Binary files a/frontend/__snapshots__/exporter-exporter--trends-world-map-insight.png and b/frontend/__snapshots__/exporter-exporter--trends-world-map-insight.png differ diff --git a/frontend/__snapshots__/exporter-exporter--user-paths-insight.png b/frontend/__snapshots__/exporter-exporter--user-paths-insight.png index 79f1711336dbf..19977a7a1bd22 100644 Binary files a/frontend/__snapshots__/exporter-exporter--user-paths-insight.png and b/frontend/__snapshots__/exporter-exporter--user-paths-insight.png differ diff --git a/frontend/__snapshots__/insights-insightstable--embedded.png b/frontend/__snapshots__/insights-insightstable--embedded.png index 3f9234e5b9d3a..180bab30a3d06 100644 Binary files a/frontend/__snapshots__/insights-insightstable--embedded.png and b/frontend/__snapshots__/insights-insightstable--embedded.png differ diff --git a/frontend/__snapshots__/lemon-ui-lemon-segmented-button--default.png b/frontend/__snapshots__/lemon-ui-lemon-segmented-button--default.png index b5eb2fe4d0ab4..dfe7248daa59f 100644 Binary files a/frontend/__snapshots__/lemon-ui-lemon-segmented-button--default.png and b/frontend/__snapshots__/lemon-ui-lemon-segmented-button--default.png differ diff --git a/frontend/__snapshots__/lemon-ui-lemon-segmented-button--full-width.png b/frontend/__snapshots__/lemon-ui-lemon-segmented-button--full-width.png index b5eb2fe4d0ab4..dfe7248daa59f 100644 Binary files a/frontend/__snapshots__/lemon-ui-lemon-segmented-button--full-width.png and b/frontend/__snapshots__/lemon-ui-lemon-segmented-button--full-width.png differ diff --git a/frontend/__snapshots__/lemon-ui-lemon-skeleton--presets.png b/frontend/__snapshots__/lemon-ui-lemon-skeleton--presets.png index d26a679f4fd68..18ea3052167f0 100644 Binary files a/frontend/__snapshots__/lemon-ui-lemon-skeleton--presets.png and b/frontend/__snapshots__/lemon-ui-lemon-skeleton--presets.png differ diff --git a/frontend/__snapshots__/posthog-3000-navigation--navigation-3000.png b/frontend/__snapshots__/posthog-3000-navigation--navigation-3000.png index 5eb005ec637e5..9329598d4f0f9 100644 Binary files a/frontend/__snapshots__/posthog-3000-navigation--navigation-3000.png and b/frontend/__snapshots__/posthog-3000-navigation--navigation-3000.png differ diff --git a/frontend/__snapshots__/posthog-3000-navigation--navigation-base.png b/frontend/__snapshots__/posthog-3000-navigation--navigation-base.png index f37ec4794401f..a63ee9697bb12 100644 Binary files a/frontend/__snapshots__/posthog-3000-navigation--navigation-base.png and b/frontend/__snapshots__/posthog-3000-navigation--navigation-base.png differ diff --git a/frontend/__snapshots__/scenes-app-dashboards--edit.png b/frontend/__snapshots__/scenes-app-dashboards--edit.png index 6389702cb99c5..ca634e775f0d7 100644 Binary files a/frontend/__snapshots__/scenes-app-dashboards--edit.png and b/frontend/__snapshots__/scenes-app-dashboards--edit.png differ diff --git a/frontend/__snapshots__/scenes-app-dashboards--show.png b/frontend/__snapshots__/scenes-app-dashboards--show.png index 4aaadd263a2a6..0bac6702636e7 100644 Binary files a/frontend/__snapshots__/scenes-app-dashboards--show.png and b/frontend/__snapshots__/scenes-app-dashboards--show.png differ diff --git a/frontend/__snapshots__/scenes-app-experiments--complete-funnel-experiment.png b/frontend/__snapshots__/scenes-app-experiments--complete-funnel-experiment.png index 8feeeb95edc07..b954a89c3fe4f 100644 Binary files a/frontend/__snapshots__/scenes-app-experiments--complete-funnel-experiment.png and b/frontend/__snapshots__/scenes-app-experiments--complete-funnel-experiment.png differ diff --git a/frontend/__snapshots__/scenes-app-experiments--running-trend-experiment.png b/frontend/__snapshots__/scenes-app-experiments--running-trend-experiment.png index aab6a5a84f625..34fc0266e6ee9 100644 Binary files a/frontend/__snapshots__/scenes-app-experiments--running-trend-experiment.png and b/frontend/__snapshots__/scenes-app-experiments--running-trend-experiment.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends--webkit.png b/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends--webkit.png index 015ec328151a8..ff8d20c392180 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends--webkit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends-edit--webkit.png index 6d0fd5b2d7cb7..f46520b2f73dc 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends-edit.png b/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends-edit.png index 489d1255fad03..d3727abe59c66 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends-edit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends.png b/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends.png index 53cb826a62a1c..7f8fbe65c33f4 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends.png and b/frontend/__snapshots__/scenes-app-insights--funnel-historical-trends.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right--webkit.png b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right--webkit.png index 73ef96ff35115..7f37b4f88ea9e 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right--webkit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown--webkit.png b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown--webkit.png index 47ef343bc3320..52b192f0436ff 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown--webkit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown-edit--webkit.png index 14095aac431c6..9aa218739300b 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown-edit.png b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown-edit.png index 093643b9deefa..f7301be8fcc9b 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown-edit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown.png b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown.png index 7cd7d0f64cc9a..2426224527e72 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown.png and b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-breakdown.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-edit--webkit.png index b486123a26dc7..3f938630e0cee 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-edit.png b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-edit.png index 2ffaf24c76640..97c300aec44da 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-edit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right.png b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right.png index db6f0a7f56163..451a3e13a2d4f 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right.png and b/frontend/__snapshots__/scenes-app-insights--funnel-left-to-right.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert--webkit.png b/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert--webkit.png index 226edac304a58..2cd74f758f4f0 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert--webkit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert-edit--webkit.png index b41b5c6455c6d..5e437308fefd9 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert-edit.png b/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert-edit.png index b2330f1d37780..3ac105cb27e6c 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert-edit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert.png b/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert.png index 3e3b254a5e43a..0c68ed20b354c 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert.png and b/frontend/__snapshots__/scenes-app-insights--funnel-time-to-convert.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom--webkit.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom--webkit.png index f12b8d5746aed..b93219c3d0204 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom--webkit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown--webkit.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown--webkit.png index e974d14deaf29..a03a837b14ca3 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown--webkit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit--webkit.png index db220a7c3905e..57c8868d90d40 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit.png index 0b11f2f6116fe..afc88b3502e60 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown.png index 77cc5d1496a9c..0c51f972a0c9e 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown.png and b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-edit--webkit.png index c61377d5ee00c..1bc80b159fcf0 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-edit.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-edit.png index 8958fe5dc51ba..1fceceed5b2ba 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-edit.png and b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom.png index 42e13f4b8326e..7f8d3f622e01d 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom.png and b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--lifecycle--webkit.png b/frontend/__snapshots__/scenes-app-insights--lifecycle--webkit.png index ee1307cd8d1ba..91f6f6e560edd 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--lifecycle--webkit.png and b/frontend/__snapshots__/scenes-app-insights--lifecycle--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--lifecycle-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--lifecycle-edit--webkit.png index 373e3e0e19c98..bd131be5920a7 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--lifecycle-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--lifecycle-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--lifecycle-edit.png b/frontend/__snapshots__/scenes-app-insights--lifecycle-edit.png index 15c56dfa56a59..38cb27172dece 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--lifecycle-edit.png and b/frontend/__snapshots__/scenes-app-insights--lifecycle-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--lifecycle.png b/frontend/__snapshots__/scenes-app-insights--lifecycle.png index 8fda2317ec4d0..89b738cf06472 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--lifecycle.png and b/frontend/__snapshots__/scenes-app-insights--lifecycle.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--retention--webkit.png b/frontend/__snapshots__/scenes-app-insights--retention--webkit.png index 2e7368c06bb1e..38102732ee359 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--retention--webkit.png and b/frontend/__snapshots__/scenes-app-insights--retention--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--retention-breakdown--webkit.png b/frontend/__snapshots__/scenes-app-insights--retention-breakdown--webkit.png index fd40f5ea3d016..cb52e0f1495f4 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--retention-breakdown--webkit.png and b/frontend/__snapshots__/scenes-app-insights--retention-breakdown--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--retention-breakdown-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--retention-breakdown-edit--webkit.png index 9ccbe27971b45..ee03a7556c872 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--retention-breakdown-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--retention-breakdown-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--retention-breakdown-edit.png b/frontend/__snapshots__/scenes-app-insights--retention-breakdown-edit.png index 97fa118d79f56..1e71a2fc11b12 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--retention-breakdown-edit.png and b/frontend/__snapshots__/scenes-app-insights--retention-breakdown-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--retention-breakdown.png b/frontend/__snapshots__/scenes-app-insights--retention-breakdown.png index 121d0b324adcd..3e2ab6d65836f 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--retention-breakdown.png and b/frontend/__snapshots__/scenes-app-insights--retention-breakdown.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--retention-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--retention-edit--webkit.png index c8ede7b9fd30c..9d791a3259380 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--retention-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--retention-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--retention-edit.png b/frontend/__snapshots__/scenes-app-insights--retention-edit.png index ae71eec088987..45c2836c18811 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--retention-edit.png and b/frontend/__snapshots__/scenes-app-insights--retention-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--retention.png b/frontend/__snapshots__/scenes-app-insights--retention.png index e90937f466eef..9a7251ee3698d 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--retention.png and b/frontend/__snapshots__/scenes-app-insights--retention.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--stickiness--webkit.png b/frontend/__snapshots__/scenes-app-insights--stickiness--webkit.png index bcf04c038e70b..b1f44c1341ec3 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--stickiness--webkit.png and b/frontend/__snapshots__/scenes-app-insights--stickiness--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--stickiness-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--stickiness-edit--webkit.png index 509a482b5eeda..fc56f416a79ff 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--stickiness-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--stickiness-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--stickiness-edit.png b/frontend/__snapshots__/scenes-app-insights--stickiness-edit.png index 29db39c34e2c8..3cc58acbcacee 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--stickiness-edit.png and b/frontend/__snapshots__/scenes-app-insights--stickiness-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--stickiness.png b/frontend/__snapshots__/scenes-app-insights--stickiness.png index de3afbf8cc7af..e3a0289b2bde0 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--stickiness.png and b/frontend/__snapshots__/scenes-app-insights--stickiness.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-area--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-area--webkit.png index 21aa9bc7551f8..d3ad0d0416ed0 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-area--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-area--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown--webkit.png index b5c8307dea666..8f14499429e91 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown-edit--webkit.png index 9905ed61d7a89..a2d3654a7b019 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown-edit.png index 18e8183ddefb1..eacd277f8c466 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown.png b/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown.png index f412b05f949a1..d2c34da43a597 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown.png and b/frontend/__snapshots__/scenes-app-insights--trends-area-breakdown.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-area-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-area-edit--webkit.png index 1c9bae1872eee..bccdd29949efa 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-area-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-area-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-area-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-area-edit.png index 2513bc614a783..689dcd9839e8d 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-area-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-area-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-area.png b/frontend/__snapshots__/scenes-app-insights--trends-area.png index 693bb117d362c..bc2055bb61140 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-area.png and b/frontend/__snapshots__/scenes-app-insights--trends-area.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-bar--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-bar--webkit.png index 029db225e47ab..9348697847367 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-bar--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-bar--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown--webkit.png index 7a047299abaef..6542e66ded261 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown-edit--webkit.png index aa1a85fbbf26f..9bfb5ce522765 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown-edit.png index 42115a622a205..c0c5a2092f525 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown.png b/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown.png index b76b6e7a17d98..1f0039036ffa4 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown.png and b/frontend/__snapshots__/scenes-app-insights--trends-bar-breakdown.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-bar-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-bar-edit--webkit.png index adb88102026c6..b854c985c0849 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-bar-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-bar-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-bar-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-bar-edit.png index 1b81ed4977ff1..932b2d3d43abc 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-bar-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-bar-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-bar.png b/frontend/__snapshots__/scenes-app-insights--trends-bar.png index cb863bb9c9bb6..e6b4d9722076b 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-bar.png and b/frontend/__snapshots__/scenes-app-insights--trends-bar.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-line--webkit.png index 8aed583ad4064..b3a5b20f6394c 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-line--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-line--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown--webkit.png index a57438bd749a9..5a1d695b843d6 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-edit--webkit.png index 2779891938055..9d275c34efbf3 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-edit.png index 370cd4a4c10a2..e308b6b409e0d 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-labels--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-labels--webkit.png new file mode 100644 index 0000000000000..e2d82fc57c0e0 Binary files /dev/null and b/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-labels--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-labels.png b/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-labels.png new file mode 100644 index 0000000000000..066c2201792a3 Binary files /dev/null and b/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown-labels.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown.png b/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown.png index 1ec537b3468ad..0ac5093e23ca3 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown.png and b/frontend/__snapshots__/scenes-app-insights--trends-line-breakdown.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-line-edit--webkit.png index e14d719a073e2..1990ae3d264c0 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-line-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-line-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-line-edit.png index fbeb271f50cf0..b3d789e752710 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-line-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-line-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line-multi--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-line-multi--webkit.png index 6015dabcec713..42561f322039c 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-line-multi--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-line-multi--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line-multi-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-line-multi-edit--webkit.png index 3f2231d07737c..8a47ca33b0fd2 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-line-multi-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-line-multi-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line-multi-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-line-multi-edit.png index 649c945bdf267..2788c12f3b2c7 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-line-multi-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-line-multi-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line-multi.png b/frontend/__snapshots__/scenes-app-insights--trends-line-multi.png index 9fc201861aa47..939ae1dea2f56 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-line-multi.png and b/frontend/__snapshots__/scenes-app-insights--trends-line-multi.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-line.png b/frontend/__snapshots__/scenes-app-insights--trends-line.png index e1b4848578966..975132fef1b19 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-line.png and b/frontend/__snapshots__/scenes-app-insights--trends-line.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-number--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-number--webkit.png index 17a8821fb39ed..f3161e700a738 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-number--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-number--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-number-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-number-edit--webkit.png index 796e6548e08c8..20c2074825f8e 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-number-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-number-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-number-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-number-edit.png index 25d7659b28b81..80c580574079c 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-number-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-number-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-number.png b/frontend/__snapshots__/scenes-app-insights--trends-number.png index 48d95207dd24d..baf47a94ff5db 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-number.png and b/frontend/__snapshots__/scenes-app-insights--trends-number.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-pie--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-pie--webkit.png index 846479f3753fe..93b7e9b656117 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-pie--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-pie--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown--webkit.png index 983851141af8d..d33d21c2387f1 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-edit--webkit.png index 5163ac5fdb238..e11265b7a23c5 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-edit.png index e020cb76a7760..f83b718feeb79 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-labels--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-labels--webkit.png new file mode 100644 index 0000000000000..6e89f0b8e8683 Binary files /dev/null and b/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-labels--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-labels.png b/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-labels.png new file mode 100644 index 0000000000000..6177698ddf6dc Binary files /dev/null and b/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown-labels.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown.png b/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown.png index e396c60572415..dcb273e64439b 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown.png and b/frontend/__snapshots__/scenes-app-insights--trends-pie-breakdown.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-pie-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-pie-edit--webkit.png index af5c8b64103fe..a5b457de916b1 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-pie-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-pie-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-pie-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-pie-edit.png index 0a8ebe4751399..c80f95a6464a1 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-pie-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-pie-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-pie.png b/frontend/__snapshots__/scenes-app-insights--trends-pie.png index 5f83bed8ef407..bea0f178cf14c 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-pie.png and b/frontend/__snapshots__/scenes-app-insights--trends-pie.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-table--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-table--webkit.png index 2ba75da1d8204..106f7b70d1f54 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-table--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-table--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown--webkit.png index 063e78dd5feaf..ff41c7540bfcf 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown-edit--webkit.png index 4196d96dfbd67..2d1533eb70717 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown-edit.png index 8ae256c8199bf..2f708f79c912c 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown.png b/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown.png index a3a2a9a805370..18487bb88d559 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown.png and b/frontend/__snapshots__/scenes-app-insights--trends-table-breakdown.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-table-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-table-edit--webkit.png index fb0e1de7e7310..38c6892a0c112 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-table-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-table-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-table-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-table-edit.png index 4ca89e34bfd22..4a6fe4f1a4daf 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-table-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-table-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-table.png b/frontend/__snapshots__/scenes-app-insights--trends-table.png index e36f384700aee..bab2405d9ac61 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-table.png and b/frontend/__snapshots__/scenes-app-insights--trends-table.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-value--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-value--webkit.png index a350461bf3689..f6af074e96923 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-value--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-value--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown--webkit.png index 8af97f329f0d5..979febee96067 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown-edit--webkit.png index c626cb8402ae2..d3a3dec473f0b 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown-edit.png index f45c73c45217e..fb29412159cd5 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown.png b/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown.png index 98d682c860521..7f099baaf9eab 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown.png and b/frontend/__snapshots__/scenes-app-insights--trends-value-breakdown.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-value-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-value-edit--webkit.png index 48b1f53b59bfb..362964c3bcf89 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-value-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-value-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-value-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-value-edit.png index bdb269d4562ee..91225e794f2b4 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-value-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-value-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-value.png b/frontend/__snapshots__/scenes-app-insights--trends-value.png index 24e25225e9902..94177c7f28870 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-value.png and b/frontend/__snapshots__/scenes-app-insights--trends-value.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-world-map--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-world-map--webkit.png index 1ae8bc9fccb15..25eaf83180416 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-world-map--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-world-map--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-world-map-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--trends-world-map-edit--webkit.png index 709a2698bae3b..5ecbf86975a4f 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-world-map-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--trends-world-map-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-world-map-edit.png b/frontend/__snapshots__/scenes-app-insights--trends-world-map-edit.png index 0462e9cfedd78..4afd8b0955fbd 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-world-map-edit.png and b/frontend/__snapshots__/scenes-app-insights--trends-world-map-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--trends-world-map.png b/frontend/__snapshots__/scenes-app-insights--trends-world-map.png index e76857963a4de..0050ed308e178 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--trends-world-map.png and b/frontend/__snapshots__/scenes-app-insights--trends-world-map.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--user-paths--webkit.png b/frontend/__snapshots__/scenes-app-insights--user-paths--webkit.png index 8c15340d735f3..c2354f8a1112d 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--user-paths--webkit.png and b/frontend/__snapshots__/scenes-app-insights--user-paths--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--user-paths-edit--webkit.png b/frontend/__snapshots__/scenes-app-insights--user-paths-edit--webkit.png index 0db6e20f49afb..a09292dd4f0cb 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--user-paths-edit--webkit.png and b/frontend/__snapshots__/scenes-app-insights--user-paths-edit--webkit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--user-paths-edit.png b/frontend/__snapshots__/scenes-app-insights--user-paths-edit.png index df710f4dd46da..7199f4a937fbc 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--user-paths-edit.png and b/frontend/__snapshots__/scenes-app-insights--user-paths-edit.png differ diff --git a/frontend/__snapshots__/scenes-app-insights--user-paths.png b/frontend/__snapshots__/scenes-app-insights--user-paths.png index ca4c44785108f..2d4d7040cd6f6 100644 Binary files a/frontend/__snapshots__/scenes-app-insights--user-paths.png and b/frontend/__snapshots__/scenes-app-insights--user-paths.png differ diff --git a/frontend/__snapshots__/scenes-app-notebooks--recordings-playlist.png b/frontend/__snapshots__/scenes-app-notebooks--recordings-playlist.png index 5bff9a3fddcff..e18ecc8d6a5a5 100644 Binary files a/frontend/__snapshots__/scenes-app-notebooks--recordings-playlist.png and b/frontend/__snapshots__/scenes-app-notebooks--recordings-playlist.png differ diff --git a/frontend/__snapshots__/scenes-app-pipeline--pipeline-filtering-page.png b/frontend/__snapshots__/scenes-app-pipeline--pipeline-filtering-page.png index a13107e8bbaa8..2922f7f7736ff 100644 Binary files a/frontend/__snapshots__/scenes-app-pipeline--pipeline-filtering-page.png and b/frontend/__snapshots__/scenes-app-pipeline--pipeline-filtering-page.png differ diff --git a/frontend/__snapshots__/scenes-app-pipeline--pipeline-landing-page.png b/frontend/__snapshots__/scenes-app-pipeline--pipeline-landing-page.png index c51a24f39fa18..72113b0438d81 100644 Binary files a/frontend/__snapshots__/scenes-app-pipeline--pipeline-landing-page.png and b/frontend/__snapshots__/scenes-app-pipeline--pipeline-landing-page.png differ diff --git a/frontend/__snapshots__/scenes-app-pipeline--pipeline-transformations-page-empty.png b/frontend/__snapshots__/scenes-app-pipeline--pipeline-transformations-page-empty.png new file mode 100644 index 0000000000000..b9810d5bf2186 Binary files /dev/null and b/frontend/__snapshots__/scenes-app-pipeline--pipeline-transformations-page-empty.png differ diff --git a/frontend/__snapshots__/scenes-app-pipeline--pipeline-transformations-page.png b/frontend/__snapshots__/scenes-app-pipeline--pipeline-transformations-page.png index dd103d2f11446..80fdf0c1d8632 100644 Binary files a/frontend/__snapshots__/scenes-app-pipeline--pipeline-transformations-page.png and b/frontend/__snapshots__/scenes-app-pipeline--pipeline-transformations-page.png differ diff --git a/frontend/__snapshots__/scenes-app-project-homepage--project-homepage.png b/frontend/__snapshots__/scenes-app-project-homepage--project-homepage.png index fe614866ab3d3..55081c3b37420 100644 Binary files a/frontend/__snapshots__/scenes-app-project-homepage--project-homepage.png and b/frontend/__snapshots__/scenes-app-project-homepage--project-homepage.png differ diff --git a/frontend/__snapshots__/scenes-app-saved-insights--card-view.png b/frontend/__snapshots__/scenes-app-saved-insights--card-view.png index df6c09ca18009..fd1b5084ad4bd 100644 Binary files a/frontend/__snapshots__/scenes-app-saved-insights--card-view.png and b/frontend/__snapshots__/scenes-app-saved-insights--card-view.png differ diff --git a/frontend/__snapshots__/scenes-app-surveys--new-survey-customisation-section.png b/frontend/__snapshots__/scenes-app-surveys--new-survey-customisation-section.png index 95e635c33ad86..cba3d74dd5756 100644 Binary files a/frontend/__snapshots__/scenes-app-surveys--new-survey-customisation-section.png and b/frontend/__snapshots__/scenes-app-surveys--new-survey-customisation-section.png differ diff --git a/frontend/__snapshots__/scenes-app-surveys--new-survey.png b/frontend/__snapshots__/scenes-app-surveys--new-survey.png index 1f36ec7c50021..586ce9af4be63 100644 Binary files a/frontend/__snapshots__/scenes-app-surveys--new-survey.png and b/frontend/__snapshots__/scenes-app-surveys--new-survey.png differ diff --git a/frontend/__snapshots__/scenes-app-surveys--survey-templates.png b/frontend/__snapshots__/scenes-app-surveys--survey-templates.png index e503d6d818e91..069a66dbfbb5b 100644 Binary files a/frontend/__snapshots__/scenes-app-surveys--survey-templates.png and b/frontend/__snapshots__/scenes-app-surveys--survey-templates.png differ diff --git a/frontend/__snapshots__/scenes-other-billing-v2--billing-v-2-with-discount.png b/frontend/__snapshots__/scenes-other-billing-v2--billing-v-2-with-discount.png index 7ef2222880396..fe6ebe0fbdaff 100644 Binary files a/frontend/__snapshots__/scenes-other-billing-v2--billing-v-2-with-discount.png and b/frontend/__snapshots__/scenes-other-billing-v2--billing-v-2-with-discount.png differ diff --git a/frontend/__snapshots__/scenes-other-billing-v2--billing-v-2.png b/frontend/__snapshots__/scenes-other-billing-v2--billing-v-2.png index a931bed1128b3..c9e9c33192efb 100644 Binary files a/frontend/__snapshots__/scenes-other-billing-v2--billing-v-2.png and b/frontend/__snapshots__/scenes-other-billing-v2--billing-v-2.png differ diff --git a/frontend/src/exporter/ExportedInsight/ExportedInsight.scss b/frontend/src/exporter/ExportedInsight/ExportedInsight.scss index c158e28a7bc55..bb643d8f0d3a9 100644 --- a/frontend/src/exporter/ExportedInsight/ExportedInsight.scss +++ b/frontend/src/exporter/ExportedInsight/ExportedInsight.scss @@ -8,6 +8,8 @@ background: var(--bg-light); display: flex; flex-direction: column; + height: 100%; + flex: 1; .ExportedInsight__header { padding: 1rem; @@ -25,22 +27,19 @@ flex: 1; position: relative; z-index: 1; - .FunnelBarChart { - min-height: 50vw; + display: flex; + flex-direction: column; + + .LemonTable { + border: none; + border-radius: 0; + background: none; } - .InsightViz { - position: relative; - display: flex; + .InsightCard__viz { + // We can't use the viewport height, as the screenshotter will resize the height of the window to capture the full content + // Instead we try to make it roughly rectangular min-height: 50vw; - - > * { - flex: 1; - } - - .ActionsPie { - position: absolute; - } } } @@ -49,36 +48,10 @@ right: 0; top: 0; z-index: 2; + svg { font-size: 0.75rem; margin: 0.25rem; } } - - &.ExportedInsight--fit-screen { - height: 100vh; - max-height: 100vh; - - .ExportedInsight__content { - display: flex; - flex-direction: column; - - .FunnelBarChart { - height: 100%; - max-height: 100%; - min-height: auto; - flex: 1; - } - - .InsightViz { - flex: 1; - min-height: 100px; - max-height: 100%; - } - - &.ExportedInsight__content--with-watermark { - padding-top: 1rem; - } - } - } } diff --git a/frontend/src/exporter/ExportedInsight/ExportedInsight.tsx b/frontend/src/exporter/ExportedInsight/ExportedInsight.tsx index 24bfe97cab377..c75e6306f9ef8 100644 --- a/frontend/src/exporter/ExportedInsight/ExportedInsight.tsx +++ b/frontend/src/exporter/ExportedInsight/ExportedInsight.tsx @@ -91,11 +91,7 @@ export function ExportedInsight({ ) ) : ( - + )} {showLegend ? (
diff --git a/frontend/src/exporter/Exporter.scss b/frontend/src/exporter/Exporter.scss index db6d2acc6a495..f861f282a2926 100644 --- a/frontend/src/exporter/Exporter.scss +++ b/frontend/src/exporter/Exporter.scss @@ -1,35 +1,10 @@ @import '../styles/mixins'; -html.export-type-image { - // We don't want scrollbars to show in image captures - ::-webkit-scrollbar { - display: none; - } - - body { - // We put Inter first so that rendered images are the same no matter which platform it is rendered on. - font-family: 'Inter', 'Segoe UI', 'Roboto', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', - 'Segoe UI Symbol'; - } -} - -html.export-type-embed { - overflow: hidden; - overflow-y: auto; - - .Exporter { - padding: 0; - - // Insights can resize to fit any height, whereas dashboards cannot - &--insight { - height: 100vh; - max-height: 100vh; - } - } -} - .Exporter { padding: 1rem; + min-height: 100vh; + display: flex; + flex-direction: column; &--recording { height: 100vh; @@ -58,3 +33,26 @@ html.export-type-embed { } } } + +html.export-type-image { + // We don't want scrollbars to show in image captures + ::-webkit-scrollbar { + display: none; + } + + body { + // We put Inter first so that rendered images are the same no matter which platform it is rendered on. + font-family: Inter, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', + 'Segoe UI Symbol'; + } +} + +html.export-type-embed { + overflow: hidden; + overflow-y: auto; + + .Exporter { + padding: 0; + min-height: 100vh; + } +} diff --git a/frontend/src/layout/ErrorBoundary/ErrorBoundary.scss b/frontend/src/layout/ErrorBoundary/ErrorBoundary.scss index c98425d731956..be9ac8887a160 100644 --- a/frontend/src/layout/ErrorBoundary/ErrorBoundary.scss +++ b/frontend/src/layout/ErrorBoundary/ErrorBoundary.scss @@ -5,20 +5,24 @@ padding: 0.75rem 1rem 1rem; min-width: 0; height: fit-content; + .main-app-content > & { margin: 1.5rem 0; } + h2 { margin-bottom: 0.75rem; color: var(--danger); font-weight: 600; } + pre { margin-bottom: 0.75rem; background: var(--border-light); border-radius: var(--radius); padding: 0.75rem 1rem; } + .help-button { margin-top: 0.75rem; } diff --git a/frontend/src/layout/FeaturePreviews/featurePreviewsLogic.tsx b/frontend/src/layout/FeaturePreviews/featurePreviewsLogic.tsx index 592ced0043252..40c2e201be346 100644 --- a/frontend/src/layout/FeaturePreviews/featurePreviewsLogic.tsx +++ b/frontend/src/layout/FeaturePreviews/featurePreviewsLogic.tsx @@ -6,6 +6,7 @@ import { supportLogic } from 'lib/components/Support/supportLogic' import { userLogic } from 'scenes/userLogic' import { FEATURE_FLAGS, FeatureFlagKey } from 'lib/constants' import type { featurePreviewsLogicType } from './featurePreviewsLogicType' +import { actionToUrl, router, urlToAction } from 'kea-router' /** Features that can only be toggled if you fall under the `${flagKey}-preview` flag */ export const CONSTRAINED_PREVIEWS: Set = new Set([FEATURE_FLAGS.POSTHOG_3000]) @@ -107,4 +108,25 @@ export const featurePreviewsLogic = kea([ }), ], }), + urlToAction(({ actions }) => ({ + '*': (_, _search, hashParams) => { + if (hashParams['panel'] === 'feature-previews') { + actions.showFeaturePreviewsModal() + } + }, + })), + actionToUrl(() => { + return { + showFeaturePreviewsModal: () => { + const hashParams = router.values.hashParams + hashParams['panel'] = 'feature-previews' + return [router.values.location.pathname, router.values.searchParams, hashParams] + }, + hideFeaturePreviewsModal: () => { + const hashParams = router.values.hashParams + delete hashParams['panel'] + return [router.values.location.pathname, router.values.searchParams, hashParams] + }, + } + }), ]) diff --git a/frontend/src/layout/GlobalModals.tsx b/frontend/src/layout/GlobalModals.tsx index 83e61a3476da0..b2ae0efd30f0f 100644 --- a/frontend/src/layout/GlobalModals.tsx +++ b/frontend/src/layout/GlobalModals.tsx @@ -13,6 +13,7 @@ import { FlaggedFeature } from 'lib/components/FlaggedFeature' import { Prompt } from 'lib/logic/newPrompt/Prompt' import { inviteLogic } from 'scenes/settings/organization/inviteLogic' import { InviteModal } from 'scenes/settings/organization/InviteModal' +import { HedgehogBuddyWithLogic } from 'lib/components/HedgehogBuddy/HedgehogBuddy' export const globalModalsLogic = kea([ path(['layout', 'navigation', 'globalModalsLogic']), @@ -76,6 +77,7 @@ export function GlobalModals(): JSX.Element { + ) } diff --git a/frontend/src/layout/navigation-3000/Navigation.scss b/frontend/src/layout/navigation-3000/Navigation.scss index fd7aa9cc982ca..e727859e8c19f 100644 --- a/frontend/src/layout/navigation-3000/Navigation.scss +++ b/frontend/src/layout/navigation-3000/Navigation.scss @@ -1,5 +1,6 @@ .Navigation3000 { - --breadcrumbs-height: 3rem; + --breadcrumbs-height-full: 3.75rem; + --breadcrumbs-height-compact: 2.75rem; --scene-padding-y: 1rem; --scene-padding-x: 1rem; @@ -20,10 +21,12 @@ // `relative` is for positioning of the scene-level spinner position: relative; margin: var(--scene-padding-y) var(--scene-padding-x); - min-height: calc(100vh - var(--breadcrumbs-height) - var(--scene-padding-y) * 2); + min-height: calc(100vh - var(--breadcrumbs-height-full) - var(--scene-padding-y) * 2); + &.Navigation3000__scene--raw { --scene-padding-y: 0px; --scene-padding-x: 0px; + display: flex; flex-direction: column; } @@ -49,7 +52,14 @@ .LemonButton { min-height: 2.25rem !important; // Reduce minimum height - padding: 0.375rem !important; // Use a custom padding for the navbar only + + > span { + padding: 0.25rem !important; + } + + .LemonButton__content { + font-size: 0.813rem; + } } ul { @@ -61,16 +71,18 @@ } li + li { - margin-top: 1px; + margin-top: 0.25rem; } } } .NavbarButton { position: relative; + .LemonButton__icon { transition: color 100ms ease, transform 100ms ease; } + &.NavbarButton--here { &::after { content: '•'; @@ -83,6 +95,7 @@ line-height: 0.5625rem; color: var(--default); } + .LemonButton__icon { color: var(--default); transform: translateY(-0.25rem); @@ -97,7 +110,9 @@ --sidebar-horizontal-padding: 0.5rem; --sidebar-row-height: 2rem; --sidebar-background: var(--bg-3000); + position: relative; + // This border is just for sizing, the visible border is on the content and slider // Hidden when the sidebar is closed border-right: min(1px, var(--sidebar-width)) solid transparent; @@ -121,23 +136,27 @@ margin: 0; line-height: inherit; } + h3 { font-weight: 600; line-height: 2rem; font-size: 0.75rem; } + h4 { font-weight: 600; line-height: 1.75rem; font-size: 0.6875rem; flex-grow: 1; } + h5 { font-weight: 400; font-size: 0.75rem; text-transform: none; letter-spacing: normal; } + b { font-weight: 700; } @@ -163,6 +182,7 @@ white-space: nowrap; overflow: hidden; background: var(--sidebar-background); + // Extend the border into viewport overscroll border-right: min(1px, var(--sidebar-width)) solid var(--border); @@ -181,8 +201,7 @@ flex-direction: column; align-items: stretch; flex-grow: 1; - overflow-x: hidden; - overflow-y: auto; + overflow: hidden auto; } .Sidebar3000__hint { @@ -205,6 +224,7 @@ right: calc( -1 * var(--sidebar-slider-padding) - min(1px, var(--sidebar-width)) ); // Center around the original sidebar border + width: calc(2 * var(--sidebar-slider-padding) + 1px); // The interactive area is enlarged for easier interaction cursor: col-resize; user-select: none; // Fixes inadvertent selection of scene text when resizing @@ -221,23 +241,28 @@ width: 1px; pointer-events: none; } + &::before { transition: 100ms ease transform; background: var(--border); } + &::after { transition: 100ms ease transform; background: var(--text-3000); opacity: 0; } + &:hover::after, .Sidebar3000--resizing &::after { opacity: 0.25; } + .Sidebar3000--resizing &::before, .Sidebar3000--resizing &::after { transform: scaleX(3); } + .Sidebar3000[aria-hidden='true'] & { cursor: e-resize; } @@ -259,20 +284,25 @@ --accordion-inset-expandable: 1.25rem; --accordion-header-background: var(--accent-3000); --accordion-inset: 0rem; + min-height: var(--accordion-row-height); flex-shrink: 0; flex-basis: 0; display: flex; flex-direction: column; + [theme='dark'] & { --accordion-header-background: var(--bg-3000); } + &[aria-expanded] { // This means: if accordion is expandable --accordion-inset: var(--accordion-inset-expandable); } + &:not([aria-expanded='false']) { flex-grow: 1; + &:not(:last-child) { border-bottom-width: 1px; } @@ -282,10 +312,12 @@ .Accordion[aria-disabled='true'] { .Accordion__header { cursor: default; + &:hover { background: var(--accordion-header-background); } } + &:not([aria-busy='true']) .Accordion__header .LemonIcon { visibility: hidden; } @@ -301,14 +333,17 @@ border-bottom-width: 1px; cursor: pointer; user-select: none; + &:hover { background: var(--border-3000); } + > .LemonIcon { transition: 50ms ease transform; font-size: var(--accordion-arrow-size); flex-shrink: 0; margin-right: calc(var(--accordion-inset-expandable) - var(--accordion-arrow-size)); + .Accordion[aria-expanded='true'] & { transform: rotate(90deg); } @@ -320,6 +355,7 @@ --sidebar-list-item-fold-size: 0.5rem; --sidebar-list-item-ribbon-width: 0.1875rem; --sidebar-list-item-background: var(--sidebar-background); + position: relative; color: var(--muted); line-height: 1.125rem; @@ -332,8 +368,10 @@ &[aria-current='page'], &.SidebarListItem--is-renaming { opacity: 1; + --sidebar-list-item-background: var(--border-3000); } + &:hover, &:focus-within, &[aria-current='page'], @@ -342,14 +380,17 @@ .SidebarListItem__actions { display: flex; } + // Accommodate menu button by moving stuff out of the way &.SidebarListItem--has-menu:not(.SidebarListItem--extended) .SidebarListItem__link { padding-right: calc(var(--sidebar-horizontal-padding) + 1.25rem); } + &.SidebarListItem--has-menu.SidebarListItem--extended { &::after { content: ''; position: absolute; + // Position 1px away so that the :focus-visible border isn't overlaid top: 1px; right: 1px; @@ -376,6 +417,7 @@ z-index: 1; } } + &.SidebarListItem--marker-fold { &::before { width: 0; @@ -384,23 +426,29 @@ border-bottom: var(--sidebar-list-item-fold-size) solid transparent; } } + &.SidebarListItem--marker-ribbon { --sidebar-list-item-marker-offset: var(--sidebar-list-item-ribbon-width); + &::before { width: var(--sidebar-list-item-ribbon-width); height: 100%; background: var(--sidebar-list-item-status-color); } } + &.SidebarListItem--marker-status-success { --sidebar-list-item-status-color: var(--success); } + &.SidebarListItem--marker-status-warning { --sidebar-list-item-status-color: var(--warning); } + &.SidebarListItem--marker-status-danger { --sidebar-list-item-status-color: var(--danger); } + &.SidebarListItem--marker-status-completion { --sidebar-list-item-status-color: var(--purple); } @@ -411,6 +459,7 @@ --sidebar-list-item-inset: calc( var(--accordion-inset, 0px) + var(--sidebar-horizontal-padding) + var(--sidebar-list-item-marker-offset, 0px) ); + position: relative; display: flex; flex-direction: column; @@ -418,13 +467,11 @@ width: 100%; height: 100%; color: inherit; + &:focus-visible::after { content: ''; position: absolute; - top: 0; - left: 0; - bottom: -1px; - right: 0; + inset: 0 0 -1px; border: 1px solid var(--default); pointer-events: none; } @@ -442,6 +489,7 @@ .SidebarListItem__rename { // Pseudo-elements don't work on inputs, so we use a wrapper div background: var(--bg-light); + input { outline: none; height: 100%; @@ -451,15 +499,14 @@ padding: 0 calc(var(--sidebar-horizontal-padding) + 2.5rem) 0 var(--sidebar-list-item-inset); background: none; } + &::after { content: ''; position: absolute; - top: 0; - left: 0; - bottom: -1px; - right: 0; + inset: 0 0 -1px; border: 1px solid var(--default); pointer-events: none; + .SidebarListItem[aria-invalid='true'] & { border-color: var(--danger); } @@ -476,6 +523,7 @@ background: var(--danger); color: #fff; white-space: normal; + &::before { display: block; content: ''; diff --git a/frontend/src/layout/navigation-3000/Navigation.tsx b/frontend/src/layout/navigation-3000/Navigation.tsx index 04d577454aadd..851a3fe2b86ab 100644 --- a/frontend/src/layout/navigation-3000/Navigation.tsx +++ b/frontend/src/layout/navigation-3000/Navigation.tsx @@ -1,4 +1,4 @@ -import { CommandPalette } from 'lib/components/CommandPalette' +import { CommandPalette } from 'lib/components/CommandPalette/CommandPalette' import { useMountedLogic, useValues } from 'kea' import { ReactNode, useEffect } from 'react' import { Breadcrumbs } from './components/Breadcrumbs' diff --git a/frontend/src/layout/navigation-3000/components/Breadcrumbs.scss b/frontend/src/layout/navigation-3000/components/Breadcrumbs.scss index b16badb08507d..75b3dae2df67d 100644 --- a/frontend/src/layout/navigation-3000/components/Breadcrumbs.scss +++ b/frontend/src/layout/navigation-3000/components/Breadcrumbs.scss @@ -1,40 +1,94 @@ .Breadcrumbs3000 { + --breadcrumbs-compaction-rate: 0; + z-index: var(--z-main-nav); position: sticky; top: 0; + display: flex; + align-items: start; + height: var(--breadcrumbs-height-full); + pointer-events: none; + white-space: nowrap; +} + +.Breadcrumbs3000__content { backdrop-filter: blur(8px); display: flex; align-items: center; width: 100%; padding: 0 1rem; - height: var(--breadcrumbs-height); + height: calc( + var(--breadcrumbs-height-full) - (var(--breadcrumbs-height-full) - var(--breadcrumbs-height-compact)) * + var(--breadcrumbs-compaction-rate) + ); background: var(--glass-bg-3000); border-bottom: 1px solid var(--glass-border-3000); - overflow-x: auto; - font-size: 0.8125rem; + font-size: calc(0.75rem + 0.0625rem * var(--breadcrumbs-compaction-rate)); + line-height: 1rem; font-weight: 600; user-select: none; + pointer-events: auto; +} + +.Breadcrumbs3000__crumbs { + display: flex; + align-items: center; +} + +.Breadcrumbs3000__trail { + flex-grow: 1; + flex-shrink: 1; + overflow-x: auto; +} + +.Breadcrumbs3000__here { + position: relative; + line-height: 1.2; + margin: calc(0.25rem * (1 - var(--breadcrumbs-compaction-rate))) 0 0; + font-size: 1rem; + font-weight: 700; + overflow: hidden; + height: calc(1em * 1.2 * (1 - var(--breadcrumbs-compaction-rate))); + + > span { + position: absolute; + bottom: 0; + } } .Breadcrumbs3000__breadcrumb { + flex-shrink: 0; display: flex; align-items: center; white-space: pre; cursor: default; color: var(--default); + overflow: hidden; + + &.Link:hover { + color: inherit; + } &.Breadcrumbs3000__breadcrumb--here { cursor: default; + > span { opacity: 1; + transform: translateY(calc(100% * (1 - var(--breadcrumbs-compaction-rate)))); } } &.Breadcrumbs3000__breadcrumb--actionable { cursor: pointer; + + &:hover > span, + &.Breadcrumbs3000__breadcrumb--open > span { + opacity: 1; + } } > span { + transition: opacity 200ms ease; opacity: 0.5; } @@ -53,6 +107,7 @@ flex-shrink: 0; margin: 0 0.5rem; opacity: 0.5; + &::after { content: '/'; } diff --git a/frontend/src/layout/navigation-3000/components/Breadcrumbs.tsx b/frontend/src/layout/navigation-3000/components/Breadcrumbs.tsx index 50dd074259976..344d36f55f47c 100644 --- a/frontend/src/layout/navigation-3000/components/Breadcrumbs.tsx +++ b/frontend/src/layout/navigation-3000/components/Breadcrumbs.tsx @@ -1,14 +1,15 @@ -import React, { useState } from 'react' -import { useValues } from 'kea' -import { IconArrowDropDown, IconEllipsisVertical } from 'lib/lemon-ui/icons' +import React, { useEffect, useState } from 'react' +import { useActions, useValues } from 'kea' +import { IconArrowDropDown } from 'lib/lemon-ui/icons' import { Link } from 'lib/lemon-ui/Link' import './Breadcrumbs.scss' import { Breadcrumb as IBreadcrumb } from '~/types' import clsx from 'clsx' import { Popover } from 'lib/lemon-ui/Popover/Popover' import { breadcrumbsLogic } from '~/layout/navigation/Breadcrumbs/breadcrumbsLogic' -import { LemonButton } from '@posthog/lemon-ui' -import { NewInsightButton } from 'scenes/saved-insights/SavedInsights' +import { LemonSkeleton } from '@posthog/lemon-ui' + +const COMPACTION_DISTANCE = 44 /** * In PostHog 3000 breadcrumbs also serve as the top bar. This is marked by theses two features: @@ -16,21 +17,48 @@ import { NewInsightButton } from 'scenes/saved-insights/SavedInsights' * - The "Quick scene actions" buttons (zero or more buttons on the right) */ export function Breadcrumbs(): JSX.Element | null { - const { firstBreadcrumb, tailBreadcrumbs } = useValues(breadcrumbsLogic) + const { breadcrumbs } = useValues(breadcrumbsLogic) + const { setActionsContainer } = useActions(breadcrumbsLogic) + + const [compactionRate, setCompactionRate] = useState(0) + + useEffect(() => { + function handleScroll(): void { + const scrollTop = document.getElementsByTagName('main')[0].scrollTop + setCompactionRate(Math.min(scrollTop / COMPACTION_DISTANCE, 1)) + } + const main = document.getElementsByTagName('main')[0] + main.addEventListener('scroll', handleScroll) + return () => main.removeEventListener('scroll', handleScroll) + }, []) - return firstBreadcrumb ? ( -
- - {tailBreadcrumbs.map((breadcrumb, index) => ( - -
- - - ))} - {/* TODO: These buttons below are hardcoded right now, scene-based system coming in the next PR */} - } size="small" /> -
- + return breadcrumbs.length ? ( +
+
+
+
+ {breadcrumbs.slice(0, -1).map((breadcrumb, index) => ( + + +
+ + ))} + +
+ +
+
) : null @@ -50,6 +78,7 @@ function Breadcrumb({ breadcrumb, index, here }: BreadcrumbProps): JSX.Element { - {breadcrumb.symbol} {breadcrumb.name} {breadcrumb.popover && } @@ -88,3 +116,15 @@ function Breadcrumb({ breadcrumb, index, here }: BreadcrumbProps): JSX.Element { return breadcrumbContent } + +interface HereProps { + breadcrumb: IBreadcrumb +} + +function Here({ breadcrumb }: HereProps): JSX.Element { + return ( +

+ {breadcrumb.name || } +

+ ) +} diff --git a/frontend/src/layout/navigation-3000/components/KeyboardShortcut.scss b/frontend/src/layout/navigation-3000/components/KeyboardShortcut.scss index f868dd473b6b4..6a1645dbcfd0e 100644 --- a/frontend/src/layout/navigation-3000/components/KeyboardShortcut.scss +++ b/frontend/src/layout/navigation-3000/components/KeyboardShortcut.scss @@ -14,15 +14,18 @@ background: var(--accent-3000); color: var(--default); text-transform: capitalize; + .KeyboardShortcut--muted > & { background: none; color: var(--muted); } + .ant-tooltip & { color: #fff; background: rgba(#000, 0.333); border-color: rgba(#fff, 0.333); } + & + .KeyboardShortcut__key { margin-left: 0.25rem; } diff --git a/frontend/src/layout/navigation-3000/components/Navbar.tsx b/frontend/src/layout/navigation-3000/components/Navbar.tsx index 26619b7fd6cf2..3ddc730007a56 100644 --- a/frontend/src/layout/navigation-3000/components/Navbar.tsx +++ b/frontend/src/layout/navigation-3000/components/Navbar.tsx @@ -1,7 +1,6 @@ import { LemonBadge } from '@posthog/lemon-ui' import { useActions, useValues } from 'kea' -import { HelpButton } from 'lib/components/HelpButton/HelpButton' -import { IconQuestion, IconGear, IconDay, IconNight, IconAsterisk } from '@posthog/icons' +import { IconGear, IconDay, IconNight, IconAsterisk } from '@posthog/icons' import { Popover } from 'lib/lemon-ui/Popover' import { ProfilePicture } from 'lib/lemon-ui/ProfilePicture' import { Scene } from 'scenes/sceneTypes' @@ -91,17 +90,6 @@ export function Navbar(): JSX.Element { onClick={() => toggleTheme()} persistentTooltip /> - } - identifier="help-button" - title="Need any help?" - shortTitle="Help" - /> - } - placement="right-end" - /> } identifier={Scene.Settings} diff --git a/frontend/src/layout/navigation-3000/components/NavbarButton.tsx b/frontend/src/layout/navigation-3000/components/NavbarButton.tsx index 72e07508a9ebf..77d8ad33317b6 100644 --- a/frontend/src/layout/navigation-3000/components/NavbarButton.tsx +++ b/frontend/src/layout/navigation-3000/components/NavbarButton.tsx @@ -45,7 +45,7 @@ export const NavbarButton: FunctionComponent = React.forwardR if (tag === 'alpha') { content = ( <> - {content} + {content} ALPHA @@ -54,7 +54,7 @@ export const NavbarButton: FunctionComponent = React.forwardR } else if (tag === 'beta') { content = ( <> - {content} + {content} BETA @@ -75,6 +75,8 @@ export const NavbarButton: FunctionComponent = React.forwardR }} className={clsx('NavbarButton', isUsingNewNav && here && 'NavbarButton--here')} fullWidth + type="secondary" + stealth={true} {...buttonProps} > {content} diff --git a/frontend/src/layout/navigation-3000/sidepanel/SidePanel.scss b/frontend/src/layout/navigation-3000/sidepanel/SidePanel.scss index 4f3d08f139753..30c14c722c8d4 100644 --- a/frontend/src/layout/navigation-3000/sidepanel/SidePanel.scss +++ b/frontend/src/layout/navigation-3000/sidepanel/SidePanel.scss @@ -17,7 +17,7 @@ top: 0; right: 0; max-width: calc(100vw - 3rem); - box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 30px rgb(0 0 0 / 20%); [theme='dark'] & { box-shadow: none; diff --git a/frontend/src/layout/navigation-3000/sidepanel/SidePanel.tsx b/frontend/src/layout/navigation-3000/sidepanel/SidePanel.tsx index d011a0a6561de..1f85b5bf928de 100644 --- a/frontend/src/layout/navigation-3000/sidepanel/SidePanel.tsx +++ b/frontend/src/layout/navigation-3000/sidepanel/SidePanel.tsx @@ -98,6 +98,8 @@ export function SidePanel(): JSX.Element | null { } data-attr={`sidepanel-tab-${tab}`} active={activeTab === tab} + type="secondary" + stealth={true} > {label} diff --git a/frontend/src/layout/navigation-3000/sidepanel/components/SidePanelPane.tsx b/frontend/src/layout/navigation-3000/sidepanel/components/SidePanelPane.tsx new file mode 100644 index 0000000000000..db6cab4ca16b8 --- /dev/null +++ b/frontend/src/layout/navigation-3000/sidepanel/components/SidePanelPane.tsx @@ -0,0 +1,17 @@ +import { LemonButton, Tooltip } from '@posthog/lemon-ui' +import { useActions } from 'kea' +import { IconClose } from 'lib/lemon-ui/icons' +import { sidePanelStateLogic } from '../sidePanelStateLogic' + +export function SidePanelPaneHeader({ children }: { children: React.ReactNode }): JSX.Element { + const { closeSidePanel } = useActions(sidePanelStateLogic) + + return ( +
+ {children} + + } onClick={() => closeSidePanel()} /> + +
+ ) +} diff --git a/frontend/src/layout/navigation-3000/sidepanel/panels/SidePanelDocs.tsx b/frontend/src/layout/navigation-3000/sidepanel/panels/SidePanelDocs.tsx index 66672c2370cf1..413219b69f33c 100644 --- a/frontend/src/layout/navigation-3000/sidepanel/panels/SidePanelDocs.tsx +++ b/frontend/src/layout/navigation-3000/sidepanel/panels/SidePanelDocs.tsx @@ -1,13 +1,101 @@ -import { useValues } from 'kea' -import { sidePanelDocsLogic } from './sidePanelDocsLogic' +import { useActions, useValues } from 'kea' +import { POSTHOG_WEBSITE_ORIGIN, sidePanelDocsLogic } from './sidePanelDocsLogic' +import { useEffect, useRef, useState } from 'react' +import clsx from 'clsx' +import { SidePanelPaneHeader } from '../components/SidePanelPane' +import { LemonButton, LemonSkeleton } from '@posthog/lemon-ui' +import { IconExternal } from '@posthog/icons' +import { themeLogic } from '../../themeLogic' + +function SidePanelDocsSkeleton(): JSX.Element { + return ( +
+ + + + + + + + +
+ ) +} export const SidePanelDocs = (): JSX.Element => { - const { path } = useValues(sidePanelDocsLogic) + const { iframeSrc, currentUrl } = useValues(sidePanelDocsLogic) + const { updatePath, unmountIframe, closeSidePanel, handleExternalUrl } = useActions(sidePanelDocsLogic) + const ref = useRef(null) + const [ready, setReady] = useState(false) + const { isDarkModeOn } = useValues(themeLogic) + + useEffect(() => { + ref.current?.contentWindow?.postMessage( + { + type: 'theme-toggle', + isDarkModeOn, + }, + '*' + ) + }, [isDarkModeOn, ref.current]) + + useEffect(() => { + const onMessage = (event: MessageEvent): void => { + if (event.origin === POSTHOG_WEBSITE_ORIGIN) { + if (event.data.type === 'internal-navigation') { + updatePath(event.data.url) + return + } + if (event.data.type === 'docs-ready') { + setReady(true) + return + } + + if (event.data.type === 'external-navigation') { + // This should only be triggered for app|eu.posthog.com links + handleExternalUrl(event.data.url) + return + } + + console.warn('Unhandled iframe message from Docs:', event.data) + } + } + + window.addEventListener('message', onMessage) + + return () => window.removeEventListener('message', onMessage) + }, [ref.current]) + + useEffect(() => { + window.addEventListener('beforeunload', unmountIframe) + + return () => { + window.removeEventListener('beforeunload', unmountIframe) + unmountIframe() + } + }, []) - // NOTE: Currently we can't detect url changes from the iframe return ( -
-