wkkkis-hooks

use-battery-status (use-battery-status)

A React hook to access system battery information via the Battery Status API

v0.1.0

Usage

import { use-battery-status } from "@/hooks"
1"use client"; 2 3import React from "react"; 4 5import { Badge } from "@/components/ui/badge"; 6import { 7 Card, 8 CardContent, 9 CardDescription, 10 CardFooter, 11 CardHeader, 12 CardTitle, 13} from "@/components/ui/card"; 14 15import { cn } from "@/lib/utils"; 16 17import { useBatteryStatus } from "@/components/hooks/use-battery-status"; 18 19export function UseBatteryStatusDemo() { 20 const { supported, level, charging, chargingTime, dischargingTime } = 21 useBatteryStatus(); 22 23 if (!supported) { 24 return ( 25 <Card className="max-w-sm w-full"> 26 <CardHeader> 27 <CardTitle>useBatteryStatus</CardTitle> 28 <CardDescription> 29 Battery Status API is not supported in this browser. 30 </CardDescription> 31 </CardHeader> 32 </Card> 33 ); 34 } 35 36 const percentage = Math.round(level * 100); 37 38 return ( 39 <Card className="max-w-sm w-full"> 40 <CardHeader> 41 <CardTitle>useBatteryStatus</CardTitle> 42 <CardDescription> 43 Live system battery status using the Battery Status API. 44 </CardDescription> 45 </CardHeader> 46 <CardContent className="space-y-4"> 47 <div> 48 <span className="font-medium">Level:</span>{" "} 49 <span className="text-lg font-semibold">{percentage}%</span> 50 </div> 51 <div className="w-full"> 52 <progress 53 className="w-full h-2 rounded bg-gray-200" 54 value={percentage} 55 max={100} 56 /> 57 </div> 58 <Badge 59 variant="secondary" 60 className={cn( 61 "w-fit", 62 charging 63 ? "bg-green-500/30 border-green-500 text-green-300" 64 : "bg-red-500/30 border-red-500 text-red-300" 65 )} 66 > 67 {charging ? "Charging" : "Discharging"} 68 </Badge> 69 <CardFooter> 70 <p className="text-sm text-muted-foreground"> 71 Charging Time: {chargingTime}s, Discharging Time: {dischargingTime}s 72 </p> 73 </CardFooter> 74 </CardContent> 75 </Card> 76 ); 77} 78

Install

npx wkkkis-hooks add use-battery-status

Options

NameTypeDefaultDescription
supportedbooleanWhether the Battery Status API is supported
levelnumberCurrent battery level (0 to 1)
chargingbooleanWhether the battery is currently charging
chargingTimenumberTime in seconds until the battery is fully charged
dischargingTimenumberTime in seconds until the battery is fully discharged
Thehook returns an object with the following properties

Features

  • Real-time battery information with automatic updates via the Battery Status API events.
  • Graceful fallback when the API is not supported.
  • Simple and declarative interface for easy integration.

Files in this hook

SourceDestination
files/use-battery-status.tssrc/hooks/use-battery-status.ts