@toclocoinc/lattice-grid 1.66.0 → 1.68.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 (163) hide show
  1. package/README.md +1 -1
  2. package/angular/package.json +1 -1
  3. package/docs/API.html +87 -29
  4. package/docs/api-detail.html +40 -5
  5. package/lattice-grid.d.ts +20 -7
  6. package/lattice-grid.esm.min.js +35 -11
  7. package/lattice-grid.min.cjs +35 -11
  8. package/lattice-grid.min.js +35 -11
  9. package/modules/ai.d.ts +1 -1
  10. package/modules/ai.esm.min.js +3 -3
  11. package/modules/ai.min.cjs +3 -3
  12. package/modules/ai.min.js +3 -3
  13. package/modules/angular.d.ts +1 -1
  14. package/modules/angular.esm.min.js +3 -3
  15. package/modules/angular.min.cjs +3 -3
  16. package/modules/angular.min.js +3 -3
  17. package/modules/chart-alluvial.d.ts +1 -1
  18. package/modules/chart-alluvial.esm.min.js +1 -1
  19. package/modules/chart-alluvial.min.cjs +1 -1
  20. package/modules/chart-alluvial.min.js +1 -1
  21. package/modules/chart-arc.d.ts +1 -1
  22. package/modules/chart-arc.esm.min.js +1 -1
  23. package/modules/chart-arc.min.cjs +1 -1
  24. package/modules/chart-arc.min.js +1 -1
  25. package/modules/chart-bubblemap.d.ts +1 -1
  26. package/modules/chart-bubblemap.esm.min.js +1 -1
  27. package/modules/chart-bubblemap.min.cjs +1 -1
  28. package/modules/chart-bubblemap.min.js +1 -1
  29. package/modules/chart-bump.d.ts +1 -1
  30. package/modules/chart-bump.esm.min.js +1 -1
  31. package/modules/chart-bump.min.cjs +1 -1
  32. package/modules/chart-bump.min.js +1 -1
  33. package/modules/chart-calendar.d.ts +1 -1
  34. package/modules/chart-calendar.esm.min.js +1 -1
  35. package/modules/chart-calendar.min.cjs +1 -1
  36. package/modules/chart-calendar.min.js +1 -1
  37. package/modules/chart-decomposition.d.ts +1 -1
  38. package/modules/chart-decomposition.esm.min.js +1 -1
  39. package/modules/chart-decomposition.min.cjs +1 -1
  40. package/modules/chart-decomposition.min.js +1 -1
  41. package/modules/chart-diverging.d.ts +1 -1
  42. package/modules/chart-diverging.esm.min.js +1 -1
  43. package/modules/chart-diverging.min.cjs +1 -1
  44. package/modules/chart-diverging.min.js +1 -1
  45. package/modules/chart-dumbbell.d.ts +1 -1
  46. package/modules/chart-dumbbell.esm.min.js +1 -1
  47. package/modules/chart-dumbbell.min.cjs +1 -1
  48. package/modules/chart-dumbbell.min.js +1 -1
  49. package/modules/chart-fan.d.ts +1 -1
  50. package/modules/chart-fan.esm.min.js +1 -1
  51. package/modules/chart-fan.min.cjs +1 -1
  52. package/modules/chart-fan.min.js +1 -1
  53. package/modules/chart-hexbin.d.ts +1 -1
  54. package/modules/chart-hexbin.esm.min.js +1 -1
  55. package/modules/chart-hexbin.min.cjs +1 -1
  56. package/modules/chart-hexbin.min.js +1 -1
  57. package/modules/chart-hexmap.d.ts +1 -1
  58. package/modules/chart-hexmap.esm.min.js +1 -1
  59. package/modules/chart-hexmap.min.cjs +1 -1
  60. package/modules/chart-hexmap.min.js +1 -1
  61. package/modules/chart-icicle.d.ts +1 -1
  62. package/modules/chart-icicle.esm.min.js +1 -1
  63. package/modules/chart-icicle.min.cjs +1 -1
  64. package/modules/chart-icicle.min.js +1 -1
  65. package/modules/chart-markermap.d.ts +1 -1
  66. package/modules/chart-markermap.esm.min.js +1 -1
  67. package/modules/chart-markermap.min.cjs +1 -1
  68. package/modules/chart-markermap.min.js +1 -1
  69. package/modules/chart-parallel.d.ts +1 -1
  70. package/modules/chart-parallel.esm.min.js +1 -1
  71. package/modules/chart-parallel.min.cjs +1 -1
  72. package/modules/chart-parallel.min.js +1 -1
  73. package/modules/chart-ridgeline.d.ts +1 -1
  74. package/modules/chart-ridgeline.esm.min.js +1 -1
  75. package/modules/chart-ridgeline.min.cjs +1 -1
  76. package/modules/chart-ridgeline.min.js +1 -1
  77. package/modules/chart-roc.d.ts +1 -1
  78. package/modules/chart-roc.esm.min.js +1 -1
  79. package/modules/chart-roc.min.cjs +1 -1
  80. package/modules/chart-roc.min.js +1 -1
  81. package/modules/chart-slope.d.ts +1 -1
  82. package/modules/chart-slope.esm.min.js +1 -1
  83. package/modules/chart-slope.min.cjs +1 -1
  84. package/modules/chart-slope.min.js +1 -1
  85. package/modules/chart-splom.d.ts +1 -1
  86. package/modules/chart-splom.esm.min.js +1 -1
  87. package/modules/chart-splom.min.cjs +1 -1
  88. package/modules/chart-splom.min.js +1 -1
  89. package/modules/chart-waffle.d.ts +1 -1
  90. package/modules/chart-waffle.esm.min.js +1 -1
  91. package/modules/chart-waffle.min.cjs +1 -1
  92. package/modules/chart-waffle.min.js +1 -1
  93. package/modules/charts.d.ts +1 -1
  94. package/modules/charts.esm.min.js +1376 -1249
  95. package/modules/charts.min.cjs +1376 -1249
  96. package/modules/charts.min.js +1376 -1249
  97. package/modules/data-router.d.ts +8 -3
  98. package/modules/data-router.esm.min.js +229 -11
  99. package/modules/data-router.min.cjs +229 -11
  100. package/modules/data-router.min.js +229 -11
  101. package/modules/devtools.d.ts +1 -1
  102. package/modules/devtools.esm.min.js +1 -1
  103. package/modules/devtools.min.cjs +1 -1
  104. package/modules/devtools.min.js +1 -1
  105. package/modules/dhtmlx-compat.d.ts +1 -1
  106. package/modules/dhtmlx-compat.esm.min.js +3 -3
  107. package/modules/dhtmlx-compat.min.cjs +3 -3
  108. package/modules/dhtmlx-compat.min.js +3 -3
  109. package/modules/gantt.d.ts +8 -3
  110. package/modules/gantt.esm.min.js +56 -8
  111. package/modules/gantt.min.cjs +56 -8
  112. package/modules/gantt.min.js +56 -8
  113. package/modules/geo-europe-nuts.d.ts +1 -1
  114. package/modules/geo-europe-nuts.esm.min.js +1 -1
  115. package/modules/geo-uk.d.ts +1 -1
  116. package/modules/geo-uk.esm.min.js +1 -1
  117. package/modules/geo-us-states.d.ts +1 -1
  118. package/modules/geo-us-states.esm.min.js +1 -1
  119. package/modules/geo-world-110m.d.ts +1 -1
  120. package/modules/geo-world-110m.esm.min.js +1 -1
  121. package/modules/geo-world-50m.d.ts +1 -1
  122. package/modules/geo-world-50m.esm.min.js +1 -1
  123. package/modules/htmx.d.ts +1 -1
  124. package/modules/htmx.esm.min.js +35 -11
  125. package/modules/htmx.min.cjs +35 -11
  126. package/modules/htmx.min.js +35 -11
  127. package/modules/kanban.d.ts +10 -3
  128. package/modules/kanban.esm.min.js +24 -4
  129. package/modules/kanban.min.cjs +24 -4
  130. package/modules/kanban.min.js +24 -4
  131. package/modules/kpi.d.ts +35 -10
  132. package/modules/kpi.esm.min.js +55 -7
  133. package/modules/kpi.min.cjs +55 -7
  134. package/modules/kpi.min.js +55 -7
  135. package/modules/layout.d.ts +1 -1
  136. package/modules/layout.esm.min.js +3 -3
  137. package/modules/layout.min.cjs +3 -3
  138. package/modules/layout.min.js +3 -3
  139. package/modules/mock-socket.d.ts +1 -1
  140. package/modules/mock-socket.esm.min.js +1 -1
  141. package/modules/mock-socket.min.cjs +1 -1
  142. package/modules/mock-socket.min.js +1 -1
  143. package/modules/react.d.ts +1 -1
  144. package/modules/react.esm.min.js +3 -3
  145. package/modules/react.min.cjs +3 -3
  146. package/modules/react.min.js +3 -3
  147. package/modules/svelte.d.ts +1 -1
  148. package/modules/svelte.esm.min.js +3 -3
  149. package/modules/svelte.min.cjs +3 -3
  150. package/modules/svelte.min.js +3 -3
  151. package/modules/tabs.d.ts +1 -1
  152. package/modules/tabs.esm.min.js +13 -14
  153. package/modules/tabs.min.cjs +13 -14
  154. package/modules/tabs.min.js +13 -14
  155. package/modules/vue.d.ts +1 -1
  156. package/modules/vue.esm.min.js +3 -3
  157. package/modules/vue.min.cjs +3 -3
  158. package/modules/vue.min.js +3 -3
  159. package/modules/webcomponent.d.ts +1 -1
  160. package/modules/webcomponent.esm.min.js +35 -11
  161. package/modules/webcomponent.min.cjs +35 -11
  162. package/modules/webcomponent.min.js +35 -11
  163. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, kpi module
2
+ * Lattice Grid 1.68.0, kpi module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
54
54
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
55
55
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
56
56
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
57
- const STAMPED_VERSION="1.66.0";
57
+ const STAMPED_VERSION="1.68.0";
58
58
  async function resolveVersion(){
59
59
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
60
60
  return STAMPED_VERSION;
61
61
  }
62
- const VERSION="1.66.0";
62
+ const VERSION="1.68.0";
63
63
  const warned=new Set();
64
64
  const WARNED_LIMIT=2000;
65
65
  function rememberWarned(key){
@@ -827,7 +827,15 @@ const rank=Math.max(SEVERITY[a]||0,SEVERITY[b]||0);
827
827
  return BY_RANK[rank];
828
828
  }
829
829
  function resolveHierarchy(config,tiles){
830
- if(config===false||!tiles.length)return null;
830
+ if(!tiles.length)return null;
831
+ if(config===false)return null;
832
+ if(config===undefined||config===null){
833
+ if(tiles.some((t)=>t.id.includes(DEFAULT_SEPARATOR))){
834
+ warnOnce('kpi:tree:dotted-id',
835
+ 'kpi: tile ids contain dots; set `tree` to render them as a hierarchy.');
836
+ }
837
+ return null;
838
+ }
831
839
  const cfg=isObject(config)?config:{};
832
840
  const order=tiles.map((_,i)=>i);
833
841
  const keyOf=(physical)=>tiles[physical].id;
@@ -1186,14 +1194,20 @@ return node;
1186
1194
  function deltaNode(doc,fig,t){
1187
1195
  const dir=t.delta>0?'up':(t.delta<0?'down':'flat');
1188
1196
  const arrow=t.delta>0?'▲':(t.delta<0?'▼':'■');
1197
+ const abs=t.deltaFormatted??t.delta;
1189
1198
  const pct=t.deltaPercent===null||t.deltaPercent===undefined
1190
- ?'':` (${(t.deltaPercent*100).toFixed(1)}%)`;
1199
+ ?null:`${(t.deltaPercent*100).toFixed(1)}%`;
1200
+ const mode=t.deltaMode||'both';
1201
+ let text;
1202
+ if(mode==='absolute'||pct===null)text=`${arrow} ${abs}`;
1203
+ else if(mode==='relative')text=`${arrow} ${pct}`;
1204
+ else text=`${arrow} ${abs} (${pct})`;
1191
1205
  const node=childByClass(fig,`${NS}__delta`)||div(doc,`${NS}__delta`);
1192
1206
  for(const d of['up','down','flat']){
1193
1207
  if(d!==dir)node.classList.remove(`${NS}__delta--${d}`);
1194
1208
  }
1195
1209
  node.classList.add(`${NS}__delta--${dir}`);
1196
- setText(node,`${arrow} ${t.deltaFormatted??t.delta}${pct}`);
1210
+ setText(node,text);
1197
1211
  return node;
1198
1212
  }
1199
1213
  function sparkNode(doc,fig,t){
@@ -5845,6 +5859,7 @@ const readClock=__m7["readClock"];
5845
5859
  const KPI_EVENTS=Object.freeze([
5846
5860
  'tile:click','tile:dblclick','tile:contextmenu','node:toggle','change',
5847
5861
  ]);
5862
+ const DELTA_MODES=Object.freeze(['absolute','relative','both']);
5848
5863
  const GRID_FOLLOW_EVENTS=Object.freeze([
5849
5864
  'rows:changed','filter:changed','sort:changed','cell:changed','model:changed',
5850
5865
  'stream:chunk','stream:evicted',
@@ -5856,8 +5871,30 @@ onTileContextMenu:'tile:contextmenu',
5856
5871
  onNodeToggle:'node:toggle',
5857
5872
  onChange:'change',
5858
5873
  });
5874
+ function rowKeyTypeName(v){
5875
+ if(Array.isArray(v))return'array';
5876
+ if(v===null)return'null';
5877
+ return typeof v;
5878
+ }
5879
+ function assertRowKeyShape(rowKey){
5880
+ if(rowKey===undefined)return;
5881
+ if(typeof rowKey==='string'&&rowKey.length>0)return;
5882
+ if(typeof rowKey==='function')return;
5883
+ throw new Error(
5884
+ 'lattice-kpi: rowKey must be a property name or a function; composite keys are not supported on tiles.',
5885
+ );
5886
+ }
5859
5887
  function keyFn(rowKey){
5860
- if(isFunction(rowKey))return rowKey;
5888
+ if(isFunction(rowKey)){
5889
+ return(row)=>{
5890
+ const key=rowKey(row);
5891
+ if(typeof key==='string')return key;
5892
+ if(typeof key==='number'&&Number.isFinite(key))return key;
5893
+ throw new Error(
5894
+ `lattice-kpi: rowKey function must return a string or number; got ${rowKeyTypeName(key)}.`,
5895
+ );
5896
+ };
5897
+ }
5861
5898
  const get=pathGetter(typeof rowKey==='string'&&rowKey?rowKey:'id');
5862
5899
  return(row)=>get(row);
5863
5900
  }
@@ -5888,12 +5925,20 @@ format:spec.format,
5888
5925
  target:spec.target,
5889
5926
  barBounds:barBounds(spec),
5890
5927
  baseline:spec.baseline,
5928
+ deltaMode:resolveDeltaMode(spec.delta,id),
5891
5929
  spark:normaliseSpark(spec.sparkline),
5892
5930
  acc,
5893
5931
  members:0,
5894
5932
  noColumn:false,
5895
5933
  };
5896
5934
  }
5935
+ function resolveDeltaMode(raw,id){
5936
+ if(raw===undefined)return'both';
5937
+ if(DELTA_MODES.includes(raw))return raw;
5938
+ warnOnce(`kpi:delta:${id}`,
5939
+ `kpi: tile "${id}" has delta: ${JSON.stringify(raw)}; expected one of ${DELTA_MODES.join(', ')}. Falling back to 'both'.`);
5940
+ return'both';
5941
+ }
5897
5942
  function normaliseSpark(s){
5898
5943
  if(!s)return null;
5899
5944
  if(typeof s==='string')return{x:undefined,y:accessorFor(s)};
@@ -6038,6 +6083,7 @@ return rows;
6038
6083
  }
6039
6084
  function createKPI(el,config={}){
6040
6085
  const cfg=isObject(config)?config:{};
6086
+ assertRowKeyShape(cfg.rowKey);
6041
6087
  const gridBound=!!cfg.grid&&!Array.isArray(cfg.rows);
6042
6088
  const key=gridBound?keyFn('__kpiKey'):keyFn(cfg.rowKey);
6043
6089
  const nullText=typeof cfg.nullText==='string'?cfg.nullText:'—';
@@ -6139,6 +6185,7 @@ baseline:undefined,
6139
6185
  delta:null,
6140
6186
  deltaPercent:null,
6141
6187
  deltaFormatted:undefined,
6188
+ deltaMode:undefined,
6142
6189
  count:0,
6143
6190
  sparkline:null,
6144
6191
  bar:null,
@@ -6176,6 +6223,7 @@ baseline:t.baseline,
6176
6223
  delta,
6177
6224
  deltaPercent,
6178
6225
  deltaFormatted,
6226
+ deltaMode:t.deltaMode,
6179
6227
  count:t.members,
6180
6228
  sparkline:sparkFor(t),
6181
6229
  bar:t.barBounds
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, layout module type declarations
2
+ * Lattice Grid 1.68.0, layout module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, layout module
2
+ * Lattice Grid 1.68.0, layout module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -52,12 +52,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
52
52
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
53
53
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
54
54
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
55
- const STAMPED_VERSION="1.66.0";
55
+ const STAMPED_VERSION="1.68.0";
56
56
  async function resolveVersion(){
57
57
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
58
58
  return STAMPED_VERSION;
59
59
  }
60
- const VERSION="1.66.0";
60
+ const VERSION="1.68.0";
61
61
  const warned=new Set();
62
62
  const WARNED_LIMIT=2000;
63
63
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, layout module
2
+ * Lattice Grid 1.68.0, layout module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
54
54
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
55
55
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
56
56
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
57
- const STAMPED_VERSION="1.66.0";
57
+ const STAMPED_VERSION="1.68.0";
58
58
  async function resolveVersion(){
59
59
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
60
60
  return STAMPED_VERSION;
61
61
  }
62
- const VERSION="1.66.0";
62
+ const VERSION="1.68.0";
63
63
  const warned=new Set();
64
64
  const WARNED_LIMIT=2000;
65
65
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, layout module
2
+ * Lattice Grid 1.68.0, layout module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
54
54
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
55
55
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
56
56
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
57
- const STAMPED_VERSION="1.66.0";
57
+ const STAMPED_VERSION="1.68.0";
58
58
  async function resolveVersion(){
59
59
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
60
60
  return STAMPED_VERSION;
61
61
  }
62
- const VERSION="1.66.0";
62
+ const VERSION="1.68.0";
63
63
  const warned=new Set();
64
64
  const WARNED_LIMIT=2000;
65
65
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, mock-socket module type declarations
2
+ * Lattice Grid 1.68.0, mock-socket module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, mock-socket module
2
+ * Lattice Grid 1.68.0, mock-socket module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, mock-socket module
2
+ * Lattice Grid 1.68.0, mock-socket module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, mock-socket module
2
+ * Lattice Grid 1.68.0, mock-socket module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, react module type declarations
2
+ * Lattice Grid 1.68.0, react module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, react module
2
+ * Lattice Grid 1.68.0, react module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -52,12 +52,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
52
52
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
53
53
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
54
54
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
55
- const STAMPED_VERSION="1.66.0";
55
+ const STAMPED_VERSION="1.68.0";
56
56
  async function resolveVersion(){
57
57
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
58
58
  return STAMPED_VERSION;
59
59
  }
60
- const VERSION="1.66.0";
60
+ const VERSION="1.68.0";
61
61
  const warned=new Set();
62
62
  const WARNED_LIMIT=2000;
63
63
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, react module
2
+ * Lattice Grid 1.68.0, react module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
54
54
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
55
55
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
56
56
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
57
- const STAMPED_VERSION="1.66.0";
57
+ const STAMPED_VERSION="1.68.0";
58
58
  async function resolveVersion(){
59
59
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
60
60
  return STAMPED_VERSION;
61
61
  }
62
- const VERSION="1.66.0";
62
+ const VERSION="1.68.0";
63
63
  const warned=new Set();
64
64
  const WARNED_LIMIT=2000;
65
65
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, react module
2
+ * Lattice Grid 1.68.0, react module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
54
54
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
55
55
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
56
56
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
57
- const STAMPED_VERSION="1.66.0";
57
+ const STAMPED_VERSION="1.68.0";
58
58
  async function resolveVersion(){
59
59
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
60
60
  return STAMPED_VERSION;
61
61
  }
62
- const VERSION="1.66.0";
62
+ const VERSION="1.68.0";
63
63
  const warned=new Set();
64
64
  const WARNED_LIMIT=2000;
65
65
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, svelte module type declarations
2
+ * Lattice Grid 1.68.0, svelte module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, svelte module
2
+ * Lattice Grid 1.68.0, svelte module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -52,12 +52,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
52
52
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
53
53
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
54
54
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
55
- const STAMPED_VERSION="1.66.0";
55
+ const STAMPED_VERSION="1.68.0";
56
56
  async function resolveVersion(){
57
57
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
58
58
  return STAMPED_VERSION;
59
59
  }
60
- const VERSION="1.66.0";
60
+ const VERSION="1.68.0";
61
61
  const warned=new Set();
62
62
  const WARNED_LIMIT=2000;
63
63
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, svelte module
2
+ * Lattice Grid 1.68.0, svelte module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
54
54
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
55
55
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
56
56
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
57
- const STAMPED_VERSION="1.66.0";
57
+ const STAMPED_VERSION="1.68.0";
58
58
  async function resolveVersion(){
59
59
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
60
60
  return STAMPED_VERSION;
61
61
  }
62
- const VERSION="1.66.0";
62
+ const VERSION="1.68.0";
63
63
  const warned=new Set();
64
64
  const WARNED_LIMIT=2000;
65
65
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, svelte module
2
+ * Lattice Grid 1.68.0, svelte module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
54
54
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
55
55
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
56
56
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
57
- const STAMPED_VERSION="1.66.0";
57
+ const STAMPED_VERSION="1.68.0";
58
58
  async function resolveVersion(){
59
59
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
60
60
  return STAMPED_VERSION;
61
61
  }
62
- const VERSION="1.66.0";
62
+ const VERSION="1.68.0";
63
63
  const warned=new Set();
64
64
  const WARNED_LIMIT=2000;
65
65
  function rememberWarned(key){
package/modules/tabs.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, tabs module type declarations
2
+ * Lattice Grid 1.68.0, tabs module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, tabs module
2
+ * Lattice Grid 1.68.0, tabs module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -52,12 +52,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
52
52
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
53
53
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
54
54
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
55
- const STAMPED_VERSION="1.66.0";
55
+ const STAMPED_VERSION="1.68.0";
56
56
  async function resolveVersion(){
57
57
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
58
58
  return STAMPED_VERSION;
59
59
  }
60
- const VERSION="1.66.0";
60
+ const VERSION="1.68.0";
61
61
  const warned=new Set();
62
62
  const WARNED_LIMIT=2000;
63
63
  function rememberWarned(key){
@@ -499,7 +499,7 @@ const style=doc.createElement('style');
499
499
  style.id=`${NS}-styles`;
500
500
  style.setAttribute('id',`${NS}-styles`);
501
501
  style.textContent=`
502
- .${NS}{display:flex;flex-direction:column;height:100%;
502
+ :where(.${NS}){display:flex;flex-direction:column;height:100%;
503
503
  font-family:var(--${NS}-font-family,var(--lattice-font-family,var(--lat-chrome-font-family,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif)));
504
504
  font-size:var(--${NS}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));
505
505
  line-height:var(--${NS}-line-height,var(--lattice-line-height,var(--lat-chrome-line-height,1.4)))}
@@ -512,12 +512,12 @@ style.textContent=`
512
512
  padding:var(--${NS}-pad-y,5px) var(--${NS}-pad-x,12px);cursor:pointer;color:var(--${NS}-muted,#586069)}
513
513
  .${NS} .${NS}__tab + .${NS}__tab{border-left:1px solid var(--${NS}-separator,#e7eaee)}
514
514
  .${NS} .${NS}__tab:hover{background:var(--${NS}-hover,#ebeef1)}
515
- .${NS} .${NS}__tab:focus-visible{outline:2px solid var(--${NS}-focus,#2563eb);outline-offset:var(--${NS}-focus-offset,-4px)}
515
+ :where(.${NS} .${NS}__tab:focus-visible){outline:2px solid var(--${NS}-focus,#2563eb);outline-offset:var(--${NS}-focus-offset,-4px)}
516
516
  .${NS} .${NS}__tab[aria-selected="true"]{background:var(--${NS}-bg,#fff);color:var(--${NS}-active,#14171a);font-weight:600;
517
517
  margin-bottom:-1px;padding-bottom:calc(var(--${NS}-pad-y,5px) + 1px);
518
518
  box-shadow:inset 0 calc(-1 * var(--${NS}-accent-width,2px)) 0 0 var(--${NS}-accent,#1a6bc7)}
519
- .${NS} .${NS}__icon{flex:none;display:inline-flex;align-items:center;justify-content:center;line-height:1}
520
- .${NS} .${NS}__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
519
+ :where(.${NS} .${NS}__icon){flex:none;display:inline-flex;align-items:center;justify-content:center;line-height:1}
520
+ :where(.${NS} .${NS}__label){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
521
521
  .${NS} .${NS}__badge{flex:none;display:inline-flex;align-items:center;justify-content:center;
522
522
  min-width:var(--${NS}-badge-size,1.5em);padding:0 var(--${NS}-badge-pad,0.4em);
523
523
  border-radius:var(--${NS}-badge-radius,999px);font-size:var(--${NS}-badge-font-size,0.85em);
@@ -528,19 +528,18 @@ style.textContent=`
528
528
  .${NS} .${NS}__badge[data-tone="bad"]{background:var(--${NS}-badge-bad-bg,#fbe0e0);color:var(--${NS}-badge-bad-fg,#8a1c1c)}
529
529
  .${NS} .${NS}__badge[data-tone="unknown"]{background:none;color:var(--${NS}-badge-unknown-fg,#586069);
530
530
  box-shadow:inset 0 0 0 1px var(--${NS}-badge-unknown-edge,#c3c9d0)}
531
- .${NS}__unit{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
532
- .${NS}__panels{position:relative;flex:1 1 auto;min-height:0}
533
- .${NS}__panel{position:absolute;inset:0}
534
- .${NS}__panel[hidden]{display:none}
535
- .${NS}__body{position:absolute;inset:0}
536
- .${NS}__live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
531
+ :where(.${NS}__unit){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
532
+ :where(.${NS}__panels){position:relative;flex:1 1 auto;min-height:0}
533
+ :where(.${NS}__panel){position:absolute;inset:0}
534
+ :where(.${NS}__panel[hidden]){display:none}
535
+ :where(.${NS}__body){position:absolute;inset:0}
536
+ :where(.${NS}__live){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
537
537
  `;
538
538
  (doc.head||doc.documentElement).appendChild(style);
539
539
  }
540
540
  function renderShell(state){
541
541
  const{doc,el,order}=state;
542
542
  injectStyles(doc);
543
- el.classList.add(NS);
544
543
  const root=doc.createElement('div');
545
544
  root.className=NS;
546
545
  const list=doc.createElement('div');
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, tabs module
2
+ * Lattice Grid 1.68.0, tabs module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
54
54
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
55
55
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
56
56
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
57
- const STAMPED_VERSION="1.66.0";
57
+ const STAMPED_VERSION="1.68.0";
58
58
  async function resolveVersion(){
59
59
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
60
60
  return STAMPED_VERSION;
61
61
  }
62
- const VERSION="1.66.0";
62
+ const VERSION="1.68.0";
63
63
  const warned=new Set();
64
64
  const WARNED_LIMIT=2000;
65
65
  function rememberWarned(key){
@@ -501,7 +501,7 @@ const style=doc.createElement('style');
501
501
  style.id=`${NS}-styles`;
502
502
  style.setAttribute('id',`${NS}-styles`);
503
503
  style.textContent=`
504
- .${NS}{display:flex;flex-direction:column;height:100%;
504
+ :where(.${NS}){display:flex;flex-direction:column;height:100%;
505
505
  font-family:var(--${NS}-font-family,var(--lattice-font-family,var(--lat-chrome-font-family,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif)));
506
506
  font-size:var(--${NS}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));
507
507
  line-height:var(--${NS}-line-height,var(--lattice-line-height,var(--lat-chrome-line-height,1.4)))}
@@ -514,12 +514,12 @@ style.textContent=`
514
514
  padding:var(--${NS}-pad-y,5px) var(--${NS}-pad-x,12px);cursor:pointer;color:var(--${NS}-muted,#586069)}
515
515
  .${NS} .${NS}__tab + .${NS}__tab{border-left:1px solid var(--${NS}-separator,#e7eaee)}
516
516
  .${NS} .${NS}__tab:hover{background:var(--${NS}-hover,#ebeef1)}
517
- .${NS} .${NS}__tab:focus-visible{outline:2px solid var(--${NS}-focus,#2563eb);outline-offset:var(--${NS}-focus-offset,-4px)}
517
+ :where(.${NS} .${NS}__tab:focus-visible){outline:2px solid var(--${NS}-focus,#2563eb);outline-offset:var(--${NS}-focus-offset,-4px)}
518
518
  .${NS} .${NS}__tab[aria-selected="true"]{background:var(--${NS}-bg,#fff);color:var(--${NS}-active,#14171a);font-weight:600;
519
519
  margin-bottom:-1px;padding-bottom:calc(var(--${NS}-pad-y,5px) + 1px);
520
520
  box-shadow:inset 0 calc(-1 * var(--${NS}-accent-width,2px)) 0 0 var(--${NS}-accent,#1a6bc7)}
521
- .${NS} .${NS}__icon{flex:none;display:inline-flex;align-items:center;justify-content:center;line-height:1}
522
- .${NS} .${NS}__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
521
+ :where(.${NS} .${NS}__icon){flex:none;display:inline-flex;align-items:center;justify-content:center;line-height:1}
522
+ :where(.${NS} .${NS}__label){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
523
523
  .${NS} .${NS}__badge{flex:none;display:inline-flex;align-items:center;justify-content:center;
524
524
  min-width:var(--${NS}-badge-size,1.5em);padding:0 var(--${NS}-badge-pad,0.4em);
525
525
  border-radius:var(--${NS}-badge-radius,999px);font-size:var(--${NS}-badge-font-size,0.85em);
@@ -530,19 +530,18 @@ style.textContent=`
530
530
  .${NS} .${NS}__badge[data-tone="bad"]{background:var(--${NS}-badge-bad-bg,#fbe0e0);color:var(--${NS}-badge-bad-fg,#8a1c1c)}
531
531
  .${NS} .${NS}__badge[data-tone="unknown"]{background:none;color:var(--${NS}-badge-unknown-fg,#586069);
532
532
  box-shadow:inset 0 0 0 1px var(--${NS}-badge-unknown-edge,#c3c9d0)}
533
- .${NS}__unit{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
534
- .${NS}__panels{position:relative;flex:1 1 auto;min-height:0}
535
- .${NS}__panel{position:absolute;inset:0}
536
- .${NS}__panel[hidden]{display:none}
537
- .${NS}__body{position:absolute;inset:0}
538
- .${NS}__live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
533
+ :where(.${NS}__unit){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
534
+ :where(.${NS}__panels){position:relative;flex:1 1 auto;min-height:0}
535
+ :where(.${NS}__panel){position:absolute;inset:0}
536
+ :where(.${NS}__panel[hidden]){display:none}
537
+ :where(.${NS}__body){position:absolute;inset:0}
538
+ :where(.${NS}__live){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
539
539
  `;
540
540
  (doc.head||doc.documentElement).appendChild(style);
541
541
  }
542
542
  function renderShell(state){
543
543
  const{doc,el,order}=state;
544
544
  injectStyles(doc);
545
- el.classList.add(NS);
546
545
  const root=doc.createElement('div');
547
546
  root.className=NS;
548
547
  const list=doc.createElement('div');
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, tabs module
2
+ * Lattice Grid 1.68.0, tabs module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
54
54
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
55
55
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
56
56
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
57
- const STAMPED_VERSION="1.66.0";
57
+ const STAMPED_VERSION="1.68.0";
58
58
  async function resolveVersion(){
59
59
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
60
60
  return STAMPED_VERSION;
61
61
  }
62
- const VERSION="1.66.0";
62
+ const VERSION="1.68.0";
63
63
  const warned=new Set();
64
64
  const WARNED_LIMIT=2000;
65
65
  function rememberWarned(key){
@@ -501,7 +501,7 @@ const style=doc.createElement('style');
501
501
  style.id=`${NS}-styles`;
502
502
  style.setAttribute('id',`${NS}-styles`);
503
503
  style.textContent=`
504
- .${NS}{display:flex;flex-direction:column;height:100%;
504
+ :where(.${NS}){display:flex;flex-direction:column;height:100%;
505
505
  font-family:var(--${NS}-font-family,var(--lattice-font-family,var(--lat-chrome-font-family,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif)));
506
506
  font-size:var(--${NS}-font-size,var(--lattice-font-size,var(--lat-chrome-font-size,13px)));
507
507
  line-height:var(--${NS}-line-height,var(--lattice-line-height,var(--lat-chrome-line-height,1.4)))}
@@ -514,12 +514,12 @@ style.textContent=`
514
514
  padding:var(--${NS}-pad-y,5px) var(--${NS}-pad-x,12px);cursor:pointer;color:var(--${NS}-muted,#586069)}
515
515
  .${NS} .${NS}__tab + .${NS}__tab{border-left:1px solid var(--${NS}-separator,#e7eaee)}
516
516
  .${NS} .${NS}__tab:hover{background:var(--${NS}-hover,#ebeef1)}
517
- .${NS} .${NS}__tab:focus-visible{outline:2px solid var(--${NS}-focus,#2563eb);outline-offset:var(--${NS}-focus-offset,-4px)}
517
+ :where(.${NS} .${NS}__tab:focus-visible){outline:2px solid var(--${NS}-focus,#2563eb);outline-offset:var(--${NS}-focus-offset,-4px)}
518
518
  .${NS} .${NS}__tab[aria-selected="true"]{background:var(--${NS}-bg,#fff);color:var(--${NS}-active,#14171a);font-weight:600;
519
519
  margin-bottom:-1px;padding-bottom:calc(var(--${NS}-pad-y,5px) + 1px);
520
520
  box-shadow:inset 0 calc(-1 * var(--${NS}-accent-width,2px)) 0 0 var(--${NS}-accent,#1a6bc7)}
521
- .${NS} .${NS}__icon{flex:none;display:inline-flex;align-items:center;justify-content:center;line-height:1}
522
- .${NS} .${NS}__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
521
+ :where(.${NS} .${NS}__icon){flex:none;display:inline-flex;align-items:center;justify-content:center;line-height:1}
522
+ :where(.${NS} .${NS}__label){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
523
523
  .${NS} .${NS}__badge{flex:none;display:inline-flex;align-items:center;justify-content:center;
524
524
  min-width:var(--${NS}-badge-size,1.5em);padding:0 var(--${NS}-badge-pad,0.4em);
525
525
  border-radius:var(--${NS}-badge-radius,999px);font-size:var(--${NS}-badge-font-size,0.85em);
@@ -530,19 +530,18 @@ style.textContent=`
530
530
  .${NS} .${NS}__badge[data-tone="bad"]{background:var(--${NS}-badge-bad-bg,#fbe0e0);color:var(--${NS}-badge-bad-fg,#8a1c1c)}
531
531
  .${NS} .${NS}__badge[data-tone="unknown"]{background:none;color:var(--${NS}-badge-unknown-fg,#586069);
532
532
  box-shadow:inset 0 0 0 1px var(--${NS}-badge-unknown-edge,#c3c9d0)}
533
- .${NS}__unit{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
534
- .${NS}__panels{position:relative;flex:1 1 auto;min-height:0}
535
- .${NS}__panel{position:absolute;inset:0}
536
- .${NS}__panel[hidden]{display:none}
537
- .${NS}__body{position:absolute;inset:0}
538
- .${NS}__live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
533
+ :where(.${NS}__unit){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
534
+ :where(.${NS}__panels){position:relative;flex:1 1 auto;min-height:0}
535
+ :where(.${NS}__panel){position:absolute;inset:0}
536
+ :where(.${NS}__panel[hidden]){display:none}
537
+ :where(.${NS}__body){position:absolute;inset:0}
538
+ :where(.${NS}__live){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
539
539
  `;
540
540
  (doc.head||doc.documentElement).appendChild(style);
541
541
  }
542
542
  function renderShell(state){
543
543
  const{doc,el,order}=state;
544
544
  injectStyles(doc);
545
- el.classList.add(NS);
546
545
  const root=doc.createElement('div');
547
546
  root.className=NS;
548
547
  const list=doc.createElement('div');
package/modules/vue.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.66.0, vue module type declarations
2
+ * Lattice Grid 1.68.0, vue module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */