// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview
*
* 'settings-row' is a foundational component to build more complex types of
* rows (e.g. toggle row, slider, row, etc.). This component may also be used
* directly for simple use-cases.
*
* - Usage: With label and optional sublabel
*
* <settings-row label="Lorem ipsum"
* sublabel="Lorem ipsum dolor sit amet">
* </settings-row>
*
* - With optional icon
* - Usage: iron-icon
*
* <settings-row label="Lorem ipsum"
* sublabel="Lorem ipsum dolor sit amet"
* icon="os-settings:display">
* </settings-row>
*
* - Usage: Slotted icon element
*
* <settings-row label="Lorem ipsum"
* sublabel="Lorem ipsum dolor sit amet">
* <img src="#" slot="icon"></img>
* </settings-row>
*
* - Usage: With optional learn more link
*
* <settings-row label="Lorem ipsum"
* sublabel="Lorem ipsum dolor sit amet"
* learn-more-url="https://google.com/">
* </settings-row>
*
* - Usage: With optional slotted control element
*
* <settings-row label="Lorem ipsum"
* sublabel="Lorem ipsum dolor sit amet">
* <settings-toggle-v2 slot="control"></settings-toggle-v2>
* </settings-row>
*/
import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {BaseRowMixin} from './base_row_mixin.js';
import {getTemplate} from './settings_row.html.js';
const SettingsRowElementBase = BaseRowMixin(PolymerElement);
export class SettingsRowElement extends SettingsRowElementBase {
static get is() {
return 'settings-row' as const;
}
static get template() {
return getTemplate();
}
}
declare global {
interface HTMLElementTagNameMap {
[SettingsRowElement.is]: SettingsRowElement;
}
}
customElements.define(SettingsRowElement.is, SettingsRowElement);