@texturehq/edges 1.12.1 → 1.13.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/components.manifest.json +28 -26
- package/dist/index.cjs +8 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +184 -14
- package/dist/index.d.ts +184 -14
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/{server-BwR7EOd8.d.cts → server-8T44SFVa.d.cts} +72 -2
- package/dist/{server-BwR7EOd8.d.ts → server-8T44SFVa.d.ts} +72 -2
- package/dist/server.d.cts +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/styles.css +13 -11
- package/dist/utilities.manifest.json +9 -2
- package/package.json +2 -1
- package/scripts/generate-edges-docs.js +32 -10
|
@@ -4,6 +4,7 @@ import React__default, { ReactNode } from 'react';
|
|
|
4
4
|
import * as PhosphorIcons from '@phosphor-icons/react';
|
|
5
5
|
import { IconProps as IconProps$1 } from '@phosphor-icons/react';
|
|
6
6
|
import { DateValue, DateFieldProps as DateFieldProps$1, ValidationResult, MeterProps as MeterProps$1 } from 'react-aria-components';
|
|
7
|
+
import * as react_map_gl from 'react-map-gl';
|
|
7
8
|
import { ViewState, MapRef } from 'react-map-gl';
|
|
8
9
|
import * as d3_scale from 'd3-scale';
|
|
9
10
|
import { ScaleTime, ScaleLinear } from 'd3-scale';
|
|
@@ -995,10 +996,64 @@ interface RasterLayerSpec extends BaseLayerSpec {
|
|
|
995
996
|
fadeDuration?: number;
|
|
996
997
|
};
|
|
997
998
|
}
|
|
999
|
+
/**
|
|
1000
|
+
* Clustered vector tile layer (Mapbox Vector Tiles with server-side clustering)
|
|
1001
|
+
*
|
|
1002
|
+
* Used for displaying large numbers of point features with automatic clustering.
|
|
1003
|
+
* The backend MVT service pre-clusters points and provides cluster metadata.
|
|
1004
|
+
*/
|
|
1005
|
+
interface ClusteredVectorLayerSpec extends Omit<BaseLayerSpec, "tooltip"> {
|
|
1006
|
+
kind: "clusteredVector";
|
|
1007
|
+
/** Mapbox tileset URL (mapbox://...) or HTTP template with {z}/{x}/{y} */
|
|
1008
|
+
tileset: string;
|
|
1009
|
+
/** Source layer name within the tileset */
|
|
1010
|
+
sourceLayer: string;
|
|
1011
|
+
/** ID of the currently selected feature (for highlighting) */
|
|
1012
|
+
selectedId?: string | null;
|
|
1013
|
+
/** Tooltip configuration specific to clustered data */
|
|
1014
|
+
tooltip?: {
|
|
1015
|
+
/** When to show the tooltip (defaults to "hover") */
|
|
1016
|
+
trigger?: "hover" | "click";
|
|
1017
|
+
/** Tooltip content for clusters (receives point count and feature) */
|
|
1018
|
+
cluster?: (count: number, feature: LayerFeature) => React.ReactNode;
|
|
1019
|
+
/** Tooltip content for individual points */
|
|
1020
|
+
point?: (feature: LayerFeature) => React.ReactNode;
|
|
1021
|
+
};
|
|
1022
|
+
/** Style overrides for cluster circles (optional, uses design system defaults) */
|
|
1023
|
+
clusterStyle?: {
|
|
1024
|
+
/** Color for cluster circles */
|
|
1025
|
+
color?: ColorValue;
|
|
1026
|
+
/** Shadow color */
|
|
1027
|
+
shadowColor?: string;
|
|
1028
|
+
/** Size thresholds and radii for different cluster sizes */
|
|
1029
|
+
sizes?: {
|
|
1030
|
+
threshold: number;
|
|
1031
|
+
radius: number;
|
|
1032
|
+
}[];
|
|
1033
|
+
};
|
|
1034
|
+
/** Style overrides for individual points (optional, uses design system defaults) */
|
|
1035
|
+
pointStyle?: {
|
|
1036
|
+
/** Fill color */
|
|
1037
|
+
color?: ColorValue;
|
|
1038
|
+
/** Circle radius in pixels */
|
|
1039
|
+
radius?: number;
|
|
1040
|
+
/** Border width in pixels */
|
|
1041
|
+
borderWidth?: number;
|
|
1042
|
+
/** Border color */
|
|
1043
|
+
borderColor?: string;
|
|
1044
|
+
};
|
|
1045
|
+
/** Style overrides for selected point (optional, uses design system defaults) */
|
|
1046
|
+
selectedStyle?: {
|
|
1047
|
+
/** Fill color */
|
|
1048
|
+
color?: ColorValue;
|
|
1049
|
+
/** Circle radius in pixels */
|
|
1050
|
+
radius?: number;
|
|
1051
|
+
};
|
|
1052
|
+
}
|
|
998
1053
|
/**
|
|
999
1054
|
* Union of all layer types
|
|
1000
1055
|
*/
|
|
1001
|
-
type LayerSpec = VectorLayerSpec | GeoJsonLayerSpec | CustomPinsSpec | RasterLayerSpec;
|
|
1056
|
+
type LayerSpec = VectorLayerSpec | GeoJsonLayerSpec | CustomPinsSpec | RasterLayerSpec | ClusteredVectorLayerSpec;
|
|
1002
1057
|
|
|
1003
1058
|
/**
|
|
1004
1059
|
* Unified map style configuration for all map components
|
|
@@ -1319,6 +1374,21 @@ interface InteractiveMapProps {
|
|
|
1319
1374
|
* controls={false}
|
|
1320
1375
|
*/
|
|
1321
1376
|
controls?: MapControl[] | "default" | false;
|
|
1377
|
+
/**
|
|
1378
|
+
* Raw Mapbox GL children (Source, Layer, Marker, etc.)
|
|
1379
|
+
* Use for advanced layer configurations not supported by the layers prop
|
|
1380
|
+
*/
|
|
1381
|
+
children?: React__default.ReactNode;
|
|
1382
|
+
/**
|
|
1383
|
+
* Layer IDs that should be interactive (clickable/hoverable)
|
|
1384
|
+
* Used when rendering raw Mapbox children that need click/hover events
|
|
1385
|
+
*/
|
|
1386
|
+
additionalInteractiveLayerIds?: string[];
|
|
1387
|
+
/**
|
|
1388
|
+
* Handler for map clicks on interactive layers (includes both layers prop and children)
|
|
1389
|
+
* Receives the click event with feature data
|
|
1390
|
+
*/
|
|
1391
|
+
onMapClick?: (event: react_map_gl.MapLayerMouseEvent) => void;
|
|
1322
1392
|
/**
|
|
1323
1393
|
* Show user location as a blue dot marker (like Google/Apple Maps)
|
|
1324
1394
|
* This only controls the visibility of the blue dot marker.
|
|
@@ -1592,4 +1662,4 @@ declare const isLightColor: (color: string) => boolean;
|
|
|
1592
1662
|
*/
|
|
1593
1663
|
declare const getContrastingTextColor: (backgroundColor: string) => string;
|
|
1594
1664
|
|
|
1595
|
-
export { type
|
|
1665
|
+
export { type LayerFeature as $, type ActionItem as A, type BooleanFormat as B, type CurrentFormat as C, type DateFormat as D, type EnergyFormat as E, type FieldValue as F, type GeoJsonLayerSpec as G, type CodeLanguage as H, Icon as I, type CodeTheme as J, CodeEditor as K, type LayerSpec as L, type DateFieldProps as M, type NumberFormat as N, DateField as O, type PhoneFormat as P, type FileUploadProps as Q, type ResistanceFormat as R, FileUpload as S, type TemperatureUnitString as T, Heading as U, type VoltageFormat as V, Loader as W, Logo as X, type YFormatType as Y, type ColorSpec as Z, type InteractiveMapProps as _, type FormattedValue as a, type LayerStyle as a0, type MapPoint as a1, type RenderType as a2, type StaticMapProps as a3, type ZoomStops as a4, InteractiveMap as a5, MAP_TYPES as a6, StaticMap as a7, type MeterProps as a8, Meter as a9, getThemeCategoricalColors as aA, isLightColor as aB, type ComponentFormatOptions as aC, formatComponentValue as aD, useComponentFormatter as aE, type BaseFormat as aF, type TextTransform as aG, type TextTruncatePosition as aH, type DateFormatStyle as aI, type EnergyUnit as aJ, type PowerUnit as aK, type VoltageUnit as aL, type CurrentUnit as aM, type ResistanceUnit as aN, type DistanceUnit as aO, type CustomFormat as aP, type RichTextEditorProps as aa, RichTextEditor as ab, type SegmentedControlProps as ac, type SegmentOption as ad, SegmentedControl as ae, type SideNavItem as af, type SideNavProps as ag, SideNav as ah, TextLink as ai, type TopNavProps as aj, TopNav as ak, type TooltipSeries as al, ChartContext as am, useChartContext as an, type ChartMargin as ao, createXScale as ap, createYScale as aq, defaultMargin as ar, getYFormatSettings as as, type YFormatSettings as at, clearColorCache as au, createCategoryColorMap as av, getContrastingTextColor as aw, getDefaultChartColor as ax, getDefaultColors as ay, getResolvedColor as az, type DistanceFormat as b, type CurrencyFormat as c, type PowerFormat as d, type FormatterFunction as e, type TemperatureUnit as f, type TemperatureFormat as g, type TextFormat as h, type FieldFormat as i, type BaseDataPoint as j, type TooltipData as k, type IconName as l, type ComponentFormatter as m, type CustomPinsSpec as n, type RasterLayerSpec as o, type VectorLayerSpec as p, type ClusteredVectorLayerSpec as q, type ActionMenuProps as r, ActionMenu as s, type AppShellProps as t, AppShell as u, type AvatarProps as v, Avatar as w, type BadgeProps as x, Badge as y, type CodeEditorProps as z };
|
|
@@ -4,6 +4,7 @@ import React__default, { ReactNode } from 'react';
|
|
|
4
4
|
import * as PhosphorIcons from '@phosphor-icons/react';
|
|
5
5
|
import { IconProps as IconProps$1 } from '@phosphor-icons/react';
|
|
6
6
|
import { DateValue, DateFieldProps as DateFieldProps$1, ValidationResult, MeterProps as MeterProps$1 } from 'react-aria-components';
|
|
7
|
+
import * as react_map_gl from 'react-map-gl';
|
|
7
8
|
import { ViewState, MapRef } from 'react-map-gl';
|
|
8
9
|
import * as d3_scale from 'd3-scale';
|
|
9
10
|
import { ScaleTime, ScaleLinear } from 'd3-scale';
|
|
@@ -995,10 +996,64 @@ interface RasterLayerSpec extends BaseLayerSpec {
|
|
|
995
996
|
fadeDuration?: number;
|
|
996
997
|
};
|
|
997
998
|
}
|
|
999
|
+
/**
|
|
1000
|
+
* Clustered vector tile layer (Mapbox Vector Tiles with server-side clustering)
|
|
1001
|
+
*
|
|
1002
|
+
* Used for displaying large numbers of point features with automatic clustering.
|
|
1003
|
+
* The backend MVT service pre-clusters points and provides cluster metadata.
|
|
1004
|
+
*/
|
|
1005
|
+
interface ClusteredVectorLayerSpec extends Omit<BaseLayerSpec, "tooltip"> {
|
|
1006
|
+
kind: "clusteredVector";
|
|
1007
|
+
/** Mapbox tileset URL (mapbox://...) or HTTP template with {z}/{x}/{y} */
|
|
1008
|
+
tileset: string;
|
|
1009
|
+
/** Source layer name within the tileset */
|
|
1010
|
+
sourceLayer: string;
|
|
1011
|
+
/** ID of the currently selected feature (for highlighting) */
|
|
1012
|
+
selectedId?: string | null;
|
|
1013
|
+
/** Tooltip configuration specific to clustered data */
|
|
1014
|
+
tooltip?: {
|
|
1015
|
+
/** When to show the tooltip (defaults to "hover") */
|
|
1016
|
+
trigger?: "hover" | "click";
|
|
1017
|
+
/** Tooltip content for clusters (receives point count and feature) */
|
|
1018
|
+
cluster?: (count: number, feature: LayerFeature) => React.ReactNode;
|
|
1019
|
+
/** Tooltip content for individual points */
|
|
1020
|
+
point?: (feature: LayerFeature) => React.ReactNode;
|
|
1021
|
+
};
|
|
1022
|
+
/** Style overrides for cluster circles (optional, uses design system defaults) */
|
|
1023
|
+
clusterStyle?: {
|
|
1024
|
+
/** Color for cluster circles */
|
|
1025
|
+
color?: ColorValue;
|
|
1026
|
+
/** Shadow color */
|
|
1027
|
+
shadowColor?: string;
|
|
1028
|
+
/** Size thresholds and radii for different cluster sizes */
|
|
1029
|
+
sizes?: {
|
|
1030
|
+
threshold: number;
|
|
1031
|
+
radius: number;
|
|
1032
|
+
}[];
|
|
1033
|
+
};
|
|
1034
|
+
/** Style overrides for individual points (optional, uses design system defaults) */
|
|
1035
|
+
pointStyle?: {
|
|
1036
|
+
/** Fill color */
|
|
1037
|
+
color?: ColorValue;
|
|
1038
|
+
/** Circle radius in pixels */
|
|
1039
|
+
radius?: number;
|
|
1040
|
+
/** Border width in pixels */
|
|
1041
|
+
borderWidth?: number;
|
|
1042
|
+
/** Border color */
|
|
1043
|
+
borderColor?: string;
|
|
1044
|
+
};
|
|
1045
|
+
/** Style overrides for selected point (optional, uses design system defaults) */
|
|
1046
|
+
selectedStyle?: {
|
|
1047
|
+
/** Fill color */
|
|
1048
|
+
color?: ColorValue;
|
|
1049
|
+
/** Circle radius in pixels */
|
|
1050
|
+
radius?: number;
|
|
1051
|
+
};
|
|
1052
|
+
}
|
|
998
1053
|
/**
|
|
999
1054
|
* Union of all layer types
|
|
1000
1055
|
*/
|
|
1001
|
-
type LayerSpec = VectorLayerSpec | GeoJsonLayerSpec | CustomPinsSpec | RasterLayerSpec;
|
|
1056
|
+
type LayerSpec = VectorLayerSpec | GeoJsonLayerSpec | CustomPinsSpec | RasterLayerSpec | ClusteredVectorLayerSpec;
|
|
1002
1057
|
|
|
1003
1058
|
/**
|
|
1004
1059
|
* Unified map style configuration for all map components
|
|
@@ -1319,6 +1374,21 @@ interface InteractiveMapProps {
|
|
|
1319
1374
|
* controls={false}
|
|
1320
1375
|
*/
|
|
1321
1376
|
controls?: MapControl[] | "default" | false;
|
|
1377
|
+
/**
|
|
1378
|
+
* Raw Mapbox GL children (Source, Layer, Marker, etc.)
|
|
1379
|
+
* Use for advanced layer configurations not supported by the layers prop
|
|
1380
|
+
*/
|
|
1381
|
+
children?: React__default.ReactNode;
|
|
1382
|
+
/**
|
|
1383
|
+
* Layer IDs that should be interactive (clickable/hoverable)
|
|
1384
|
+
* Used when rendering raw Mapbox children that need click/hover events
|
|
1385
|
+
*/
|
|
1386
|
+
additionalInteractiveLayerIds?: string[];
|
|
1387
|
+
/**
|
|
1388
|
+
* Handler for map clicks on interactive layers (includes both layers prop and children)
|
|
1389
|
+
* Receives the click event with feature data
|
|
1390
|
+
*/
|
|
1391
|
+
onMapClick?: (event: react_map_gl.MapLayerMouseEvent) => void;
|
|
1322
1392
|
/**
|
|
1323
1393
|
* Show user location as a blue dot marker (like Google/Apple Maps)
|
|
1324
1394
|
* This only controls the visibility of the blue dot marker.
|
|
@@ -1592,4 +1662,4 @@ declare const isLightColor: (color: string) => boolean;
|
|
|
1592
1662
|
*/
|
|
1593
1663
|
declare const getContrastingTextColor: (backgroundColor: string) => string;
|
|
1594
1664
|
|
|
1595
|
-
export { type
|
|
1665
|
+
export { type LayerFeature as $, type ActionItem as A, type BooleanFormat as B, type CurrentFormat as C, type DateFormat as D, type EnergyFormat as E, type FieldValue as F, type GeoJsonLayerSpec as G, type CodeLanguage as H, Icon as I, type CodeTheme as J, CodeEditor as K, type LayerSpec as L, type DateFieldProps as M, type NumberFormat as N, DateField as O, type PhoneFormat as P, type FileUploadProps as Q, type ResistanceFormat as R, FileUpload as S, type TemperatureUnitString as T, Heading as U, type VoltageFormat as V, Loader as W, Logo as X, type YFormatType as Y, type ColorSpec as Z, type InteractiveMapProps as _, type FormattedValue as a, type LayerStyle as a0, type MapPoint as a1, type RenderType as a2, type StaticMapProps as a3, type ZoomStops as a4, InteractiveMap as a5, MAP_TYPES as a6, StaticMap as a7, type MeterProps as a8, Meter as a9, getThemeCategoricalColors as aA, isLightColor as aB, type ComponentFormatOptions as aC, formatComponentValue as aD, useComponentFormatter as aE, type BaseFormat as aF, type TextTransform as aG, type TextTruncatePosition as aH, type DateFormatStyle as aI, type EnergyUnit as aJ, type PowerUnit as aK, type VoltageUnit as aL, type CurrentUnit as aM, type ResistanceUnit as aN, type DistanceUnit as aO, type CustomFormat as aP, type RichTextEditorProps as aa, RichTextEditor as ab, type SegmentedControlProps as ac, type SegmentOption as ad, SegmentedControl as ae, type SideNavItem as af, type SideNavProps as ag, SideNav as ah, TextLink as ai, type TopNavProps as aj, TopNav as ak, type TooltipSeries as al, ChartContext as am, useChartContext as an, type ChartMargin as ao, createXScale as ap, createYScale as aq, defaultMargin as ar, getYFormatSettings as as, type YFormatSettings as at, clearColorCache as au, createCategoryColorMap as av, getContrastingTextColor as aw, getDefaultChartColor as ax, getDefaultColors as ay, getResolvedColor as az, type DistanceFormat as b, type CurrencyFormat as c, type PowerFormat as d, type FormatterFunction as e, type TemperatureUnit as f, type TemperatureFormat as g, type TextFormat as h, type FieldFormat as i, type BaseDataPoint as j, type TooltipData as k, type IconName as l, type ComponentFormatter as m, type CustomPinsSpec as n, type RasterLayerSpec as o, type VectorLayerSpec as p, type ClusteredVectorLayerSpec as q, type ActionMenuProps as r, ActionMenu as s, type AppShellProps as t, AppShell as u, type AvatarProps as v, Avatar as w, type BadgeProps as x, Badge as y, type CodeEditorProps as z };
|
package/dist/server.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as ActionItem,
|
|
1
|
+
export { A as ActionItem, r as ActionMenuProps, u as AppShell, t as AppShellProps, w as Avatar, v as AvatarProps, x as BadgeProps, j as BaseDataPoint, ao as ChartMargin, z as CodeEditorProps, H as CodeLanguage, J as CodeTheme, M as DateFieldProps, Q as FileUploadProps, U as Heading, _ as InteractiveMapProps, W as Loader, X as Logo, a1 as MapPoint, a8 as MeterProps, aa as RichTextEditorProps, ad as SegmentOption, ac as SegmentedControlProps, ah as SideNav, af as SideNavItem, ag as SideNavProps, a3 as StaticMapProps, ai as TextLink, k as TooltipData, al as TooltipSeries, ak as TopNav, aj as TopNavProps, at as YFormatSettings, Y as YFormatType, au as clearColorCache, av as createCategoryColorMap, ap as createXScale, aq as createYScale, ar as defaultMargin, aw as getContrastingTextColor, ax as getDefaultChartColor, ay as getDefaultColors, az as getResolvedColor, aA as getThemeCategoricalColors, as as getYFormatSettings, aB as isLightColor } from './server-8T44SFVa.cjs';
|
|
2
2
|
export { BreadcrumbProps, BreadcrumbsProps } from 'react-aria-components';
|
|
3
3
|
import 'react/jsx-runtime';
|
|
4
4
|
import 'react';
|
package/dist/server.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as ActionItem,
|
|
1
|
+
export { A as ActionItem, r as ActionMenuProps, u as AppShell, t as AppShellProps, w as Avatar, v as AvatarProps, x as BadgeProps, j as BaseDataPoint, ao as ChartMargin, z as CodeEditorProps, H as CodeLanguage, J as CodeTheme, M as DateFieldProps, Q as FileUploadProps, U as Heading, _ as InteractiveMapProps, W as Loader, X as Logo, a1 as MapPoint, a8 as MeterProps, aa as RichTextEditorProps, ad as SegmentOption, ac as SegmentedControlProps, ah as SideNav, af as SideNavItem, ag as SideNavProps, a3 as StaticMapProps, ai as TextLink, k as TooltipData, al as TooltipSeries, ak as TopNav, aj as TopNavProps, at as YFormatSettings, Y as YFormatType, au as clearColorCache, av as createCategoryColorMap, ap as createXScale, aq as createYScale, ar as defaultMargin, aw as getContrastingTextColor, ax as getDefaultChartColor, ay as getDefaultColors, az as getResolvedColor, aA as getThemeCategoricalColors, as as getYFormatSettings, aB as isLightColor } from './server-8T44SFVa.js';
|
|
2
2
|
export { BreadcrumbProps, BreadcrumbsProps } from 'react-aria-components';
|
|
3
3
|
import 'react/jsx-runtime';
|
|
4
4
|
import 'react';
|
package/dist/styles.css
CHANGED
|
@@ -62,7 +62,6 @@
|
|
|
62
62
|
--color-brand-light: #f7f7ff;
|
|
63
63
|
--color-brand-dark: #363ccb;
|
|
64
64
|
--color-brand-background: #f6f7ff;
|
|
65
|
-
--color-neutral-white: #ffffff;
|
|
66
65
|
--color-neutral-black: #000000;
|
|
67
66
|
--spacing-0: 0px;
|
|
68
67
|
--spacing-1: 0.25rem;
|
|
@@ -1282,8 +1281,8 @@
|
|
|
1282
1281
|
.top-20 {
|
|
1283
1282
|
top: var(--spacing-20);
|
|
1284
1283
|
}
|
|
1285
|
-
.top-\[
|
|
1286
|
-
top:
|
|
1284
|
+
.top-\[2rem\] {
|
|
1285
|
+
top: 2rem;
|
|
1287
1286
|
}
|
|
1288
1287
|
.-right-2 {
|
|
1289
1288
|
right: calc(var(--spacing-2) * -1);
|
|
@@ -1690,8 +1689,8 @@
|
|
|
1690
1689
|
.h-\[600px\] {
|
|
1691
1690
|
height: 600px;
|
|
1692
1691
|
}
|
|
1693
|
-
.h-\[calc\(100\%\+
|
|
1694
|
-
height: calc(100% +
|
|
1692
|
+
.h-\[calc\(100\%\+2\.5rem\)\] {
|
|
1693
|
+
height: calc(100% + 2.5rem);
|
|
1695
1694
|
}
|
|
1696
1695
|
.h-\[calc\(100dvh-60px\)\] {
|
|
1697
1696
|
height: calc(100dvh - 60px);
|
|
@@ -1858,6 +1857,9 @@
|
|
|
1858
1857
|
.w-\[320px\] {
|
|
1859
1858
|
width: 320px;
|
|
1860
1859
|
}
|
|
1860
|
+
.w-\[400px\] {
|
|
1861
|
+
width: 400px;
|
|
1862
|
+
}
|
|
1861
1863
|
.w-\[500px\] {
|
|
1862
1864
|
width: 500px;
|
|
1863
1865
|
}
|
|
@@ -2190,9 +2192,6 @@
|
|
|
2190
2192
|
.grid-cols-12 {
|
|
2191
2193
|
grid-template-columns: repeat(12, minmax(0, 1fr));
|
|
2192
2194
|
}
|
|
2193
|
-
.grid-cols-\[1fr_300px\] {
|
|
2194
|
-
grid-template-columns: 1fr 300px;
|
|
2195
|
-
}
|
|
2196
2195
|
.grid-cols-\[1fr_auto\] {
|
|
2197
2196
|
grid-template-columns: 1fr auto;
|
|
2198
2197
|
}
|
|
@@ -3591,9 +3590,6 @@
|
|
|
3591
3590
|
.text-inherit {
|
|
3592
3591
|
color: inherit;
|
|
3593
3592
|
}
|
|
3594
|
-
.text-neutral-white {
|
|
3595
|
-
color: var(--color-neutral-white);
|
|
3596
|
-
}
|
|
3597
3593
|
.text-orange-500 {
|
|
3598
3594
|
color: var(--color-orange-500);
|
|
3599
3595
|
}
|
|
@@ -3956,6 +3952,12 @@
|
|
|
3956
3952
|
.\[--tw-enter-translate-x\:calc\(-16rem-100\%\)\] {
|
|
3957
3953
|
--tw-enter-translate-x: calc(-16rem - 100%);
|
|
3958
3954
|
}
|
|
3955
|
+
.\[animation-delay\:0\.1s\] {
|
|
3956
|
+
animation-delay: 0.1s;
|
|
3957
|
+
}
|
|
3958
|
+
.\[animation-delay\:0\.2s\] {
|
|
3959
|
+
animation-delay: 0.2s;
|
|
3960
|
+
}
|
|
3959
3961
|
.ring-inset {
|
|
3960
3962
|
--tw-ring-inset: inset;
|
|
3961
3963
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
3
|
-
"generatedAt": "2025-10-
|
|
2
|
+
"version": "1.13.0",
|
|
3
|
+
"generatedAt": "2025-10-26T01:11:39.875Z",
|
|
4
4
|
"categories": {
|
|
5
5
|
"hooks": {
|
|
6
6
|
"description": "React hooks for common functionality like breakpoints, debouncing, local storage, and media queries",
|
|
@@ -40,6 +40,13 @@
|
|
|
40
40
|
"category": "hooks",
|
|
41
41
|
"file": "hooks/useElementSize.ts"
|
|
42
42
|
},
|
|
43
|
+
{
|
|
44
|
+
"name": "useInfiniteScroll",
|
|
45
|
+
"type": "function",
|
|
46
|
+
"description": "useInfiniteScroll Hook for implementing infinite scroll with optional virtualization. Intelligently detects initial vs loading-more states from context. Features: - Smart loading state detection (initial vs loading-more) - Optional explicit state control - TanStack Virtual integration for performance - Intersection Observer for load triggering - Configurable virtualization threshold ```tsx const { scrollRef, computedLoadingState, isLoadingMore } = useInfiniteScroll({ items, onLoadMore: fetchNextPage, hasMore: hasNextPage, isLoading: isFetching, }); ```",
|
|
47
|
+
"category": "hooks",
|
|
48
|
+
"file": "hooks/useInfiniteScroll.ts"
|
|
49
|
+
},
|
|
43
50
|
{
|
|
44
51
|
"name": "useLocalStorage",
|
|
45
52
|
"type": "function",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@texturehq/edges",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.0",
|
|
4
4
|
"author": "Nicholas Brown <nick@texturehq.com>",
|
|
5
5
|
"description": "A shared component library for Texture",
|
|
6
6
|
"type": "module",
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
66
|
"@phosphor-icons/react": "^2.1.7",
|
|
67
|
+
"@tanstack/react-virtual": "^3.10.8",
|
|
67
68
|
"@tiptap/core": "^3.4.5",
|
|
68
69
|
"@tiptap/extension-link": "^3.4.5",
|
|
69
70
|
"@tiptap/pm": "^3.4.5",
|
|
@@ -82,7 +82,10 @@ function findComponentFile(relPath) {
|
|
|
82
82
|
function findStorybookFile(relPath) {
|
|
83
83
|
const base = path.join(SRC_DIR, "components", relPath);
|
|
84
84
|
const componentName = relPath.split("/").pop();
|
|
85
|
-
const candidates = [
|
|
85
|
+
const candidates = [
|
|
86
|
+
path.join(base, `${componentName}.stories.tsx`),
|
|
87
|
+
path.join(base, `${componentName}.stories.ts`),
|
|
88
|
+
];
|
|
86
89
|
for (const f of candidates) {
|
|
87
90
|
if (fs.existsSync(f)) return f;
|
|
88
91
|
}
|
|
@@ -140,15 +143,19 @@ function getJsdocAbove(content, idx) {
|
|
|
140
143
|
function extractProps(content, componentName) {
|
|
141
144
|
const ifaceRe = new RegExp(
|
|
142
145
|
`export\\s+interface\\s+${componentName}Props\\s*(?:extends\\s+[^{]+)?\\{([\\s\\S]*?)\\}`,
|
|
143
|
-
"m"
|
|
146
|
+
"m"
|
|
144
147
|
);
|
|
145
148
|
let m = ifaceRe.exec(content);
|
|
146
149
|
if (!m) {
|
|
147
|
-
const anyIfaceRe =
|
|
150
|
+
const anyIfaceRe =
|
|
151
|
+
/export\s+interface\s+([A-Za-z0-9_]+Props)\s*(?:extends\s+[^{]+)?\{([\s\S]*?)\}/m;
|
|
148
152
|
m = anyIfaceRe.exec(content);
|
|
149
153
|
}
|
|
150
154
|
if (!m) {
|
|
151
|
-
const typeRe = new RegExp(
|
|
155
|
+
const typeRe = new RegExp(
|
|
156
|
+
`export\\s+type\\s+${componentName}Props\\s*=\\s*(?:[^{&]+&\s*)?([\\s\\S]*?)\\}`,
|
|
157
|
+
"m"
|
|
158
|
+
);
|
|
152
159
|
m = typeRe.exec(content);
|
|
153
160
|
}
|
|
154
161
|
const props = [];
|
|
@@ -290,7 +297,9 @@ function generateComponentsManifest() {
|
|
|
290
297
|
ensureDir(DIST_DIR);
|
|
291
298
|
writeFile(path.join(DIST_DIR, "components.manifest.json"), JSON.stringify(manifest, null, 2));
|
|
292
299
|
|
|
293
|
-
console.log(
|
|
300
|
+
console.log(
|
|
301
|
+
` Found ${components.length} components in ${Object.keys(categories).length} categories`
|
|
302
|
+
);
|
|
294
303
|
return manifest;
|
|
295
304
|
}
|
|
296
305
|
|
|
@@ -300,7 +309,10 @@ function generateComponentsManifest() {
|
|
|
300
309
|
|
|
301
310
|
function extractJSDoc(content, functionName) {
|
|
302
311
|
const patterns = [
|
|
303
|
-
new RegExp(
|
|
312
|
+
new RegExp(
|
|
313
|
+
`\\/\\*\\*([^*]|\\*(?!\\/))*\\*\\/\\s*export\\s+(?:async\\s+)?function\\s+${functionName}\\b`,
|
|
314
|
+
"s"
|
|
315
|
+
),
|
|
304
316
|
new RegExp(`\\/\\*\\*([^*]|\\*(?!\\/))*\\*\\/\\s*export\\s+const\\s+${functionName}\\s*=`, "s"),
|
|
305
317
|
];
|
|
306
318
|
|
|
@@ -344,7 +356,10 @@ function extractExportsFromFile(filePath) {
|
|
|
344
356
|
const constPattern = /export\s+const\s+(\w+)\s*(?::\s*[^=]+)?\s*=/g;
|
|
345
357
|
while ((match = constPattern.exec(content))) {
|
|
346
358
|
const name = match[1];
|
|
347
|
-
const afterMatch = content.slice(
|
|
359
|
+
const afterMatch = content.slice(
|
|
360
|
+
match.index + match[0].length,
|
|
361
|
+
match.index + match[0].length + 50
|
|
362
|
+
);
|
|
348
363
|
const isFunction = afterMatch.includes("=>") || afterMatch.includes("function");
|
|
349
364
|
|
|
350
365
|
utilities.push({
|
|
@@ -450,12 +465,17 @@ function generateUtilitiesManifest() {
|
|
|
450
465
|
};
|
|
451
466
|
}
|
|
452
467
|
|
|
453
|
-
const totalUtilities = Object.values(manifest.categories).reduce(
|
|
468
|
+
const totalUtilities = Object.values(manifest.categories).reduce(
|
|
469
|
+
(sum, cat) => sum + cat.utilities.length,
|
|
470
|
+
0
|
|
471
|
+
);
|
|
454
472
|
|
|
455
473
|
ensureDir(DIST_DIR);
|
|
456
474
|
writeFile(path.join(DIST_DIR, "utilities.manifest.json"), JSON.stringify(manifest, null, 2));
|
|
457
475
|
|
|
458
|
-
console.log(
|
|
476
|
+
console.log(
|
|
477
|
+
` Found ${totalUtilities} utilities in ${Object.keys(manifest.categories).length} categories`
|
|
478
|
+
);
|
|
459
479
|
return manifest;
|
|
460
480
|
}
|
|
461
481
|
|
|
@@ -983,7 +1003,9 @@ async function main() {
|
|
|
983
1003
|
stdio: "inherit",
|
|
984
1004
|
});
|
|
985
1005
|
} catch (err) {
|
|
986
|
-
console.log(
|
|
1006
|
+
console.log(
|
|
1007
|
+
"⚠️ Note: Could not merge agent instructions (merge script may not be available yet)"
|
|
1008
|
+
);
|
|
987
1009
|
}
|
|
988
1010
|
|
|
989
1011
|
console.log("\n✅ Edges AI context generation complete!");
|