lexgui 0.6.1 → 0.6.2

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/build/lexgui.css CHANGED
@@ -1668,7 +1668,6 @@ a svg, svg path {
1668
1668
  font-weight: 500;
1669
1669
  display: grid;
1670
1670
  transition: 0.1s linear;
1671
- padding: 0.3rem;
1672
1671
  }
1673
1672
 
1674
1673
  /* Colors */
@@ -1676,8 +1675,9 @@ a svg, svg path {
1676
1675
  .lexbutton.secondary { --button-color: var(--global-color-secondary); --border-color: var(--global-color-quaternary); color: var(--global-text-primary); }
1677
1676
  .lexbutton.accent { --button-color: var(--global-color-accent); --border-color: var(--global-color-quaternary); color: #fefefe; }
1678
1677
  .lexbutton.contrast { --button-color: var(--global-text-primary); --border-color: var(--global-color-quaternary); color: var(--global-color-primary); }
1679
- .lexbutton.warning { --button-color: var(--global-color-warning); --border-color: #793205; color: var(--border-color); }
1678
+ .lexbutton.success { --button-color: var(--global-color-success); --border-color: #013101; color: var(--border-color); }
1680
1679
  .lexbutton.error { --button-color: var(--global-color-error); --border-color: #310108; color: var(--border-color); }
1680
+ .lexbutton.warning { --button-color: var(--global-color-warning); --border-color: #793205; color: var(--border-color); }
1681
1681
 
1682
1682
  /* Few Sizes */
1683
1683
  .lexbutton.xs { width: 35%; margin: 0 auto; }
@@ -1814,11 +1814,6 @@ a svg, svg path {
1814
1814
  background-color: var(--global-color-primary);
1815
1815
  }
1816
1816
 
1817
- .lexselect .lexfilter a {
1818
- font-size: var(--global-font-size-sm);
1819
- padding-inline: 4px;
1820
- }
1821
-
1822
1817
  .lexselect ul .lexlistitem {
1823
1818
  font-size: var(--global-font-size-sm);
1824
1819
  }
@@ -1983,8 +1978,9 @@ dialog .lexselect .lexselectoptions {
1983
1978
  :root[data-theme="light"] .lexcheckbox.secondary { --checkbox-fg-color: var(--global-text-tertiary); }
1984
1979
  .lexcheckbox.accent { --checkbox-bg-color: var(--global-color-accent); }
1985
1980
  .lexcheckbox.contrast { --checkbox-bg-color: var(--global-text-primary); --checkbox-fg-color: var(--global-color-primary); }
1986
- .lexcheckbox.warning { --checkbox-bg-color: var(--global-color-warning); }
1981
+ .lexcheckbox.success { --checkbox-bg-color: var(--global-color-success); }
1987
1982
  .lexcheckbox.error { --checkbox-bg-color: var(--global-color-error); }
1983
+ .lexcheckbox.warning { --checkbox-bg-color: var(--global-color-warning); }
1988
1984
 
1989
1985
 
1990
1986
  .lexcheckbox:before {
@@ -2071,8 +2067,9 @@ dialog .lexselect .lexselectoptions {
2071
2067
  .lextoggle.secondary { --toggle-bg-color: var(--global-color-tertiary); }
2072
2068
  .lextoggle.accent { --toggle-bg-color: var(--global-color-accent); }
2073
2069
  .lextoggle.contrast { --toggle-bg-color: var(--global-text-primary); }
2074
- .lextoggle.warning { --toggle-bg-color: var(--global-color-warning); }
2070
+ .lextoggle.success { --toggle-bg-color: var(--global-color-success); }
2075
2071
  .lextoggle.error { --toggle-bg-color: var(--global-color-error); }
2072
+ .lextoggle.warning { --toggle-bg-color: var(--global-color-warning); }
2076
2073
 
2077
2074
  .lextoggle > * {
2078
2075
  z-index: 1;
@@ -2212,6 +2209,7 @@ dialog .lexselect .lexselectoptions {
2212
2209
  padding: 0.1em;
2213
2210
  padding-inline: 1.4em;
2214
2211
  gap: 0.65em;
2212
+ align-items: center;
2215
2213
  }
2216
2214
 
2217
2215
  .lexradiogroup .lexradiogroupitem span {
@@ -2223,9 +2221,6 @@ dialog .lexselect .lexselectoptions {
2223
2221
  height: 16px;
2224
2222
  min-width: 16px !important;
2225
2223
  min-height: 16px !important;
2226
- padding: 0;
2227
- margin: auto 0;
2228
- border-radius: 8px;
2229
2224
  background-color: var(--global-intense-background);
2230
2225
  border: 1px solid var(--global-text-tertiary) !important;
2231
2226
  }
@@ -2257,8 +2252,9 @@ dialog .lexselect .lexselectoptions {
2257
2252
  .lexradiogroup.secondary .lexradiogroupitem button.checked span { background-color: var(--global-color-accent-light); }
2258
2253
  .lexradiogroup.accent .lexradiogroupitem button.checked span { background-color: var(--global-color-accent); }
2259
2254
  .lexradiogroup.contrast .lexradiogroupitem button.checked span { background-color: var(--global-text-primary); }
2260
- .lexradiogroup.warning .lexradiogroupitem button.checked span { background-color: var(--global-color-warning); }
2255
+ .lexradiogroup.success .lexradiogroupitem button.checked span { background-color: var(--global-color-success); }
2261
2256
  .lexradiogroup.error .lexradiogroupitem button.checked span { background-color: var(--global-color-error); }
2257
+ .lexradiogroup.warning .lexradiogroupitem button.checked span { background-color: var(--global-color-warning); }
2262
2258
 
2263
2259
  /* Vector Widgets */
2264
2260
 
@@ -2280,6 +2276,7 @@ dialog .lexselect .lexselectoptions {
2280
2276
  margin-right: 2px;
2281
2277
  background-color: var(--global-color-tertiary);
2282
2278
  transition: 0.1s linear;
2279
+ cursor: text;
2283
2280
  }
2284
2281
 
2285
2282
  .lexvector .vecbox:hover {
@@ -2291,7 +2288,8 @@ dialog .lexselect .lexselectoptions {
2291
2288
  font-size: var(--global-font-size-sm);
2292
2289
  color: var(--global-text-secondary);
2293
2290
  z-index: 11;
2294
- margin-right: 0.25rem
2291
+ margin-right: 0.25rem;
2292
+ pointer-events: none;
2295
2293
  }
2296
2294
 
2297
2295
  .lexvector .vecbox:has(input:focus) {
@@ -2482,8 +2480,9 @@ input[type=number] {
2482
2480
  .lexrangeslider.secondary { color: var(--global-color-secondary); --range-thumb-color: var(--global-text-secondary); }
2483
2481
  .lexrangeslider.accent { color: var(--global-color-accent); }
2484
2482
  .lexrangeslider.contrast { color: var(--global-text-primary); }
2485
- .lexrangeslider.warning { color: var(--global-color-warning); }
2483
+ .lexrangeslider.success { color: var(--global-color-success); }
2486
2484
  .lexrangeslider.error { color: var(--global-color-error); }
2485
+ .lexrangeslider.warning { color: var(--global-color-warning); }
2487
2486
 
2488
2487
  .lexrangeslider.left {
2489
2488
  --range-dir: -1;
@@ -2890,8 +2889,9 @@ meter:-moz-meter-sub-sub-optimum::-moz-meter-bar {
2890
2889
  .lexbadge.secondary { --badge-color: var(--global-color-secondary); color: var(--global-text-primary); }
2891
2890
  .lexbadge.accent { --badge-color: var(--global-color-accent); }
2892
2891
  .lexbadge.contrast { --badge-color: var(--global-text-primary); color: var(--global-color-primary); }
2893
- .lexbadge.warning { --badge-color: var(--global-color-warning); color: #793205; }
2892
+ .lexbadge.success { --badge-color: var(--global-color-success); color: #013101; }
2894
2893
  .lexbadge.error { --badge-color: var(--global-color-error); color: #310108; }
2894
+ .lexbadge.warning { --badge-color: var(--global-color-warning); color: #793205; }
2895
2895
  /* Styles */
2896
2896
  .lexbadge.outline {
2897
2897
  color: var(--badge-color, var(--global-text-primary));
@@ -4510,21 +4510,21 @@ meter:-moz-meter-sub-sub-optimum::-moz-meter-bar {
4510
4510
  }
4511
4511
 
4512
4512
  ul.lexassetscontent {
4513
- height: 100%;
4513
+ /* height: 100%; */
4514
4514
  -webkit-text-size-adjust: 100%;
4515
4515
  padding: 0 1em;
4516
4516
  margin: 0;
4517
4517
  font-size: var(--global-font-size);
4518
4518
  color: #AAA;
4519
4519
  position: relative;
4520
- box-sizing: border-box;
4521
4520
  overflow: auto;
4522
4521
  }
4523
4522
 
4524
4523
  .lexassetscontent.list {
4525
- display: table-cell;
4526
- columns: 3 256px;
4527
4524
  width: 100%;
4525
+ display: grid;
4526
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
4527
+ column-gap: 0.5rem;
4528
4528
  }
4529
4529
 
4530
4530
  .lexassetscontent li {
@@ -4536,7 +4536,6 @@ ul.lexassetscontent {
4536
4536
  -moz-user-select: none;
4537
4537
  -ms-user-select: none;
4538
4538
  user-select: none;
4539
- box-sizing: border-box;
4540
4539
  width: 10em;
4541
4540
  height: 11.4em;
4542
4541
  display: inline-block;
@@ -4647,7 +4646,6 @@ ul.lexassetscontent {
4647
4646
  color: var(--global-text-primary);
4648
4647
  cursor: pointer;
4649
4648
  text-align: center;
4650
- box-sizing: border-box;
4651
4649
  display: block;
4652
4650
  padding: 0.1em;
4653
4651
  overflow: hidden;
@@ -4669,7 +4667,6 @@ ul.lexassetscontent {
4669
4667
  .lexassetscontent li .lexassetinfo {
4670
4668
  -webkit-text-size-adjust: 100%;
4671
4669
  color: #999;
4672
- box-sizing: border-box;
4673
4670
  position: absolute;
4674
4671
  overflow: hidden;
4675
4672
  text-align: left;
@@ -4712,12 +4709,9 @@ ul.lexassetscontent {
4712
4709
 
4713
4710
  .lexassetscontent li img {
4714
4711
  -webkit-text-size-adjust: 100%;
4715
- font-family: 'Arial';
4716
- font-size: var(--global-font-size);
4717
4712
  cursor: pointer;
4718
4713
  text-align: center;
4719
4714
  color: white;
4720
- box-sizing: border-box;
4721
4715
  border: 0;
4722
4716
  max-width: 10em;
4723
4717
  max-height: 10em;
@@ -4729,7 +4723,6 @@ ul.lexassetscontent {
4729
4723
 
4730
4724
  .lexassetscontent.list img {
4731
4725
  width: unset;
4732
- height: 2em;
4733
4726
  object-fit: contain;
4734
4727
  float: left;
4735
4728
  z-index: 1;
package/build/lexgui.js CHANGED
@@ -12,7 +12,7 @@ console.warn( 'Script _build/lexgui.js_ is depracated and will be removed soon.
12
12
  */
13
13
 
14
14
  var LX = {
15
- version: "0.6.1",
15
+ version: "0.6.2",
16
16
  ready: false,
17
17
  components: [], // Specific pre-build components
18
18
  signals: {}, // Events and triggers
@@ -6642,7 +6642,7 @@ class Title extends Widget {
6642
6642
  // Note: Titles are not registered in Panel.widgets by now
6643
6643
  super( Widget.TITLE, null, null, options );
6644
6644
 
6645
- this.root.className = "lextitle";
6645
+ this.root.className = `lextitle ${ this.root.className }`;
6646
6646
 
6647
6647
  if( options.icon )
6648
6648
  {
@@ -6956,7 +6956,7 @@ class Button extends Widget {
6956
6956
 
6957
6957
  var wValue = document.createElement( 'button' );
6958
6958
  wValue.title = options.tooltip ? "" : ( options.title ?? "" );
6959
- wValue.className = "lexbutton " + ( options.buttonClass ?? "" );
6959
+ wValue.className = "lexbutton p-1 " + ( options.buttonClass ?? "" );
6960
6960
 
6961
6961
  this.root.appendChild( wValue );
6962
6962
 
@@ -7580,7 +7580,7 @@ class Select extends Widget {
7580
7580
  this.unfocus_event = true;
7581
7581
  setTimeout( () => delete this.unfocus_event, 200 );
7582
7582
  }
7583
- else if ( e.relatedTarget && ( e.relatedTarget.tagName == "INPUT" || e.relatedTarget.classList.contains("lexoptions") ) )
7583
+ else if ( e.relatedTarget && listDialog.contains( e.relatedTarget ) )
7584
7584
  {
7585
7585
  return;
7586
7586
  }
@@ -8476,7 +8476,7 @@ class RadioGroup extends Widget {
8476
8476
  container.appendChild( optionItem );
8477
8477
 
8478
8478
  const optionButton = document.createElement( 'button' );
8479
- optionButton.className = "lexbutton";
8479
+ optionButton.className = "flex p-0 rounded-lg cursor-pointer";
8480
8480
  optionButton.disabled = options.disabled ?? false;
8481
8481
  optionItem.appendChild( optionButton );
8482
8482
 
@@ -8779,7 +8779,7 @@ class NumberInput extends Widget {
8779
8779
  box.className = "numberbox";
8780
8780
  container.appendChild( box );
8781
8781
 
8782
- let valueBox = LX.makeContainer( [ "auto", "100%" ], "relative flex flex-row", "", box );
8782
+ let valueBox = LX.makeContainer( [ "auto", "100%" ], "relative flex flex-row cursor-text", "", box );
8783
8783
 
8784
8784
  let vecinput = document.createElement( 'input' );
8785
8785
  vecinput.id = "number_" + simple_guidGenerator();
@@ -8882,7 +8882,7 @@ class NumberInput extends Widget {
8882
8882
 
8883
8883
  let innerMouseDown = e => {
8884
8884
 
8885
- if( document.activeElement == vecinput )
8885
+ if( ( document.activeElement == vecinput ) || ( e.button != LX.MOUSE_LEFT_CLICK ) )
8886
8886
  {
8887
8887
  return;
8888
8888
  }
@@ -8897,7 +8897,7 @@ class NumberInput extends Widget {
8897
8897
 
8898
8898
  if( !document.pointerLockElement )
8899
8899
  {
8900
- vecinput.requestPointerLock();
8900
+ valueBox.requestPointerLock();
8901
8901
  }
8902
8902
 
8903
8903
  if( options.onPress )
@@ -8942,7 +8942,7 @@ class NumberInput extends Widget {
8942
8942
  }
8943
8943
  }
8944
8944
 
8945
- vecinput.addEventListener( "mousedown", innerMouseDown );
8945
+ valueBox.addEventListener( "mousedown", innerMouseDown );
8946
8946
 
8947
8947
  doAsync( this.onResize.bind( this ) );
8948
8948
  }
@@ -9097,7 +9097,7 @@ class Vector extends Widget {
9097
9097
 
9098
9098
  function innerMouseDown( e )
9099
9099
  {
9100
- if( document.activeElement == vecinput )
9100
+ if( ( document.activeElement == vecinput ) || ( e.button != LX.MOUSE_LEFT_CLICK ) )
9101
9101
  {
9102
9102
  return;
9103
9103
  }
@@ -9112,7 +9112,7 @@ class Vector extends Widget {
9112
9112
 
9113
9113
  if( !document.pointerLockElement )
9114
9114
  {
9115
- vecinput.requestPointerLock();
9115
+ box.requestPointerLock();
9116
9116
  }
9117
9117
 
9118
9118
  if( options.onPress )
@@ -9169,7 +9169,7 @@ class Vector extends Widget {
9169
9169
  }
9170
9170
  }
9171
9171
 
9172
- vecinput.addEventListener( "mousedown", innerMouseDown );
9172
+ box.addEventListener( "mousedown", innerMouseDown );
9173
9173
  container.appendChild( box );
9174
9174
  }
9175
9175
 
@@ -10102,34 +10102,90 @@ class Table extends Widget {
10102
10102
  if( this.customFilters )
10103
10103
  {
10104
10104
  const icon = LX.makeIcon( "CirclePlus", { svgClass: "sm" } );
10105
+ const separatorHtml = `<div class="lexcontainer border-right self-center mx-1" style="width: 1px; height: 70%;"></div>`;
10105
10106
 
10106
10107
  for( let f of this.customFilters )
10107
10108
  {
10108
- const customFilterBtn = new Button(null, icon.innerHTML + f.name, ( v ) => {
10109
+ f.widget = new Button(null, icon.innerHTML + f.name, ( v ) => {
10109
10110
 
10110
- const menuOptions = f.options.map( ( colName, idx ) => {
10111
- const item = {
10112
- name: colName,
10113
- checked: !!this.activeCustomFilters[ colName ],
10114
- callback: (key, v, dom) => {
10115
- if( v ) { this.activeCustomFilters[ key ] = f.name; }
10116
- else {
10117
- delete this.activeCustomFilters[ key ];
10111
+ const spanName = f.widget.root.querySelector( "span" );
10112
+
10113
+ if( f.options )
10114
+ {
10115
+ const menuOptions = f.options.map( ( colName, idx ) => {
10116
+ const item = {
10117
+ name: colName,
10118
+ checked: !!this.activeCustomFilters[ colName ],
10119
+ callback: (key, v, dom) => {
10120
+ if( v ) { this.activeCustomFilters[ key ] = f.name; }
10121
+ else {
10122
+ delete this.activeCustomFilters[ key ];
10123
+ }
10124
+ const activeFilters = Object.keys( this.activeCustomFilters ).filter( k => this.activeCustomFilters[ k ] == f.name );
10125
+ const filterBadgesHtml = activeFilters.reduce( ( acc, key ) => acc += LX.badge( key, "bg-tertiary text-sm" ), "" );
10126
+ spanName.innerHTML = icon.innerHTML + f.name + ( activeFilters.length ? separatorHtml : "" ) + filterBadgesHtml;
10127
+ this.refresh();
10118
10128
  }
10119
- this.refresh();
10120
10129
  }
10130
+ return item;
10131
+ } );
10132
+ new DropdownMenu( f.widget.root, menuOptions, { side: "bottom", align: "start" });
10133
+ }
10134
+ else if( f.type == "range" )
10135
+ {
10136
+ console.assert( f.min != undefined && f.max != undefined, "Range filter needs min and max values!" );
10137
+ const container = LX.makeContainer( ["240px", "auto"], "border bg-primary rounded-lg text-md" );
10138
+ const panel = new Panel();
10139
+ LX.makeContainer( ["100%", "auto"], "px-3 p-2 pb-0 text-md font-medium", f.name, container );
10140
+
10141
+ f.start = f.start ?? f.min;
10142
+ f.end = f.end ?? f.max;
10143
+
10144
+ panel.refresh = () => {
10145
+ panel.clear();
10146
+ panel.sameLine( 2, "justify-center" );
10147
+ panel.addNumber( null, f.start, (v) => {
10148
+ f.start = v;
10149
+ const inUse = ( f.start != f.min || f.end != f.max );
10150
+ spanName.innerHTML = icon.innerHTML + f.name + ( inUse ? separatorHtml + LX.badge( `${ f.start } - ${ f.end } ${ f.units ?? "" }`, "bg-tertiary text-sm" ) : "" );
10151
+ this.refresh();
10152
+ }, { skipSlider: true, min: f.min, max: f.max, step: f.step, units: f.units } );
10153
+ panel.addNumber( null, f.end, (v) => {
10154
+ f.end = v;
10155
+ const inUse = ( f.start != f.min || f.end != f.max );
10156
+ spanName.innerHTML = icon.innerHTML + f.name + ( inUse ? separatorHtml + LX.badge( `${ f.start } - ${ f.end } ${ f.units ?? "" }`, "bg-tertiary text-sm" ) : "" );
10157
+ this.refresh();
10158
+ }, { skipSlider: true, min: f.min, max: f.max, step: f.step, units: f.units } );
10159
+ panel.addButton( null, "Reset", () => {
10160
+ f.start = f.min;
10161
+ f.end = f.max;
10162
+ spanName.innerHTML = icon.innerHTML + f.name;
10163
+ panel.refresh();
10164
+ this.refresh();
10165
+ }, { buttonClass: "contrast" } );
10121
10166
  }
10122
- return item;
10123
- } );
10124
- new DropdownMenu( customFilterBtn.root, menuOptions, { side: "bottom", align: "start" });
10125
- }, { buttonClass: " primary dashed" } );
10126
- headerContainer.appendChild( customFilterBtn.root );
10167
+ panel.refresh();
10168
+ container.appendChild( panel.root );
10169
+ new Popover( f.widget.root, [ container ], { side: "bottom" } );
10170
+ }
10171
+
10172
+ }, { buttonClass: "px-2 primary dashed" } );
10173
+ headerContainer.appendChild( f.widget.root );
10127
10174
  }
10128
10175
 
10129
10176
  this._resetCustomFiltersBtn = new Button(null, "resetButton", ( v ) => {
10130
10177
  this.activeCustomFilters = {};
10131
- this.refresh();
10132
10178
  this._resetCustomFiltersBtn.root.classList.add( "hidden" );
10179
+ for( let f of this.customFilters )
10180
+ {
10181
+ f.widget.root.querySelector( "span" ).innerHTML = ( icon.innerHTML + f.name );
10182
+ if( f.type == "range" )
10183
+ {
10184
+ f.start = f.min;
10185
+ f.end = f.max;
10186
+ }
10187
+ }
10188
+ this.refresh();
10133
10189
  }, { title: "Reset filters", icon: "X" } );
10134
10190
  headerContainer.appendChild( this._resetCustomFiltersBtn.root );
10135
10191
  this._resetCustomFiltersBtn.root.classList.add( "hidden" );
@@ -10362,6 +10418,41 @@ class Table extends Widget {
10362
10418
  }
10363
10419
  }
10364
10420
 
10421
+ // Check range/date filters
10422
+ if( this.customFilters )
10423
+ {
10424
+ let acfMap = {};
10425
+
10426
+ for( let f of this.customFilters )
10427
+ {
10428
+ const acfName = f.name;
10429
+
10430
+ if( f.type == "range" )
10431
+ {
10432
+ acfMap[ acfName ] = acfMap[ acfName ] ?? false;
10433
+
10434
+ const filterColIndex = data.head.indexOf( acfName );
10435
+ if( filterColIndex > -1 )
10436
+ {
10437
+ const validRowValue = parseFloat( bodyData[ filterColIndex ] );
10438
+ const min = f.start ?? f.min;
10439
+ const max = f.end ?? f.max;
10440
+ acfMap[ acfName ] |= ( validRowValue >= min ) && ( validRowValue <= max );
10441
+ }
10442
+ }
10443
+ else if( f.type == "date" )
10444
+ {
10445
+ // TODO
10446
+ }
10447
+ }
10448
+
10449
+ const show = Object.values( acfMap ).reduce( ( e, acc ) => acc *= e );
10450
+ if( !show )
10451
+ {
10452
+ continue;
10453
+ }
10454
+ }
10455
+
10365
10456
  const row = document.createElement( 'tr' );
10366
10457
  const rowId = LX.getSupportedDOMName( bodyData.join( '-' ) );
10367
10458
  row.setAttribute( "rowId", rowId.substr(0, 32) );
@@ -14776,26 +14867,31 @@ LX.ICONS = {
14776
14867
  "Folder": [512, 512, [], "solid", "M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z"],
14777
14868
  "FolderOpen": [576, 512, [], "solid", "M384 480l48 0c11.4 0 21.9-6 27.6-15.9l112-192c5.8-9.9 5.8-22.1 .1-32.1S555.5 224 544 224l-400 0c-11.4 0-21.9 6-27.6 15.9L48 357.1 48 96c0-8.8 7.2-16 16-16l117.5 0c4.2 0 8.3 1.7 11.3 4.7l26.5 26.5c21 21 49.5 32.8 79.2 32.8L416 144c8.8 0 16 7.2 16 16l0 32 48 0 0-32c0-35.3-28.7-64-64-64L298.5 96c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l23.7 0L384 480z"],
14778
14869
  "FolderClosed": [512, 512, [], "solid", "M448 480L64 480c-35.3 0-64-28.7-64-64L0 192l512 0 0 224c0 35.3-28.7 64-64 64zm64-320L0 160 0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64z"],
14779
- "Play": [384, 512, [], "solid", "M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80L0 432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z"],
14780
- "Pause": [320, 512, [], "solid", "M48 64C21.5 64 0 85.5 0 112L0 400c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48L48 64zm192 0c-26.5 0-48 21.5-48 48l0 288c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48l-32 0z"],
14870
+ "Function": [384, 512, [], "solid", "M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224 64 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l37.3 0c38.8 0 73.7-23.3 88.6-59.1L213.3 288 320 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 45.1-108.3c5-11.9 16.6-19.7 29.5-19.7L352 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-37.3 0z"],
14781
14871
  "Stop": [384, 512, [], "solid", "M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z"],
14782
14872
  "Image": [512, 512, [], "solid", "M448 80c8.8 0 16 7.2 16 16l0 319.8-5-6.5-136-176c-4.5-5.9-11.6-9.3-19-9.3s-14.4 3.4-19 9.3L202 340.7l-30.5-42.7C167 291.7 159.8 288 152 288s-15 3.7-19.5 10.1l-80 112L48 416.3l0-.3L48 96c0-8.8 7.2-16 16-16l384 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],
14783
14873
  "Images": [576, 512, [], "solid", "M160 80l352 0c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-21.2 0L388.1 178.9c-4.4-6.8-12-10.9-20.1-10.9s-15.7 4.1-20.1 10.9l-52.2 79.8-12.4-16.9c-4.5-6.2-11.7-9.8-19.4-9.8s-14.8 3.6-19.4 9.8L175.6 336 160 336c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16zM96 96l0 224c0 35.3 28.7 64 64 64l352 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32c-35.3 0-64 28.7-64 64zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 344c0 75.1 60.9 136 136 136l320 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-320 0c-48.6 0-88-39.4-88-88l0-224zm208 24a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],
14784
- "Function": [384, 512, [], "solid", "M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224 64 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l37.3 0c38.8 0 73.7-23.3 88.6-59.1L213.3 288 320 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 45.1-108.3c5-11.9 16.6-19.7 29.5-19.7L352 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-37.3 0z"],
14874
+ "Info": [512, 512, [], "solid", "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],
14785
14875
  "Bone": [576, 512, [], "solid", "M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2l192 0c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336l-192 0c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z"],
14786
14876
  "Puzzle": [512, 512, [], "solid", "M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8c0 12.8 10.4 23.2 23.2 23.2l56.8 0c26.5 0 48 21.5 48 48l0 56.8c0 12.8 10.4 23.2 23.2 23.2c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2c-12.8 0-23.2 10.4-23.2 23.2L384 464c0 26.5-21.5 48-48 48l-56.8 0c-12.8 0-23.2-10.4-23.2-23.2c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8c0 12.8-10.4 23.2-23.2 23.2L48 512c-26.5 0-48-21.5-48-48L0 343.2C0 330.4 10.4 320 23.2 320c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256C10.4 256 0 245.6 0 232.8L0 176c0-26.5 21.5-48 48-48l120.8 0c12.8 0 23.2-10.4 23.2-23.2z"],
14787
14877
  "Lock": [448, 512, [], "solid", "M144 144l0 48 160 0 0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192l0-48C80 64.5 144.5 0 224 0s144 64.5 144 144l0 48 16 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0z"],
14788
14878
  "LockOpen": [576, 512, [], "solid", "M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48C576 64.5 511.5 0 432 0S288 64.5 288 144l0 48L64 192c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-32 0 0-48z"],
14789
14879
  "Shuffle": [512, 512, [], "solid", "M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z"],
14880
+ "Play": [384, 512, [], "solid", "M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80L0 432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z"],
14881
+ "Pause": [320, 512, [], "solid", "M48 64C21.5 64 0 85.5 0 112L0 400c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48L48 64zm192 0c-26.5 0-48 21.5-48 48l0 288c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48l-32 0z"],
14882
+ "PlusCircle": [512, 512, [], "solid", "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"],
14790
14883
  "LogIn": [512, 512, [], "solid", "M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z"],
14791
14884
  "LogOut": [512, 512, [], "solid", "M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z"],
14792
14885
  "MousePointer": [320, 512, [], "solid", "M0 55.2L0 426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320l118.1 0c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z"],
14793
14886
  "User": [512, 512, [], "solid", "M256 288A144 144 0 1 0 256 0a144 144 0 1 0 0 288zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7l450.6 0c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320l-189.4 0z"],
14794
14887
  "HardDriveDownload": [512, 512, [], "solid", "M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 242.7-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7 288 32zM64 352c-35.3 0-64 28.7-64 64l0 32c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-32c0-35.3-28.7-64-64-64l-101.5 0-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352 64 352zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],
14795
14888
  "HardDriveUpload": [512, 512, [], "solid", "M288 109.3L288 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-242.7-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352l128 0c0 35.3 28.7 64 64 64s64-28.7 64-64l128 0c35.3 0 64 28.7 64 64l0 32c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64l0-32c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],
14796
- "CirclePlay": [512, 512, [], "solid", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c7.6-4.2 16.8-4.1 24.3 .5l144 88c7.1 4.4 11.5 12.1 11.5 20.5s-4.4 16.1-11.5 20.5l-144 88c-7.4 4.5-16.7 4.7-24.3 .5s-12.3-12.2-12.3-20.9l0-176c0-8.7 4.7-16.7 12.3-20.9z"],
14797
- "CircleStop": [512, 512, [], "solid", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm192-96l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z"],
14889
+ "CircleCheck": [512, 512, ["CheckCircle2"], "solid", "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"],
14890
+ "CirclePlay": [512, 512, [], "solid", "M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9l0 176c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z"],
14891
+ "CirclePause": [512, 512, [], "solid", "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM224 192l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32z"],
14892
+ "CircleStop": [512, 512, [], "solid", "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z"],
14798
14893
  "CircleDot": [512, 512, [], "solid", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"],
14894
+ "CircleHelp": [512, 512, ["HelpCircle"], "solid", "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],
14799
14895
  "Apple": [384, 512, [], "solid", "M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"],
14800
14896
  "Chrome": [512, 512, [], "solid", "M0 256C0 209.4 12.47 165.6 34.27 127.1L144.1 318.3C166 357.5 207.9 384 256 384C270.3 384 283.1 381.7 296.8 377.4L220.5 509.6C95.9 492.3 0 385.3 0 256zM365.1 321.6C377.4 302.4 384 279.1 384 256C384 217.8 367.2 183.5 340.7 160H493.4C505.4 189.6 512 222.1 512 256C512 397.4 397.4 511.1 256 512L365.1 321.6zM477.8 128H256C193.1 128 142.3 172.1 130.5 230.7L54.19 98.47C101 38.53 174 0 256 0C350.8 0 433.5 51.48 477.8 128V128zM168 256C168 207.4 207.4 168 256 168C304.6 168 344 207.4 344 256C344 304.6 304.6 344 256 344C207.4 344 168 304.6 168 256z"],
14801
14897
  "Facebook": [512, 512, [], "solid", "M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256C0 376 82.7 476.8 194.2 504.5V334.2H141.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287V510.1C413.8 494.8 512 386.9 512 256h0z"],
@@ -14811,7 +14907,9 @@ LX.ICONS = {
14811
14907
  "Chain": "Link",
14812
14908
  "ChainBroken": "LinkOff",
14813
14909
  "ChainOff": "LinkOff",
14814
- "Unlink": "LinkOff"
14910
+ "Unlink": "LinkOff",
14911
+ "HelpCircle": "CircleHelp",
14912
+ "CheckCircle2": "CircleCheck"
14815
14913
  }
14816
14914
 
14817
14915
  // Alias for Lucide Icons