@f-ewald/components 1.9.0 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/custom-elements.json +318 -0
- package/dist/button-group.d.ts +40 -0
- package/dist/button-group.d.ts.map +1 -0
- package/dist/button-group.js +191 -0
- package/dist/button-group.js.map +1 -0
- package/dist/icons.d.ts +4 -0
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +4 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/markdown-view.d.ts +26 -0
- package/dist/markdown-view.d.ts.map +1 -0
- package/dist/markdown-view.js +176 -0
- package/dist/markdown-view.js.map +1 -0
- package/dist/ui-button.d.ts +2 -0
- package/dist/ui-button.d.ts.map +1 -1
- package/dist/ui-button.js +11 -1
- package/dist/ui-button.js.map +1 -1
- package/docs/button-group.md +65 -0
- package/docs/markdown-view.md +73 -0
- package/docs/ui-button.md +2 -0
- package/llms.txt +71 -2
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -50,6 +50,7 @@ import "@f-ewald/components/roman-numeral.js";
|
|
|
50
50
|
| `<app-shell>` | [API reference](https://f-ewald.github.io/components/docs/app-shell.html) |
|
|
51
51
|
| `<app-sidebar>` | [API reference](https://f-ewald.github.io/components/docs/app-sidebar.html) |
|
|
52
52
|
| `<autocomplete-input>` | [API reference](https://f-ewald.github.io/components/docs/autocomplete-input.html) |
|
|
53
|
+
| `<button-group>` | [API reference](https://f-ewald.github.io/components/docs/button-group.html) |
|
|
53
54
|
| `<calendar-entry>` | [API reference](https://f-ewald.github.io/components/docs/calendar-entry.html) |
|
|
54
55
|
| `<calendar-month>` | [API reference](https://f-ewald.github.io/components/docs/calendar-month.html) |
|
|
55
56
|
| `<calendar-year>` | [API reference](https://f-ewald.github.io/components/docs/calendar-year.html) |
|
|
@@ -77,6 +78,7 @@ import "@f-ewald/components/roman-numeral.js";
|
|
|
77
78
|
| `<live-timer>` | [API reference](https://f-ewald.github.io/components/docs/live-timer.html) |
|
|
78
79
|
| `<map-circle>` | [API reference](https://f-ewald.github.io/components/docs/map-circle.html) |
|
|
79
80
|
| `<map-pin>` | [API reference](https://f-ewald.github.io/components/docs/map-pin.html) |
|
|
81
|
+
| `<markdown-view>` | [API reference](https://f-ewald.github.io/components/docs/markdown-view.html) |
|
|
80
82
|
| `<multi-select>` | [API reference](https://f-ewald.github.io/components/docs/multi-select.html) |
|
|
81
83
|
| `<page-header>` | [API reference](https://f-ewald.github.io/components/docs/page-header.html) |
|
|
82
84
|
| `<pagination-nav>` | [API reference](https://f-ewald.github.io/components/docs/pagination-nav.html) |
|
package/custom-elements.json
CHANGED
|
@@ -1877,6 +1877,141 @@
|
|
|
1877
1877
|
}
|
|
1878
1878
|
]
|
|
1879
1879
|
},
|
|
1880
|
+
{
|
|
1881
|
+
"kind": "javascript-module",
|
|
1882
|
+
"path": "src/button-group.ts",
|
|
1883
|
+
"declarations": [
|
|
1884
|
+
{
|
|
1885
|
+
"kind": "class",
|
|
1886
|
+
"description": "Single-select segmented control — a strip of buttons joined into one\nshared-border shape, for a small, persistent set of mutually exclusive\nchoices (a view switcher, a theme picker) where the *currently selected*\noption should read as visually \"pressed,\" not just checked. For many\nshort, individually pill-shaped choices, use `radio-pills` instead. Wraps\nnative radio inputs for keyboard/a11y and fires `change` rather than\nrelying on form submission.",
|
|
1887
|
+
"name": "ButtonGroup",
|
|
1888
|
+
"members": [
|
|
1889
|
+
{
|
|
1890
|
+
"kind": "field",
|
|
1891
|
+
"name": "options",
|
|
1892
|
+
"type": {
|
|
1893
|
+
"text": "ButtonGroupOption[]"
|
|
1894
|
+
},
|
|
1895
|
+
"default": "[]",
|
|
1896
|
+
"description": "Options to render, one segment each."
|
|
1897
|
+
},
|
|
1898
|
+
{
|
|
1899
|
+
"kind": "field",
|
|
1900
|
+
"name": "value",
|
|
1901
|
+
"type": {
|
|
1902
|
+
"text": "string"
|
|
1903
|
+
},
|
|
1904
|
+
"default": "\"\"",
|
|
1905
|
+
"description": "Currently selected value.",
|
|
1906
|
+
"attribute": "value"
|
|
1907
|
+
},
|
|
1908
|
+
{
|
|
1909
|
+
"kind": "field",
|
|
1910
|
+
"name": "disabled",
|
|
1911
|
+
"type": {
|
|
1912
|
+
"text": "boolean"
|
|
1913
|
+
},
|
|
1914
|
+
"default": "false",
|
|
1915
|
+
"description": "Disables every native radio in the group.",
|
|
1916
|
+
"attribute": "disabled"
|
|
1917
|
+
},
|
|
1918
|
+
{
|
|
1919
|
+
"kind": "field",
|
|
1920
|
+
"name": "iconOnly",
|
|
1921
|
+
"type": {
|
|
1922
|
+
"text": "boolean"
|
|
1923
|
+
},
|
|
1924
|
+
"default": "false",
|
|
1925
|
+
"description": "Hides labels visually (icons only) while keeping them as the accessible name.",
|
|
1926
|
+
"attribute": "icon-only",
|
|
1927
|
+
"reflects": true
|
|
1928
|
+
},
|
|
1929
|
+
{
|
|
1930
|
+
"kind": "field",
|
|
1931
|
+
"name": "#name",
|
|
1932
|
+
"privacy": "private",
|
|
1933
|
+
"readonly": true,
|
|
1934
|
+
"default": "`button-group-${++instanceCount}`"
|
|
1935
|
+
},
|
|
1936
|
+
{
|
|
1937
|
+
"kind": "method",
|
|
1938
|
+
"name": "_onChange",
|
|
1939
|
+
"privacy": "private",
|
|
1940
|
+
"parameters": [
|
|
1941
|
+
{
|
|
1942
|
+
"name": "value",
|
|
1943
|
+
"type": {
|
|
1944
|
+
"text": "string"
|
|
1945
|
+
}
|
|
1946
|
+
}
|
|
1947
|
+
]
|
|
1948
|
+
}
|
|
1949
|
+
],
|
|
1950
|
+
"events": [
|
|
1951
|
+
{
|
|
1952
|
+
"name": "change",
|
|
1953
|
+
"type": {
|
|
1954
|
+
"text": "CustomEvent"
|
|
1955
|
+
},
|
|
1956
|
+
"description": "A segment was selected; detail: { value }."
|
|
1957
|
+
}
|
|
1958
|
+
],
|
|
1959
|
+
"attributes": [
|
|
1960
|
+
{
|
|
1961
|
+
"name": "value",
|
|
1962
|
+
"type": {
|
|
1963
|
+
"text": "string"
|
|
1964
|
+
},
|
|
1965
|
+
"default": "\"\"",
|
|
1966
|
+
"description": "Currently selected value.",
|
|
1967
|
+
"fieldName": "value"
|
|
1968
|
+
},
|
|
1969
|
+
{
|
|
1970
|
+
"name": "disabled",
|
|
1971
|
+
"type": {
|
|
1972
|
+
"text": "boolean"
|
|
1973
|
+
},
|
|
1974
|
+
"default": "false",
|
|
1975
|
+
"description": "Disables every native radio in the group.",
|
|
1976
|
+
"fieldName": "disabled"
|
|
1977
|
+
},
|
|
1978
|
+
{
|
|
1979
|
+
"name": "icon-only",
|
|
1980
|
+
"type": {
|
|
1981
|
+
"text": "boolean"
|
|
1982
|
+
},
|
|
1983
|
+
"default": "false",
|
|
1984
|
+
"description": "Hides labels visually (icons only) while keeping them as the accessible name.",
|
|
1985
|
+
"fieldName": "iconOnly"
|
|
1986
|
+
}
|
|
1987
|
+
],
|
|
1988
|
+
"superclass": {
|
|
1989
|
+
"name": "LitElement",
|
|
1990
|
+
"package": "lit"
|
|
1991
|
+
},
|
|
1992
|
+
"tagName": "button-group",
|
|
1993
|
+
"customElement": true
|
|
1994
|
+
}
|
|
1995
|
+
],
|
|
1996
|
+
"exports": [
|
|
1997
|
+
{
|
|
1998
|
+
"kind": "js",
|
|
1999
|
+
"name": "ButtonGroup",
|
|
2000
|
+
"declaration": {
|
|
2001
|
+
"name": "ButtonGroup",
|
|
2002
|
+
"module": "src/button-group.ts"
|
|
2003
|
+
}
|
|
2004
|
+
},
|
|
2005
|
+
{
|
|
2006
|
+
"kind": "custom-element-definition",
|
|
2007
|
+
"name": "button-group",
|
|
2008
|
+
"declaration": {
|
|
2009
|
+
"name": "ButtonGroup",
|
|
2010
|
+
"module": "src/button-group.ts"
|
|
2011
|
+
}
|
|
2012
|
+
}
|
|
2013
|
+
]
|
|
2014
|
+
},
|
|
1880
2015
|
{
|
|
1881
2016
|
"kind": "javascript-module",
|
|
1882
2017
|
"path": "src/calendar-entry.ts",
|
|
@@ -5490,6 +5625,46 @@
|
|
|
5490
5625
|
"default": "16"
|
|
5491
5626
|
}
|
|
5492
5627
|
]
|
|
5628
|
+
},
|
|
5629
|
+
{
|
|
5630
|
+
"kind": "function",
|
|
5631
|
+
"name": "iconMoon",
|
|
5632
|
+
"parameters": [
|
|
5633
|
+
{
|
|
5634
|
+
"name": "size",
|
|
5635
|
+
"default": "16"
|
|
5636
|
+
}
|
|
5637
|
+
]
|
|
5638
|
+
},
|
|
5639
|
+
{
|
|
5640
|
+
"kind": "function",
|
|
5641
|
+
"name": "iconComputerDesktop",
|
|
5642
|
+
"parameters": [
|
|
5643
|
+
{
|
|
5644
|
+
"name": "size",
|
|
5645
|
+
"default": "16"
|
|
5646
|
+
}
|
|
5647
|
+
]
|
|
5648
|
+
},
|
|
5649
|
+
{
|
|
5650
|
+
"kind": "function",
|
|
5651
|
+
"name": "iconCodeBracketSquare",
|
|
5652
|
+
"parameters": [
|
|
5653
|
+
{
|
|
5654
|
+
"name": "size",
|
|
5655
|
+
"default": "16"
|
|
5656
|
+
}
|
|
5657
|
+
]
|
|
5658
|
+
},
|
|
5659
|
+
{
|
|
5660
|
+
"kind": "function",
|
|
5661
|
+
"name": "iconPuzzlePiece",
|
|
5662
|
+
"parameters": [
|
|
5663
|
+
{
|
|
5664
|
+
"name": "size",
|
|
5665
|
+
"default": "18"
|
|
5666
|
+
}
|
|
5667
|
+
]
|
|
5493
5668
|
}
|
|
5494
5669
|
],
|
|
5495
5670
|
"exports": [
|
|
@@ -5844,6 +6019,38 @@
|
|
|
5844
6019
|
"name": "iconExclamationTriangle",
|
|
5845
6020
|
"module": "src/icons.ts"
|
|
5846
6021
|
}
|
|
6022
|
+
},
|
|
6023
|
+
{
|
|
6024
|
+
"kind": "js",
|
|
6025
|
+
"name": "iconMoon",
|
|
6026
|
+
"declaration": {
|
|
6027
|
+
"name": "iconMoon",
|
|
6028
|
+
"module": "src/icons.ts"
|
|
6029
|
+
}
|
|
6030
|
+
},
|
|
6031
|
+
{
|
|
6032
|
+
"kind": "js",
|
|
6033
|
+
"name": "iconComputerDesktop",
|
|
6034
|
+
"declaration": {
|
|
6035
|
+
"name": "iconComputerDesktop",
|
|
6036
|
+
"module": "src/icons.ts"
|
|
6037
|
+
}
|
|
6038
|
+
},
|
|
6039
|
+
{
|
|
6040
|
+
"kind": "js",
|
|
6041
|
+
"name": "iconCodeBracketSquare",
|
|
6042
|
+
"declaration": {
|
|
6043
|
+
"name": "iconCodeBracketSquare",
|
|
6044
|
+
"module": "src/icons.ts"
|
|
6045
|
+
}
|
|
6046
|
+
},
|
|
6047
|
+
{
|
|
6048
|
+
"kind": "js",
|
|
6049
|
+
"name": "iconPuzzlePiece",
|
|
6050
|
+
"declaration": {
|
|
6051
|
+
"name": "iconPuzzlePiece",
|
|
6052
|
+
"module": "src/icons.ts"
|
|
6053
|
+
}
|
|
5847
6054
|
}
|
|
5848
6055
|
]
|
|
5849
6056
|
},
|
|
@@ -6164,6 +6371,22 @@
|
|
|
6164
6371
|
"module": "./radio-pills.js"
|
|
6165
6372
|
}
|
|
6166
6373
|
},
|
|
6374
|
+
{
|
|
6375
|
+
"kind": "js",
|
|
6376
|
+
"name": "ButtonGroup",
|
|
6377
|
+
"declaration": {
|
|
6378
|
+
"name": "ButtonGroup",
|
|
6379
|
+
"module": "./button-group.js"
|
|
6380
|
+
}
|
|
6381
|
+
},
|
|
6382
|
+
{
|
|
6383
|
+
"kind": "js",
|
|
6384
|
+
"name": "ButtonGroupOption",
|
|
6385
|
+
"declaration": {
|
|
6386
|
+
"name": "ButtonGroupOption",
|
|
6387
|
+
"module": "./button-group.js"
|
|
6388
|
+
}
|
|
6389
|
+
},
|
|
6167
6390
|
{
|
|
6168
6391
|
"kind": "js",
|
|
6169
6392
|
"name": "UiButton",
|
|
@@ -6556,6 +6779,14 @@
|
|
|
6556
6779
|
"module": "./card-grid.js"
|
|
6557
6780
|
}
|
|
6558
6781
|
},
|
|
6782
|
+
{
|
|
6783
|
+
"kind": "js",
|
|
6784
|
+
"name": "MarkdownView",
|
|
6785
|
+
"declaration": {
|
|
6786
|
+
"name": "MarkdownView",
|
|
6787
|
+
"module": "./markdown-view.js"
|
|
6788
|
+
}
|
|
6789
|
+
},
|
|
6559
6790
|
{
|
|
6560
6791
|
"kind": "js",
|
|
6561
6792
|
"name": "formatDuration",
|
|
@@ -8078,6 +8309,74 @@
|
|
|
8078
8309
|
}
|
|
8079
8310
|
]
|
|
8080
8311
|
},
|
|
8312
|
+
{
|
|
8313
|
+
"kind": "javascript-module",
|
|
8314
|
+
"path": "src/markdown-view.ts",
|
|
8315
|
+
"declarations": [
|
|
8316
|
+
{
|
|
8317
|
+
"kind": "class",
|
|
8318
|
+
"description": "Renders a markdown string as sanitized, styled HTML — headings, lists,\ncode, tables, blockquotes, and links all get token-driven styling, with\nwide content (code blocks, tables) scrolling in its own container instead\nof widening the page.\n\nThe markdown source is treated as untrusted: it is always parsed with\n`marked` and sanitized with `DOMPurify` before being injected, never\nrendered as-is.",
|
|
8319
|
+
"name": "MarkdownView",
|
|
8320
|
+
"members": [
|
|
8321
|
+
{
|
|
8322
|
+
"kind": "field",
|
|
8323
|
+
"name": "markdown",
|
|
8324
|
+
"type": {
|
|
8325
|
+
"text": "string"
|
|
8326
|
+
},
|
|
8327
|
+
"default": "\"\"",
|
|
8328
|
+
"description": "Raw markdown source to render.",
|
|
8329
|
+
"attribute": "markdown"
|
|
8330
|
+
},
|
|
8331
|
+
{
|
|
8332
|
+
"kind": "method",
|
|
8333
|
+
"name": "_renderedHtml",
|
|
8334
|
+
"privacy": "private",
|
|
8335
|
+
"return": {
|
|
8336
|
+
"type": {
|
|
8337
|
+
"text": "string"
|
|
8338
|
+
}
|
|
8339
|
+
}
|
|
8340
|
+
}
|
|
8341
|
+
],
|
|
8342
|
+
"attributes": [
|
|
8343
|
+
{
|
|
8344
|
+
"name": "markdown",
|
|
8345
|
+
"type": {
|
|
8346
|
+
"text": "string"
|
|
8347
|
+
},
|
|
8348
|
+
"default": "\"\"",
|
|
8349
|
+
"description": "Raw markdown source to render.",
|
|
8350
|
+
"fieldName": "markdown"
|
|
8351
|
+
}
|
|
8352
|
+
],
|
|
8353
|
+
"superclass": {
|
|
8354
|
+
"name": "LitElement",
|
|
8355
|
+
"package": "lit"
|
|
8356
|
+
},
|
|
8357
|
+
"tagName": "markdown-view",
|
|
8358
|
+
"customElement": true
|
|
8359
|
+
}
|
|
8360
|
+
],
|
|
8361
|
+
"exports": [
|
|
8362
|
+
{
|
|
8363
|
+
"kind": "js",
|
|
8364
|
+
"name": "MarkdownView",
|
|
8365
|
+
"declaration": {
|
|
8366
|
+
"name": "MarkdownView",
|
|
8367
|
+
"module": "src/markdown-view.ts"
|
|
8368
|
+
}
|
|
8369
|
+
},
|
|
8370
|
+
{
|
|
8371
|
+
"kind": "custom-element-definition",
|
|
8372
|
+
"name": "markdown-view",
|
|
8373
|
+
"declaration": {
|
|
8374
|
+
"name": "MarkdownView",
|
|
8375
|
+
"module": "src/markdown-view.ts"
|
|
8376
|
+
}
|
|
8377
|
+
}
|
|
8378
|
+
]
|
|
8379
|
+
},
|
|
8081
8380
|
{
|
|
8082
8381
|
"kind": "javascript-module",
|
|
8083
8382
|
"path": "src/mcp-server.ts",
|
|
@@ -12048,6 +12347,16 @@
|
|
|
12048
12347
|
"description": "Visual weight.",
|
|
12049
12348
|
"attribute": "variant"
|
|
12050
12349
|
},
|
|
12350
|
+
{
|
|
12351
|
+
"kind": "field",
|
|
12352
|
+
"name": "size",
|
|
12353
|
+
"type": {
|
|
12354
|
+
"text": "\"sm\" | \"md\""
|
|
12355
|
+
},
|
|
12356
|
+
"default": "\"md\"",
|
|
12357
|
+
"description": "Size — `sm` reduces height/padding/font-size one step below the default.",
|
|
12358
|
+
"attribute": "size"
|
|
12359
|
+
},
|
|
12051
12360
|
{
|
|
12052
12361
|
"kind": "field",
|
|
12053
12362
|
"name": "href",
|
|
@@ -12119,6 +12428,15 @@
|
|
|
12119
12428
|
"description": "Visual weight.",
|
|
12120
12429
|
"fieldName": "variant"
|
|
12121
12430
|
},
|
|
12431
|
+
{
|
|
12432
|
+
"name": "size",
|
|
12433
|
+
"type": {
|
|
12434
|
+
"text": "\"sm\" | \"md\""
|
|
12435
|
+
},
|
|
12436
|
+
"default": "\"md\"",
|
|
12437
|
+
"description": "Size — `sm` reduces height/padding/font-size one step below the default.",
|
|
12438
|
+
"fieldName": "size"
|
|
12439
|
+
},
|
|
12122
12440
|
{
|
|
12123
12441
|
"name": "href",
|
|
12124
12442
|
"type": {
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { TemplateResult } from "lit";
|
|
2
|
+
import { LitElement } from "lit";
|
|
3
|
+
export interface ButtonGroupOption {
|
|
4
|
+
value: string;
|
|
5
|
+
label: string;
|
|
6
|
+
/** Optional pre-rendered icon template displayed before the label. */
|
|
7
|
+
icon?: TemplateResult;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Single-select segmented control — a strip of buttons joined into one
|
|
11
|
+
* shared-border shape, for a small, persistent set of mutually exclusive
|
|
12
|
+
* choices (a view switcher, a theme picker) where the *currently selected*
|
|
13
|
+
* option should read as visually "pressed," not just checked. For many
|
|
14
|
+
* short, individually pill-shaped choices, use `radio-pills` instead. Wraps
|
|
15
|
+
* native radio inputs for keyboard/a11y and fires `change` rather than
|
|
16
|
+
* relying on form submission.
|
|
17
|
+
*
|
|
18
|
+
* @element button-group
|
|
19
|
+
* @fires change - A segment was selected; detail: { value }.
|
|
20
|
+
*/
|
|
21
|
+
export declare class ButtonGroup extends LitElement {
|
|
22
|
+
#private;
|
|
23
|
+
static styles: import("lit").CSSResult[];
|
|
24
|
+
/** Options to render, one segment each. */
|
|
25
|
+
options: ButtonGroupOption[];
|
|
26
|
+
/** Currently selected value. */
|
|
27
|
+
value: string;
|
|
28
|
+
/** Disables every native radio in the group. */
|
|
29
|
+
disabled: boolean;
|
|
30
|
+
/** Hides labels visually (icons only) while keeping them as the accessible name. */
|
|
31
|
+
iconOnly: boolean;
|
|
32
|
+
private _onChange;
|
|
33
|
+
render(): TemplateResult<1>;
|
|
34
|
+
}
|
|
35
|
+
declare global {
|
|
36
|
+
interface HTMLElementTagNameMap {
|
|
37
|
+
"button-group": ButtonGroup;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=button-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-group.d.ts","sourceRoot":"","sources":["../src/button-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAKrD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAID;;;;;;;;;;;GAWG;AACH,qBACa,WAAY,SAAQ,UAAU;;IACzC,OAAgB,MAAM,4BA4GpB;IAEF,2CAA2C;IACX,OAAO,EAAE,iBAAiB,EAAE,CAAM;IAClE,gCAAgC;IACpB,KAAK,SAAM;IACvB,gDAAgD;IACnB,QAAQ,UAAS;IAC9C,oFAAoF;IAChB,QAAQ,UAAS;IAIrF,OAAO,CAAC,SAAS;IAQR,MAAM,sBAwBd;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, css, html, nothing } from "lit";
|
|
8
|
+
import { customElement, property } from "lit/decorators.js";
|
|
9
|
+
import { repeat } from "lit/directives/repeat.js";
|
|
10
|
+
import { tokens } from "./tokens.js";
|
|
11
|
+
let instanceCount = 0;
|
|
12
|
+
/**
|
|
13
|
+
* Single-select segmented control — a strip of buttons joined into one
|
|
14
|
+
* shared-border shape, for a small, persistent set of mutually exclusive
|
|
15
|
+
* choices (a view switcher, a theme picker) where the *currently selected*
|
|
16
|
+
* option should read as visually "pressed," not just checked. For many
|
|
17
|
+
* short, individually pill-shaped choices, use `radio-pills` instead. Wraps
|
|
18
|
+
* native radio inputs for keyboard/a11y and fires `change` rather than
|
|
19
|
+
* relying on form submission.
|
|
20
|
+
*
|
|
21
|
+
* @element button-group
|
|
22
|
+
* @fires change - A segment was selected; detail: { value }.
|
|
23
|
+
*/
|
|
24
|
+
let ButtonGroup = class ButtonGroup extends LitElement {
|
|
25
|
+
constructor() {
|
|
26
|
+
super(...arguments);
|
|
27
|
+
/** Options to render, one segment each. */
|
|
28
|
+
this.options = [];
|
|
29
|
+
/** Currently selected value. */
|
|
30
|
+
this.value = "";
|
|
31
|
+
/** Disables every native radio in the group. */
|
|
32
|
+
this.disabled = false;
|
|
33
|
+
/** Hides labels visually (icons only) while keeping them as the accessible name. */
|
|
34
|
+
this.iconOnly = false;
|
|
35
|
+
this.#name = `button-group-${++instanceCount}`;
|
|
36
|
+
}
|
|
37
|
+
static { this.styles = [
|
|
38
|
+
tokens,
|
|
39
|
+
css `
|
|
40
|
+
:host {
|
|
41
|
+
display: inline-block;
|
|
42
|
+
}
|
|
43
|
+
.group {
|
|
44
|
+
display: flex;
|
|
45
|
+
border: 1px solid var(--ui-border, #e2e8f0);
|
|
46
|
+
border-radius: var(--ui-radius-sm, 0.25rem);
|
|
47
|
+
overflow: hidden;
|
|
48
|
+
}
|
|
49
|
+
.segment {
|
|
50
|
+
position: relative;
|
|
51
|
+
display: flex;
|
|
52
|
+
flex: 1 1 auto;
|
|
53
|
+
align-items: center;
|
|
54
|
+
justify-content: center;
|
|
55
|
+
gap: 0.25rem;
|
|
56
|
+
height: 2rem;
|
|
57
|
+
box-sizing: border-box;
|
|
58
|
+
padding: 0.5rem 0.75rem;
|
|
59
|
+
border-left: 1px solid var(--ui-border, #e2e8f0);
|
|
60
|
+
cursor: pointer;
|
|
61
|
+
font-family: var(
|
|
62
|
+
--ui-font,
|
|
63
|
+
ui-sans-serif,
|
|
64
|
+
system-ui,
|
|
65
|
+
sans-serif,
|
|
66
|
+
"Apple Color Emoji",
|
|
67
|
+
"Segoe UI Emoji",
|
|
68
|
+
"Segoe UI Symbol",
|
|
69
|
+
"Noto Color Emoji"
|
|
70
|
+
);
|
|
71
|
+
font-size: var(--ui-font-size-sm, 0.75rem);
|
|
72
|
+
font-weight: var(--ui-font-weight-medium, 500);
|
|
73
|
+
line-height: var(--ui-line-height-tight, 1.25);
|
|
74
|
+
color: var(--ui-text, #0f172a);
|
|
75
|
+
white-space: nowrap;
|
|
76
|
+
}
|
|
77
|
+
.segment:first-child {
|
|
78
|
+
border-left: none;
|
|
79
|
+
border-top-left-radius: var(--ui-radius-sm, 0.25rem);
|
|
80
|
+
border-bottom-left-radius: var(--ui-radius-sm, 0.25rem);
|
|
81
|
+
}
|
|
82
|
+
.segment:last-child {
|
|
83
|
+
border-top-right-radius: var(--ui-radius-sm, 0.25rem);
|
|
84
|
+
border-bottom-right-radius: var(--ui-radius-sm, 0.25rem);
|
|
85
|
+
}
|
|
86
|
+
.segment:has(input:checked) {
|
|
87
|
+
background: var(--ui-primary, #4f46e5);
|
|
88
|
+
color: var(--ui-on-accent, #ffffff);
|
|
89
|
+
}
|
|
90
|
+
.segment:not(:has(input:checked)):hover {
|
|
91
|
+
background: var(--ui-surface-muted, #f8fafc);
|
|
92
|
+
}
|
|
93
|
+
.segment input {
|
|
94
|
+
/* Fills the whole segment (not visually-hidden-offscreen) so a real
|
|
95
|
+
click anywhere in the segment — including a test driver clicking
|
|
96
|
+
the input by its accessible role — lands on the input itself,
|
|
97
|
+
not just via native <label> click delegation. */
|
|
98
|
+
position: absolute;
|
|
99
|
+
inset: 0;
|
|
100
|
+
margin: 0;
|
|
101
|
+
opacity: 0;
|
|
102
|
+
cursor: pointer;
|
|
103
|
+
}
|
|
104
|
+
/* Clipped by the group's own overflow:hidden unless promoted above its
|
|
105
|
+
neighbors — the focus ring needs a stacking context of its own. */
|
|
106
|
+
.segment:has(input:focus-visible) {
|
|
107
|
+
z-index: 1;
|
|
108
|
+
outline: none;
|
|
109
|
+
box-shadow: var(--ui-focus-ring, 0 0 0 3px rgb(79 70 229 / 0.35));
|
|
110
|
+
}
|
|
111
|
+
.segment:has(input:disabled) {
|
|
112
|
+
cursor: not-allowed;
|
|
113
|
+
opacity: 0.6;
|
|
114
|
+
}
|
|
115
|
+
:host([icon-only]) .segment {
|
|
116
|
+
padding: 0.5rem;
|
|
117
|
+
}
|
|
118
|
+
.sr-only {
|
|
119
|
+
position: absolute;
|
|
120
|
+
width: 1px;
|
|
121
|
+
height: 1px;
|
|
122
|
+
padding: 0;
|
|
123
|
+
margin: -1px;
|
|
124
|
+
overflow: hidden;
|
|
125
|
+
clip: rect(0, 0, 0, 0);
|
|
126
|
+
white-space: nowrap;
|
|
127
|
+
border: 0;
|
|
128
|
+
}
|
|
129
|
+
@media (forced-colors: active) {
|
|
130
|
+
.segment:has(input:focus-visible) {
|
|
131
|
+
outline: 2px solid CanvasText;
|
|
132
|
+
outline-offset: 2px;
|
|
133
|
+
box-shadow: none;
|
|
134
|
+
}
|
|
135
|
+
.segment:has(input:checked) {
|
|
136
|
+
background: Highlight;
|
|
137
|
+
color: HighlightText;
|
|
138
|
+
}
|
|
139
|
+
.segment:has(input:disabled) {
|
|
140
|
+
color: GrayText;
|
|
141
|
+
opacity: 1;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
`,
|
|
145
|
+
]; }
|
|
146
|
+
#name;
|
|
147
|
+
_onChange(value) {
|
|
148
|
+
if (this.disabled)
|
|
149
|
+
return;
|
|
150
|
+
this.value = value;
|
|
151
|
+
this.dispatchEvent(new CustomEvent("change", { detail: { value }, bubbles: true, composed: true }));
|
|
152
|
+
}
|
|
153
|
+
render() {
|
|
154
|
+
return html `
|
|
155
|
+
<div class="group">
|
|
156
|
+
${repeat(this.options, (opt) => opt.value, (opt) => html `
|
|
157
|
+
<label class="segment">
|
|
158
|
+
<input
|
|
159
|
+
type="radio"
|
|
160
|
+
name=${this.#name}
|
|
161
|
+
?checked=${this.value === opt.value}
|
|
162
|
+
?disabled=${this.disabled}
|
|
163
|
+
aria-label=${this.iconOnly ? opt.label : nothing}
|
|
164
|
+
title=${this.iconOnly ? opt.label : nothing}
|
|
165
|
+
@change=${() => this._onChange(opt.value)}
|
|
166
|
+
/>
|
|
167
|
+
${opt.icon ?? nothing}
|
|
168
|
+
<span class=${this.iconOnly ? "sr-only" : ""}>${opt.label}</span>
|
|
169
|
+
</label>
|
|
170
|
+
`)}
|
|
171
|
+
</div>
|
|
172
|
+
`;
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
__decorate([
|
|
176
|
+
property({ attribute: false })
|
|
177
|
+
], ButtonGroup.prototype, "options", void 0);
|
|
178
|
+
__decorate([
|
|
179
|
+
property()
|
|
180
|
+
], ButtonGroup.prototype, "value", void 0);
|
|
181
|
+
__decorate([
|
|
182
|
+
property({ type: Boolean })
|
|
183
|
+
], ButtonGroup.prototype, "disabled", void 0);
|
|
184
|
+
__decorate([
|
|
185
|
+
property({ type: Boolean, reflect: true, attribute: "icon-only" })
|
|
186
|
+
], ButtonGroup.prototype, "iconOnly", void 0);
|
|
187
|
+
ButtonGroup = __decorate([
|
|
188
|
+
customElement("button-group")
|
|
189
|
+
], ButtonGroup);
|
|
190
|
+
export { ButtonGroup };
|
|
191
|
+
//# sourceMappingURL=button-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-group.js","sourceRoot":"","sources":["../src/button-group.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,IAAI,aAAa,GAAG,CAAC,CAAC;AAEtB;;;;;;;;;;;GAWG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAApC;;QA+GL,2CAA2C;QACX,YAAO,GAAwB,EAAE,CAAC;QAClE,gCAAgC;QACpB,UAAK,GAAG,EAAE,CAAC;QACvB,gDAAgD;QACnB,aAAQ,GAAG,KAAK,CAAC;QAC9C,oFAAoF;QAChB,aAAQ,GAAG,KAAK,CAAC;QAE5E,UAAK,GAAG,gBAAgB,EAAE,aAAa,EAAE,CAAC;IAmCrD,CAAC;aA1JiB,WAAM,GAAG;QACvB,MAAM;QACN,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAyGF;KACF,AA5GqB,CA4GpB;IAWO,KAAK,CAAqC;IAE3C,SAAS,CAAC,KAAa;QAC7B,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAChF,CAAC;IACJ,CAAC;IAEQ,MAAM;QACb,OAAO,IAAI,CAAA;;UAEL,MAAM,CACN,IAAI,CAAC,OAAO,EACZ,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAClB,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAA;;;;uBAIA,IAAI,CAAC,KAAK;2BACN,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK;4BACvB,IAAI,CAAC,QAAQ;6BACZ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;wBACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;0BACjC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;;gBAEzC,GAAG,CAAC,IAAI,IAAI,OAAO;4BACP,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK;;WAE5D,CACF;;KAEJ,CAAC;IACJ,CAAC;CACF,CAAA;AA3CiC;IAA/B,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;4CAAmC;AAEtD;IAAX,QAAQ,EAAE;0CAAY;AAEM;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;6CAAkB;AAEsB;IAAnE,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;6CAAkB;AAtH1E,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CA2JvB","sourcesContent":["import type { TemplateResult } from \"lit\";\nimport { LitElement, css, html, nothing } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { tokens } from \"./tokens.js\";\n\nexport interface ButtonGroupOption {\n value: string;\n label: string;\n /** Optional pre-rendered icon template displayed before the label. */\n icon?: TemplateResult;\n}\n\nlet instanceCount = 0;\n\n/**\n * Single-select segmented control — a strip of buttons joined into one\n * shared-border shape, for a small, persistent set of mutually exclusive\n * choices (a view switcher, a theme picker) where the *currently selected*\n * option should read as visually \"pressed,\" not just checked. For many\n * short, individually pill-shaped choices, use `radio-pills` instead. Wraps\n * native radio inputs for keyboard/a11y and fires `change` rather than\n * relying on form submission.\n *\n * @element button-group\n * @fires change - A segment was selected; detail: { value }.\n */\n@customElement(\"button-group\")\nexport class ButtonGroup extends LitElement {\n static override styles = [\n tokens,\n css`\n :host {\n display: inline-block;\n }\n .group {\n display: flex;\n border: 1px solid var(--ui-border, #e2e8f0);\n border-radius: var(--ui-radius-sm, 0.25rem);\n overflow: hidden;\n }\n .segment {\n position: relative;\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n justify-content: center;\n gap: 0.25rem;\n height: 2rem;\n box-sizing: border-box;\n padding: 0.5rem 0.75rem;\n border-left: 1px solid var(--ui-border, #e2e8f0);\n cursor: pointer;\n font-family: var(\n --ui-font,\n ui-sans-serif,\n system-ui,\n sans-serif,\n \"Apple Color Emoji\",\n \"Segoe UI Emoji\",\n \"Segoe UI Symbol\",\n \"Noto Color Emoji\"\n );\n font-size: var(--ui-font-size-sm, 0.75rem);\n font-weight: var(--ui-font-weight-medium, 500);\n line-height: var(--ui-line-height-tight, 1.25);\n color: var(--ui-text, #0f172a);\n white-space: nowrap;\n }\n .segment:first-child {\n border-left: none;\n border-top-left-radius: var(--ui-radius-sm, 0.25rem);\n border-bottom-left-radius: var(--ui-radius-sm, 0.25rem);\n }\n .segment:last-child {\n border-top-right-radius: var(--ui-radius-sm, 0.25rem);\n border-bottom-right-radius: var(--ui-radius-sm, 0.25rem);\n }\n .segment:has(input:checked) {\n background: var(--ui-primary, #4f46e5);\n color: var(--ui-on-accent, #ffffff);\n }\n .segment:not(:has(input:checked)):hover {\n background: var(--ui-surface-muted, #f8fafc);\n }\n .segment input {\n /* Fills the whole segment (not visually-hidden-offscreen) so a real\n click anywhere in the segment — including a test driver clicking\n the input by its accessible role — lands on the input itself,\n not just via native <label> click delegation. */\n position: absolute;\n inset: 0;\n margin: 0;\n opacity: 0;\n cursor: pointer;\n }\n /* Clipped by the group's own overflow:hidden unless promoted above its\n neighbors — the focus ring needs a stacking context of its own. */\n .segment:has(input:focus-visible) {\n z-index: 1;\n outline: none;\n box-shadow: var(--ui-focus-ring, 0 0 0 3px rgb(79 70 229 / 0.35));\n }\n .segment:has(input:disabled) {\n cursor: not-allowed;\n opacity: 0.6;\n }\n :host([icon-only]) .segment {\n padding: 0.5rem;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n @media (forced-colors: active) {\n .segment:has(input:focus-visible) {\n outline: 2px solid CanvasText;\n outline-offset: 2px;\n box-shadow: none;\n }\n .segment:has(input:checked) {\n background: Highlight;\n color: HighlightText;\n }\n .segment:has(input:disabled) {\n color: GrayText;\n opacity: 1;\n }\n }\n `,\n ];\n\n /** Options to render, one segment each. */\n @property({ attribute: false }) options: ButtonGroupOption[] = [];\n /** Currently selected value. */\n @property() value = \"\";\n /** Disables every native radio in the group. */\n @property({ type: Boolean }) disabled = false;\n /** Hides labels visually (icons only) while keeping them as the accessible name. */\n @property({ type: Boolean, reflect: true, attribute: \"icon-only\" }) iconOnly = false;\n\n readonly #name = `button-group-${++instanceCount}`;\n\n private _onChange(value: string) {\n if (this.disabled) return;\n this.value = value;\n this.dispatchEvent(\n new CustomEvent(\"change\", { detail: { value }, bubbles: true, composed: true }),\n );\n }\n\n override render() {\n return html`\n <div class=\"group\">\n ${repeat(\n this.options,\n (opt) => opt.value,\n (opt) => html`\n <label class=\"segment\">\n <input\n type=\"radio\"\n name=${this.#name}\n ?checked=${this.value === opt.value}\n ?disabled=${this.disabled}\n aria-label=${this.iconOnly ? opt.label : nothing}\n title=${this.iconOnly ? opt.label : nothing}\n @change=${() => this._onChange(opt.value)}\n />\n ${opt.icon ?? nothing}\n <span class=${this.iconOnly ? \"sr-only\" : \"\"}>${opt.label}</span>\n </label>\n `,\n )}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"button-group\": ButtonGroup;\n }\n}\n"]}
|
package/dist/icons.d.ts
CHANGED
|
@@ -42,4 +42,8 @@ export declare const iconArrowTopRightOnSquare: (size?: number) => import("lit-h
|
|
|
42
42
|
export declare const iconAcademicCap: (size?: number) => import("lit-html").TemplateResult<2>;
|
|
43
43
|
export declare const iconQueueList: (size?: number) => import("lit-html").TemplateResult<2>;
|
|
44
44
|
export declare const iconExclamationTriangle: (size?: number) => import("lit-html").TemplateResult<2>;
|
|
45
|
+
export declare const iconMoon: (size?: number) => import("lit-html").TemplateResult<2>;
|
|
46
|
+
export declare const iconComputerDesktop: (size?: number) => import("lit-html").TemplateResult<2>;
|
|
47
|
+
export declare const iconCodeBracketSquare: (size?: number) => import("lit-html").TemplateResult<2>;
|
|
48
|
+
export declare const iconPuzzlePiece: (size?: number) => import("lit-html").TemplateResult<2>;
|
|
45
49
|
//# sourceMappingURL=icons.d.ts.map
|
package/dist/icons.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK,yDAC2O,CAAC;AAE9P,eAAO,MAAM,SAAS,yDAC+P,CAAC;AAEtR,eAAO,MAAM,eAAe,yDACwO,CAAC;AAErQ,eAAO,MAAM,gBAAgB,yDACqO,CAAC;AAEnQ,eAAO,MAAM,OAAO,yDAC2xC,CAAC;AAEhzC,eAAO,MAAM,QAAQ,yDAC4W,CAAC;AAElY,eAAO,MAAM,sBAAsB,yDAC6Y,CAAC;AAEjb,eAAO,MAAM,UAAU,yDACqX,CAAC;AAE7Y,eAAO,MAAM,SAAS,yDACgnB,CAAC;AAEvoB,eAAO,MAAM,QAAQ,yDAC0O,CAAC;AAEhQ,eAAO,MAAM,cAAc,yDACme,CAAC;AAE/f,eAAO,MAAM,kBAAkB,yDACob,CAAC;AAEpd,eAAO,MAAM,QAAQ,yDAC8b,CAAC;AAEpd,eAAO,MAAM,UAAU,yDACiY,CAAC;AAEzZ,eAAO,MAAM,SAAS,yDACmQ,CAAC;AAE1R,eAAO,MAAM,OAAO,yDACif,CAAC;AAEtgB,eAAO,MAAM,YAAY,yDACib,CAAC;AAE3c,eAAO,MAAM,qBAAqB,yDAC4V,CAAC;AAE/X,eAAO,MAAM,OAAO,yDACyhB,CAAC;AAE9iB,eAAO,MAAM,eAAe,yDAC2Q,CAAC;AAExS,eAAO,MAAM,OAAO,yDACsZ,CAAC;AAE3a,eAAO,MAAM,qBAAqB,yDACma,CAAC;AAEtc,eAAO,MAAM,aAAa,yDACsX,CAAC;AAEjZ,eAAO,MAAM,cAAc,yDACiP,CAAC;AAE7Q,eAAO,MAAM,iBAAiB,yDACuT,CAAC;AAEtV,eAAO,MAAM,mBAAmB,yDACmR,CAAC;AAEpT,eAAO,MAAM,QAAQ,yDAC6X,CAAC;AAEnZ,eAAO,MAAM,SAAS,yDACgX,CAAC;AAEvY,eAAO,MAAM,cAAc,yDAC8f,CAAC;AAE1hB,eAAO,MAAM,OAAO,yDAC4e,CAAC;AAEjgB,eAAO,MAAM,YAAY,yDAC4hB,CAAC;AAEtjB,eAAO,MAAM,eAAe,yDAC+Z,CAAC;AAE5b,eAAO,MAAM,cAAc,yDACqZ,CAAC;AAEjb,eAAO,MAAM,yBAAyB,yDACuxB,CAAC;AAE9zB,eAAO,MAAM,WAAW,yDACge,CAAC;AAEzf,eAAO,MAAM,UAAU,yDACqd,CAAC;AAE7e,eAAO,MAAM,eAAe,yDACuO,CAAC;AAEpQ,eAAO,MAAM,YAAY,yDACid,CAAC;AAE3e,eAAO,MAAM,cAAc,yDACosB,CAAC;AAEhuB,eAAO,MAAM,uBAAuB,yDAC2sB,CAAC;AAEhvB,eAAO,MAAM,yBAAyB,yDACuU,CAAC;AAE9W,eAAO,MAAM,eAAe,yDAC6pB,CAAC;AAE1rB,eAAO,MAAM,aAAa,yDACoU,CAAC;AAE/V,eAAO,MAAM,uBAAuB,yDACqX,CAAC"}
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK,yDAC2O,CAAC;AAE9P,eAAO,MAAM,SAAS,yDAC+P,CAAC;AAEtR,eAAO,MAAM,eAAe,yDACwO,CAAC;AAErQ,eAAO,MAAM,gBAAgB,yDACqO,CAAC;AAEnQ,eAAO,MAAM,OAAO,yDAC2xC,CAAC;AAEhzC,eAAO,MAAM,QAAQ,yDAC4W,CAAC;AAElY,eAAO,MAAM,sBAAsB,yDAC6Y,CAAC;AAEjb,eAAO,MAAM,UAAU,yDACqX,CAAC;AAE7Y,eAAO,MAAM,SAAS,yDACgnB,CAAC;AAEvoB,eAAO,MAAM,QAAQ,yDAC0O,CAAC;AAEhQ,eAAO,MAAM,cAAc,yDACme,CAAC;AAE/f,eAAO,MAAM,kBAAkB,yDACob,CAAC;AAEpd,eAAO,MAAM,QAAQ,yDAC8b,CAAC;AAEpd,eAAO,MAAM,UAAU,yDACiY,CAAC;AAEzZ,eAAO,MAAM,SAAS,yDACmQ,CAAC;AAE1R,eAAO,MAAM,OAAO,yDACif,CAAC;AAEtgB,eAAO,MAAM,YAAY,yDACib,CAAC;AAE3c,eAAO,MAAM,qBAAqB,yDAC4V,CAAC;AAE/X,eAAO,MAAM,OAAO,yDACyhB,CAAC;AAE9iB,eAAO,MAAM,eAAe,yDAC2Q,CAAC;AAExS,eAAO,MAAM,OAAO,yDACsZ,CAAC;AAE3a,eAAO,MAAM,qBAAqB,yDACma,CAAC;AAEtc,eAAO,MAAM,aAAa,yDACsX,CAAC;AAEjZ,eAAO,MAAM,cAAc,yDACiP,CAAC;AAE7Q,eAAO,MAAM,iBAAiB,yDACuT,CAAC;AAEtV,eAAO,MAAM,mBAAmB,yDACmR,CAAC;AAEpT,eAAO,MAAM,QAAQ,yDAC6X,CAAC;AAEnZ,eAAO,MAAM,SAAS,yDACgX,CAAC;AAEvY,eAAO,MAAM,cAAc,yDAC8f,CAAC;AAE1hB,eAAO,MAAM,OAAO,yDAC4e,CAAC;AAEjgB,eAAO,MAAM,YAAY,yDAC4hB,CAAC;AAEtjB,eAAO,MAAM,eAAe,yDAC+Z,CAAC;AAE5b,eAAO,MAAM,cAAc,yDACqZ,CAAC;AAEjb,eAAO,MAAM,yBAAyB,yDACuxB,CAAC;AAE9zB,eAAO,MAAM,WAAW,yDACge,CAAC;AAEzf,eAAO,MAAM,UAAU,yDACqd,CAAC;AAE7e,eAAO,MAAM,eAAe,yDACuO,CAAC;AAEpQ,eAAO,MAAM,YAAY,yDACid,CAAC;AAE3e,eAAO,MAAM,cAAc,yDACosB,CAAC;AAEhuB,eAAO,MAAM,uBAAuB,yDAC2sB,CAAC;AAEhvB,eAAO,MAAM,yBAAyB,yDACuU,CAAC;AAE9W,eAAO,MAAM,eAAe,yDAC6pB,CAAC;AAE1rB,eAAO,MAAM,aAAa,yDACoU,CAAC;AAE/V,eAAO,MAAM,uBAAuB,yDACqX,CAAC;AAE1Z,eAAO,MAAM,QAAQ,yDACwY,CAAC;AAE9Z,eAAO,MAAM,mBAAmB,yDACqd,CAAC;AAEtf,eAAO,MAAM,qBAAqB,yDACgX,CAAC;AAEnZ,eAAO,MAAM,eAAe,yDAC+vC,CAAC"}
|