@felixgeelhaar/glossa-ui 0.1.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.
Files changed (56) hide show
  1. package/LICENSE +21 -0
  2. package/dist/badge.d.ts +18 -0
  3. package/dist/badge.d.ts.map +1 -0
  4. package/dist/badge.js +59 -0
  5. package/dist/badge.js.map +1 -0
  6. package/dist/button.d.ts +32 -0
  7. package/dist/button.d.ts.map +1 -0
  8. package/dist/button.js +120 -0
  9. package/dist/button.js.map +1 -0
  10. package/dist/card.d.ts +17 -0
  11. package/dist/card.d.ts.map +1 -0
  12. package/dist/card.js +45 -0
  13. package/dist/card.js.map +1 -0
  14. package/dist/index.d.ts +29 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +26 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/input.d.ts +69 -0
  19. package/dist/input.d.ts.map +1 -0
  20. package/dist/input.js +129 -0
  21. package/dist/input.js.map +1 -0
  22. package/dist/select.d.ts +38 -0
  23. package/dist/select.d.ts.map +1 -0
  24. package/dist/select.js +77 -0
  25. package/dist/select.js.map +1 -0
  26. package/dist/table.d.ts +22 -0
  27. package/dist/table.d.ts.map +1 -0
  28. package/dist/table.js +74 -0
  29. package/dist/table.js.map +1 -0
  30. package/dist/tabs.d.ts +27 -0
  31. package/dist/tabs.d.ts.map +1 -0
  32. package/dist/tabs.js +81 -0
  33. package/dist/tabs.js.map +1 -0
  34. package/dist/textarea.d.ts +38 -0
  35. package/dist/textarea.d.ts.map +1 -0
  36. package/dist/textarea.js +80 -0
  37. package/dist/textarea.js.map +1 -0
  38. package/dist/theme-toggle.d.ts +20 -0
  39. package/dist/theme-toggle.d.ts.map +1 -0
  40. package/dist/theme-toggle.js +64 -0
  41. package/dist/theme-toggle.js.map +1 -0
  42. package/dist/theme.d.ts +9 -0
  43. package/dist/theme.d.ts.map +1 -0
  44. package/dist/theme.js +48 -0
  45. package/dist/theme.js.map +1 -0
  46. package/dist/toast.d.ts +28 -0
  47. package/dist/toast.d.ts.map +1 -0
  48. package/dist/toast.js +82 -0
  49. package/dist/toast.js.map +1 -0
  50. package/dist/tokens.css +193 -0
  51. package/dist/toolbar.d.ts +11 -0
  52. package/dist/toolbar.d.ts.map +1 -0
  53. package/dist/toolbar.js +70 -0
  54. package/dist/toolbar.js.map +1 -0
  55. package/package.json +58 -0
  56. package/src/tokens.css +193 -0
package/dist/select.js ADDED
@@ -0,0 +1,77 @@
1
+ import { LitElement, css, html } from "lit";
2
+ export class GlSelect extends LitElement {
3
+ static { this.formAssociated = true; }
4
+ static { this.styles = css `
5
+ :host {
6
+ display: block;
7
+ }
8
+ label {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: var(--gl-space-1);
12
+ font-size: var(--gl-text-sm);
13
+ color: var(--gl-text-muted);
14
+ }
15
+ select {
16
+ font: inherit;
17
+ font-family: var(--gl-font-ui);
18
+ font-size: var(--gl-text-base);
19
+ color: var(--gl-text);
20
+ background: var(--gl-surface);
21
+ border: 1px solid var(--gl-border);
22
+ border-radius: var(--gl-radius-md);
23
+ padding: 8px 10px;
24
+ height: 36px;
25
+ width: 100%;
26
+ box-sizing: border-box;
27
+ cursor: pointer;
28
+ transition: border-color var(--gl-duration-base) var(--gl-ease);
29
+ }
30
+ select:focus-visible {
31
+ outline: none;
32
+ border-color: var(--gl-focus-ring-strong);
33
+ box-shadow: 0 0 0 3px var(--gl-focus-ring);
34
+ }
35
+ `; }
36
+ static { this.properties = {
37
+ label: { type: String },
38
+ name: { type: String },
39
+ value: { type: String },
40
+ options: { attribute: false },
41
+ }; }
42
+ constructor() {
43
+ super();
44
+ this.label = "";
45
+ this.name = "";
46
+ this.value = "";
47
+ this.options = [];
48
+ this.internals = null;
49
+ if (typeof this.attachInternals === "function") {
50
+ this.internals = this.attachInternals();
51
+ }
52
+ }
53
+ willUpdate(changed) {
54
+ if (changed.has("value") && this.internals && typeof this.internals.setFormValue === "function") {
55
+ this.internals.setFormValue(this.value);
56
+ }
57
+ }
58
+ onChange(e) {
59
+ const v = e.target.value;
60
+ this.value = v;
61
+ this.dispatchEvent(new CustomEvent("gl-change", { detail: { value: v }, bubbles: true, composed: true }));
62
+ }
63
+ render() {
64
+ return html `
65
+ <label>
66
+ ${this.label ? html `<span>${this.label}</span>` : null}
67
+ <select name=${this.name} .value=${this.value} @change=${(e) => this.onChange(e)}>
68
+ ${(this.options ?? []).map((o) => html `<option value=${o.value} ?selected=${o.value === this.value}>${o.label}</option>`)}
69
+ </select>
70
+ </label>
71
+ `;
72
+ }
73
+ }
74
+ if (!customElements.get("gl-select")) {
75
+ customElements.define("gl-select", GlSelect);
76
+ }
77
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../src/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAO5C,MAAM,OAAO,QAAS,SAAQ,UAAU;aAC/B,mBAAc,GAAG,IAAI,AAAP,CAAQ;aAEb,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+B3B,AA/BqB,CA+BpB;aAEc,eAAU,GAAG;QAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACvB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACtB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACvB,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;KAC9B,AALyB,CAKxB;IASF;QACE,KAAK,EAAE,CAAC;QARH,UAAK,GAAG,EAAE,CAAC;QACX,SAAI,GAAG,EAAE,CAAC;QACV,UAAK,GAAG,EAAE,CAAC;QACX,YAAO,GAAqB,EAAE,CAAC;QAE9B,cAAS,GAA4B,IAAI,CAAC;QAIhD,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;YAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAEe,UAAU,CAAC,OAA6B;QACtD,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;YAChG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,CAAQ;QACvB,MAAM,CAAC,GAAI,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5G,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA,SAAS,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI;uBACvC,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,KAAK,YAAY,CAAC,CAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnF,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CACxB,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAA,iBAAiB,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,WAAW,CAC9F;;;KAGN,CAAC;IACJ,CAAC;;AAGH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;IACrC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { LitElement } from "lit";
2
+ export declare class GlTable extends LitElement {
3
+ static styles: import("lit").CSSResult;
4
+ protected render(): import("lit").TemplateResult<1>;
5
+ }
6
+ declare global {
7
+ interface HTMLElementTagNameMap {
8
+ "gl-table": GlTable;
9
+ }
10
+ }
11
+ /**
12
+ * The slotted table content uses light-DOM CSS. Consumers need to
13
+ * import the matching stylesheet so th/td get borders + padding.
14
+ * Easier than reflecting cells through shadow DOM via Manual slots.
15
+ *
16
+ * Exported as a CSS string so apps can adoptedStyleSheet it:
17
+ * const sheet = new CSSStyleSheet();
18
+ * sheet.replaceSync(glTableStyles);
19
+ * document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
20
+ */
21
+ export declare const glTableStyles = "\n.gl-table { width: 100%; border-collapse: collapse; font-size: var(--gl-text-md); }\n.gl-table thead th {\n text-align: left;\n font-weight: 600;\n font-size: var(--gl-text-xs);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--gl-text-subtle);\n background: var(--gl-surface-sunken);\n padding: 8px 12px;\n border-bottom: 1px solid var(--gl-border);\n white-space: nowrap;\n}\n.gl-table tbody td {\n padding: 8px 12px;\n border-bottom: 1px solid var(--gl-border);\n color: var(--gl-text);\n vertical-align: middle;\n}\n.gl-table tbody tr:last-child td { border-bottom: none; }\n.gl-table tbody tr.gl-row-clickable { cursor: pointer; }\n.gl-table tbody tr.gl-row-clickable:hover { background: var(--gl-surface-sunken); }\n.gl-table tbody tr[aria-selected=\"true\"] {\n background: var(--gl-accent-quiet);\n}\n.gl-table .gl-cell-mono { font-family: var(--gl-font-mono); font-size: var(--gl-text-sm); }\n.gl-table .gl-cell-num { text-align: right; font-variant-numeric: tabular-nums; }\n";
22
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,qBAAa,OAAQ,SAAQ,UAAU;IACrC,OAAgB,MAAM,0BAoBpB;cAEiB,MAAM;CAG1B;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,mgCA4BzB,CAAC"}
package/dist/table.js ADDED
@@ -0,0 +1,74 @@
1
+ // <gl-table> wraps a native <table> with consistent styling and
2
+ // adds a `hoverable` mode for selectable rows. Slot-based — caller
3
+ // supplies <thead><tr><th> … <tbody><tr><td> with no per-cell
4
+ // classes needed.
5
+ import { LitElement, css, html } from "lit";
6
+ export class GlTable extends LitElement {
7
+ static { this.styles = css `
8
+ :host {
9
+ display: block;
10
+ width: 100%;
11
+ overflow-x: auto;
12
+ border: 1px solid var(--gl-border);
13
+ border-radius: var(--gl-radius-lg);
14
+ background: var(--gl-surface);
15
+ }
16
+ /* The slotted table gets styled via ::slotted; we apply the
17
+ * shared rules with :host styling rules that target slotted
18
+ * content via a wrapper. */
19
+ .wrap {
20
+ width: 100%;
21
+ }
22
+ ::slotted(table) {
23
+ width: 100%;
24
+ border-collapse: collapse;
25
+ font-size: var(--gl-text-md);
26
+ }
27
+ `; }
28
+ render() {
29
+ return html `<div class="wrap"><slot></slot></div>`;
30
+ }
31
+ }
32
+ if (!customElements.get("gl-table")) {
33
+ customElements.define("gl-table", GlTable);
34
+ }
35
+ /**
36
+ * The slotted table content uses light-DOM CSS. Consumers need to
37
+ * import the matching stylesheet so th/td get borders + padding.
38
+ * Easier than reflecting cells through shadow DOM via Manual slots.
39
+ *
40
+ * Exported as a CSS string so apps can adoptedStyleSheet it:
41
+ * const sheet = new CSSStyleSheet();
42
+ * sheet.replaceSync(glTableStyles);
43
+ * document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
44
+ */
45
+ export const glTableStyles = `
46
+ .gl-table { width: 100%; border-collapse: collapse; font-size: var(--gl-text-md); }
47
+ .gl-table thead th {
48
+ text-align: left;
49
+ font-weight: 600;
50
+ font-size: var(--gl-text-xs);
51
+ text-transform: uppercase;
52
+ letter-spacing: 0.04em;
53
+ color: var(--gl-text-subtle);
54
+ background: var(--gl-surface-sunken);
55
+ padding: 8px 12px;
56
+ border-bottom: 1px solid var(--gl-border);
57
+ white-space: nowrap;
58
+ }
59
+ .gl-table tbody td {
60
+ padding: 8px 12px;
61
+ border-bottom: 1px solid var(--gl-border);
62
+ color: var(--gl-text);
63
+ vertical-align: middle;
64
+ }
65
+ .gl-table tbody tr:last-child td { border-bottom: none; }
66
+ .gl-table tbody tr.gl-row-clickable { cursor: pointer; }
67
+ .gl-table tbody tr.gl-row-clickable:hover { background: var(--gl-surface-sunken); }
68
+ .gl-table tbody tr[aria-selected="true"] {
69
+ background: var(--gl-accent-quiet);
70
+ }
71
+ .gl-table .gl-cell-mono { font-family: var(--gl-font-mono); font-size: var(--gl-text-sm); }
72
+ .gl-table .gl-cell-num { text-align: right; font-variant-numeric: tabular-nums; }
73
+ `;
74
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,mEAAmE;AACnE,8DAA8D;AAC9D,kBAAkB;AAElB,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE5C,MAAM,OAAO,OAAQ,SAAQ,UAAU;aACrB,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;GAoB3B,CAAC;IAEiB,MAAM;QACvB,OAAO,IAAI,CAAA,uCAAuC,CAAC;IACrD,CAAC;;AAGH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;IACpC,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAQD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B5B,CAAC"}
package/dist/tabs.d.ts ADDED
@@ -0,0 +1,27 @@
1
+ import { LitElement } from "lit";
2
+ export declare class GlTabs extends LitElement {
3
+ static styles: import("lit").CSSResult;
4
+ static properties: {
5
+ current: {
6
+ type: StringConstructor;
7
+ reflect: boolean;
8
+ };
9
+ items: {
10
+ attribute: boolean;
11
+ };
12
+ };
13
+ current: string;
14
+ items: Array<{
15
+ id: string;
16
+ label: string;
17
+ hidden?: boolean;
18
+ }>;
19
+ private select;
20
+ protected render(): import("lit").TemplateResult<1>;
21
+ }
22
+ declare global {
23
+ interface HTMLElementTagNameMap {
24
+ "gl-tabs": GlTabs;
25
+ }
26
+ }
27
+ //# sourceMappingURL=tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../src/tabs.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,qBAAa,MAAO,SAAQ,UAAU;IACpC,OAAgB,MAAM,0BAqCpB;IAEF,OAAgB,UAAU;;;;;;;;MAGxB;IAEK,OAAO,SAAM;IACb,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAM;IAE1E,OAAO,CAAC,MAAM;cAOK,MAAM;CAkB1B;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB;CACF"}
package/dist/tabs.js ADDED
@@ -0,0 +1,81 @@
1
+ // <gl-tabs current="editor" @gl-tab-change=...>
2
+ // <gl-tab id="editor" label="Editor"></gl-tab>
3
+ // ...
4
+ // </gl-tabs>
5
+ //
6
+ // Pure navigation widget — callers render the tab panel content
7
+ // themselves based on `current`. Keeps state outside the component.
8
+ import { LitElement, css, html } from "lit";
9
+ export class GlTabs extends LitElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.current = "";
13
+ this.items = [];
14
+ }
15
+ static { this.styles = css `
16
+ :host {
17
+ display: block;
18
+ }
19
+ nav {
20
+ display: flex;
21
+ gap: 2px;
22
+ border-bottom: 1px solid var(--gl-border);
23
+ padding: 0 var(--gl-space-1);
24
+ }
25
+ button {
26
+ font: inherit;
27
+ font-family: var(--gl-font-ui);
28
+ font-size: var(--gl-text-md);
29
+ background: transparent;
30
+ color: var(--gl-text-muted);
31
+ border: none;
32
+ border-bottom: 2px solid transparent;
33
+ padding: 8px 12px;
34
+ cursor: pointer;
35
+ transition:
36
+ color var(--gl-duration-base) var(--gl-ease),
37
+ border-color var(--gl-duration-base) var(--gl-ease);
38
+ }
39
+ button:hover {
40
+ color: var(--gl-text);
41
+ }
42
+ button[aria-current="page"] {
43
+ color: var(--gl-text);
44
+ border-bottom-color: var(--gl-accent);
45
+ font-weight: 500;
46
+ }
47
+ button:focus-visible {
48
+ outline: none;
49
+ box-shadow: inset 0 0 0 2px var(--gl-focus-ring-strong);
50
+ border-radius: var(--gl-radius-sm);
51
+ }
52
+ `; }
53
+ static { this.properties = {
54
+ current: { type: String, reflect: true },
55
+ items: { attribute: false },
56
+ }; }
57
+ select(id) {
58
+ this.current = id;
59
+ this.dispatchEvent(new CustomEvent("gl-tab-change", { detail: { id }, bubbles: true, composed: true }));
60
+ }
61
+ render() {
62
+ const visible = (this.items ?? []).filter((t) => !t.hidden);
63
+ return html `
64
+ <nav aria-label="Sections">
65
+ ${visible.map((t) => html `
66
+ <button
67
+ type="button"
68
+ aria-current=${this.current === t.id ? "page" : "false"}
69
+ @click=${() => this.select(t.id)}
70
+ >
71
+ ${t.label}
72
+ </button>
73
+ `)}
74
+ </nav>
75
+ `;
76
+ }
77
+ }
78
+ if (!customElements.get("gl-tabs")) {
79
+ customElements.define("gl-tabs", GlTabs);
80
+ }
81
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../src/tabs.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,iDAAiD;AACjD,QAAQ;AACR,aAAa;AACb,EAAE;AACF,gEAAgE;AAChE,oEAAoE;AAEpE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE5C,MAAM,OAAO,MAAO,SAAQ,UAAU;IAAtC;;QA6CS,YAAO,GAAG,EAAE,CAAC;QACb,UAAK,GAA2D,EAAE,CAAC;IA2B5E,CAAC;aAxEiB,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqC3B,AArCqB,CAqCpB;aAEc,eAAU,GAAG;QAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;QACxC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;KAC5B,AAHyB,CAGxB;IAKM,MAAM,CAAC,EAAU;QACvB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CACpF,CAAC;IACJ,CAAC;IAEkB,MAAM;QACvB,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAA;;UAEL,OAAO,CAAC,GAAG,CACX,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAA;;;6BAGQ,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;uBAC9C,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;;gBAE9B,CAAC,CAAC,KAAK;;WAEZ,CACF;;KAEJ,CAAC;IACJ,CAAC;;AAGH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;IACnC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { LitElement } from "lit";
2
+ export declare class GlTextarea extends LitElement {
3
+ static formAssociated: boolean;
4
+ static styles: import("lit").CSSResult;
5
+ static properties: {
6
+ label: {
7
+ type: StringConstructor;
8
+ };
9
+ name: {
10
+ type: StringConstructor;
11
+ };
12
+ value: {
13
+ type: StringConstructor;
14
+ };
15
+ placeholder: {
16
+ type: StringConstructor;
17
+ };
18
+ rows: {
19
+ type: NumberConstructor;
20
+ };
21
+ };
22
+ label: string;
23
+ name: string;
24
+ value: string;
25
+ placeholder: string;
26
+ rows: number;
27
+ private internals;
28
+ constructor();
29
+ willUpdate(changed: Map<string, unknown>): void;
30
+ private onInput;
31
+ protected render(): import("lit").TemplateResult<1>;
32
+ }
33
+ declare global {
34
+ interface HTMLElementTagNameMap {
35
+ "gl-textarea": GlTextarea;
36
+ }
37
+ }
38
+ //# sourceMappingURL=textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../src/textarea.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,qBAAa,UAAW,SAAQ,UAAU;IACxC,MAAM,CAAC,cAAc,UAAQ;IAE7B,OAAgB,MAAM,0BA4BpB;IAEF,OAAgB,UAAU;;;;;;;;;;;;;;;;MAMxB;IAEK,KAAK,SAAM;IACX,IAAI,SAAM;IACV,KAAK,SAAM;IACX,WAAW,SAAM;IACjB,IAAI,SAAK;IAEhB,OAAO,CAAC,SAAS,CAAiC;;IAQlC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM/D,OAAO,CAAC,OAAO;cAMI,MAAM;CAc1B;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
@@ -0,0 +1,80 @@
1
+ import { LitElement, css, html } from "lit";
2
+ export class GlTextarea extends LitElement {
3
+ static { this.formAssociated = true; }
4
+ static { this.styles = css `
5
+ :host { display: block; }
6
+ label {
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: var(--gl-space-1);
10
+ font-size: var(--gl-text-sm);
11
+ color: var(--gl-text-muted);
12
+ }
13
+ textarea {
14
+ font-family: var(--gl-font-mono);
15
+ font-size: var(--gl-text-base);
16
+ color: var(--gl-text);
17
+ background: var(--gl-surface);
18
+ border: 1px solid var(--gl-border);
19
+ border-radius: var(--gl-radius-md);
20
+ padding: 8px 10px;
21
+ width: 100%;
22
+ min-height: 88px;
23
+ resize: vertical;
24
+ box-sizing: border-box;
25
+ transition: border-color var(--gl-duration-base) var(--gl-ease);
26
+ }
27
+ textarea:focus-visible {
28
+ outline: none;
29
+ border-color: var(--gl-focus-ring-strong);
30
+ box-shadow: 0 0 0 3px var(--gl-focus-ring);
31
+ }
32
+ `; }
33
+ static { this.properties = {
34
+ label: { type: String },
35
+ name: { type: String },
36
+ value: { type: String },
37
+ placeholder: { type: String },
38
+ rows: { type: Number },
39
+ }; }
40
+ constructor() {
41
+ super();
42
+ this.label = "";
43
+ this.name = "";
44
+ this.value = "";
45
+ this.placeholder = "";
46
+ this.rows = 4;
47
+ this.internals = null;
48
+ if (typeof this.attachInternals === "function") {
49
+ this.internals = this.attachInternals();
50
+ }
51
+ }
52
+ willUpdate(changed) {
53
+ if (changed.has("value") && this.internals && typeof this.internals.setFormValue === "function") {
54
+ this.internals.setFormValue(this.value);
55
+ }
56
+ }
57
+ onInput(e) {
58
+ const t = e.target;
59
+ this.value = t.value;
60
+ this.dispatchEvent(new CustomEvent("gl-input", { detail: { value: t.value }, bubbles: true, composed: true }));
61
+ }
62
+ render() {
63
+ return html `
64
+ <label>
65
+ ${this.label ? html `<span>${this.label}</span>` : null}
66
+ <textarea
67
+ name=${this.name}
68
+ .value=${this.value}
69
+ placeholder=${this.placeholder}
70
+ rows=${this.rows}
71
+ @input=${(e) => this.onInput(e)}
72
+ ></textarea>
73
+ </label>
74
+ `;
75
+ }
76
+ }
77
+ if (!customElements.get("gl-textarea")) {
78
+ customElements.define("gl-textarea", GlTextarea);
79
+ }
80
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../src/textarea.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE5C,MAAM,OAAO,UAAW,SAAQ,UAAU;aACjC,mBAAc,GAAG,IAAI,AAAP,CAAQ;aAEb,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4B3B,AA5BqB,CA4BpB;aAEc,eAAU,GAAG;QAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACvB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACtB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACvB,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAC7B,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;KACvB,AANyB,CAMxB;IASF;QACE,KAAK,EAAE,CAAC;QARH,UAAK,GAAG,EAAE,CAAC;QACX,SAAI,GAAG,EAAE,CAAC;QACV,UAAK,GAAG,EAAE,CAAC;QACX,gBAAW,GAAG,EAAE,CAAC;QACjB,SAAI,GAAG,CAAC,CAAC;QAER,cAAS,GAA4B,IAAI,CAAC;QAGhD,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;YAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAEe,UAAU,CAAC,OAA6B;QACtD,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;YAChG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,CAAQ;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,MAA6B,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACjH,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA,SAAS,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI;;iBAE7C,IAAI,CAAC,IAAI;mBACP,IAAI,CAAC,KAAK;wBACL,IAAI,CAAC,WAAW;iBACvB,IAAI,CAAC,IAAI;mBACP,CAAC,CAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;;KAG3C,CAAC;IACJ,CAAC;;AAGH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;IACvC,cAAc,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { LitElement } from "lit";
2
+ import { type Theme } from "./theme.js";
3
+ export declare class GlThemeToggle extends LitElement {
4
+ static styles: import("lit").CSSResult;
5
+ static properties: {
6
+ theme: {
7
+ state: boolean;
8
+ };
9
+ };
10
+ theme: Theme;
11
+ connectedCallback(): void;
12
+ private cycle;
13
+ protected render(): import("lit").TemplateResult<1>;
14
+ }
15
+ declare global {
16
+ interface HTMLElementTagNameMap {
17
+ "gl-theme-toggle": GlThemeToggle;
18
+ }
19
+ }
20
+ //# sourceMappingURL=theme-toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-toggle.d.ts","sourceRoot":"","sources":["../src/theme-toggle.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,OAAO,EAAsB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAE5D,qBAAa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,0BAsBpB;IAEF,OAAgB,UAAU;;;;MAExB;IAEK,KAAK,EAAE,KAAK,CAAY;IAEf,iBAAiB,IAAI,IAAI;IAKzC,OAAO,CAAC,KAAK;cAQM,MAAM;CAa1B;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,aAAa,CAAC;KAClC;CACF"}
@@ -0,0 +1,64 @@
1
+ // <gl-theme-toggle> — three-way switch: system / light / dark.
2
+ // Persists choice via the theme module; cycles on click.
3
+ import { LitElement, css, html } from "lit";
4
+ import { getTheme, setTheme } from "./theme.js";
5
+ export class GlThemeToggle extends LitElement {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.theme = "system";
9
+ }
10
+ static { this.styles = css `
11
+ :host { display: inline-block; }
12
+ button {
13
+ font: inherit;
14
+ font-size: var(--gl-text-sm);
15
+ background: transparent;
16
+ color: var(--gl-text-muted);
17
+ border: 1px solid var(--gl-border);
18
+ border-radius: var(--gl-radius-md);
19
+ padding: 4px 10px;
20
+ cursor: pointer;
21
+ display: inline-flex;
22
+ align-items: center;
23
+ gap: var(--gl-space-2);
24
+ height: 28px;
25
+ }
26
+ button:hover { color: var(--gl-text); border-color: var(--gl-border-strong); }
27
+ button:focus-visible {
28
+ outline: 2px solid var(--gl-focus-ring-strong);
29
+ outline-offset: 2px;
30
+ }
31
+ .glyph { font-family: var(--gl-font-mono); font-weight: 600; }
32
+ `; }
33
+ static { this.properties = {
34
+ theme: { state: true },
35
+ }; }
36
+ connectedCallback() {
37
+ super.connectedCallback();
38
+ this.theme = getTheme();
39
+ }
40
+ cycle() {
41
+ const order = ["system", "light", "dark"];
42
+ const next = order[(order.indexOf(this.theme) + 1) % order.length] ?? "system";
43
+ this.theme = next;
44
+ setTheme(next);
45
+ this.requestUpdate();
46
+ }
47
+ render() {
48
+ const glyph = this.theme === "light" ? "☀" : this.theme === "dark" ? "☾" : "◐";
49
+ return html `
50
+ <button
51
+ type="button"
52
+ aria-label="Theme: ${this.theme}"
53
+ title="Theme: ${this.theme} (click to cycle)"
54
+ @click=${() => this.cycle()}
55
+ >
56
+ <span class="glyph">${glyph}</span> ${this.theme}
57
+ </button>
58
+ `;
59
+ }
60
+ }
61
+ if (!customElements.get("gl-theme-toggle")) {
62
+ customElements.define("gl-theme-toggle", GlThemeToggle);
63
+ }
64
+ //# sourceMappingURL=theme-toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-toggle.js","sourceRoot":"","sources":["../src/theme-toggle.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,yDAAyD;AAEzD,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAc,MAAM,YAAY,CAAC;AAE5D,MAAM,OAAO,aAAc,SAAQ,UAAU;IAA7C;;QA6BS,UAAK,GAAU,QAAQ,CAAC;IA4BjC,CAAC;aAxDiB,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;GAsB3B,AAtBqB,CAsBpB;aAEc,eAAU,GAAG;QAC3B,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;KACvB,AAFyB,CAExB;IAIc,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEO,KAAK;QACX,MAAM,KAAK,GAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;QAC/E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEkB,MAAM;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/E,OAAO,IAAI,CAAA;;;6BAGc,IAAI,CAAC,KAAK;wBACf,IAAI,CAAC,KAAK;iBACjB,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;;8BAEL,KAAK,WAAW,IAAI,CAAC,KAAK;;KAEnD,CAAC;IACJ,CAAC;;AAGH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;IAC3C,cAAc,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,9 @@
1
+ export type Theme = "light" | "dark" | "system";
2
+ export declare function getTheme(): Theme;
3
+ /** Resolve "system" to the actual mode the OS reports. */
4
+ export declare function resolvedTheme(t?: Theme): "light" | "dark";
5
+ /** Apply the theme to <html> + persist. */
6
+ export declare function setTheme(t: Theme): void;
7
+ /** Call once on app boot to apply the stored preference. */
8
+ export declare function initTheme(): void;
9
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAIhD,wBAAgB,QAAQ,IAAI,KAAK,CAIhC;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,CAAC,GAAE,KAAkB,GAAG,OAAO,GAAG,MAAM,CAIrE;AAED,2CAA2C;AAC3C,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAiBvC;AAED,4DAA4D;AAC5D,wBAAgB,SAAS,IAAI,IAAI,CAIhC"}
package/dist/theme.js ADDED
@@ -0,0 +1,48 @@
1
+ // Theme toggle. Persists choice to localStorage; falls back to
2
+ // prefers-color-scheme when the user hasn't picked. Single source
3
+ // of truth: the `data-glossa-theme` attribute on <html>.
4
+ const STORAGE_KEY = "glossa-ui-theme-v1";
5
+ export function getTheme() {
6
+ if (typeof localStorage === "undefined")
7
+ return "system";
8
+ const v = localStorage.getItem(STORAGE_KEY);
9
+ return v === "light" || v === "dark" ? v : "system";
10
+ }
11
+ /** Resolve "system" to the actual mode the OS reports. */
12
+ export function resolvedTheme(t = getTheme()) {
13
+ if (t !== "system")
14
+ return t;
15
+ if (typeof matchMedia === "undefined")
16
+ return "light";
17
+ return matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
18
+ }
19
+ /** Apply the theme to <html> + persist. */
20
+ export function setTheme(t) {
21
+ if (typeof document === "undefined")
22
+ return;
23
+ if (t === "system") {
24
+ document.documentElement.removeAttribute("data-glossa-theme");
25
+ try {
26
+ localStorage.removeItem(STORAGE_KEY);
27
+ }
28
+ catch {
29
+ /* ignore */
30
+ }
31
+ return;
32
+ }
33
+ document.documentElement.setAttribute("data-glossa-theme", t);
34
+ try {
35
+ localStorage.setItem(STORAGE_KEY, t);
36
+ }
37
+ catch {
38
+ /* ignore */
39
+ }
40
+ }
41
+ /** Call once on app boot to apply the stored preference. */
42
+ export function initTheme() {
43
+ const t = getTheme();
44
+ if (t === "system")
45
+ return; // CSS prefers-color-scheme picks up
46
+ setTheme(t);
47
+ }
48
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,kEAAkE;AAClE,yDAAyD;AAIzD,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEzC,MAAM,UAAU,QAAQ;IACtB,IAAI,OAAO,YAAY,KAAK,WAAW;QAAE,OAAO,QAAQ,CAAC;IACzD,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAAC,IAAW,QAAQ,EAAE;IACjD,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IAC7B,IAAI,OAAO,UAAU,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC;IACtD,OAAO,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/E,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,QAAQ,CAAC,CAAQ;IAC/B,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAC5C,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QACD,OAAO;IACT,CAAC;IACD,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,SAAS;IACvB,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,oCAAoC;IAChE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACd,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { LitElement } from "lit";
2
+ export type ToastVariant = "ok" | "err";
3
+ export declare class GlToast extends LitElement {
4
+ static styles: import("lit").CSSResult;
5
+ static properties: {
6
+ variant: {
7
+ type: StringConstructor;
8
+ };
9
+ message: {
10
+ type: StringConstructor;
11
+ };
12
+ };
13
+ variant: ToastVariant;
14
+ message: string;
15
+ protected render(): import("lit").TemplateResult<1>;
16
+ }
17
+ /**
18
+ * Imperative helper: pops a toast attached to <body>. Returns a
19
+ * function that removes it immediately if the caller wants to
20
+ * cancel.
21
+ */
22
+ export declare function toast(message: string, variant?: ToastVariant, ttl?: number): () => void;
23
+ declare global {
24
+ interface HTMLElementTagNameMap {
25
+ "gl-toast": GlToast;
26
+ }
27
+ }
28
+ //# sourceMappingURL=toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../src/toast.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,KAAK,CAAC;AAExC,qBAAa,OAAQ,SAAQ,UAAU;IACrC,OAAgB,MAAM,0BAoCpB;IAEF,OAAgB,UAAU;;;;;;;MAGxB;IAEK,OAAO,EAAE,YAAY,CAAQ;IAC7B,OAAO,SAAM;cAED,MAAM;CAO1B;AAMD;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAmB,EAAE,GAAG,SAAO,GAAG,MAAM,IAAI,CAW3F;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}