@luxalgo/vela 0.7.7 → 0.8.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/dist/{DataProvider-CGa4KHRa.d.cts → DataProvider-BrlxntPN.d.cts} +1 -1
- package/dist/{DataProvider-CmWUtDVL.d.ts → DataProvider-DwFIoV4r.d.ts} +1 -1
- package/dist/{chunk-WTWGEB7K.js → chunk-2IAETM2I.js} +260 -2
- package/dist/{chunk-CAFCLMPF.js → chunk-BZQM2XO7.js} +1 -0
- package/dist/{chunk-ZA2XWTGH.js → chunk-E3GU6AUI.js} +499 -43
- package/dist/{chunk-BFA32GOU.js → chunk-EZ5FWVLA.js} +5 -2
- package/dist/{chunk-PVGWNF7V.js → chunk-KA77UTRF.js} +2 -2
- package/dist/{chunk-RVQWJOEE.js → chunk-QBPUT5SU.js} +2862 -1034
- package/dist/{contributions-DF_Ea07m.d.cts → contributions-CtlptxR8.d.cts} +187 -5
- package/dist/{contributions-nKOSeLy8.d.ts → contributions-tjNExo1o.d.ts} +187 -5
- package/dist/index.cjs +3142 -1030
- package/dist/index.d.cts +40 -8
- package/dist/index.d.ts +40 -8
- package/dist/index.js +28 -4
- package/dist/{options-D1AJKsn_.d.ts → options-BnEPUuVV.d.cts} +1 -1
- package/dist/{options-D1AJKsn_.d.cts → options-BnEPUuVV.d.ts} +1 -1
- package/dist/{plugin-DPyVJFoA.d.cts → plugin-BWxJRKzS.d.cts} +31 -25
- package/dist/{plugin-0oFDnexb.d.ts → plugin-e2WUEtiI.d.ts} +31 -25
- package/dist/plugin.cjs +1 -0
- package/dist/plugin.d.cts +4 -4
- package/dist/plugin.d.ts +4 -4
- package/dist/plugin.js +2 -2
- package/dist/providers/binance.d.cts +2 -2
- package/dist/providers/binance.d.ts +2 -2
- package/dist/providers/coinbase.d.cts +2 -2
- package/dist/providers/coinbase.d.ts +2 -2
- package/dist/providers/hyperliquid.d.cts +2 -2
- package/dist/providers/hyperliquid.d.ts +2 -2
- package/dist/{statusline-model-DAFyqVmR.d.ts → statusline-model-DFY7tuHj.d.cts} +5 -3
- package/dist/{statusline-model-BoWJ3cWQ.d.cts → statusline-model-zKXtGIjj.d.ts} +5 -3
- package/dist/ui.cjs +263 -0
- package/dist/ui.d.cts +75 -2
- package/dist/ui.d.ts +75 -2
- package/dist/ui.js +3 -3
- package/dist/vela.global.js +3144 -1032
- package/dist/vela.global.min.js +78 -76
- package/dist/widget.cjs +3627 -1081
- package/dist/widget.d.cts +26 -7
- package/dist/widget.d.ts +26 -7
- package/dist/widget.js +7 -7
- package/dist/workspace.cjs +3630 -1081
- package/dist/workspace.d.cts +126 -6
- package/dist/workspace.d.ts +126 -6
- package/dist/workspace.js +6 -6
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { overlayScrollbarCss, isDarkColor, mix, HIGHLIGHT, ACCENT_BRIGHT, ACCENT, withAlpha, injectStyles, iconAt, iconEl, BULLISH, BEARISH, WARNING, NEUTRAL } from './chunk-
|
|
1
|
+
import { overlayScrollbarCss, isDarkColor, mix, HIGHLIGHT, ACCENT_BRIGHT, ACCENT, withAlpha, injectStyles, iconAt, iconEl, BULLISH, BEARISH, WARNING, NEUTRAL } from './chunk-BZQM2XO7.js';
|
|
2
2
|
import { VanillaMachine, normalizeProps, spreadProps } from '@zag-js/vanilla';
|
|
3
3
|
export { normalizeProps, spreadProps } from '@zag-js/vanilla';
|
|
4
4
|
import * as menu from '@zag-js/menu';
|
|
@@ -1505,6 +1505,264 @@ var Dialog = class {
|
|
|
1505
1505
|
}
|
|
1506
1506
|
};
|
|
1507
1507
|
|
|
1508
|
+
// src/ui/components/date-picker/controller.ts
|
|
1509
|
+
var MONTH_LABELS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
|
1510
|
+
var MONTH_SHORT = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
|
|
1511
|
+
var WEEKDAY_LABELS = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
|
|
1512
|
+
function isoDate(d) {
|
|
1513
|
+
return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
|
|
1514
|
+
}
|
|
1515
|
+
function normalizeDateInput(raw) {
|
|
1516
|
+
const m = /^(\d{4})-(\d{1,2})-(\d{1,2})$/.exec(raw.trim());
|
|
1517
|
+
if (!m) return null;
|
|
1518
|
+
const y = Number(m[1]);
|
|
1519
|
+
const mo = Number(m[2]);
|
|
1520
|
+
const d = Number(m[3]);
|
|
1521
|
+
const dt = new Date(y, mo - 1, d);
|
|
1522
|
+
if (dt.getFullYear() !== y || dt.getMonth() !== mo - 1 || dt.getDate() !== d) return null;
|
|
1523
|
+
return isoDate(dt);
|
|
1524
|
+
}
|
|
1525
|
+
function parseIsoDate(raw) {
|
|
1526
|
+
const iso = raw ? normalizeDateInput(raw) : null;
|
|
1527
|
+
if (!iso) return null;
|
|
1528
|
+
const [y, mo, d] = iso.split("-").map(Number);
|
|
1529
|
+
return new Date(y, mo - 1, d);
|
|
1530
|
+
}
|
|
1531
|
+
function datePickerController(opts = {}) {
|
|
1532
|
+
const today = opts.today ?? /* @__PURE__ */ new Date();
|
|
1533
|
+
let selected = parseIsoDate(opts.value);
|
|
1534
|
+
let year = selected?.getFullYear() ?? today.getFullYear();
|
|
1535
|
+
let month = selected?.getMonth() ?? today.getMonth();
|
|
1536
|
+
let panel = "date";
|
|
1537
|
+
const decade = () => Math.floor(year / 10) * 10;
|
|
1538
|
+
return {
|
|
1539
|
+
get panel() {
|
|
1540
|
+
return panel;
|
|
1541
|
+
},
|
|
1542
|
+
get year() {
|
|
1543
|
+
return year;
|
|
1544
|
+
},
|
|
1545
|
+
get month() {
|
|
1546
|
+
return month;
|
|
1547
|
+
},
|
|
1548
|
+
get value() {
|
|
1549
|
+
return selected ? isoDate(selected) : null;
|
|
1550
|
+
},
|
|
1551
|
+
header() {
|
|
1552
|
+
return {
|
|
1553
|
+
month: MONTH_LABELS[month] ?? "",
|
|
1554
|
+
monthVisible: panel === "date",
|
|
1555
|
+
year: panel === "year" ? `${decade()}-${decade() + 9}` : String(year),
|
|
1556
|
+
yearDisabled: panel === "year"
|
|
1557
|
+
// in the decade panel the year reads as its title
|
|
1558
|
+
};
|
|
1559
|
+
},
|
|
1560
|
+
navLabels() {
|
|
1561
|
+
if (panel === "date") return { prev: "Previous month", next: "Next month" };
|
|
1562
|
+
if (panel === "month") return { prev: "Previous year", next: "Next year" };
|
|
1563
|
+
return { prev: "Previous decade", next: "Next decade" };
|
|
1564
|
+
},
|
|
1565
|
+
cells() {
|
|
1566
|
+
const out = [];
|
|
1567
|
+
if (panel === "date") {
|
|
1568
|
+
const startPad = new Date(year, month, 1).getDay();
|
|
1569
|
+
const days = new Date(year, month + 1, 0).getDate();
|
|
1570
|
+
const todayIso = isoDate(today);
|
|
1571
|
+
const selectedIso = selected ? isoDate(selected) : "";
|
|
1572
|
+
for (let i = 0; i < startPad; i++) out.push({ label: "", value: "", checked: false, today: false, blank: true });
|
|
1573
|
+
for (let day = 1; day <= days; day++) {
|
|
1574
|
+
const iso = `${year}-${String(month + 1).padStart(2, "0")}-${String(day).padStart(2, "0")}`;
|
|
1575
|
+
out.push({ label: String(day), value: iso, checked: iso === selectedIso, today: iso === todayIso });
|
|
1576
|
+
}
|
|
1577
|
+
return out;
|
|
1578
|
+
}
|
|
1579
|
+
if (panel === "month") {
|
|
1580
|
+
for (let m = 0; m < 12; m++) {
|
|
1581
|
+
out.push({
|
|
1582
|
+
label: MONTH_SHORT[m] ?? "",
|
|
1583
|
+
value: m,
|
|
1584
|
+
checked: selected?.getFullYear() === year && selected.getMonth() === m,
|
|
1585
|
+
today: today.getFullYear() === year && today.getMonth() === m
|
|
1586
|
+
});
|
|
1587
|
+
}
|
|
1588
|
+
return out;
|
|
1589
|
+
}
|
|
1590
|
+
const d = decade();
|
|
1591
|
+
for (let y = d - 1; y <= d + 10; y++) {
|
|
1592
|
+
out.push({ label: String(y), value: y, checked: selected?.getFullYear() === y, today: today.getFullYear() === y, outside: y < d || y > d + 9 });
|
|
1593
|
+
}
|
|
1594
|
+
return out;
|
|
1595
|
+
},
|
|
1596
|
+
step(dir) {
|
|
1597
|
+
if (panel === "date") {
|
|
1598
|
+
month += dir;
|
|
1599
|
+
if (month < 0) {
|
|
1600
|
+
month = 11;
|
|
1601
|
+
year -= 1;
|
|
1602
|
+
}
|
|
1603
|
+
if (month > 11) {
|
|
1604
|
+
month = 0;
|
|
1605
|
+
year += 1;
|
|
1606
|
+
}
|
|
1607
|
+
} else {
|
|
1608
|
+
year += panel === "month" ? dir : dir * 10;
|
|
1609
|
+
}
|
|
1610
|
+
},
|
|
1611
|
+
showMonths() {
|
|
1612
|
+
panel = "month";
|
|
1613
|
+
},
|
|
1614
|
+
showYears() {
|
|
1615
|
+
panel = "year";
|
|
1616
|
+
},
|
|
1617
|
+
choose(cell) {
|
|
1618
|
+
if (cell.blank) return null;
|
|
1619
|
+
if (panel === "date") {
|
|
1620
|
+
selected = parseIsoDate(String(cell.value));
|
|
1621
|
+
return selected ? isoDate(selected) : null;
|
|
1622
|
+
}
|
|
1623
|
+
if (panel === "month") {
|
|
1624
|
+
month = Number(cell.value);
|
|
1625
|
+
panel = "date";
|
|
1626
|
+
return null;
|
|
1627
|
+
}
|
|
1628
|
+
year = Number(cell.value);
|
|
1629
|
+
panel = "month";
|
|
1630
|
+
return null;
|
|
1631
|
+
},
|
|
1632
|
+
setValue(value) {
|
|
1633
|
+
selected = parseIsoDate(value);
|
|
1634
|
+
if (selected) {
|
|
1635
|
+
year = selected.getFullYear();
|
|
1636
|
+
month = selected.getMonth();
|
|
1637
|
+
}
|
|
1638
|
+
panel = "date";
|
|
1639
|
+
}
|
|
1640
|
+
};
|
|
1641
|
+
}
|
|
1642
|
+
|
|
1643
|
+
// src/ui/components/date-picker/styles.ts
|
|
1644
|
+
var DATE_PICKER_STYLE_ID = "vela-date-picker-styles";
|
|
1645
|
+
var DATE_PICKER_CSS = `
|
|
1646
|
+
.vela-date-picker{color:var(--vela-fg);font:14px var(--vela-font);user-select:none;}
|
|
1647
|
+
.vela-date-picker [hidden]{display:none !important;}
|
|
1648
|
+
.vela-date-picker-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;}
|
|
1649
|
+
.vela-date-picker-title{flex:1;display:flex;align-items:center;justify-content:center;gap:2px;min-width:0;}
|
|
1650
|
+
.vela-date-picker-switch{border:none;background:transparent;color:var(--vela-fg-bright);font:inherit;font-weight:600;font-size:14px;padding:2px 6px;border-radius:4px;cursor:pointer;}
|
|
1651
|
+
.vela-date-picker-switch:not(:disabled):hover{background:var(--vela-hover);}
|
|
1652
|
+
.vela-date-picker-switch:disabled{cursor:default;}
|
|
1653
|
+
.vela-date-picker-nav{width:24px;height:24px;border:none;background:transparent;color:var(--vela-fg-muted);border-radius:4px;padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:14px;}
|
|
1654
|
+
.vela-date-picker-nav:hover{background:var(--vela-hover);color:var(--vela-fg-bright);}
|
|
1655
|
+
.vela-date-picker-week,.vela-date-picker-grid{display:grid;grid-template-columns:repeat(7,28px);gap:2px;}
|
|
1656
|
+
.vela-date-picker-week{margin-bottom:4px;color:var(--vela-fg-muted);font-size:11px;text-align:center;}
|
|
1657
|
+
.vela-date-picker-week span{line-height:20px;}
|
|
1658
|
+
.vela-date-picker-blank{width:28px;height:28px;}
|
|
1659
|
+
.vela-date-picker-day{width:28px;height:28px;border:none;background:transparent;color:inherit;border-radius:4px;padding:0;cursor:pointer;font:inherit;font-size:14px;}
|
|
1660
|
+
.vela-date-picker-day:hover{background:var(--vela-hover);}
|
|
1661
|
+
.vela-date-picker-day[data-checked]{background:var(--vela-hover-strong);color:var(--vela-fg-bright);}
|
|
1662
|
+
.vela-date-picker-day[data-today]:not([data-checked]){box-shadow:inset 0 0 0 1px var(--vela-border-strong);}
|
|
1663
|
+
.vela-date-picker-cells{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;width:calc(7 * 28px + 6 * 2px);}
|
|
1664
|
+
.vela-date-picker-cell{height:36px;border:none;background:transparent;color:inherit;border-radius:4px;padding:0 4px;cursor:pointer;font:inherit;font-size:14px;}
|
|
1665
|
+
.vela-date-picker-cell:hover{background:var(--vela-hover);}
|
|
1666
|
+
.vela-date-picker-cell[data-checked]{background:var(--vela-hover-strong);color:var(--vela-fg-bright);}
|
|
1667
|
+
.vela-date-picker-cell[data-today]:not([data-checked]){box-shadow:inset 0 0 0 1px var(--vela-border-strong);}
|
|
1668
|
+
.vela-date-picker-cell[data-outside]{opacity:0.45;}
|
|
1669
|
+
`;
|
|
1670
|
+
|
|
1671
|
+
// src/ui/components/date-picker/view.ts
|
|
1672
|
+
var DatePicker = class {
|
|
1673
|
+
constructor(opts = {}) {
|
|
1674
|
+
this.opts = opts;
|
|
1675
|
+
const doc = document;
|
|
1676
|
+
injectStyles(DATE_PICKER_STYLE_ID, DATE_PICKER_CSS, doc);
|
|
1677
|
+
this.ctrl = datePickerController(opts);
|
|
1678
|
+
const button = (className) => {
|
|
1679
|
+
const b = doc.createElement("button");
|
|
1680
|
+
b.type = "button";
|
|
1681
|
+
b.className = className;
|
|
1682
|
+
return b;
|
|
1683
|
+
};
|
|
1684
|
+
this.prev = button("vela-date-picker-nav");
|
|
1685
|
+
this.prev.append(iconEl("chevron-left", doc));
|
|
1686
|
+
this.next = button("vela-date-picker-nav");
|
|
1687
|
+
this.next.append(iconEl("chevron-right", doc));
|
|
1688
|
+
this.monthBtn = button("vela-date-picker-switch");
|
|
1689
|
+
this.monthBtn.setAttribute("aria-label", "Choose month");
|
|
1690
|
+
this.yearBtn = button("vela-date-picker-switch");
|
|
1691
|
+
this.yearBtn.setAttribute("aria-label", "Choose year");
|
|
1692
|
+
const title = doc.createElement("div");
|
|
1693
|
+
title.className = "vela-date-picker-title";
|
|
1694
|
+
title.append(this.monthBtn, this.yearBtn);
|
|
1695
|
+
const head = doc.createElement("div");
|
|
1696
|
+
head.className = "vela-date-picker-head";
|
|
1697
|
+
head.append(this.prev, title, this.next);
|
|
1698
|
+
this.week = doc.createElement("div");
|
|
1699
|
+
this.week.className = "vela-date-picker-week";
|
|
1700
|
+
for (const d of WEEKDAY_LABELS) {
|
|
1701
|
+
const cell = doc.createElement("span");
|
|
1702
|
+
cell.textContent = d;
|
|
1703
|
+
this.week.appendChild(cell);
|
|
1704
|
+
}
|
|
1705
|
+
this.grid = doc.createElement("div");
|
|
1706
|
+
const on = (el, run) => el.addEventListener("click", (e) => {
|
|
1707
|
+
e.stopPropagation();
|
|
1708
|
+
run();
|
|
1709
|
+
this.paint();
|
|
1710
|
+
});
|
|
1711
|
+
on(this.prev, () => this.ctrl.step(-1));
|
|
1712
|
+
on(this.next, () => this.ctrl.step(1));
|
|
1713
|
+
on(this.monthBtn, () => this.ctrl.showMonths());
|
|
1714
|
+
on(this.yearBtn, () => this.ctrl.showYears());
|
|
1715
|
+
this.el = doc.createElement("div");
|
|
1716
|
+
this.el.className = "vela-date-picker";
|
|
1717
|
+
this.el.append(head, this.week, this.grid);
|
|
1718
|
+
this.paint();
|
|
1719
|
+
}
|
|
1720
|
+
get value() {
|
|
1721
|
+
return this.ctrl.value;
|
|
1722
|
+
}
|
|
1723
|
+
/** Rewrite the selection without emitting (the calendar opens on its month). */
|
|
1724
|
+
setValue(value) {
|
|
1725
|
+
this.ctrl.setValue(value);
|
|
1726
|
+
this.paint();
|
|
1727
|
+
}
|
|
1728
|
+
paint() {
|
|
1729
|
+
const doc = this.el.ownerDocument;
|
|
1730
|
+
const h = this.ctrl.header();
|
|
1731
|
+
this.monthBtn.hidden = !h.monthVisible;
|
|
1732
|
+
this.monthBtn.textContent = h.month;
|
|
1733
|
+
this.yearBtn.textContent = h.year;
|
|
1734
|
+
this.yearBtn.disabled = h.yearDisabled;
|
|
1735
|
+
const nav = this.ctrl.navLabels();
|
|
1736
|
+
this.prev.setAttribute("aria-label", nav.prev);
|
|
1737
|
+
this.next.setAttribute("aria-label", nav.next);
|
|
1738
|
+
const dates = this.ctrl.panel === "date";
|
|
1739
|
+
this.week.hidden = !dates;
|
|
1740
|
+
this.grid.className = dates ? "vela-date-picker-grid" : "vela-date-picker-cells";
|
|
1741
|
+
this.grid.replaceChildren(...this.ctrl.cells().map((cell) => this.cellEl(doc, cell, dates)));
|
|
1742
|
+
}
|
|
1743
|
+
cellEl(doc, cell, dates) {
|
|
1744
|
+
if (cell.blank) {
|
|
1745
|
+
const blank = doc.createElement("span");
|
|
1746
|
+
blank.className = "vela-date-picker-blank";
|
|
1747
|
+
return blank;
|
|
1748
|
+
}
|
|
1749
|
+
const b = doc.createElement("button");
|
|
1750
|
+
b.type = "button";
|
|
1751
|
+
b.className = dates ? "vela-date-picker-day" : "vela-date-picker-cell";
|
|
1752
|
+
b.textContent = cell.label;
|
|
1753
|
+
if (cell.checked) b.dataset.checked = "1";
|
|
1754
|
+
if (cell.today) b.dataset.today = "1";
|
|
1755
|
+
if (cell.outside) b.dataset.outside = "1";
|
|
1756
|
+
b.addEventListener("click", (e) => {
|
|
1757
|
+
e.stopPropagation();
|
|
1758
|
+
const picked = this.ctrl.choose(cell);
|
|
1759
|
+
if (picked) this.opts.onPick?.(picked);
|
|
1760
|
+
else this.paint();
|
|
1761
|
+
});
|
|
1762
|
+
return b;
|
|
1763
|
+
}
|
|
1764
|
+
};
|
|
1765
|
+
|
|
1508
1766
|
// src/ui/components/switch/controller.ts
|
|
1509
1767
|
function switchController(opts = {}) {
|
|
1510
1768
|
let checked = opts.checked ?? false;
|
|
@@ -2888,4 +3146,4 @@ function buildFieldControl(desc) {
|
|
|
2888
3146
|
return { el };
|
|
2889
3147
|
}
|
|
2890
3148
|
|
|
2891
|
-
export { CALLOUT_CSS, CALLOUT_STYLE_ID, CalloutBubble, ColorField, Dialog, FIELD_GAP_PX, GlyphSelect, Menu, NumberInput, Popover, STATIC_TOKENS, Select, Switch, TextArea, TextField, WIDTH_FIELD_OPTIONS, applyPlotOverlayTokens, applyThemeTokens, blendOver, buildColorPicker, buildFieldControl, buildPalette, calloutPanelRows, clampNumber, closeColorPopover, closeOpenPopovers, closeWidthPopover, closesPanel, colorField, colorPickerController, combineColor, decorateSelectScroll, dialogController, ensureUIHost, eventDismissedPopover, fieldGrid, fieldGridColumns, fieldRow, fieldSection, fieldSeparator, fillSelectList, glyphSelectController, hslHex, insetRect, intersectRects, isPopoverOpen, lineWidthGlyph, menuController, nextUid, numberInputController, openPopoverTrigger, openSelectList, placePopover, popoverController, runMachine, selectController, snapToStep, splitColor, switchController, textAreaController, textFieldController, themeTokens, toggleSelectList, transparencyChecker, viewportRect, widthField, widthFieldOptions };
|
|
3149
|
+
export { CALLOUT_CSS, CALLOUT_STYLE_ID, CalloutBubble, ColorField, DatePicker, Dialog, FIELD_GAP_PX, GlyphSelect, Menu, NumberInput, Popover, STATIC_TOKENS, Select, Switch, TextArea, TextField, WIDTH_FIELD_OPTIONS, applyPlotOverlayTokens, applyThemeTokens, blendOver, buildColorPicker, buildFieldControl, buildPalette, calloutPanelRows, clampNumber, closeColorPopover, closeOpenPopovers, closeWidthPopover, closesPanel, colorField, colorPickerController, combineColor, datePickerController, decorateSelectScroll, dialogController, ensureUIHost, eventDismissedPopover, fieldGrid, fieldGridColumns, fieldRow, fieldSection, fieldSeparator, fillSelectList, glyphSelectController, hslHex, insetRect, intersectRects, isPopoverOpen, isoDate, lineWidthGlyph, menuController, nextUid, normalizeDateInput, numberInputController, openPopoverTrigger, openSelectList, placePopover, popoverController, runMachine, selectController, snapToStep, splitColor, switchController, textAreaController, textFieldController, themeTokens, toggleSelectList, transparencyChecker, viewportRect, widthField, widthFieldOptions };
|
|
@@ -120,6 +120,7 @@ registerIcon("chevron-down", S('<path d="M3.5 6 8 10.5 12.5 6"/>'));
|
|
|
120
120
|
registerIcon("chevron-up", S('<path d="M3.5 10 8 5.5 12.5 10"/>'));
|
|
121
121
|
registerIcon("chevrons-right", S('<path d="m4 3.5 4.5 4.5L4 12.5"/><path d="m8.5 3.5 4.5 4.5-4.5 4.5"/>'));
|
|
122
122
|
registerIcon("chevrons-left", S('<path d="M12 3.5 7.5 8l4.5 4.5"/><path d="M7.5 3.5 3 8l4.5 4.5"/>'));
|
|
123
|
+
registerIcon("replay", S('<path d="M14 4.2v7.6L8.6 8z"/><path d="M7.4 4.2v7.6L2 8z"/>'));
|
|
123
124
|
registerIcon("check", S('<path d="m2.8 8.4 3.4 3.4 7-7.6"/>'));
|
|
124
125
|
registerIcon("close", S('<path d="m3.8 3.8 8.4 8.4M12.2 3.8l-8.4 8.4"/>'));
|
|
125
126
|
registerIcon("pin", S('<path d="M5.6 2.5h4.8M6.4 2.5v3.6L4.4 8.4v.9h7.2v-.9L9.6 6.1V2.5M8 9.3v4.2"/>'));
|