72f3a4b128
* v3 subscription endpoints * Use pnpm linked billing package during development * Moved v2 billing components into a subfolder * Select plan using the real data * Improved v3 plan display * Use new api response that doesn’t require a Stripe call * Free flow is working * Added GitHub modal and verified badge * Deleted old request v3 access component/route * Allow setting classes on the Tooltip button * Paid plans working * Redirect from select plan if you’ve got v3 enabled * Loading state improvements * New admin API endpoint to set concurrency across multiple environments * When projects are created, conditionally create staging based on the plan * New billing page working with side menu and stripe portal * Layout, formatting and some plan state improvements/fixes * Don’t show the period if you’re on the free plan * Temporary upgrade callout * Refactored the platform code so it’s easier to call and doesn’t require a isManagedCloud check * Send taskIdentifier to OpenMeter * Side menu * Upgrade prompts * More improvements to the app-wide usage indicators * Early work on usage graphs * Added the usage bar for v3 * Moved code to presenter and now using defer * Added the tasks table to usage * Improved the v3 usage bar if theres’ no usage on a paid plan * If no run data, still render a graph * Usage page errors when defered loading fails * Don’t show the public API key for v3, they’re not used and probably never will be * Improved the upgrade callout and API keys page layout * Only show the “reveal all” toggle if you have environment variables in the table * Replaced Upgrade callout with a more generic InfoPanel component * better panel width * Show conditional upgrade prompts based on plan and number of schedules used * Removed duplicate class * Wider blank state panels for the scheduled page * Wider info panel for the env var page * Blank state now using the info panel * Platform alerts prompt now using the InfoPanel * Deploy blank state uses InfoPanel * Github verified badge padding adjustment * Improved the layout of the page, some style tweaks, organized imports * Better default tooltip style * could be undefined fix * text fix + style updates * Changed the billing icon in the side menu * Billing page layout and style improvements * plan tooltips don’t use dark variant * Don’t highlight the plan on the billing page * Tooltip underlines stand out more * Fixed padding in the PageTitle * Tooltips use the correct cursor * Improved the plan banner on the billing page * Fixed Header1 inconsistent font weight * Fixed issue where input field focus states were being clipped * Fixed large button not having large text size * Added a link to the Get in touch copy and improved the connect to GitHub modal * Select plan page uses the MainCenteredContainer * Better logging from the Loops endpoint because this error finally got hit * Move the ingestion of compute to the platform * Reporting usage of invocations moved to the platform * Get the entitlement before triggering a non-dev task * Contact us enterprise plan button opens the feedback form * Removed Github discussions link from the Feedback panel * Swapped billing icon for credit card * Show a Unlock staging panel on the env var page * Updated staging environment colour * Show a prompt to upgrade to get staging in the new env var modal * Improved the edit env var modal * Implement ability to disable org concurrency * Use common logic for the plans * Use the billing server to get the schedule limits * Some schedules page fixes * More convenient way of getting a limit * Use the new schedule limit * Team member limiting * Made the limit visible on the team page * Limit alerts * Added an index for TaskRun.scheduleId * Remove console.log on schedules page * Added durations to the run table * Tabular numbers * Improved the usage page formatting * Only admins see the compute column on the run table * Include the base cost on the usage stats * Moved the status to the sidebar * Optional table header tooltip * Allow InfoIconTooltips to have customizable content styles * Added a tooltip to the duration header, changed no test to a dash * Removed all references to signing up to v3 from the docs * Switched @trigger.dev/billing to @trigger.dev/platform * Passing up the variant for the InfoIconTooltip * table tooltip max-width fixed * Switch to the published @trigger.dev/platform 1.0.11 * v2 usage page title changed to include “v2" * code theme has a transparent background so it works on any background * duration columns now grouped together nicely at wide screen size * Last duration column fills the width properly * Fix for the per run price being in cents not dollars * Show the total cost with 8 decimal places * Show 8 decimal places in the usage graph tooltip * Moved the UpgradePrompt to the v3 folder * Prepare to use Shadcns chart helpers * Much nicer chart * Small tweaks to the graph * Fix run table col spans for empty/loading messages * We don’t need isManagedCloud in createProject * Hide v3 usage/billing pages if there aren’t v3 projects in your org * Removed unused tooltipStyle * Usage bar now says “Included usage” instead of “Tier limit” if you’re paying * Get the plan/usage data in parallel * The usage page now has a month dropdown and all data is for that calendar month * Ensure the passed date is the 1st of the month * Use the machine presets from the platform package --------- Co-authored-by: James Ritchie <james@jamesritchie.co.uk> Co-authored-by: Eric Allam <eallam@icloud.com>
289 lines
6.5 KiB
JavaScript
289 lines
6.5 KiB
JavaScript
/** @type {import('tailwindcss').Config} */
|
|
const colors = require("tailwindcss/colors");
|
|
|
|
// V2
|
|
const slate = {
|
|
450: "#7E8FA6",
|
|
500: "#6B7C95",
|
|
550: "#586981",
|
|
600: "#45566D",
|
|
650: "#3C4B62",
|
|
750: "#293649",
|
|
850: "#1A2434",
|
|
900: "#131B2B",
|
|
950: "#0E1521",
|
|
1000: "#0B1018",
|
|
};
|
|
|
|
const toxic = {
|
|
50: "#E3FFE6",
|
|
100: "#C8FFCD",
|
|
200: "#A9FFAB",
|
|
300: "#8AFF96",
|
|
400: "#6DFC7B",
|
|
500: "#41FF54",
|
|
600: "#28F03C",
|
|
700: "#2AE03C",
|
|
800: "#22D834",
|
|
900: "#16CC28",
|
|
};
|
|
|
|
const acid = {
|
|
50: "#F9FFD1",
|
|
100: "#F6FFB6",
|
|
200: "#F3FF99",
|
|
300: "#EEFF82",
|
|
400: "#E7FF52",
|
|
500: "#DAF437",
|
|
600: "#C5E118",
|
|
700: "#B2CD0A",
|
|
800: "#A5BE07",
|
|
900: "#9FB802",
|
|
};
|
|
|
|
const midnight = {
|
|
...colors.slate,
|
|
450: colors.slate[850],
|
|
500: colors.slate[650],
|
|
550: colors.slate[700],
|
|
600: colors.slate[750],
|
|
650: colors.slate[800],
|
|
750: colors.slate[850],
|
|
800: colors.slate[900],
|
|
850: "#0E1521",
|
|
900: "#0B1018",
|
|
};
|
|
|
|
// V3
|
|
const charcoal = {
|
|
100: "#E8E9EC",
|
|
200: "#D7D9DD",
|
|
300: "#B5B8C0",
|
|
400: "#878C99",
|
|
500: "#5F6570",
|
|
600: "#3B3E45",
|
|
700: "#272A2E",
|
|
750: "#212327",
|
|
800: "#1A1B1F",
|
|
850: "#15171A",
|
|
900: "#121317",
|
|
950: "#0D0E12",
|
|
1000: "#0B0C0F",
|
|
};
|
|
|
|
const apple = {
|
|
100: "#E4FFC9",
|
|
200: "#CFFFA0",
|
|
300: "#BFFF81",
|
|
400: "#AFFF62",
|
|
500: "#A8FF53",
|
|
600: "#82D134",
|
|
700: "#6FB12F",
|
|
750: "#5E932A",
|
|
800: "#45711A",
|
|
850: "#2E4E10",
|
|
900: "#20370A",
|
|
950: "#152506",
|
|
};
|
|
|
|
const mint = {
|
|
50: "#F0FDF4",
|
|
100: "#DDFBE6",
|
|
200: "#BDF5D0",
|
|
300: "#87EBA9",
|
|
400: "#4FD97E",
|
|
500: "#28BF5C",
|
|
600: "#1B9E48",
|
|
700: "#197C3C",
|
|
800: "#196233",
|
|
900: "#16512C",
|
|
950: "#062D15",
|
|
};
|
|
|
|
const sun = {
|
|
50: "#FDFEE8",
|
|
100: "#FDFFC2",
|
|
200: "#FFFF89",
|
|
300: "#FFF852",
|
|
400: "#FDEA12",
|
|
500: "#ECCF06",
|
|
600: "#CCA302",
|
|
700: "#A37505",
|
|
800: "#865B0D",
|
|
900: "#724B11",
|
|
950: "#432705",
|
|
};
|
|
|
|
const lavender = {
|
|
50: "##f4f2ff",
|
|
100: "#eae8ff",
|
|
200: "#d7d4ff",
|
|
300: "#bab2ff",
|
|
400: "#826dff",
|
|
500: "#7655fd",
|
|
600: "#6532f5",
|
|
700: "#5620e1",
|
|
800: "#481abd",
|
|
900: "#3d189a",
|
|
950: "#230c69",
|
|
};
|
|
|
|
/** Trigger.dev custom palette */
|
|
|
|
/** Text colors */
|
|
const primary = apple[500];
|
|
const secondary = lavender[400];
|
|
const tertiary = charcoal[700];
|
|
const textLink = lavender[400];
|
|
const textDimmed = charcoal[400];
|
|
const textBright = charcoal[200];
|
|
const backgroundBright = charcoal[800];
|
|
const backgroundDimmed = charcoal[850];
|
|
const gridBright = charcoal[700];
|
|
const gridDimmed = charcoal[750];
|
|
const success = mint[500];
|
|
const pending = colors.blue[500];
|
|
const warning = colors.amber[500];
|
|
const error = colors.rose[600];
|
|
const devEnv = colors.pink[500];
|
|
const stagingEnv = colors.amber[400];
|
|
const prodEnv = mint[500];
|
|
|
|
/** Other variables */
|
|
const radius = "0.5rem";
|
|
|
|
/** @type {import('tailwindcss').Config} */
|
|
module.exports = {
|
|
content: [
|
|
"./app/**/*.{ts,jsx,tsx}",
|
|
// include packages if not transpiling
|
|
"../../packages/**/*.{ts,tsx}",
|
|
],
|
|
theme: {
|
|
container: {
|
|
center: true,
|
|
padding: "2rem",
|
|
screens: {
|
|
"2xl": "1400px",
|
|
},
|
|
},
|
|
extend: {
|
|
fontFamily: {
|
|
sans: ["Geist Variable", "Helvetica Neue", "Helvetica", "Arial", "sans-serif"],
|
|
mono: ["Geist Mono Variable", "monaco", "Consolas", "Lucida Console", "monospace"],
|
|
},
|
|
fontSize: {
|
|
xxs: [
|
|
"0.65rem",
|
|
{
|
|
lineHeight: "0.75rem",
|
|
letterSpacing: "-0.01em",
|
|
fontWeight: "500",
|
|
},
|
|
],
|
|
"2sm": [
|
|
"0.8125rem",
|
|
{
|
|
lineHeight: "0.875rem",
|
|
letterSpacing: "-0.01em",
|
|
fontWeight: "500",
|
|
},
|
|
],
|
|
},
|
|
colors: {
|
|
charcoal,
|
|
apple,
|
|
lavender,
|
|
mint,
|
|
sun,
|
|
primary,
|
|
secondary,
|
|
tertiary,
|
|
"text-link": textLink,
|
|
"text-dimmed": textDimmed,
|
|
"text-bright": textBright,
|
|
"background-bright": backgroundBright,
|
|
"background-dimmed": backgroundDimmed,
|
|
"grid-bright": gridBright,
|
|
"grid-dimmed": gridDimmed,
|
|
success,
|
|
pending,
|
|
warning,
|
|
error,
|
|
dev: devEnv,
|
|
staging: stagingEnv,
|
|
prod: prodEnv,
|
|
},
|
|
borderRadius: {
|
|
lg: radius,
|
|
md: `calc(${radius} - 2px)`,
|
|
sm: `calc(${radius} - 4px)`,
|
|
},
|
|
boxShadow: {
|
|
"glow-primary": "0 0 10px 5px rgba(218, 244, 55, 0.2)",
|
|
"glow-secondary": "0 0 10px 5px rgba(79, 70, 229, 0.2)",
|
|
"glow-pink": "0 0 10px 5px rgba(236, 72, 153, 0.2)",
|
|
},
|
|
outlineWidth: {
|
|
3: "3px",
|
|
},
|
|
textShadow: {
|
|
custom: "1px 1px 1px rgba(0, 0, 0, 0.5)", // Offset-X | Offset-Y | Blur radius | Color
|
|
},
|
|
keyframes: {
|
|
"accordion-down": {
|
|
from: { height: 0 },
|
|
to: { height: "var(--radix-accordion-content-height)" },
|
|
},
|
|
"accordion-up": {
|
|
from: { height: "var(--radix-accordion-content-height)" },
|
|
to: { height: 0 },
|
|
},
|
|
float: {
|
|
"0%": { transform: "translatey(0px)" },
|
|
"50%": { transform: "translatey(7px)" },
|
|
"100%": { transform: "translatey(0px)" },
|
|
},
|
|
"tile-move": {
|
|
"0%": { "background-position": "0px" },
|
|
"100%": { "background-position": "8px" },
|
|
},
|
|
},
|
|
animation: {
|
|
"accordion-down": "accordion-down 0.2s ease-out",
|
|
"accordion-up": "accordion-up 0.2s ease-out",
|
|
"tile-scroll": "tile-move 0.5s infinite linear",
|
|
},
|
|
backgroundImage: {
|
|
"gradient-radial": "radial-gradient(closest-side, var(--tw-gradient-stops))",
|
|
"gradient-primary": `linear-gradient(90deg, acid-500 0%, toxic-500 100%)`,
|
|
"gradient-primary-hover": `linear-gradient(80deg, acid-600 0%, toxic-600 100%)`,
|
|
"gradient-secondary": `linear-gradient(90deg, hsl(271 91 65) 0%, hsl(221 83 53) 100%)`,
|
|
"gradient-radial-secondary": `radial-gradient(hsl(271 91 65), hsl(221 83 53))`,
|
|
},
|
|
gridTemplateColumns: {
|
|
carousel: "repeat(6, 200px)",
|
|
},
|
|
screens: {
|
|
"lg-height": { raw: "(max-height: 750px)" },
|
|
"md-height": { raw: "(max-height: 600px)" },
|
|
},
|
|
width: {
|
|
0.75: "0.1875rem",
|
|
},
|
|
height: {
|
|
0.75: "0.1875rem",
|
|
},
|
|
},
|
|
},
|
|
plugins: [
|
|
require("@tailwindcss/container-queries"),
|
|
require("@tailwindcss/forms"),
|
|
require("@tailwindcss/typography"),
|
|
require("tailwindcss-animate"),
|
|
require("tailwind-scrollbar"),
|
|
require("tailwind-scrollbar-hide"),
|
|
require("tailwindcss-textshadow"),
|
|
],
|
|
};
|