import React, { useState, useEffect } from 'react'; import { createClient } from '@supabase/supabase-js'; interface User { id: string; email: string; name: string; } function App() { const [users, setUsers] = useState<User[]>([]); const [loading, setLoading] = useState(true); useEffect(() => { async function fetchUsers() { const { data, error } = await supabase .from('users') .select('*') .order('created_at', { ascending: false }); if (error) { console.error('Error fetching users:', error); return; } setUsers(data || []); setLoading(false); } fetchUsers(); }, []); return ( <div className="container mx-auto px-4"> <h1 className="text-3xl font-bold">User Management</h1> {loading ? ( <div>Loading...</div> ) : ( <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"> {users.map((user) => ( <UserCard key={user.id} user={user} /> ))} </div> )} </div> ); }import React, { useState, useEffect } from 'react'; import { createClient } from '@supabase/supabase-js'; interface User { id: string; email: string; name: string; } function App() { const [users, setUsers] = useState<User[]>([]); const [loading, setLoading] = useState(true); useEffect(() => { async function fetchUsers() { const { data, error } = await supabase .from('users') .select('*') .order('created_at', { ascending: false }); if (error) { console.error('Error fetching users:', error); return; } setUsers(data || []); setLoading(false); } fetchUsers(); }, []); return ( <div className="container mx-auto px-4"> <h1 className="text-3xl font-bold">User Management</h1> {loading ? ( <div>Loading...</div> ) : ( <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"> {users.map((user) => ( <UserCard key={user.id} user={user} /> ))} </div> )} </div> ); }import React, { useState, useEffect } from 'react'; import { createClient } from '@supabase/supabase-js'; interface User { id: string; email: string; name: string; } function App() { const [users, setUsers] = useState<User[]>([]); const [loading, setLoading] = useState(true); useEffect(() => { async function fetchUsers() { const { data, error } = await supabase .from('users') .select('*') .order('created_at', { ascending: false }); if (error) { console.error('Error fetching users:', error); return; } setUsers(data || []); setLoading(false); } fetchUsers(); }, []); return ( <div className="container mx-auto px-4"> <h1 className="text-3xl font-bold">User Management</h1> {loading ? ( <div>Loading...</div> ) : ( <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"> {users.map((user) => ( <UserCard key={user.id} user={user} /> ))} </div> )} </div> ); }import React, { useState, useEffect } from 'react'; import { createClient } from '@supabase/supabase-js'; interface User { id: string; email: string; name: string; } function App() { const [users, setUsers] = useState<User[]>([]); const [loading, setLoading] = useState(true); useEffect(() => { async function fetchUsers() { const { data, error } = await supabase .from('users') .select('*') .order('created_at', { ascending: false }); if (error) { console.error('Error fetching users:', error); return; } setUsers(data || []); setLoading(false); } fetchUsers(); }, []); return ( <div className="container mx-auto px-4"> <h1 className="text-3xl font-bold">User Management</h1> {loading ? ( <div>Loading...</div> ) : ( <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"> {users.map((user) => ( <UserCard key={user.id} user={user} /> ))} </div> )} </div> ); }import React, { useState, useEffect } from 'react'; import { createClient } from '@supabase/supabase-js'; interface User { id: string; email: string; name: string; } function App() { const [users, setUsers] = useState<User[]>([]); const [loading, setLoading] = useState(true); useEffect(() => { async function fetchUsers() { const { data, error } = await supabase .from('users') .select('*') .order('created_at', { ascending: false }); if (error) { console.error('Error fetching users:', error); return; } setUsers(data || []); setLoading(false); } fetchUsers(); }, []); return ( <div className="container mx-auto px-4"> <h1 className="text-3xl font-bold">User Management</h1> {loading ? ( <div>Loading...</div> ) : ( <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"> {users.map((user) => ( <UserCard key={user.id} user={user} /> ))} </div> )} </div> ); }import React, { useState, useEffect } from 'react'; import { createClient } from '@supabase/supabase-js'; interface User { id: string; email: string; name: string; } function App() { const [users, setUsers] = useState<User[]>([]); const [loading, setLoading] = useState(true); useEffect(() => { async function fetchUsers() { const { data, error } = await supabase .from('users') .select('*') .order('created_at', { ascending: false }); if (error) { console.error('Error fetching users:', error); return; } setUsers(data || []); setLoading(false); } fetchUsers(); }, []); return ( <div className="container mx-auto px-4"> <h1 className="text-3xl font-bold">User Management</h1> {loading ? ( <div>Loading...</div> ) : ( <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"> {users.map((user) => ( <UserCard key={user.id} user={user} /> ))} </div> )} </div> ); }import React, { useState, useEffect } from 'react'; import { createClient } from '@supabase/supabase-js'; interface User { id: string; email: string; name: string; } function App() { const [users, setUsers] = useState<User[]>([]); const [loading, setLoading] = useState(true); useEffect(() => { async function fetchUsers() { const { data, error } = await supabase .from('users') .select('*') .order('created_at', { ascending: false }); if (error) { console.error('Error fetching users:', error); return; } setUsers(data || []); setLoading(false); } fetchUsers(); }, []); return ( <div className="container mx-auto px-4"> <h1 className="text-3xl font-bold">User Management</h1> {loading ? ( <div>Loading...</div> ) : ( <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"> {users.map((user) => ( <UserCard key={user.id} user={user} /> ))} </div> )} </div> ); }import React, { useState, useEffect } from 'react'; import { createClient } from '@supabase/supabase-js'; interface User { id: string; email: string; name: string; } function App() { const [users, setUsers] = useState<User[]>([]); const [loading, setLoading] = useState(true); useEffect(() => { async function fetchUsers() { const { data, error } = await supabase .from('users') .select('*') .order('created_at', { ascending: false }); if (error) { console.error('Error fetching users:', error); return; } setUsers(data || []); setLoading(false); } fetchUsers(); }, []); return ( <div className="container mx-auto px-4"> <h1 className="text-3xl font-bold">User Management</h1> {loading ? ( <div>Loading...</div> ) : ( <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"> {users.map((user) => ( <UserCard key={user.id} user={user} /> ))} </div> )} </div> ); }
import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; interface TodoItem { id: number; text: string; completed: boolean; } export function TodoList() { const [todos, setTodos] = useState<TodoItem[]>([]); const [newTodo, setNewTodo] = useState(''); const addTodo = () => { if (!newTodo.trim()) return; setTodos([ ...todos, { id: Date.now(), text: newTodo, completed: false } ]); setNewTodo(''); }; const toggleTodo = (id: number) => { setTodos(todos.map(todo => todo.id === id ? { ...todo, completed: !todo.completed } : todo )); }; return ( <div className="max-w-md mx-auto p-4"> <div className="flex gap-2 mb-4"> <input type="text" value={newTodo} onChange={(e) => setNewTodo(e.target.value)} className="flex-1 px-3 py-2 rounded-lg" placeholder="Add new todo..." /> <button onClick={addTodo} className="px-4 py-2 bg-blue-500 text-white rounded-lg" > Add </button> </div> </div> ); }import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; interface TodoItem { id: number; text: string; completed: boolean; } export function TodoList() { const [todos, setTodos] = useState<TodoItem[]>([]); const [newTodo, setNewTodo] = useState(''); const addTodo = () => { if (!newTodo.trim()) return; setTodos([ ...todos, { id: Date.now(), text: newTodo, completed: false } ]); setNewTodo(''); }; const toggleTodo = (id: number) => { setTodos(todos.map(todo => todo.id === id ? { ...todo, completed: !todo.completed } : todo )); }; return ( <div className="max-w-md mx-auto p-4"> <div className="flex gap-2 mb-4"> <input type="text" value={newTodo} onChange={(e) => setNewTodo(e.target.value)} className="flex-1 px-3 py-2 rounded-lg" placeholder="Add new todo..." /> <button onClick={addTodo} className="px-4 py-2 bg-blue-500 text-white rounded-lg" > Add </button> </div> </div> ); }import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; interface TodoItem { id: number; text: string; completed: boolean; } export function TodoList() { const [todos, setTodos] = useState<TodoItem[]>([]); const [newTodo, setNewTodo] = useState(''); const addTodo = () => { if (!newTodo.trim()) return; setTodos([ ...todos, { id: Date.now(), text: newTodo, completed: false } ]); setNewTodo(''); }; const toggleTodo = (id: number) => { setTodos(todos.map(todo => todo.id === id ? { ...todo, completed: !todo.completed } : todo )); }; return ( <div className="max-w-md mx-auto p-4"> <div className="flex gap-2 mb-4"> <input type="text" value={newTodo} onChange={(e) => setNewTodo(e.target.value)} className="flex-1 px-3 py-2 rounded-lg" placeholder="Add new todo..." /> <button onClick={addTodo} className="px-4 py-2 bg-blue-500 text-white rounded-lg" > Add </button> </div> </div> ); }import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; interface TodoItem { id: number; text: string; completed: boolean; } export function TodoList() { const [todos, setTodos] = useState<TodoItem[]>([]); const [newTodo, setNewTodo] = useState(''); const addTodo = () => { if (!newTodo.trim()) return; setTodos([ ...todos, { id: Date.now(), text: newTodo, completed: false } ]); setNewTodo(''); }; const toggleTodo = (id: number) => { setTodos(todos.map(todo => todo.id === id ? { ...todo, completed: !todo.completed } : todo )); }; return ( <div className="max-w-md mx-auto p-4"> <div className="flex gap-2 mb-4"> <input type="text" value={newTodo} onChange={(e) => setNewTodo(e.target.value)} className="flex-1 px-3 py-2 rounded-lg" placeholder="Add new todo..." /> <button onClick={addTodo} className="px-4 py-2 bg-blue-500 text-white rounded-lg" > Add </button> </div> </div> ); }import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; interface TodoItem { id: number; text: string; completed: boolean; } export function TodoList() { const [todos, setTodos] = useState<TodoItem[]>([]); const [newTodo, setNewTodo] = useState(''); const addTodo = () => { if (!newTodo.trim()) return; setTodos([ ...todos, { id: Date.now(), text: newTodo, completed: false } ]); setNewTodo(''); }; const toggleTodo = (id: number) => { setTodos(todos.map(todo => todo.id === id ? { ...todo, completed: !todo.completed } : todo )); }; return ( <div className="max-w-md mx-auto p-4"> <div className="flex gap-2 mb-4"> <input type="text" value={newTodo} onChange={(e) => setNewTodo(e.target.value)} className="flex-1 px-3 py-2 rounded-lg" placeholder="Add new todo..." /> <button onClick={addTodo} className="px-4 py-2 bg-blue-500 text-white rounded-lg" > Add </button> </div> </div> ); }import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; interface TodoItem { id: number; text: string; completed: boolean; } export function TodoList() { const [todos, setTodos] = useState<TodoItem[]>([]); const [newTodo, setNewTodo] = useState(''); const addTodo = () => { if (!newTodo.trim()) return; setTodos([ ...todos, { id: Date.now(), text: newTodo, completed: false } ]); setNewTodo(''); }; const toggleTodo = (id: number) => { setTodos(todos.map(todo => todo.id === id ? { ...todo, completed: !todo.completed } : todo )); }; return ( <div className="max-w-md mx-auto p-4"> <div className="flex gap-2 mb-4"> <input type="text" value={newTodo} onChange={(e) => setNewTodo(e.target.value)} className="flex-1 px-3 py-2 rounded-lg" placeholder="Add new todo..." /> <button onClick={addTodo} className="px-4 py-2 bg-blue-500 text-white rounded-lg" > Add </button> </div> </div> ); }import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; interface TodoItem { id: number; text: string; completed: boolean; } export function TodoList() { const [todos, setTodos] = useState<TodoItem[]>([]); const [newTodo, setNewTodo] = useState(''); const addTodo = () => { if (!newTodo.trim()) return; setTodos([ ...todos, { id: Date.now(), text: newTodo, completed: false } ]); setNewTodo(''); }; const toggleTodo = (id: number) => { setTodos(todos.map(todo => todo.id === id ? { ...todo, completed: !todo.completed } : todo )); }; return ( <div className="max-w-md mx-auto p-4"> <div className="flex gap-2 mb-4"> <input type="text" value={newTodo} onChange={(e) => setNewTodo(e.target.value)} className="flex-1 px-3 py-2 rounded-lg" placeholder="Add new todo..." /> <button onClick={addTodo} className="px-4 py-2 bg-blue-500 text-white rounded-lg" > Add </button> </div> </div> ); }import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; interface TodoItem { id: number; text: string; completed: boolean; } export function TodoList() { const [todos, setTodos] = useState<TodoItem[]>([]); const [newTodo, setNewTodo] = useState(''); const addTodo = () => { if (!newTodo.trim()) return; setTodos([ ...todos, { id: Date.now(), text: newTodo, completed: false } ]); setNewTodo(''); }; const toggleTodo = (id: number) => { setTodos(todos.map(todo => todo.id === id ? { ...todo, completed: !todo.completed } : todo )); }; return ( <div className="max-w-md mx-auto p-4"> <div className="flex gap-2 mb-4"> <input type="text" value={newTodo} onChange={(e) => setNewTodo(e.target.value)} className="flex-1 px-3 py-2 rounded-lg" placeholder="Add new todo..." /> <button onClick={addTodo} className="px-4 py-2 bg-blue-500 text-white rounded-lg" > Add </button> </div> </div> ); }
import { createContext, useContext, useReducer } from 'react'; interface Theme { primary: string; secondary: string; background: string; text: string; } type ThemeMode = 'light' | 'dark' | 'system'; interface ThemeState { mode: ThemeMode; theme: Theme; } type ThemeAction = | { type: 'SET_MODE'; mode: ThemeMode } | { type: 'CUSTOMIZE_THEME'; theme: Partial<Theme> }; const ThemeContext = createContext<{ state: ThemeState; dispatch: React.Dispatch<ThemeAction>; } | null>(null); function themeReducer(state: ThemeState, action: ThemeAction): ThemeState { switch (action.type) { case 'SET_MODE': return { ...state, mode: action.mode, theme: getThemeByMode(action.mode) }; case 'CUSTOMIZE_THEME': return { ...state, theme: { ...state.theme, ...action.theme } }; default: return state; } }import { createContext, useContext, useReducer } from 'react'; interface Theme { primary: string; secondary: string; background: string; text: string; } type ThemeMode = 'light' | 'dark' | 'system'; interface ThemeState { mode: ThemeMode; theme: Theme; } type ThemeAction = | { type: 'SET_MODE'; mode: ThemeMode } | { type: 'CUSTOMIZE_THEME'; theme: Partial<Theme> }; const ThemeContext = createContext<{ state: ThemeState; dispatch: React.Dispatch<ThemeAction>; } | null>(null); function themeReducer(state: ThemeState, action: ThemeAction): ThemeState { switch (action.type) { case 'SET_MODE': return { ...state, mode: action.mode, theme: getThemeByMode(action.mode) }; case 'CUSTOMIZE_THEME': return { ...state, theme: { ...state.theme, ...action.theme } }; default: return state; } }import { createContext, useContext, useReducer } from 'react'; interface Theme { primary: string; secondary: string; background: string; text: string; } type ThemeMode = 'light' | 'dark' | 'system'; interface ThemeState { mode: ThemeMode; theme: Theme; } type ThemeAction = | { type: 'SET_MODE'; mode: ThemeMode } | { type: 'CUSTOMIZE_THEME'; theme: Partial<Theme> }; const ThemeContext = createContext<{ state: ThemeState; dispatch: React.Dispatch<ThemeAction>; } | null>(null); function themeReducer(state: ThemeState, action: ThemeAction): ThemeState { switch (action.type) { case 'SET_MODE': return { ...state, mode: action.mode, theme: getThemeByMode(action.mode) }; case 'CUSTOMIZE_THEME': return { ...state, theme: { ...state.theme, ...action.theme } }; default: return state; } }import { createContext, useContext, useReducer } from 'react'; interface Theme { primary: string; secondary: string; background: string; text: string; } type ThemeMode = 'light' | 'dark' | 'system'; interface ThemeState { mode: ThemeMode; theme: Theme; } type ThemeAction = | { type: 'SET_MODE'; mode: ThemeMode } | { type: 'CUSTOMIZE_THEME'; theme: Partial<Theme> }; const ThemeContext = createContext<{ state: ThemeState; dispatch: React.Dispatch<ThemeAction>; } | null>(null); function themeReducer(state: ThemeState, action: ThemeAction): ThemeState { switch (action.type) { case 'SET_MODE': return { ...state, mode: action.mode, theme: getThemeByMode(action.mode) }; case 'CUSTOMIZE_THEME': return { ...state, theme: { ...state.theme, ...action.theme } }; default: return state; } }import { createContext, useContext, useReducer } from 'react'; interface Theme { primary: string; secondary: string; background: string; text: string; } type ThemeMode = 'light' | 'dark' | 'system'; interface ThemeState { mode: ThemeMode; theme: Theme; } type ThemeAction = | { type: 'SET_MODE'; mode: ThemeMode } | { type: 'CUSTOMIZE_THEME'; theme: Partial<Theme> }; const ThemeContext = createContext<{ state: ThemeState; dispatch: React.Dispatch<ThemeAction>; } | null>(null); function themeReducer(state: ThemeState, action: ThemeAction): ThemeState { switch (action.type) { case 'SET_MODE': return { ...state, mode: action.mode, theme: getThemeByMode(action.mode) }; case 'CUSTOMIZE_THEME': return { ...state, theme: { ...state.theme, ...action.theme } }; default: return state; } }import { createContext, useContext, useReducer } from 'react'; interface Theme { primary: string; secondary: string; background: string; text: string; } type ThemeMode = 'light' | 'dark' | 'system'; interface ThemeState { mode: ThemeMode; theme: Theme; } type ThemeAction = | { type: 'SET_MODE'; mode: ThemeMode } | { type: 'CUSTOMIZE_THEME'; theme: Partial<Theme> }; const ThemeContext = createContext<{ state: ThemeState; dispatch: React.Dispatch<ThemeAction>; } | null>(null); function themeReducer(state: ThemeState, action: ThemeAction): ThemeState { switch (action.type) { case 'SET_MODE': return { ...state, mode: action.mode, theme: getThemeByMode(action.mode) }; case 'CUSTOMIZE_THEME': return { ...state, theme: { ...state.theme, ...action.theme } }; default: return state; } }import { createContext, useContext, useReducer } from 'react'; interface Theme { primary: string; secondary: string; background: string; text: string; } type ThemeMode = 'light' | 'dark' | 'system'; interface ThemeState { mode: ThemeMode; theme: Theme; } type ThemeAction = | { type: 'SET_MODE'; mode: ThemeMode } | { type: 'CUSTOMIZE_THEME'; theme: Partial<Theme> }; const ThemeContext = createContext<{ state: ThemeState; dispatch: React.Dispatch<ThemeAction>; } | null>(null); function themeReducer(state: ThemeState, action: ThemeAction): ThemeState { switch (action.type) { case 'SET_MODE': return { ...state, mode: action.mode, theme: getThemeByMode(action.mode) }; case 'CUSTOMIZE_THEME': return { ...state, theme: { ...state.theme, ...action.theme } }; default: return state; } }import { createContext, useContext, useReducer } from 'react'; interface Theme { primary: string; secondary: string; background: string; text: string; } type ThemeMode = 'light' | 'dark' | 'system'; interface ThemeState { mode: ThemeMode; theme: Theme; } type ThemeAction = | { type: 'SET_MODE'; mode: ThemeMode } | { type: 'CUSTOMIZE_THEME'; theme: Partial<Theme> }; const ThemeContext = createContext<{ state: ThemeState; dispatch: React.Dispatch<ThemeAction>; } | null>(null); function themeReducer(state: ThemeState, action: ThemeAction): ThemeState { switch (action.type) { case 'SET_MODE': return { ...state, mode: action.mode, theme: getThemeByMode(action.mode) }; case 'CUSTOMIZE_THEME': return { ...state, theme: { ...state.theme, ...action.theme } }; default: return state; } }
Vi levererar framtidssäkrade tekniklösningar som driver digital transformation och skapar mätbart affärsvärde.
// Innovativ kod för framtiden const createSolution = async (requirements) => { const { vision, goals, challenges } = requirements; const solution = await AI.analyze({ input: challenges, context: vision, target: goals }); return optimize(solution); }; // Din framgång är vårt mål export default createSolution;
Moderna, snabba och användarvänliga webbapplikationer byggda med de senaste teknologierna.
Skalbara och robusta backend-system som möter era specifika verksamhetsbehov.
Intelligenta lösningar som automatiserar processer och ger värdefulla insikter från er data.
Kompletta e-handelslösningar som maximerar er försäljning online.
Sömlös integration mellan olika system och tjänster för effektivare arbetsflöden.
Datadrivna insikter och optimeringar för kontinuerlig förbättring.
Från startup till enterprise - vi levererar innovativa lösningar som håller jämna steg med den senaste tekniken och dina affärsbehov.
Med djup teknisk kunskap och strategiskt tänkande utvecklar vi skräddarsydda lösningar som driver tillväxt och skapar mätbart affärsvärde för din verksamhet.
Vi värdesätter din tid och återkommer inom 24 timmar med en konkret plan anpassad för dina specifika behov och mål.