- Single-screen chat interface with Timmy's sovereign AI personality - Text messaging with real-time AI responses via server chat API - Voice recording and playback with waveform visualization - Image sharing (camera + photo library) with full-screen viewer - File attachments via document picker - Dark arcane theme matching the Timmy Time dashboard - Custom app icon with glowing T circuit design - Timmy system prompt ported from dashboard prompts.py - Unit tests for chat utilities and message types
34 lines
882 B
JavaScript
34 lines
882 B
JavaScript
const { themeColors } = require("./theme.config");
|
|
const plugin = require("tailwindcss/plugin");
|
|
|
|
const tailwindColors = Object.fromEntries(
|
|
Object.entries(themeColors).map(([name, swatch]) => [
|
|
name,
|
|
{
|
|
DEFAULT: `var(--color-${name})`,
|
|
light: swatch.light,
|
|
dark: swatch.dark,
|
|
},
|
|
]),
|
|
);
|
|
|
|
/** @type {import('tailwindcss').Config} */
|
|
module.exports = {
|
|
darkMode: "class",
|
|
// Scan all component and app files for Tailwind classes
|
|
content: ["./app/**/*.{js,ts,tsx}", "./components/**/*.{js,ts,tsx}", "./lib/**/*.{js,ts,tsx}", "./hooks/**/*.{js,ts,tsx}"],
|
|
|
|
presets: [require("nativewind/preset")],
|
|
theme: {
|
|
extend: {
|
|
colors: tailwindColors,
|
|
},
|
|
},
|
|
plugins: [
|
|
plugin(({ addVariant }) => {
|
|
addVariant("light", ':root:not([data-theme="dark"]) &');
|
|
addVariant("dark", ':root[data-theme="dark"] &');
|
|
}),
|
|
],
|
|
};
|