* Update goal settings design
- Replace the `Add goal` button in goal settings with a dropdown button to directly select the goal type. This way, a modal opens with the correct form for the selected goal type. The tabs in the modal have been removed.
- Add a new `pill` component to show the goal type in the table in a more distinct way. The `settings_badge` component is replaced with the `pill` component. The `pill` component that was used in `plan_box.ex` is renamed to `highlight_pill`.
- Replaced `Belongs to funnel` text with a funnel icon in the goal settings list.
- Some small tweaks like increasing the search bar width, the padding of the table cells, and adding a header to the goal settings list.
* Update tests to use the new dropdown component instead of tabs
* Replace custom `pending invitation` pill with new pill component
* Temporary: bump prima to exercise prima dropdown LV re-render fix
* Temporary: Bump prima again
* Revert "Temporary: Bump prima again"
This reverts commit 024b34a6e9.
* Revert "Temporary: bump prima to exercise prima dropdown LV re-render fix"
This reverts commit a6eabb73d0.
* Update prima
* Replace `Add goal` button with dropdown button in goal settings empty state
* Update test to check both empty and non-empty states of the add goal dropdown
* Remove pb-14 from feature gate
---------
Co-authored-by: Adam Rutkowski <hq@mtod.org>
* Updated empty states across settings
* Fix funnels and props functionality not hiding when toggled off
- Add show_content? attribute to generic tile component
- Ensure content is hidden when toggled off
- Avoid rendering border and empty space when toggled off
- Fix formatting
* Update personal sites empty state
* Make `tile` component lv-embeddable (#5891)
* Use new tile component for funnels, goals, imports and custom properties
- Update the settings live views to use the new tile component
- Ensure tile component is updated when feature visibility is toggled
- Extract `no_search_results` and `empty_state` components for better readability
- Extract `highlighted` component
- Update tests
* Add empty states for team sites and simplify empty state logic
- Hide top bar on `/sites` when empty state is shown
- Extract empty state logic to a separate function
- Show the same empty state for both personal and team sites, with different copy
- extract search logic to a separate function
- add tests for various empty states cases
* Clean up:
- remove HTTP feature visibility routes now that
we're doing it 100% via LV
- add tests for feature toggling
- move "site_role" to where it's used (upgrade CTA),
since there were already some feature-related function calls
there
- fix random test failures left
* Fixup
---------
Co-authored-by: Adam Rutkowski <hq@mtod.org>
* Migration: add consolidated views feature to enterprise plans
* Migration: Add user preferences per team table
* Update static plan definitions
* Add feature module definition
* Display consolidated view availability in crm
* Extend ConsolidatedView interface:
- add functions to manipulate user/team options (for CTA)
- require at least two sites in order to create a consolidated view
- require billing/plan compliance when computing eligibility
* Team/User preferences schema
* Implement consolidated view life cycle on /sites
Co-authored-by: Sanne de Vries <sannedv@protonmail.com>
Co-authored-by: Uku Taht <uku.taht@gmail.com>
* Enroll `consolidated_view` feature flag
* Consolidated view access hardening (+feature flag)
- require team-wise feature flag instead of super admin role
- redirect to /sites if the team isn't eligible any more
- enforce regular site in shared links controller
* Remove no longer needed `ConsolidatedView.enabled?/1`
* Alias PrimaDropdown
* No consolidates views for shared links
* Remove user argument from `ok_to_display?`
* Adjust a temporary test
* More elaborate alert
* Fix responsive design issues on sites page
- Fix z-index issue with button dropdown
- Fix truncation issue with team name
- Improve responsiveness of site cards
- Fix focus state of site cards
- Improve responsiveness of consolidated view CTA
- Improve design of prima_dropdown component
- Replace `+` with plus icons in dropdown items
* Use the plus icon for standalone "Add website" too
cc @sanne-san
* Format
* Fix z-index issue with dropdowns on sites page
* Remove TODOs
* Make consolidated view cards disappear when searching
* Clean up test
* Use per-team membership user preferences
* Use conditional instead of `with` statement
* Inline `ensure_eligible`
* Use `Map.fetch!` getting preference from default struct
* fixup
* Revert "Migration: add consolidated views feature to enterprise plans"
Will be included via main branch sync
This reverts commit 05bec55276.
* Fix and test feature-flag effect on both view and CTA cards
---------
Co-authored-by: Sanne de Vries <sannedv@protonmail.com>
Co-authored-by: Uku Taht <uku.taht@gmail.com>
* render error reason in flash message (cs)
* exclude whole sections in consolidated site settings
* filter settings general
* make goal settings work + tests
* do not render funnels cta
* change title of consolidated view settings
* disable consolidated view revenue goal creation (UI)
* disable consolidated view revenue goal creation (API)
* change title of add goal form
* make Props.suggest_keys_to_allow work for consolidated views
* fix props settings rendering for consolidated views + basic tests
* fix form view + tests
* exclude site settings integrations too
* fix CE tests
* refactor check_no_currency_if_consolidated
* use consolidated? instead of regular?
* use revenue?
* lookup site_ids by site domain
* fix CE
* fix CE again
* extract display_name function
* Move shared link form to modal
- As a preliminary step for enabling adding a pinned segment to a shared link, the functionality to add or edit a shared link is being moved to a modal.
- Minor UI improvements, such as update the style of the edit and delete buttons.
* Update tests
- Add shared_link_settings_test.exs for LiveView interactions (deletion, errors)
- Add shared_link_settings/form_test.exs for modal form testing (create, edit, validation)
- Update controller tests: remove deleted actions, update visibility test
* Update lib/plausible_web/components/generic.ex
Co-authored-by: Adrian Gruntkowski <adrian.gruntkowski@gmail.com>
* Update lib/plausible_web/components/generic.ex
Co-authored-by: Adrian Gruntkowski <adrian.gruntkowski@gmail.com>
* Refactor icon button components
* Fix spelling error
---------
Co-authored-by: Adrian Gruntkowski <adrian.gruntkowski@gmail.com>
* Improve dark mode
- Switch from `slate` to `zinc` for the gray color palette
- Darken overall dark mode UI
- Switch from `green` to `emerald` for the green color palette
- Update a few previously missed instances of title case to sentence case
- Consolidate button styles and change naming from `bright` to `secondary`
- Update button disabled styles
- Fix tooltip not adjusting to content width
- Update graph tooltip layout and typography
- Add transition effects to hover states
- Reduce footer logo size
* Fix oversights
- Update funnel graph colors
- Update graph grid colors
- Improve focus styles
- Improve disabled input styles
* Fix more oversights in relation to dashboard filtering
- Improve consistency of input, button, combobox and modal components in relation to settings area
- Fix segment tooltip color
* Fix search input style in funnel and segments dropdowns
* Add white background to favicon images in dark mode
- The GitHub and ChatGPT favicons are hard to see in dark mode, so we add a white background to them.
* Fix tooltip color to fit all backgrounds in dark mode
* Fix tests
* Fixed more tests
* Extract SourceFavicon component to eliminate favicon duplication
* Fix regression on installation page after rebase
* Fix formatting issues
* Fix favicon test failure in CI by reading placeholder icon at compile time
* Undo previous commit
* Upgrade phoenix and phoenix_live_view
* Use new phoenix controller options
* Run mix format
* Upgrade lazy_html and bcrypt
* Always put root layout
* Remove deprecated use Plug.Test
* Escpaing updates for LazyHTML
* Fix double layouts in site settings
* Fix more escaping in tests
* More LazyHTML updates
* Fix remaining LazyHTML issues
* More Floki -> LazyHTML conversions
* More Floki -> LazyHTML conversions
* Fix another issue with Floki -> LazyHTML
* Fix another lazyHTML issue
* Remove parsing from tree
* Fix HTML escaping in teams_test
* More test fixes
* More test fixes
* Add layout to browser_sso_notice pipeline
* Extract elem_count helper
* WIP
* Add tailwind migration script
* Change deprecated classes via migration script
* Manual fixes
* Restore color configuration with CSS variables
* Convert the rest of the config
* Fix dropdown ring opacity
* Remove migration script
* Fix stylelint errors
* NPM run format
* Fix shadow and rounded variant usage
* Add custom CSS to components layer
* Fix dark: and hover: conflict in settings_tab
* Fix funnel form background opacity
* Fix final bg-opacity
* Bring back cursor-pointer for buttons by default
* npm run format
- Add "Learn more" tooltip to the info icon that is used repeatedly in settings to link to docs, for extra affordance.
- Add centered? attribute to tooltip component.
- Replace the tooltip-content class with testid attribute, as it was only used for testing purposes.
- Adjust icon sizes and colors to be consistent with the icons in settings
- Improve the pin icon to be consistent in look and feel with the Heroicons
- Changed pinned icon color from red to indigo
- Improve the spacing and typography of the settings sidebars
- Improve the spacing between form components
- Change UI copy from Title Case to Sentence case for a more natural reading flow
- Improve subtitle and label copy
* Clean up number formatting util
- Deduplicate number_format util
- Add tests for number_format util
- Add number formatting to visitor change percentage in site overview
* Move number_format to TextHelpers
- Move number_format to a more generic place in TextHelpers
- Revert the places where we use unlimited to use the inline util
* make starter tier flag team based not user
* old upgrade page for active or recently ended trials
* adjustments to plan benefits
* mention losing grandfathering when on v4
* extract plan benefits into separate module
* unit tests for plan benefits + fix enterprise site/team_member benefits
* hide Starter tier from grandfathered Growth
Also get rid of the grandfathered notice in Growth plan box
* choose_plan_test.exs to ee_only
* fix ci
* actually fix ci
* stop displaying new starter features for grandfathered teams
* bump starter tier launch date
* Revert "stop displaying new starter features for grandfathered teams"
This reverts commit e024a82d14.
* Extend core APIs for better insight into SSO state during setup
* Adjust `toggle_switch` compoenent to accept global attributes
* Improve textarea variant of input component
* Make first very crude pass on SSO setup UI
* Display "Single Sign-On" settings option only when enabled
* Extract SP identity ID function to SAMLConfig as a public one
* Move SAML controller logic behind an adapter
* Don't apply CSRF protection to SAML consume endpoint
* Make copy adjustments
* Change SSO sidebar icon
* Fix `fake_domain_verify` handling before integration is set up
* Tweak configuration markup
* Sanitize PEM input
* Tweak SSO settings sections + prevent domain deletion if applicable
* Minor tweaks to SSO settings tiles
* Bootstrap basic test suite
* Ensure SSO settings are guarded by env var
* Make sure to retry fake domain validation on integration-less cycle
* Trim idp entity id input
* Dedup assertions
* Fix domain identifier interpolation
* Tidy up integration fetching
* Expand tests for SSOManagement LV with fixes
---------
Co-authored-by: Adam Rutkowski <hq@mtod.org>
* Redefine what `on_trial?` means
No subscription combined with
non-zero trial_days_left designates an ongoing trial.
Conversely, any subscription in any state means
the trial is inactive.
* Fix cancellation notices
We now show the cancellation warning
when the subscription is about to expire.
* Implement the ability to lock cancelled subscriptions
in case a refund is made
* Dedup notice body
* Spawn confirmation alert before locking
* keep teams feature explicitly for UI
* keep devsubscriptions in sync with prod
On prod, when a subscription is created without a current team in assings,
a new team is force created for that user.
* disable team creation when no point to create it
* fix ce_test compile warning
* fix tests on CE
* Update lib/plausible/teams/billing.ex
Co-authored-by: hq1 <hq@mtod.org>
* add solo team in seeds
* fix top border blur + stop autofocusing input when blurred
---------
Co-authored-by: hq1 <hq@mtod.org>
* replace yellow warning notice with more inviting cta (funnels)
* align VAT notice with /year on the upgrade page
* improve tooltip component
do not hide the tooltip when the mouse enters the tooltip itself directly
from the trigger element. This allows clicking links in tooltips.
* improve site segments feature gate UI
Disable the save button when site segment option is selected in create or
edit form. Also render a different upgrade notice if the user is not the owner.
* replace upgrade notices with blur UI
To fully get rid of Notice.premium_feature, we will also display a
"not allowed" cursor with tooltips asking to upgrade where necessary.
* extract toggle switch component
* Hide currency toggle from goal edit form
The currency field cannot be changed for an existing goal anyway. Therefore
it makes sense not to show it at all. This commit makes the currency picker
always visible when editing a revenue goal, and always hidden for custom
event edit form.
* simplify api key creation form
Turn "Sites API access" into a toggle switch identical to "Enable revenue
tracking" in goal creation form.
* remove team setup CTAs for Starter tier
* fix team member limit for starter
* adjust v5 plan limits and limit exceeded notices
* do not display global notices on upgrade-success page
* fix settings/subscription monthly quota boxes alignment
* fix CI
* use tailwind backdrop-blur
* remove dangling log + avoid passing setSaveDisabled
* remove duplicate function clauses revenue goals
* revert create api key UI change but disable button still
* optimize for darkmode
* blur team settings > team members for Starter
* rename team accounts to team management
* add a new (feature flagged) upgrade page offering v5 plans
* include starter tier plans in available_plans_for + use dev prices in test
* upgrade page remodelling with starter tier
* mobile optimizations
* optimize for darkmode
* add embedded dashboards as a growth benefit
* do not hide header on LegacyChoosePlan
* consistent v5 plan feature order
* slight grandfathering notice adjustment
* display monthly price too on yearly plans
* default to v5 plans unlesss legacy? is true
* refactor: suggest volume not plan for emails
* align back link with page title
* render grandfathering notice for growth v4 too
* Add flag for scriptv2 onboarding, render different installation screen
* Manual installation screen mockup
* Use phoenix form helpers
* Format
* Move manual tagging to advanced options
* fix sandbox plans v4 to be in sync with prod ones
* sync sandbox plans + unify formatting
* create v5 plans in paddle prod + sandbox + Mix.tasks
* add teams and shared links features
* remove unused line of code
* paddle credentials as module attrs
* remove teams and shared links as growth benefits for time being
* Add profile_url helper clause
* Add notes
* Sort features alphabetically
* Fix checkbox/textarea components
* Unrlelated: update combobox docs
* Initial customer support UI
* Unrelated: don't expand member dropdown if disabled
* Cross link both CRMs
* Remove unused things
* Stop polluting history with tab navigation
* Truncate search results
* Format
* Use routes in favour of phx-click events
* Fix / keypress to search focus
* Rename phx event
* Rename remaining save events
* Fix up x-data
* Fix alpine placeholder event
* Enable progress animation with topbar
* Team: separate assign clauses per tab
* Site: separate assign clauses per tab
* lint
* Replace URI patch on filter text update
* Unifyu filter_bar component usage
* !fixup
* Fix up filter form event name
* Fix number formatting as you type
* Fix enterprise plan number inputs
* Link CS from HelpScout
* Remove target=_blank from kaffy URLs
* Pre-fill custom plans
* Rework the billing tab
* Make checkbox labels clickable
* Put Stats API first
* Format
* Credo
* !fixup
* Don't show empty labels
* Change how generic notices refer the account
It's now "This team", unless no team is selected.
* Only owner and billing roles can access/manage subscriptions
* Change how Team Settings options are exposed:
- Subscription only available to owner/billing roles
- Invoices only available to owner/billing roles
- API Keys only available to owner/billing/admin/editor roles
* s/team members/members - to avoid repetition
* Only owner/billing can manage dev subscriptions
* Adjust existing tests
* Add test
* streamline dev subscriptions
* spawn -> Task
* fix button alignment
* do not define routes in test env
* remove explicit mentions of dev env when deciding whether to sandbox paddle
* decide checkout behaviour at compile time
* Timex -> Date
* hum
* make it work for enterprise plans too
* allow convenient subscription status change
* fix ci warnings
* remove redundant commented out code
* fix crash + review suggestion
---------
Co-authored-by: Adam Rutkowski <hq@mtod.org>
* Remove editor->admin mapping from Site Settings > People
* Restrict editor role and allow admin to update site role
* Disable actions in Site Settings > People for roles other than admin and owner
* Fix test
* Update labeling of guest members in CRM for clarity
* Update phrasing in other spots of UI
* Update CHANGELONG.md
* Revise team related banners displayed under Site Settings > People
* Fix permissions check for role update
* Get rid of `billable_user` in favour of `current_role`
* s/current_role/current_team_role
* Sort it out (tm)
* Remove unresolvable property from sentry context
* Test & adjust dashboard locked box
* Satisfy a test
* Rename "My Team" to "My Personal Sites"
* Rename "Create" to "Setup" in context of teams
* Set default Team Name to "Username's Team"
* wip
* end
* Expose team identifier
* fixup
* team id
* wip
* Rename `Teams.name()` -> `Teams.default_name()` for clarity
* Update test name
* Always reset team name when navigating to Team CTA
* Always use default team name for non-setup team
* Add tests for team name function
* Put sites list heading change behind FF
* Don't rely on FF for implicit team existence check
* Remove unnecessary team pick by parameter in site creation action
* Put first 3 teams in auth assigns context
* Fix setting current team from session
* Make `dropdown_item` component accept method for link
* Implement embedded team switcher in nav bar
* Store only personal team under my_team
* WIP
* Minor team switcher visual tweak
* Fix personal team selection
* Show only guest sites when no team picked
* Show CTA only in reference to `@my_team`
* Fix dedicated team switcher view
* Move picker indicator to the right in dedicated team select
* Alter site listing logic and fix tests
* Add viewer invitation to seeds
* Fix embedded team switch display condition
* Switch current team after setup
* Explicitly clean current team session value when no longer valid
* Remove redundant team switching logic
* Add quick link to team settings
* Don't show quick link when there's no current team
* Fix dedicated team switcher for no current team case
* Add test for my team fallback case
* Don't allow opening team settings for personal team
* Fix formatting
* Add site listing tests
* Fix team switching to avoid clash with existing conn params
* Fix formatting
* Remove unneeded `method` from `dropdown_item` component
* Decalre attributes for `team_switcher` component
* Render Invoices/Subscription sections based on team state
* Fix formatting
---------
Co-authored-by: Adam Rutkowski <hq@mtod.org>
* Start PromEx first; don't run the Oban plugin in test
* Implement `find_team_invitations`
* Implement `all_members`
* Allow disabling e-mail notifications on team member removal
Will be needed later, when operations are applied
in bulk and notifications go out only when transaction
succeeded.
* Fix visuals per @ukutath's suggestions
* Add `:setup_team` test context function
* Don't show team settings in the sidebar, if setup incomplete
* Add high-level interface for team layout arrangement
Will be used in setup but also later on, in membership settings.
* Update team/setup to use `Team.Management.Layout`
* Implement team general settings allowing layout arrangement
* Format
* Remove unused setup_team
* Add id attributes to member dropdown elements
* Format
* Unify team management experience
By sharing the same form layout in both views,
and enabling promoting guests to team members
in a separate section.
* Rename Invitations/Memberships getters
* Tweak team setup layout
* Update team setup markers only once
* Update tests
* Add another future regression test
* Fix typo
* Prune guest memberships on guest->team member promotion
* Remove now unnecessary `Candidates` module
* Add missing tests
* Catch up on multiple owners fixes
* Add missing describe-block setup
* Hopefully make Layout easier to follow
* Remove default prevention from dropdown
* Remove unused assign
* Make `sorted_for_display` skip scheduled for deletion
* `use PlausibleWeb.Component`
* Use `data-test-kind` for test specific selectors
* Remove `class="relative"` from `.dropdown` instances
* add very basic info box in site settings > integrations
* add looker studio as plan benefit
* add paragraph of text
* remove unwanted comma
* hide new settings section on ce
* moduledoc
* organize files and modules better + call ee-only condition in template
* move everything into a single template