logo dile-components dile-components

dile-time-duration

Web Component to display durations in a human-readable format. Converts seconds into compact or extended format (e.g., "1h 20m" or "1 hour and 20 minutes"), with support for multiple languages, precision levels, and custom icons.

Installation

npm i @dile/utils

Usage

Import the component in your JavaScript module:

import '@dile/utils/components/time-duration/time-duration.js';

And use it in your HTML:

<dile-time-duration seconds="3665"></dile-time-duration>

Properties

CSS custom properties

You can customize the component using the CSS custom properties below.

Custom property Description Default
--dile-time-duration-gap The gap between the icon and the text 0.25rem
--dile-time-duration-font-size The text font size 0.875rem
--dile-time-duration-color The text color var(--dile-on-background-color) fallback to #303030
--dile-time-duration-font-weight The text font weight normal
--dile-time-duration-font-family The text font family inherit
--dile-time-duration-letter-spacing The text letter spacing 0
--dile-time-duration-icon-size The icon size 20px
--dile-primary-color The icon color #888

Examples

Basic usage - compact format

<script type="module">
  import '@dile/utils/components/time-duration/time-duration.js';
</script>
<dile-time-duration seconds="80"></dile-time-duration>

1 hour and 1 minute

<dile-time-duration seconds="3665"></dile-time-duration>

Multiple days

<dile-time-duration seconds="90061"></dile-time-duration>

Extended format (verbose)

<dile-time-duration seconds="3665" extended></dile-time-duration>

Extended format in Spanish

<dile-time-duration seconds="3665" extended language="es"></dile-time-duration>

Different precision levels

Precision: seconds (shows day, hour, minute, second)

<dile-time-duration seconds="3665" precision="seconds"></dile-time-duration>

Precision: minutes (shows day, hour, minute)

<dile-time-duration seconds="3665" precision="minutes"></dile-time-duration>

Precision: hours (shows day, hour)

<dile-time-duration seconds="3665" precision="hours"></dile-time-duration>

Precision: days (shows only days)

<dile-time-duration seconds="90061" precision="days"></dile-time-duration>

Custom icon

<dile-time-duration seconds="3665" icon="material.timer"></dile-time-duration>

Without icon

<dile-time-duration seconds="3665" icon=""></dile-time-duration>

Custom styling

<style>
  .custom-duration {
    --dile-time-duration-font-size: 1.25rem;
    --dile-time-duration-color: #0066cc;
    --dile-time-duration-font-weight: bold;
    --dile-time-duration-icon-size: 24px;
    --dile-primary-color: #ff6b6b;
  }
</style>
<dile-time-duration class="custom-duration" seconds="3665"></dile-time-duration>

Behavior

The component always displays two time units to keep the output concise:

The precision attribute controls which units are available for display:

When extended format is enabled, the output is more verbose:

Language support: