@tanstack/devtools-ui 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/esm/components/button.js +21 -19
  2. package/dist/esm/components/button.js.map +1 -1
  3. package/dist/esm/components/checkbox.js +51 -50
  4. package/dist/esm/components/checkbox.js.map +1 -1
  5. package/dist/esm/components/header.js +38 -48
  6. package/dist/esm/components/header.js.map +1 -1
  7. package/dist/esm/components/icons.d.ts +2 -1
  8. package/dist/esm/components/icons.js +31 -50
  9. package/dist/esm/components/icons.js.map +1 -1
  10. package/dist/esm/components/input.js +53 -52
  11. package/dist/esm/components/input.js.map +1 -1
  12. package/dist/esm/components/logo.js +92 -91
  13. package/dist/esm/components/logo.js.map +1 -1
  14. package/dist/esm/components/main-panel.js +15 -19
  15. package/dist/esm/components/main-panel.js.map +1 -1
  16. package/dist/esm/components/section.js +47 -69
  17. package/dist/esm/components/section.js.map +1 -1
  18. package/dist/esm/components/select.js +55 -54
  19. package/dist/esm/components/select.js.map +1 -1
  20. package/dist/esm/components/tag.js +38 -37
  21. package/dist/esm/components/tag.js.map +1 -1
  22. package/dist/esm/components/theme.d.ts +4 -4
  23. package/dist/esm/components/theme.js +24 -26
  24. package/dist/esm/components/theme.js.map +1 -1
  25. package/dist/esm/components/tree.js +493 -517
  26. package/dist/esm/components/tree.js.map +1 -1
  27. package/dist/esm/icons.js +1 -24
  28. package/dist/esm/index.d.ts +1 -0
  29. package/dist/esm/index.js +3 -30
  30. package/dist/esm/styles/tokens.js +300 -189
  31. package/dist/esm/styles/tokens.js.map +1 -1
  32. package/dist/esm/styles/use-styles.js +337 -179
  33. package/dist/esm/styles/use-styles.js.map +1 -1
  34. package/package.json +2 -2
  35. package/src/components/button.tsx +14 -17
  36. package/src/components/icons.tsx +8 -6
  37. package/src/components/theme.tsx +5 -5
  38. package/src/index.ts +1 -0
  39. package/src/styles/use-styles.ts +179 -75
  40. package/dist/esm/icons.js.map +0 -1
  41. package/dist/esm/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"use-styles.js","sources":["../../../src/styles/use-styles.ts"],"sourcesContent":["import * as goober from 'goober'\nimport { createEffect, createSignal } from 'solid-js'\nimport { useTheme } from '../components/theme'\nimport { tokens } from './tokens'\nimport type { ButtonVariant } from '../components/button'\nimport type { Theme } from '../components/theme'\n\nconst buttonVariantColors: Record<\n ButtonVariant,\n { bg: string; hover: string; active: string; text: string; border: string }\n> = {\n primary: {\n bg: tokens.colors.gray[900],\n hover: tokens.colors.gray[800],\n active: tokens.colors.gray[700],\n text: '#fff',\n border: tokens.colors.gray[900],\n },\n secondary: {\n bg: tokens.colors.gray[100],\n hover: tokens.colors.gray[200],\n active: tokens.colors.gray[300],\n text: tokens.colors.gray[900],\n border: tokens.colors.gray[300],\n },\n info: {\n bg: tokens.colors.blue[500],\n hover: tokens.colors.blue[600],\n active: tokens.colors.blue[700],\n text: '#fff',\n border: tokens.colors.blue[500],\n },\n warning: {\n bg: tokens.colors.yellow[500],\n hover: tokens.colors.yellow[600],\n active: tokens.colors.yellow[700],\n text: '#fff',\n border: tokens.colors.yellow[500],\n },\n danger: {\n bg: tokens.colors.red[500],\n hover: tokens.colors.red[600],\n active: tokens.colors.red[700],\n text: '#fff',\n border: tokens.colors.red[500],\n },\n success: {\n bg: tokens.colors.green[500],\n hover: tokens.colors.green[600],\n active: tokens.colors.green[700],\n text: '#fff',\n border: tokens.colors.green[500],\n },\n}\nexport const css = goober.css\nconst stylesFactory = (theme: Theme = 'dark') => {\n const { colors, font, size, border } = tokens\n const { fontFamily } = font\n\n const t = (light: string, dark: string) => (theme === 'light' ? light : dark)\n\n const wrapperSize = 320\n\n return {\n logo: css`\n cursor: pointer;\n display: flex;\n flex-direction: column;\n background-color: transparent;\n border: none;\n width: ${size[12]};\n height: ${size[12]};\n font-family: ${fontFamily.sans};\n gap: ${tokens.size[0.5]};\n padding: 0px;\n &:hover {\n opacity: 0.7;\n }\n `,\n\n selectWrapper: css`\n width: 100%;\n max-width: ${wrapperSize}px;\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n `,\n selectContainer: css`\n width: 100%;\n `,\n selectLabel: css`\n font-size: 0.875rem;\n font-weight: 500;\n color: ${t(colors.gray[900], colors.gray[100])};\n text-align: left;\n `,\n selectDescription: css`\n font-size: 0.8rem;\n color: ${t(colors.gray[500], colors.gray[400])};\n margin: 0;\n line-height: 1.3;\n text-align: left;\n `,\n select: css`\n appearance: none;\n width: 100%;\n padding: 0.5rem 3rem 0.5rem 0.75rem;\n border-radius: 0.375rem;\n background-color: ${t(colors.gray[50], colors.darkGray[800])};\n color: ${t(colors.gray[900], colors.gray[100])};\n border: 1px solid ${t(colors.gray[200], colors.gray[800])};\n font-size: 0.875rem;\n transition: all 0.15s ease;\n cursor: pointer;\n\n /* Custom arrow */\n background-image: url(\"data:image/svg+xml;utf8,<svg fill='%236b7280' height='20' viewBox='0 0 24 24' width='20' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>\");\n background-repeat: no-repeat;\n background-position: right 0.75rem center;\n background-size: 1.25rem;\n\n &:hover {\n border-color: ${t(colors.gray[300], colors.gray[700])};\n }\n\n &:focus {\n outline: none;\n border-color: ${colors.gray[400]};\n box-shadow: 0 0 0 3px ${t(colors.gray[200], colors.gray[800])};\n }\n `,\n inputWrapper: css`\n width: 100%;\n max-width: ${wrapperSize}px;\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n `,\n inputContainer: css`\n width: 100%;\n `,\n inputLabel: css`\n font-size: 0.875rem;\n font-weight: 500;\n color: ${t(colors.gray[900], colors.gray[100])};\n text-align: left;\n `,\n inputDescription: css`\n font-size: 0.8rem;\n color: ${t(colors.gray[500], colors.gray[400])};\n margin: 0;\n line-height: 1.3;\n text-align: left;\n `,\n input: css`\n appearance: none;\n box-sizing: border-box;\n width: 100%;\n padding: 0.5rem 0.75rem;\n border-radius: 0.375rem;\n background-color: ${t(colors.gray[50], colors.darkGray[800])};\n color: ${t(colors.gray[900], colors.gray[100])};\n border: 1px solid ${t(colors.gray[200], colors.gray[800])};\n font-size: 0.875rem;\n font-family: ${fontFamily.mono};\n transition: all 0.15s ease;\n\n &::placeholder {\n color: ${t(colors.gray[400], colors.gray[500])};\n }\n\n &:hover {\n border-color: ${t(colors.gray[300], colors.gray[700])};\n }\n\n &:focus {\n outline: none;\n border-color: ${t(colors.gray[400], colors.gray[600])};\n box-shadow: 0 0 0 3px ${t(colors.gray[200], colors.gray[800])};\n }\n `,\n checkboxWrapper: css`\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n cursor: pointer;\n user-select: none;\n padding: 0.375rem;\n border-radius: 0.375rem;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${t(colors.gray[50], colors.darkGray[900])};\n }\n `,\n checkboxContainer: css`\n width: 100%;\n `,\n checkboxLabelContainer: css`\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n flex: 1;\n `,\n checkbox: css`\n appearance: none;\n width: 1.25rem;\n height: 1.25rem;\n border: 2px solid ${t(colors.gray[300], colors.gray[700])};\n border-radius: 0.25rem;\n background-color: ${t(colors.gray[50], colors.darkGray[800])};\n display: grid;\n place-items: center;\n transition: all 0.15s ease;\n flex-shrink: 0;\n margin-top: 0.125rem;\n\n &:hover {\n border-color: ${t(colors.gray[400], colors.gray[600])};\n }\n\n &:checked {\n background-color: ${t(colors.gray[900], colors.gray[100])};\n border-color: ${t(colors.gray[900], colors.gray[100])};\n }\n\n &:checked::after {\n content: '';\n width: 0.4rem;\n height: 0.6rem;\n border: solid ${t('#fff', colors.gray[900])};\n border-width: 0 2px 2px 0;\n transform: rotate(45deg);\n margin-top: -3px;\n }\n `,\n checkboxLabel: css`\n color: ${t(colors.gray[900], colors.gray[100])};\n font-size: 0.875rem;\n font-weight: 500;\n line-height: 1.4;\n text-align: left;\n `,\n checkboxDescription: css`\n color: ${t(colors.gray[500], colors.gray[400])};\n font-size: 0.8rem;\n line-height: 1.3;\n text-align: left;\n `,\n button: {\n base: css`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-family: ${tokens.font.fontFamily.sans};\n font-size: 0.8rem;\n font-weight: 500;\n border-radius: 0.375rem;\n padding: 0.375rem 0.75rem;\n cursor: pointer;\n transition:\n background 0.15s,\n color 0.15s,\n border 0.15s,\n box-shadow 0.15s;\n outline: none;\n border-width: 1px;\n border-style: solid;\n `,\n variant(variant: ButtonVariant, outline?: boolean, ghost?: boolean) {\n const v = buttonVariantColors[variant]\n if (ghost) {\n return css`\n background: transparent;\n color: ${t(v.bg, v.bg)};\n border-color: transparent;\n &:hover {\n background: ${t(colors.gray[100], colors.darkGray[800])};\n }\n &:active {\n background: ${t(colors.gray[200], colors.darkGray[700])};\n }\n `\n }\n if (outline) {\n return css`\n background: transparent;\n color: ${t(v.bg, v.bg)};\n border-color: ${t(v.bg, v.bg)};\n &:hover {\n background: ${t(colors.gray[50], colors.darkGray[800])};\n border-color: ${t(v.hover, v.hover)};\n }\n &:active {\n background: ${t(colors.gray[100], colors.darkGray[700])};\n border-color: ${t(v.active, v.active)};\n }\n `\n }\n // Default solid button\n return css`\n background: ${t(v.bg, v.bg)};\n color: ${t(v.text, v.text)};\n border-color: ${t(v.border, v.border)};\n &:hover {\n background: ${t(v.hover, v.hover)};\n border-color: ${t(v.hover, v.hover)};\n }\n &:active {\n background: ${t(v.active, v.active)};\n border-color: ${t(v.active, v.active)};\n }\n `\n },\n },\n tag: {\n dot: (color: keyof typeof tokens.colors) => css`\n width: ${tokens.size[1.5]};\n height: ${tokens.size[1.5]};\n border-radius: ${tokens.border.radius.full};\n background-color: ${t(\n tokens.colors[color][500],\n tokens.colors[color][500],\n )};\n `,\n base: css`\n display: flex;\n gap: ${tokens.size[1.5]};\n box-sizing: border-box;\n height: ${tokens.size[6.5]};\n background: ${t(colors.gray[50], colors.darkGray[500])};\n color: ${t(colors.gray[700], colors.gray[300])};\n border-radius: ${tokens.border.radius.sm};\n font-size: ${font.size.sm};\n padding: ${tokens.size[1]};\n padding-left: ${tokens.size[1.5]};\n align-items: center;\n font-weight: ${font.weight.medium};\n border: ${t('1px solid ' + colors.gray[300], '1px solid transparent')};\n user-select: none;\n position: relative;\n &:focus-visible {\n outline-offset: 2px;\n outline: 2px solid ${t(colors.blue[700], colors.blue[800])};\n }\n `,\n label: css`\n font-size: ${font.size.xs};\n `,\n count: css`\n font-size: ${font.size.xs};\n padding: 0 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${t(colors.gray[500], colors.gray[400])};\n background-color: ${t(colors.gray[200], colors.darkGray[300])};\n border-radius: 2px;\n font-variant-numeric: tabular-nums;\n height: ${tokens.size[4.5]};\n `,\n },\n tree: {\n info: css`\n color: ${t(colors.gray[500], colors.gray[500])};\n font-size: ${font.size.xs};\n margin-right: ${size[1]};\n `,\n actionButton: css`\n background-color: transparent;\n color: ${t(colors.gray[500], colors.gray[500])};\n border: none;\n display: inline-flex;\n padding: 0px;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n width: ${size[3]};\n height: ${size[3]};\n position: relative;\n z-index: 1;\n\n &:hover svg {\n color: ${t(colors.gray[600], colors.gray[400])};\n }\n\n &:focus-visible {\n border-radius: ${border.radius.xs};\n outline: 2px solid ${t(colors.blue[700], colors.blue[800])};\n outline-offset: 2px;\n }\n `,\n expanderContainer: css`\n position: relative;\n `,\n expander: css`\n position: absolute;\n cursor: pointer;\n left: -16px;\n top: 3px;\n & path {\n stroke: ${t(colors.blue[400], colors.blue[300])};\n }\n & svg {\n width: ${size[3]};\n height: ${size[3]};\n }\n\n display: inline-flex;\n align-items: center;\n transition: all 0.1s ease;\n `,\n expandedLine: (hasBorder: boolean) => css`\n display: block;\n padding-left: 0.75rem;\n margin-left: -0.7rem;\n ${hasBorder\n ? `border-left: 1px solid ${t(colors.blue[400], colors.blue[300])};`\n : ''}\n `,\n collapsible: css`\n cursor: pointer;\n transition: all 0.2s ease;\n &:hover {\n background-color: ${t(colors.gray[100], colors.darkGray[700])};\n border-radius: ${tokens.border.radius.sm};\n padding: 0 ${tokens.size[1]};\n }\n `,\n actions: css`\n display: inline-flex;\n margin-left: ${size[2]};\n gap: ${size[2]};\n align-items: center;\n & svg {\n height: 12px;\n width: 12px;\n }\n `,\n valueCollapsed: css`\n color: ${t(colors.gray[500], colors.gray[400])};\n `,\n valueFunction: css`\n color: ${t(colors.cyan[500], colors.cyan[400])};\n `,\n valueString: css`\n color: ${t(colors.green[500], colors.green[400])};\n `,\n valueNumber: css`\n color: ${t(colors.yellow[500], colors.yellow[400])};\n `,\n valueBoolean: css`\n color: ${t(colors.pink[500], colors.pink[400])};\n `,\n valueNull: css`\n color: ${t(colors.gray[500], colors.gray[400])};\n font-style: italic;\n `,\n valueKey: css`\n color: ${t(colors.blue[400], colors.blue[300])};\n `,\n valueBraces: css`\n color: ${colors.gray[500]};\n `,\n valueContainer: (isRoot: boolean) => css`\n display: block;\n margin-left: ${isRoot ? '0' : '1rem'};\n\n &:not(:hover) .actions {\n display: none;\n }\n\n &:hover .actions {\n display: inline-flex;\n }\n `,\n },\n header: {\n row: css`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: ${tokens.size[2]} ${tokens.size[2.5]};\n gap: ${tokens.size[2.5]};\n border-bottom: ${t(colors.gray[300], colors.darkGray[500])} 1px solid;\n align-items: center;\n `,\n logoAndToggleContainer: css`\n display: flex;\n gap: ${tokens.size[3]};\n align-items: center;\n & > button {\n padding: 0;\n background: transparent;\n border: none;\n display: flex;\n gap: ${size[0.5]};\n flex-direction: column;\n }\n `,\n logo: css`\n cursor: pointer;\n display: flex;\n flex-direction: column;\n background-color: transparent;\n border: none;\n gap: ${tokens.size[0.5]};\n padding: 0px;\n &:hover {\n opacity: 0.7;\n }\n &:focus-visible {\n outline-offset: 4px;\n border-radius: ${border.radius.xs};\n outline: 2px solid ${colors.blue[800]};\n }\n `,\n tanstackLogo: css`\n font-size: ${font.size.md};\n font-weight: ${font.weight.bold};\n line-height: ${font.lineHeight.xs};\n white-space: nowrap;\n color: ${t(colors.gray[700], colors.gray[300])};\n `,\n flavorLogo: (flavorLight: string, flavorDark: string) => css`\n font-weight: ${font.weight.semibold};\n font-size: ${font.size.xs};\n background: linear-gradient(to right, ${t(flavorLight, flavorDark)});\n background-clip: text;\n -webkit-background-clip: text;\n line-height: 1;\n -webkit-text-fill-color: transparent;\n white-space: nowrap;\n `,\n },\n section: {\n main: css`\n margin-bottom: 1.5rem;\n padding: 1rem;\n background-color: ${t(colors.gray[50], colors.darkGray[800])};\n border: 1px solid ${t(colors.gray[200], colors.gray[800])};\n border-radius: 0.5rem;\n box-shadow: none;\n `,\n title: css`\n font-size: 1rem;\n font-weight: 600;\n color: ${t(colors.gray[900], colors.gray[100])};\n margin: 0 0 0.75rem 0;\n padding-bottom: 0.5rem;\n border-bottom: 1px solid ${t(colors.gray[200], colors.gray[800])};\n display: flex;\n align-items: center;\n gap: 0.5rem;\n text-align: left;\n `,\n icon: css`\n height: 18px;\n width: 18px;\n & > svg {\n height: 100%;\n width: 100%;\n }\n color: ${t(colors.gray[700], colors.gray[400])};\n `,\n description: css`\n color: ${t(colors.gray[500], colors.gray[400])};\n font-size: 0.8rem;\n margin: 0 0 1rem 0;\n line-height: 1.4;\n text-align: left;\n `,\n },\n mainPanel: {\n panel: (withPadding: boolean) => css`\n padding: ${withPadding ? tokens.size[3] : 0};\n background: ${t(colors.gray[50], colors.darkGray[700])};\n overflow-y: auto;\n height: 100%;\n `,\n },\n }\n}\n\nexport function useStyles() {\n const { theme } = useTheme()\n const [styles, setStyles] = createSignal(stylesFactory(theme()))\n createEffect(() => {\n setStyles(stylesFactory(theme()))\n })\n return styles\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-styles.js","names":[],"sources":["../../../src/styles/use-styles.ts"],"sourcesContent":["import * as goober from 'goober'\nimport { createEffect, createSignal } from 'solid-js'\nimport { useTheme } from '../components/theme'\nimport { tokens } from './tokens'\n\nimport type { TanStackDevtoolsTheme } from '../components/theme'\nimport type { ButtonVariant } from '../components/button'\n\nconst buttonVariantColors: Record<\n ButtonVariant,\n {\n bg: { light: string; dark: string }\n hover: { light: string; dark: string }\n active: { light: string; dark: string }\n text: { light: string; dark: string }\n border: { light: string; dark: string }\n outline: { light: string; dark: string }\n outlineHover: { light: string; dark: string }\n }\n> = {\n primary: {\n bg: { light: tokens.colors.gray[900], dark: tokens.colors.gray[100] },\n hover: { light: tokens.colors.gray[800], dark: tokens.colors.gray[200] },\n active: { light: tokens.colors.gray[700], dark: tokens.colors.gray[300] },\n text: { light: '#fff', dark: tokens.colors.gray[900] },\n border: { light: tokens.colors.gray[800], dark: tokens.colors.gray[200] },\n outline: {\n light: tokens.colors.gray[900],\n dark: tokens.colors.gray[100],\n },\n outlineHover: {\n light: tokens.colors.gray[800],\n dark: tokens.colors.gray[200],\n },\n },\n secondary: {\n bg: { light: tokens.colors.gray[100], dark: tokens.colors.gray[100] },\n hover: { light: tokens.colors.gray[200], dark: tokens.colors.gray[200] },\n active: { light: tokens.colors.gray[300], dark: tokens.colors.gray[300] },\n text: { light: tokens.colors.gray[900], dark: tokens.colors.gray[900] },\n border: { light: tokens.colors.gray[300], dark: tokens.colors.gray[300] },\n outline: {\n light: tokens.colors.gray[700],\n dark: tokens.colors.gray[300],\n },\n outlineHover: {\n light: tokens.colors.gray[800],\n dark: tokens.colors.gray[200],\n },\n },\n info: {\n bg: { light: tokens.colors.blue[500], dark: tokens.colors.blue[500] },\n hover: { light: tokens.colors.blue[600], dark: tokens.colors.blue[600] },\n active: { light: tokens.colors.blue[700], dark: tokens.colors.blue[700] },\n text: { light: '#fff', dark: '#fff' },\n border: { light: tokens.colors.blue[500], dark: tokens.colors.blue[500] },\n outline: {\n light: tokens.colors.blue[700],\n dark: tokens.colors.blue[300],\n },\n outlineHover: {\n light: tokens.colors.blue[600],\n dark: tokens.colors.blue[200],\n },\n },\n warning: {\n bg: { light: tokens.colors.yellow[500], dark: tokens.colors.yellow[500] },\n hover: {\n light: tokens.colors.yellow[600],\n dark: tokens.colors.yellow[600],\n },\n active: {\n light: tokens.colors.yellow[700],\n dark: tokens.colors.yellow[700],\n },\n text: { light: '#fff', dark: '#fff' },\n border: {\n light: tokens.colors.yellow[500],\n dark: tokens.colors.yellow[500],\n },\n outline: {\n light: tokens.colors.yellow[700],\n dark: tokens.colors.yellow[300],\n },\n outlineHover: {\n light: tokens.colors.yellow[600],\n dark: tokens.colors.yellow[200],\n },\n },\n danger: {\n bg: { light: tokens.colors.red[500], dark: tokens.colors.red[500] },\n hover: { light: tokens.colors.red[600], dark: tokens.colors.red[600] },\n active: { light: tokens.colors.red[700], dark: tokens.colors.red[700] },\n text: { light: '#fff', dark: '#fff' },\n border: { light: tokens.colors.red[500], dark: tokens.colors.red[500] },\n outline: {\n light: tokens.colors.red[700],\n dark: tokens.colors.red[300],\n },\n outlineHover: {\n light: tokens.colors.red[600],\n dark: tokens.colors.red[200],\n },\n },\n success: {\n bg: { light: tokens.colors.green[500], dark: tokens.colors.green[500] },\n hover: { light: tokens.colors.green[600], dark: tokens.colors.green[600] },\n active: { light: tokens.colors.green[700], dark: tokens.colors.green[700] },\n text: { light: '#fff', dark: '#fff' },\n border: { light: tokens.colors.green[500], dark: tokens.colors.green[500] },\n outline: {\n light: tokens.colors.green[700],\n dark: tokens.colors.green[300],\n },\n outlineHover: {\n light: tokens.colors.green[600],\n dark: tokens.colors.green[200],\n },\n },\n}\nexport const css = goober.css\nconst stylesFactory = (theme: TanStackDevtoolsTheme) => {\n const { colors, font, size, border } = tokens\n const { fontFamily } = font\n\n const t = (light: string, dark: string) => (theme === 'light' ? light : dark)\n const buildButtonVariant = (variant: ButtonVariant) => {\n const v = buttonVariantColors[variant]\n const outlineColor = t(v.outline.light, v.outline.dark)\n const outlineHoverColor = t(v.outlineHover.light, v.outlineHover.dark)\n const solidBg = t(v.bg.light, v.bg.dark)\n const solidHover = t(v.hover.light, v.hover.dark)\n const solidActive = t(v.active.light, v.active.dark)\n const solidText = t(v.text.light, v.text.dark)\n const solidBorder = t(v.border.light, v.border.dark)\n\n return {\n ghost: css`\n background: transparent;\n color: ${outlineColor};\n border-color: transparent;\n &:hover {\n background: ${t(colors.gray[100], colors.darkGray[800])};\n color: ${outlineHoverColor};\n }\n &:active {\n background: ${t(colors.gray[200], colors.darkGray[700])};\n color: ${outlineHoverColor};\n }\n `,\n outline: css`\n background: transparent;\n color: ${outlineColor};\n border-color: ${outlineColor};\n &:hover {\n background: ${t(colors.gray[50], colors.darkGray[800])};\n color: ${outlineHoverColor};\n border-color: ${outlineHoverColor};\n }\n &:active {\n background: ${t(colors.gray[100], colors.darkGray[700])};\n color: ${outlineHoverColor};\n border-color: ${outlineHoverColor};\n }\n `,\n solid: css`\n background: ${solidBg};\n color: ${solidText};\n border-color: ${solidBorder};\n &:hover {\n background: ${solidHover};\n border-color: ${solidHover};\n box-shadow: ${t(\n tokens.shadow.xs('rgb(0 0 0 / 0.12)'),\n tokens.shadow.xs('rgb(0 0 0 / 0.5)'),\n )};\n }\n &:active {\n background: ${solidActive};\n border-color: ${solidActive};\n box-shadow: ${t(\n tokens.shadow.inner('rgb(0 0 0 / 0.2)'),\n tokens.shadow.inner('rgb(0 0 0 / 0.6)'),\n )};\n }\n `,\n }\n }\n const buttonVariants: Record<\n ButtonVariant,\n { ghost: string; outline: string; solid: string }\n > = {\n primary: buildButtonVariant('primary'),\n secondary: buildButtonVariant('secondary'),\n info: buildButtonVariant('info'),\n warning: buildButtonVariant('warning'),\n danger: buildButtonVariant('danger'),\n success: buildButtonVariant('success'),\n }\n\n const wrapperSize = 320\n\n return {\n logo: css`\n cursor: pointer;\n display: flex;\n flex-direction: column;\n background-color: transparent;\n border: none;\n width: ${size[12]};\n height: ${size[12]};\n font-family: ${fontFamily.sans};\n gap: ${tokens.size[0.5]};\n padding: 0;\n &:hover {\n opacity: 0.7;\n }\n `,\n\n selectWrapper: css`\n width: 100%;\n max-width: ${wrapperSize}px;\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n `,\n selectContainer: css`\n width: 100%;\n `,\n selectLabel: css`\n font-size: 0.875rem;\n font-weight: 500;\n color: ${t(colors.gray[900], colors.gray[100])};\n text-align: left;\n `,\n selectDescription: css`\n font-size: 0.8rem;\n color: ${t(colors.gray[500], colors.gray[400])};\n margin: 0;\n line-height: 1.3;\n text-align: left;\n `,\n select: css`\n appearance: none;\n width: 100%;\n padding: 0.5rem 3rem 0.5rem 0.75rem;\n border-radius: 0.375rem;\n background-color: ${t(colors.gray[50], colors.darkGray[800])};\n color: ${t(colors.gray[900], colors.gray[100])};\n border: 1px solid ${t(colors.gray[200], colors.gray[800])};\n font-size: 0.875rem;\n transition: all 0.15s ease;\n cursor: pointer;\n\n /* Custom arrow */\n background-image: url(\"data:image/svg+xml;utf8,<svg fill='%236b7280' height='20' viewBox='0 0 24 24' width='20' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>\");\n background-repeat: no-repeat;\n background-position: right 0.75rem center;\n background-size: 1.25rem;\n\n &:hover {\n border-color: ${t(colors.gray[300], colors.gray[700])};\n }\n\n &:focus {\n outline: none;\n border-color: ${colors.gray[400]};\n box-shadow: 0 0 0 3px ${t(colors.gray[200], colors.gray[800])};\n }\n `,\n inputWrapper: css`\n width: 100%;\n max-width: ${wrapperSize}px;\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n `,\n inputContainer: css`\n width: 100%;\n `,\n inputLabel: css`\n font-size: 0.875rem;\n font-weight: 500;\n color: ${t(colors.gray[900], colors.gray[100])};\n text-align: left;\n `,\n inputDescription: css`\n font-size: 0.8rem;\n color: ${t(colors.gray[500], colors.gray[400])};\n margin: 0;\n line-height: 1.3;\n text-align: left;\n `,\n input: css`\n appearance: none;\n box-sizing: border-box;\n width: 100%;\n padding: 0.5rem 0.75rem;\n border-radius: 0.375rem;\n background-color: ${t(colors.gray[50], colors.darkGray[800])};\n color: ${t(colors.gray[900], colors.gray[100])};\n border: 1px solid ${t(colors.gray[200], colors.gray[800])};\n font-size: 0.875rem;\n font-family: ${fontFamily.mono};\n transition: all 0.15s ease;\n\n &::placeholder {\n color: ${t(colors.gray[400], colors.gray[500])};\n }\n\n &:hover {\n border-color: ${t(colors.gray[300], colors.gray[700])};\n }\n\n &:focus {\n outline: none;\n border-color: ${t(colors.gray[400], colors.gray[600])};\n box-shadow: 0 0 0 3px ${t(colors.gray[200], colors.gray[800])};\n }\n `,\n checkboxWrapper: css`\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n cursor: pointer;\n user-select: none;\n padding: 0.375rem;\n border-radius: 0.375rem;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${t(colors.gray[50], colors.darkGray[900])};\n }\n `,\n checkboxContainer: css`\n width: 100%;\n `,\n checkboxLabelContainer: css`\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n flex: 1;\n `,\n checkbox: css`\n appearance: none;\n width: 1.25rem;\n height: 1.25rem;\n border: 2px solid ${t(colors.gray[300], colors.gray[700])};\n border-radius: 0.25rem;\n background-color: ${t(colors.gray[50], colors.darkGray[800])};\n display: grid;\n place-items: center;\n transition: all 0.15s ease;\n flex-shrink: 0;\n margin-top: 0.125rem;\n\n &:hover {\n border-color: ${t(colors.gray[400], colors.gray[600])};\n }\n\n &:checked {\n background-color: ${t(colors.gray[900], colors.gray[100])};\n border-color: ${t(colors.gray[900], colors.gray[100])};\n }\n\n &:checked::after {\n content: '';\n width: 0.4rem;\n height: 0.6rem;\n border: solid ${t('#fff', colors.gray[900])};\n border-width: 0 2px 2px 0;\n transform: rotate(45deg);\n margin-top: -3px;\n }\n `,\n checkboxLabel: css`\n color: ${t(colors.gray[900], colors.gray[100])};\n font-size: 0.875rem;\n font-weight: 500;\n line-height: 1.4;\n text-align: left;\n `,\n checkboxDescription: css`\n color: ${t(colors.gray[500], colors.gray[400])};\n font-size: 0.8rem;\n line-height: 1.3;\n text-align: left;\n `,\n button: {\n base: css`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-family: ${tokens.font.fontFamily.sans};\n font-size: 0.8rem;\n font-weight: 500;\n border-radius: 0.375rem;\n padding: 0.375rem 0.75rem;\n cursor: pointer;\n transition:\n background 0.15s,\n color 0.15s,\n border 0.15s,\n box-shadow 0.15s;\n outline: none;\n border-width: 1px;\n border-style: solid;\n `,\n variant(variant: ButtonVariant, outline?: boolean, ghost?: boolean) {\n const v = buttonVariants[variant]\n if (ghost) {\n return v.ghost\n }\n if (outline) {\n return v.outline\n }\n return v.solid\n },\n },\n tag: {\n dot: (color: keyof typeof tokens.colors) => css`\n width: ${tokens.size[1.5]};\n height: ${tokens.size[1.5]};\n border-radius: ${tokens.border.radius.full};\n background-color: ${t(\n tokens.colors[color][500],\n tokens.colors[color][500],\n )};\n `,\n base: css`\n display: flex;\n gap: ${tokens.size[1.5]};\n box-sizing: border-box;\n height: ${tokens.size[6.5]};\n background: ${t(colors.gray[50], colors.darkGray[500])};\n color: ${t(colors.gray[700], colors.gray[300])};\n border-radius: ${tokens.border.radius.sm};\n font-size: ${font.size.sm};\n padding: ${tokens.size[1]};\n padding-left: ${tokens.size[1.5]};\n align-items: center;\n font-weight: ${font.weight.medium};\n border: ${t('1px solid ' + colors.gray[300], '1px solid transparent')};\n user-select: none;\n position: relative;\n &:focus-visible {\n outline-offset: 2px;\n outline: 2px solid ${t(colors.blue[700], colors.blue[800])};\n }\n `,\n label: css`\n font-size: ${font.size.xs};\n `,\n count: css`\n font-size: ${font.size.xs};\n padding: 0 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${t(colors.gray[500], colors.gray[400])};\n background-color: ${t(colors.gray[200], colors.darkGray[300])};\n border-radius: 2px;\n font-variant-numeric: tabular-nums;\n height: ${tokens.size[4.5]};\n `,\n },\n tree: {\n info: css`\n color: ${t(colors.gray[500], colors.gray[500])};\n font-size: ${font.size.xs};\n margin-right: ${size[1]};\n `,\n actionButton: css`\n background-color: transparent;\n color: ${t(colors.gray[500], colors.gray[500])};\n border: none;\n display: inline-flex;\n padding: 0;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n width: ${size[3]};\n height: ${size[3]};\n position: relative;\n z-index: 1;\n\n &:hover svg {\n color: ${t(colors.gray[600], colors.gray[400])};\n }\n\n &:focus-visible {\n border-radius: ${border.radius.xs};\n outline: 2px solid ${t(colors.blue[700], colors.blue[800])};\n outline-offset: 2px;\n }\n `,\n expanderContainer: css`\n position: relative;\n `,\n expander: css`\n position: absolute;\n cursor: pointer;\n left: -16px;\n top: 3px;\n & path {\n stroke: ${t(colors.blue[400], colors.blue[300])};\n }\n & svg {\n width: ${size[3]};\n height: ${size[3]};\n }\n\n display: inline-flex;\n align-items: center;\n transition: all 0.1s ease;\n `,\n expandedLine: (hasBorder: boolean) => css`\n display: block;\n padding-left: 0.75rem;\n margin-left: -0.7rem;\n ${hasBorder\n ? `border-left: 1px solid ${t(colors.blue[400], colors.blue[300])};`\n : ''}\n `,\n collapsible: css`\n cursor: pointer;\n transition: all 0.2s ease;\n &:hover {\n background-color: ${t(colors.gray[100], colors.darkGray[700])};\n border-radius: ${tokens.border.radius.sm};\n padding: 0 ${tokens.size[1]};\n }\n `,\n actions: css`\n display: inline-flex;\n margin-left: ${size[2]};\n gap: ${size[2]};\n align-items: center;\n & svg {\n height: 12px;\n width: 12px;\n }\n `,\n valueCollapsed: css`\n color: ${t(colors.gray[500], colors.gray[400])};\n `,\n valueFunction: css`\n color: ${t(colors.cyan[500], colors.cyan[400])};\n `,\n valueString: css`\n color: ${t(colors.green[500], colors.green[400])};\n `,\n valueNumber: css`\n color: ${t(colors.yellow[500], colors.yellow[400])};\n `,\n valueBoolean: css`\n color: ${t(colors.pink[500], colors.pink[400])};\n `,\n valueNull: css`\n color: ${t(colors.gray[500], colors.gray[400])};\n font-style: italic;\n `,\n valueKey: css`\n color: ${t(colors.blue[400], colors.blue[300])};\n `,\n valueBraces: css`\n color: ${colors.gray[500]};\n `,\n valueContainer: (isRoot: boolean) => css`\n display: block;\n margin-left: ${isRoot ? '0' : '1rem'};\n\n &:not(:hover) .actions {\n display: none;\n }\n\n &:hover .actions {\n display: inline-flex;\n }\n `,\n },\n header: {\n row: css`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: ${tokens.size[2]} ${tokens.size[2.5]};\n gap: ${tokens.size[2.5]};\n border-bottom: ${t(colors.gray[300], colors.darkGray[500])} 1px solid;\n align-items: center;\n `,\n logoAndToggleContainer: css`\n display: flex;\n gap: ${tokens.size[3]};\n align-items: center;\n & > button {\n padding: 0;\n background: transparent;\n border: none;\n display: flex;\n gap: ${size[0.5]};\n flex-direction: column;\n }\n `,\n logo: css`\n cursor: pointer;\n display: flex;\n flex-direction: column;\n background-color: transparent;\n border: none;\n gap: ${tokens.size[0.5]};\n padding: 0;\n &:hover {\n opacity: 0.7;\n }\n &:focus-visible {\n outline-offset: 4px;\n border-radius: ${border.radius.xs};\n outline: 2px solid ${colors.blue[800]};\n }\n `,\n tanstackLogo: css`\n font-size: ${font.size.md};\n font-weight: ${font.weight.bold};\n line-height: ${font.lineHeight.xs};\n white-space: nowrap;\n color: ${t(colors.gray[700], colors.gray[300])};\n `,\n flavorLogo: (flavorLight: string, flavorDark: string) => css`\n font-weight: ${font.weight.semibold};\n font-size: ${font.size.xs};\n background: linear-gradient(to right, ${t(flavorLight, flavorDark)});\n background-clip: text;\n -webkit-background-clip: text;\n line-height: 1;\n -webkit-text-fill-color: transparent;\n white-space: nowrap;\n `,\n },\n section: {\n main: css`\n margin-bottom: 1.5rem;\n padding: 1rem;\n background-color: ${t(colors.gray[50], colors.darkGray[800])};\n border: 1px solid ${t(colors.gray[200], colors.gray[800])};\n border-radius: 0.5rem;\n box-shadow: none;\n `,\n title: css`\n font-size: 1rem;\n font-weight: 600;\n color: ${t(colors.gray[900], colors.gray[100])};\n margin: 0 0 0.75rem 0;\n padding-bottom: 0.5rem;\n border-bottom: 1px solid ${t(colors.gray[200], colors.gray[800])};\n display: flex;\n align-items: center;\n gap: 0.5rem;\n text-align: left;\n `,\n icon: css`\n height: 18px;\n width: 18px;\n & > svg {\n height: 100%;\n width: 100%;\n }\n color: ${t(colors.gray[700], colors.gray[400])};\n `,\n description: css`\n color: ${t(colors.gray[500], colors.gray[400])};\n font-size: 0.8rem;\n margin: 0 0 1rem 0;\n line-height: 1.4;\n text-align: left;\n `,\n },\n mainPanel: {\n panel: (withPadding: boolean) => css`\n padding: ${withPadding ? tokens.size[3] : 0};\n background: ${t(colors.gray[50], colors.darkGray[700])};\n overflow-y: auto;\n height: 100%;\n `,\n },\n }\n}\n\nexport function useStyles() {\n const { theme } = useTheme()\n const [styles, setStyles] = createSignal(stylesFactory(theme()))\n createEffect(() => {\n setStyles(stylesFactory(theme()))\n })\n return styles\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/devtools-ui",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "TanStack Devtools UI is a set of UI components for building devtool panels for your application.",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
@@ -53,7 +53,7 @@
53
53
  "solid-js": ">=1.9.7"
54
54
  },
55
55
  "devDependencies": {
56
- "vite-plugin-solid": "^2.11.8"
56
+ "vite-plugin-solid": "^2.11.11"
57
57
  },
58
58
  "scripts": {
59
59
  "clean": "premove ./build ./dist",
@@ -1,6 +1,8 @@
1
- import { splitProps } from 'solid-js'
1
+ import { createMemo } from 'solid-js'
2
2
  import clsx from 'clsx'
3
3
  import { useStyles } from '../styles/use-styles'
4
+
5
+ // types
4
6
  import type { JSX } from 'solid-js'
5
7
 
6
8
  export type ButtonVariant =
@@ -17,26 +19,21 @@ type ButtonProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {
17
19
  children?: any
18
20
  className?: string
19
21
  }
20
-
21
22
  export function Button(props: ButtonProps) {
22
23
  const styles = useStyles()
23
- const [local, rest] = splitProps(props, [
24
- 'variant',
25
- 'outline',
26
- 'ghost',
27
- 'children',
28
- 'className',
29
- ])
30
- const variant = local.variant || 'primary'
31
- const classes = clsx(
32
- styles().button.base,
33
- styles().button.variant(variant, local.outline, local.ghost),
34
- local.className,
35
- )
24
+
25
+ const classes = createMemo(() => {
26
+ const variant = props.variant || 'primary'
27
+ return clsx(
28
+ styles().button.base,
29
+ styles().button.variant(variant, props.outline, props.ghost),
30
+ props.className,
31
+ )
32
+ })
36
33
 
37
34
  return (
38
- <button {...rest} class={classes}>
39
- {local.children}
35
+ <button {...props} class={classes()}>
36
+ {props.children}
40
37
  </button>
41
38
  )
42
39
  }
@@ -1,5 +1,7 @@
1
1
  // import { Show, createUniqueId } from 'solid-js'
2
2
 
3
+ import type { TanStackDevtoolsTheme } from './theme'
4
+
3
5
  /* export function Search() {
4
6
  return (
5
7
  <svg
@@ -39,7 +41,7 @@ export function Trash() {
39
41
  </svg>
40
42
  )
41
43
  } */
42
- /*
44
+ /*
43
45
  export function ChevronDown() {
44
46
  return (
45
47
  <svg
@@ -466,7 +468,7 @@ export function Link() {
466
468
  </svg>
467
469
  )
468
470
  }
469
- /*
471
+ /*
470
472
 
471
473
  export function Pencil() {
472
474
  return (
@@ -696,7 +698,7 @@ export function PiP() {
696
698
  )
697
699
  }
698
700
 
699
- export function CopiedCopier(props: { theme: 'light' | 'dark' }) {
701
+ export function CopiedCopier(props: { theme: TanStackDevtoolsTheme }) {
700
702
  return (
701
703
  <svg
702
704
  width="24"
@@ -735,7 +737,7 @@ export function ErrorCopier() {
735
737
  </svg>
736
738
  )
737
739
  }
738
- /*
740
+ /*
739
741
  export function List() {
740
742
  return (
741
743
  <svg
@@ -755,7 +757,7 @@ export function List() {
755
757
  )
756
758
  }
757
759
 
758
- export function Check(props: { checked: boolean; theme: 'light' | 'dark' }) {
760
+ export function Check(props: { checked: boolean; theme: TanStackDevtoolsTheme }) {
759
761
  return (
760
762
  <>
761
763
  <Show when={props.checked}>
@@ -884,7 +886,7 @@ export function PauseCircle() {
884
886
  </svg>
885
887
  )
886
888
  } */
887
- /*
889
+ /*
888
890
  export function TanstackLogo() {
889
891
  const id = createUniqueId()
890
892
  return (
@@ -1,19 +1,19 @@
1
1
  import { createContext, createEffect, createSignal, useContext } from 'solid-js'
2
2
  import type { Accessor, JSX } from 'solid-js'
3
3
 
4
- export type Theme = 'light' | 'dark'
4
+ export type TanStackDevtoolsTheme = 'light' | 'dark'
5
5
 
6
6
  type ThemeContextValue = {
7
- theme: Accessor<Theme>
8
- setTheme: (theme: Theme) => void
7
+ theme: Accessor<TanStackDevtoolsTheme>
8
+ setTheme: (theme: TanStackDevtoolsTheme) => void
9
9
  }
10
10
  const ThemeContext = createContext<ThemeContextValue | undefined>(undefined)
11
11
 
12
12
  export const ThemeContextProvider = (props: {
13
13
  children: JSX.Element
14
- theme: Theme
14
+ theme: TanStackDevtoolsTheme
15
15
  }) => {
16
- const [theme, setTheme] = createSignal<Theme>(props.theme)
16
+ const [theme, setTheme] = createSignal<TanStackDevtoolsTheme>(props.theme)
17
17
  createEffect(() => {
18
18
  setTheme(props.theme)
19
19
  })
package/src/index.ts CHANGED
@@ -14,6 +14,7 @@ export {
14
14
  } from './components/section'
15
15
  export { Header, HeaderLogo } from './components/header'
16
16
  export { useTheme, ThemeContextProvider } from './components/theme'
17
+ export type { TanStackDevtoolsTheme } from './components/theme'
17
18
  export {
18
19
  CheckCircleIcon,
19
20
  ChevronDownIcon,
@@ -2,62 +2,201 @@ import * as goober from 'goober'
2
2
  import { createEffect, createSignal } from 'solid-js'
3
3
  import { useTheme } from '../components/theme'
4
4
  import { tokens } from './tokens'
5
+
6
+ import type { TanStackDevtoolsTheme } from '../components/theme'
5
7
  import type { ButtonVariant } from '../components/button'
6
- import type { Theme } from '../components/theme'
7
8
 
8
9
  const buttonVariantColors: Record<
9
10
  ButtonVariant,
10
- { bg: string; hover: string; active: string; text: string; border: string }
11
+ {
12
+ bg: { light: string; dark: string }
13
+ hover: { light: string; dark: string }
14
+ active: { light: string; dark: string }
15
+ text: { light: string; dark: string }
16
+ border: { light: string; dark: string }
17
+ outline: { light: string; dark: string }
18
+ outlineHover: { light: string; dark: string }
19
+ }
11
20
  > = {
12
21
  primary: {
13
- bg: tokens.colors.gray[900],
14
- hover: tokens.colors.gray[800],
15
- active: tokens.colors.gray[700],
16
- text: '#fff',
17
- border: tokens.colors.gray[900],
22
+ bg: { light: tokens.colors.gray[900], dark: tokens.colors.gray[100] },
23
+ hover: { light: tokens.colors.gray[800], dark: tokens.colors.gray[200] },
24
+ active: { light: tokens.colors.gray[700], dark: tokens.colors.gray[300] },
25
+ text: { light: '#fff', dark: tokens.colors.gray[900] },
26
+ border: { light: tokens.colors.gray[800], dark: tokens.colors.gray[200] },
27
+ outline: {
28
+ light: tokens.colors.gray[900],
29
+ dark: tokens.colors.gray[100],
30
+ },
31
+ outlineHover: {
32
+ light: tokens.colors.gray[800],
33
+ dark: tokens.colors.gray[200],
34
+ },
18
35
  },
19
36
  secondary: {
20
- bg: tokens.colors.gray[100],
21
- hover: tokens.colors.gray[200],
22
- active: tokens.colors.gray[300],
23
- text: tokens.colors.gray[900],
24
- border: tokens.colors.gray[300],
37
+ bg: { light: tokens.colors.gray[100], dark: tokens.colors.gray[100] },
38
+ hover: { light: tokens.colors.gray[200], dark: tokens.colors.gray[200] },
39
+ active: { light: tokens.colors.gray[300], dark: tokens.colors.gray[300] },
40
+ text: { light: tokens.colors.gray[900], dark: tokens.colors.gray[900] },
41
+ border: { light: tokens.colors.gray[300], dark: tokens.colors.gray[300] },
42
+ outline: {
43
+ light: tokens.colors.gray[700],
44
+ dark: tokens.colors.gray[300],
45
+ },
46
+ outlineHover: {
47
+ light: tokens.colors.gray[800],
48
+ dark: tokens.colors.gray[200],
49
+ },
25
50
  },
26
51
  info: {
27
- bg: tokens.colors.blue[500],
28
- hover: tokens.colors.blue[600],
29
- active: tokens.colors.blue[700],
30
- text: '#fff',
31
- border: tokens.colors.blue[500],
52
+ bg: { light: tokens.colors.blue[500], dark: tokens.colors.blue[500] },
53
+ hover: { light: tokens.colors.blue[600], dark: tokens.colors.blue[600] },
54
+ active: { light: tokens.colors.blue[700], dark: tokens.colors.blue[700] },
55
+ text: { light: '#fff', dark: '#fff' },
56
+ border: { light: tokens.colors.blue[500], dark: tokens.colors.blue[500] },
57
+ outline: {
58
+ light: tokens.colors.blue[700],
59
+ dark: tokens.colors.blue[300],
60
+ },
61
+ outlineHover: {
62
+ light: tokens.colors.blue[600],
63
+ dark: tokens.colors.blue[200],
64
+ },
32
65
  },
33
66
  warning: {
34
- bg: tokens.colors.yellow[500],
35
- hover: tokens.colors.yellow[600],
36
- active: tokens.colors.yellow[700],
37
- text: '#fff',
38
- border: tokens.colors.yellow[500],
67
+ bg: { light: tokens.colors.yellow[500], dark: tokens.colors.yellow[500] },
68
+ hover: {
69
+ light: tokens.colors.yellow[600],
70
+ dark: tokens.colors.yellow[600],
71
+ },
72
+ active: {
73
+ light: tokens.colors.yellow[700],
74
+ dark: tokens.colors.yellow[700],
75
+ },
76
+ text: { light: '#fff', dark: '#fff' },
77
+ border: {
78
+ light: tokens.colors.yellow[500],
79
+ dark: tokens.colors.yellow[500],
80
+ },
81
+ outline: {
82
+ light: tokens.colors.yellow[700],
83
+ dark: tokens.colors.yellow[300],
84
+ },
85
+ outlineHover: {
86
+ light: tokens.colors.yellow[600],
87
+ dark: tokens.colors.yellow[200],
88
+ },
39
89
  },
40
90
  danger: {
41
- bg: tokens.colors.red[500],
42
- hover: tokens.colors.red[600],
43
- active: tokens.colors.red[700],
44
- text: '#fff',
45
- border: tokens.colors.red[500],
91
+ bg: { light: tokens.colors.red[500], dark: tokens.colors.red[500] },
92
+ hover: { light: tokens.colors.red[600], dark: tokens.colors.red[600] },
93
+ active: { light: tokens.colors.red[700], dark: tokens.colors.red[700] },
94
+ text: { light: '#fff', dark: '#fff' },
95
+ border: { light: tokens.colors.red[500], dark: tokens.colors.red[500] },
96
+ outline: {
97
+ light: tokens.colors.red[700],
98
+ dark: tokens.colors.red[300],
99
+ },
100
+ outlineHover: {
101
+ light: tokens.colors.red[600],
102
+ dark: tokens.colors.red[200],
103
+ },
46
104
  },
47
105
  success: {
48
- bg: tokens.colors.green[500],
49
- hover: tokens.colors.green[600],
50
- active: tokens.colors.green[700],
51
- text: '#fff',
52
- border: tokens.colors.green[500],
106
+ bg: { light: tokens.colors.green[500], dark: tokens.colors.green[500] },
107
+ hover: { light: tokens.colors.green[600], dark: tokens.colors.green[600] },
108
+ active: { light: tokens.colors.green[700], dark: tokens.colors.green[700] },
109
+ text: { light: '#fff', dark: '#fff' },
110
+ border: { light: tokens.colors.green[500], dark: tokens.colors.green[500] },
111
+ outline: {
112
+ light: tokens.colors.green[700],
113
+ dark: tokens.colors.green[300],
114
+ },
115
+ outlineHover: {
116
+ light: tokens.colors.green[600],
117
+ dark: tokens.colors.green[200],
118
+ },
53
119
  },
54
120
  }
55
121
  export const css = goober.css
56
- const stylesFactory = (theme: Theme = 'dark') => {
122
+ const stylesFactory = (theme: TanStackDevtoolsTheme) => {
57
123
  const { colors, font, size, border } = tokens
58
124
  const { fontFamily } = font
59
125
 
60
126
  const t = (light: string, dark: string) => (theme === 'light' ? light : dark)
127
+ const buildButtonVariant = (variant: ButtonVariant) => {
128
+ const v = buttonVariantColors[variant]
129
+ const outlineColor = t(v.outline.light, v.outline.dark)
130
+ const outlineHoverColor = t(v.outlineHover.light, v.outlineHover.dark)
131
+ const solidBg = t(v.bg.light, v.bg.dark)
132
+ const solidHover = t(v.hover.light, v.hover.dark)
133
+ const solidActive = t(v.active.light, v.active.dark)
134
+ const solidText = t(v.text.light, v.text.dark)
135
+ const solidBorder = t(v.border.light, v.border.dark)
136
+
137
+ return {
138
+ ghost: css`
139
+ background: transparent;
140
+ color: ${outlineColor};
141
+ border-color: transparent;
142
+ &:hover {
143
+ background: ${t(colors.gray[100], colors.darkGray[800])};
144
+ color: ${outlineHoverColor};
145
+ }
146
+ &:active {
147
+ background: ${t(colors.gray[200], colors.darkGray[700])};
148
+ color: ${outlineHoverColor};
149
+ }
150
+ `,
151
+ outline: css`
152
+ background: transparent;
153
+ color: ${outlineColor};
154
+ border-color: ${outlineColor};
155
+ &:hover {
156
+ background: ${t(colors.gray[50], colors.darkGray[800])};
157
+ color: ${outlineHoverColor};
158
+ border-color: ${outlineHoverColor};
159
+ }
160
+ &:active {
161
+ background: ${t(colors.gray[100], colors.darkGray[700])};
162
+ color: ${outlineHoverColor};
163
+ border-color: ${outlineHoverColor};
164
+ }
165
+ `,
166
+ solid: css`
167
+ background: ${solidBg};
168
+ color: ${solidText};
169
+ border-color: ${solidBorder};
170
+ &:hover {
171
+ background: ${solidHover};
172
+ border-color: ${solidHover};
173
+ box-shadow: ${t(
174
+ tokens.shadow.xs('rgb(0 0 0 / 0.12)'),
175
+ tokens.shadow.xs('rgb(0 0 0 / 0.5)'),
176
+ )};
177
+ }
178
+ &:active {
179
+ background: ${solidActive};
180
+ border-color: ${solidActive};
181
+ box-shadow: ${t(
182
+ tokens.shadow.inner('rgb(0 0 0 / 0.2)'),
183
+ tokens.shadow.inner('rgb(0 0 0 / 0.6)'),
184
+ )};
185
+ }
186
+ `,
187
+ }
188
+ }
189
+ const buttonVariants: Record<
190
+ ButtonVariant,
191
+ { ghost: string; outline: string; solid: string }
192
+ > = {
193
+ primary: buildButtonVariant('primary'),
194
+ secondary: buildButtonVariant('secondary'),
195
+ info: buildButtonVariant('info'),
196
+ warning: buildButtonVariant('warning'),
197
+ danger: buildButtonVariant('danger'),
198
+ success: buildButtonVariant('success'),
199
+ }
61
200
 
62
201
  const wrapperSize = 320
63
202
 
@@ -72,7 +211,7 @@ const stylesFactory = (theme: Theme = 'dark') => {
72
211
  height: ${size[12]};
73
212
  font-family: ${fontFamily.sans};
74
213
  gap: ${tokens.size[0.5]};
75
- padding: 0px;
214
+ padding: 0;
76
215
  &:hover {
77
216
  opacity: 0.7;
78
217
  }
@@ -268,49 +407,14 @@ const stylesFactory = (theme: Theme = 'dark') => {
268
407
  border-style: solid;
269
408
  `,
270
409
  variant(variant: ButtonVariant, outline?: boolean, ghost?: boolean) {
271
- const v = buttonVariantColors[variant]
410
+ const v = buttonVariants[variant]
272
411
  if (ghost) {
273
- return css`
274
- background: transparent;
275
- color: ${t(v.bg, v.bg)};
276
- border-color: transparent;
277
- &:hover {
278
- background: ${t(colors.gray[100], colors.darkGray[800])};
279
- }
280
- &:active {
281
- background: ${t(colors.gray[200], colors.darkGray[700])};
282
- }
283
- `
412
+ return v.ghost
284
413
  }
285
414
  if (outline) {
286
- return css`
287
- background: transparent;
288
- color: ${t(v.bg, v.bg)};
289
- border-color: ${t(v.bg, v.bg)};
290
- &:hover {
291
- background: ${t(colors.gray[50], colors.darkGray[800])};
292
- border-color: ${t(v.hover, v.hover)};
293
- }
294
- &:active {
295
- background: ${t(colors.gray[100], colors.darkGray[700])};
296
- border-color: ${t(v.active, v.active)};
297
- }
298
- `
415
+ return v.outline
299
416
  }
300
- // Default solid button
301
- return css`
302
- background: ${t(v.bg, v.bg)};
303
- color: ${t(v.text, v.text)};
304
- border-color: ${t(v.border, v.border)};
305
- &:hover {
306
- background: ${t(v.hover, v.hover)};
307
- border-color: ${t(v.hover, v.hover)};
308
- }
309
- &:active {
310
- background: ${t(v.active, v.active)};
311
- border-color: ${t(v.active, v.active)};
312
- }
313
- `
417
+ return v.solid
314
418
  },
315
419
  },
316
420
  tag: {
@@ -371,7 +475,7 @@ const stylesFactory = (theme: Theme = 'dark') => {
371
475
  color: ${t(colors.gray[500], colors.gray[500])};
372
476
  border: none;
373
477
  display: inline-flex;
374
- padding: 0px;
478
+ padding: 0;
375
479
  align-items: center;
376
480
  justify-content: center;
377
481
  cursor: pointer;
@@ -505,7 +609,7 @@ const stylesFactory = (theme: Theme = 'dark') => {
505
609
  background-color: transparent;
506
610
  border: none;
507
611
  gap: ${tokens.size[0.5]};
508
- padding: 0px;
612
+ padding: 0;
509
613
  &:hover {
510
614
  opacity: 0.7;
511
615
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"icons.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}