V2 Styling using Google fonts/different image sizes, extra buttons

Hi all,

With V1, I had coded a lot of styling changes to align my studio with my website—using the additional script field at the Studio level. Although some elements were a bit broken, it wasn’t too major after migrating to V2. I was hoping V2 would offer more capabilities to style and customise the elements on the pages. While it does have more now, it’s still not quite enough for my use case.

I’ve largely finished my migration and achieved what I wanted: larger image on each pickaxe, extra buttons on the landing page (only on desktop to avoid cluttering the mobile view), and the integration of Google Fonts within my studio. All of these changes have been implemented via additional scripts in the settings tab of the studio under V2.

For those interested, attached is a screenshot of what it looks like now.

The main reason for these changes was that I wanted to build the studio into a mobile app—which I have done successfully. The mobile version renders correctly on iOS devices, although I still have one or two issues getting the input field to sit above the pop-up keyboard on some Android devices.

For now, I believe I’ve given my studio a unique style that is in keeping with my main website. I’d love to get any feedback, and if anyone wants to see the code I used, feel free to reach out.



2 Likes

Studio can be viewed here if you want to take a closer look and explore the source…

This is the page I send users to from my main website but if they arrive from the subdomain, this is the page they get with additional styling and images added

2 Likes

Wow, looks amazing! :heart_eyes:

Wow @ecaveo well done! Looks neat :clap: :+1:

Hi

Great example.

Would love to see the source if you are able to share.

Iain

@ecaveo really love your studio! Soooo good

this is so great, lots of inspiration here. would love to see some of the scripts if you’re able to share

Hey, @ecaveo

Congrats, these look great.

I’d be extremely grateful if you could share the code you used to achieve these final pages.

I’m working within education in Vietnam, and the current “fixed” settings in V2 are really no good for my studio.

Many thanks

Tavin.

So I used this simple script to add in CSS styling to order… Should be self explanatory.

<script>
document.addEventListener("DOMContentLoaded", function() {
  // Combine CSS blocks into one string
  const css = `
    /* Adjust image and container styles */
    .min-[767px]:pb-[7.5rem] .items-center .rounded {
      width: 110px !important;
      height: 110px !important;
      overflow: visible !important;
    }
    img.select-none.object-cover.rounded-full {
      width: 110px !important;
      height: 110px !important;
      overflow: visible !important;
      padding-bottom: 20px !important;
    }
    
    /* Font and typography settings */
    h2, h3, h4 {
      font-family: 'Changa One', sans-serif !important;
    }
    .border-none p {
      font-family: 'Changa One', sans-serif !important;
      font-size: 110% !important;
    }
    p {
      font-size: 95% !important;
    }
    .relative .justify-between p {
      font-family: 'Changa One', sans-serif !important;
      font-size: 110% !important;
    }
    .py-2 > .outline-none .truncate .truncate {
      font-family: 'Changa One', sans-serif !important;
      font-size: 120% !important;
    }
    .flex-grow.gap-2 {
      justify-content: center;
    }
    .duration-300.px-4 {
      padding: 10px 20px;
      border: 0px solid rgba(255, 0, 0, 0.2);
    }
    .py-14 {
      text-align: center;
    }
    .pxe-prose p {
      font-family: 'Raleway', sans-serif !important;
      font-weight: 400 !important;
    }
    .rounded-sm .truncate {
      font-family: 'Raleway', sans-serif !important;
      font-weight: 600 !important;
    }
    .bg-c-blue {
      background-color: #ce0310;
    }
  `;
  
  // Create a style element and inject the combined CSS
  const styleEl = document.createElement("style");
  styleEl.type = "text/css";
  styleEl.innerHTML = css;
  document.head.appendChild(styleEl);
  
  // Add a class to the body for account pages
  if (window.location.pathname.includes("/account")) {
    document.body.classList.add("account-page");
  }
  
  // Redirect logic based on the referrer
  const referrer = document.referrer;
  const currentURL = window.location.href;
  if (referrer.includes("/account") && currentURL === "https://par.athleet.ai/") {
    window.location.href = "https://par.athleet.ai/account";
  }
});
</script>

<!-- Font links -->
<link href="https://fonts.googleapis.com/css2?family=Changa+One&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@100&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@600&display=swap" rel="stylesheet">

@admin_mike I would very much enjoy a video featuring what @ecaveo has been doing! Anyone else?

1 Like

Very impressive work, @ecaveo!

I’ve just successfully implemented my first code injection in Settings, to enlarge and vertically move the round image on a Pickaxe chat page. This is my code:

<style>
  img[src="https://prod-pickaxe-assets.s3.us-west-2.amazonaws.com/coverphotos/Chat_with_Menno_Simons_YFQ4E.png?1742606784699"] {
    width: 275px !important;
    height: 275px !important;
    object-fit: cover;
    max-width: 275px;
    opacity: .4;
    transform: translateY(-60px); /* Moves the image vertically by 60px */
  }
</style>

I’m currently tearing my hair out to figure out how I can remove the “Log in” and “Sign up” buttons at the extreme top right of my landing page. (I’m developing a Pickaxe for which nobody will need to anyone to log in. I don’t want to confuse people with those buttons.) I’ve tried some code injection, but am very rusty on such stuff and can’t figure it out. Any chance you might have any code that would help with that?

If you don’t mind losing the thin vertical bar on the left-hand side (near the hamburger) when the menu is collapsed, you can do it like this:

<style>
.active\:opacity-100.shrink-0 {
    display: none !important;
}
.active\:opacity-100.flex .h-6 {
    display: none !important;
}
.select-none.font-semibold {
    display: none !important;
}
.h-\[32px\].w-\[1px\] {
    display: none !important;
}
</style>

Thank you so much, @ecaveo! This removed the “Get Started” button as well, which I need, but your code helped me to better understand how to assemble the classes needed to uniquely identify the element I want to address, and with a little modification I now have the desired result. Thanks again!

If someone wants to make a substantive video tutorial on this topic, and the video is good and informative, we will put it on our Youtube channel.

Just to add, we constantly make changes, so editing CSS through a script is not advisable unless you check your studio regularly.

I get that its not best practice @stephenasuncion but in the absence of what I consider suitable control over the Pickaxe design interface needed to build an effective user experience, this appears to be the only way (for now).

As the platform uses Tailwind, 99% of the styling changes I have made are anchored to Tailwind. As Tailwind is very well documented, its generally been quite a reliable process.

As for changes… I hash this file and compare versions every five minute using a git action to see if anything has changed: _next/static/css/04fe2274e7459ac0.css?dpl=dpl_mLUU69FebJymCXPT9Fft25E9bbwX

If all else fails and the hash is different, I can temporarily remove the code (which I have fully documented in my Pickaxe Studio) whilst I work out whats happened/happening. I’d love to have access to this via an API but I presume an API is not a near term priority for the Pickaxe team? As an alternative, It would be great if I could use an external file with my script and CSS overrides in that I could store in the cloud and I could then automate removing this if the hash changes and there is a prospect of breaking my Pickaxe.

Which brings me to some best practices it would be good to see from Pickaxe:

  • Ideally, we need a live changelog on what has changed… whilst I haven’t seen any change inTailwind classes, I’ve seen subtle changes elsewhere that arrive unannounced and without warning (of course these are always improvements, and none of these has broken my styling so all good at the moment).
  • We need more flexible styling control with more granular control of on page elements. This includes the ability to use Google Fonts and our own images/animations (is it just me or is the action animation the ugliest animation ever? The 1990s called and they want their loading icons back). Currently, with around a dozen or so controls over the page, it means its difficult to give your pickaxe a genuinely unique style… Which I have done by working the Tailwind.
  • A CSS override box separate from the Script Injects are needed. I want to separate the two so I can manage my cookie and privacy management separately from styling (on this, the current script inject page is problematic as the auto save frequently interferes with workflow leading to some lost changes or corrupt coding. I’d like the ability to switch it off in favour of manual save or have auto save work to a 60 second cycle not just every time it detects a change. I’d also like a larger view as editing with only a handful of lines visible as a window over your script can make this difficult.
  • Some of my styling is designed to cover up glitches on the site. When you switch pickaxes, the rendering of the new Pickaxe flashes the ‘new chat’ buttons on the screen as it loads. I style this out by using a controlled fade with a .2s delay. Slows things down very very modestly but makes for a better UX. Other examples of this are when you embed an image on the home page using markdown. It works but when the page loads, it flashes the link to the image file before loading it. I get around this by fading in the Tailwind class that the image and text are rendered in. This looks much nicer and gets rid of the flash.
  • In trial with members of a national Olympic Team, they told me they wanted some on page links to ‘support’ and ‘notes’ regarding the tools. I’ve done this through styling and adding my own Tailwind called buttons. These are essential but we need the ability to do this via the page design tools.
  • I need to be able to refresh the look of my tool to reflect that changing look of other online chatbots to ensure mine looks, and retains a freshness. This means design and styling, not just brute force implementation of AI Agents.

Its not an exhaustive list and I know others need more or different things but it would be great if you could work with us and this and give us more control over design. Even if just opening up more control over your use of Tailwind.

None of this detracts from what I think Team Pickaxe has built here. Its really, really good… but, its only a short hop to being really, really great.

My latest well received Studio changes have introduced an on page FAQ button that fires a styled popup… take a look here. I’d love the ability to do this through the backend rather than via script.

1 Like

If you have linked from a website that you would like your users to be able to get back to, then I have scripted a simple menu option for whatever you would like to put there. Simply change the URL in the code to point to your site page.

<nav>
    <ul>
       <li><a href=https://geeptee.com>Home |</a></li>
    	<li><a href=https://geeptee.com/shop>Shop |</a></li>
    	<li><a href=https://geeptee.com/contacts>Contact</a></li>
    </ul>
  </nav>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Website Menu</title>
  <style>
    nav ul {
      list-style-type: none;
      margin: 20px;
      padding: 0;
      display: flex;
    }
    nav li {
      margin-right: 5px;
    }
    nav a {
      text-decoration: none;
      color: #FFFFFF;
    }
    nav a:hover {
      text-decoration: underline;
    }
  </style>
2 Likes

Thanks @ecomprocess but I’m already doing this in a style that fits in with my Studio. ON the Landing page example here, the green arrow indicates where I have replaced the Studio Title with a logo image the blue arrow is an additional button added adjacent the ‘try it now’ button, styled the same way using a regular SVG.

On the second example, you can see that the one in a pickaxe, I render two additional buttons. In the close up, you’ll see the blue arrow points to some low key text… this is a version control number and a date and time stamp - on the support page, it will ask for a screen shot and this helps me to get a signpost to start digging in the backend as needed… the V2 is the Pickaxe Studio version we’ve probably all migrated to and the decimal number is my version to the prompt set I am using (I keep all the old versions of my prompts, JIC I need to rollback).

With the buttons indicated at the green arrow, one is to my ‘Support Form’ (this will eventually go to my CRM/Support system). The FAQ button actually triggers an onpage FAQ popup.

These only appear once at the start of a user session in the Pickaxe but the clock updates as the session progresses so the use just needs to screen shot this at the top of their current session.

On the close up below, you might also spot that I’ve restyled the prompt entry field/box to give it a slightly less utilitarian look!

Its pretty easy to code these and the only real change I want to make is to pull through the FAQ text from an external file which I will get to eventually .

2 Likes

Hey. @ecaveo

Thanks for this.

I’m no coder, but I’ll certainly play around with this and see where it takes me! ;o)

Hi ecaveo, this is really impressive and unique, a very professional studio. Could you share the embed code to create those buttons below the bot messages?
image