@texturehq/edges 1.13.0 → 1.13.1
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 +17 -6
- package/dist/index.cjs +8 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +414 -12
- package/dist/index.d.ts +414 -12
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/{server-8T44SFVa.d.cts → server-BV15KAF4.d.cts} +1 -1
- package/dist/{server-8T44SFVa.d.ts → server-BV15KAF4.d.ts} +1 -1
- package/dist/server.cjs +1 -1
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/styles/utilities.css +2 -2
- package/dist/styles.css +27 -3
- package/dist/utilities.manifest.json +23 -2
- package/package.json +3 -2
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
outline: none;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
/* Ensure focus-visible still works for interactive elements */
|
|
32
|
-
:focus-visible {
|
|
31
|
+
/* Ensure focus-visible still works for interactive elements that don't have custom focus styles */
|
|
32
|
+
:focus-visible:not(input):not(textarea):not(select) {
|
|
33
33
|
outline: 2px solid var(--color-action-default);
|
|
34
34
|
outline-offset: 2px;
|
|
35
35
|
}
|
package/dist/styles.css
CHANGED
|
@@ -1036,7 +1036,7 @@
|
|
|
1036
1036
|
[role="dialog"], [role="menu"], [role="listbox"], [data-react-aria-dialog], [data-react-aria-modal] {
|
|
1037
1037
|
outline: none;
|
|
1038
1038
|
}
|
|
1039
|
-
:focus-visible {
|
|
1039
|
+
:focus-visible:not(input):not(textarea):not(select) {
|
|
1040
1040
|
outline: 2px solid var(--color-action-default);
|
|
1041
1041
|
outline-offset: 2px;
|
|
1042
1042
|
}
|
|
@@ -2676,6 +2676,9 @@
|
|
|
2676
2676
|
border-color: color-mix(in oklab, var(--color-border-default) 60%, transparent);
|
|
2677
2677
|
}
|
|
2678
2678
|
}
|
|
2679
|
+
.border-border-focus {
|
|
2680
|
+
border-color: var(--color-border-focus);
|
|
2681
|
+
}
|
|
2679
2682
|
.border-border-input {
|
|
2680
2683
|
border-color: var(--color-border-input);
|
|
2681
2684
|
}
|
|
@@ -3125,6 +3128,9 @@
|
|
|
3125
3128
|
.p-1 {
|
|
3126
3129
|
padding: var(--spacing-1);
|
|
3127
3130
|
}
|
|
3131
|
+
.p-1\.5 {
|
|
3132
|
+
padding: calc(var(--spacing) * 1.5);
|
|
3133
|
+
}
|
|
3128
3134
|
.p-2 {
|
|
3129
3135
|
padding: var(--spacing-2);
|
|
3130
3136
|
}
|
|
@@ -3206,6 +3212,9 @@
|
|
|
3206
3212
|
.px-px {
|
|
3207
3213
|
padding-inline: 1px;
|
|
3208
3214
|
}
|
|
3215
|
+
.py-0 {
|
|
3216
|
+
padding-block: var(--spacing-0);
|
|
3217
|
+
}
|
|
3209
3218
|
.py-0\.5 {
|
|
3210
3219
|
padding-block: calc(var(--spacing) * 0.5);
|
|
3211
3220
|
}
|
|
@@ -3734,6 +3743,14 @@
|
|
|
3734
3743
|
--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
|
|
3735
3744
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
3736
3745
|
}
|
|
3746
|
+
.shadow-\[inset_0_0_0_1px_var\(--color-border-focus\)\] {
|
|
3747
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, var(--color-border-focus));
|
|
3748
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
3749
|
+
}
|
|
3750
|
+
.shadow-\[inset_0_0_0_1px_var\(--color-feedback-error-border\)\] {
|
|
3751
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, var(--color-feedback-error-border));
|
|
3752
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
3753
|
+
}
|
|
3737
3754
|
.shadow-\[inset_0_1px_0_0_theme\(colors\.gray\.600\)\] {
|
|
3738
3755
|
--tw-shadow: inset 0 1px 0 0 var(--tw-shadow-color, #4b5563);
|
|
3739
3756
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -4481,6 +4498,13 @@
|
|
|
4481
4498
|
}
|
|
4482
4499
|
}
|
|
4483
4500
|
}
|
|
4501
|
+
.hover\:decoration-current {
|
|
4502
|
+
&:hover {
|
|
4503
|
+
@media (hover: hover) {
|
|
4504
|
+
text-decoration-color: currentcolor;
|
|
4505
|
+
}
|
|
4506
|
+
}
|
|
4507
|
+
}
|
|
4484
4508
|
.hover\:decoration-text-link-hover {
|
|
4485
4509
|
&:hover {
|
|
4486
4510
|
@media (hover: hover) {
|
|
@@ -5190,9 +5214,9 @@
|
|
|
5190
5214
|
padding-block: var(--spacing-6);
|
|
5191
5215
|
}
|
|
5192
5216
|
}
|
|
5193
|
-
.md\:pt-
|
|
5217
|
+
.md\:pt-12 {
|
|
5194
5218
|
@media (width >= 48rem) {
|
|
5195
|
-
padding-top: var(--spacing-
|
|
5219
|
+
padding-top: var(--spacing-12);
|
|
5196
5220
|
}
|
|
5197
5221
|
}
|
|
5198
5222
|
.md\:pb-28 {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.13.
|
|
3
|
-
"generatedAt": "2025-10-
|
|
2
|
+
"version": "1.13.1",
|
|
3
|
+
"generatedAt": "2025-10-27T18:44:56.463Z",
|
|
4
4
|
"categories": {
|
|
5
5
|
"hooks": {
|
|
6
6
|
"description": "React hooks for common functionality like breakpoints, debouncing, local storage, and media queries",
|
|
@@ -26,6 +26,20 @@
|
|
|
26
26
|
"category": "hooks",
|
|
27
27
|
"file": "hooks/useChartExport.ts"
|
|
28
28
|
},
|
|
29
|
+
{
|
|
30
|
+
"name": "useClientDataControls",
|
|
31
|
+
"type": "function",
|
|
32
|
+
"description": "useClientDataControls Client-side hook for filtering, sorting, searching, and faceting data. Uses memoization to avoid unnecessary recomputation. Operations are applied in this order: 1. Search (fuzzy or exact matching) 2. Filter (structured conditions) 3. Facet computation (on filtered data) 4. Sort ```tsx const { data, facetCounts, resultCount } = useClientDataControls({ data: rawData, filters: createFilters([ createFilter('department', 'in', ['Engineering', 'Sales']) ]), sort: { field: 'name', direction: 'asc' }, search: { query: searchQuery, fields: ['name', 'email'] }, facetConfigs: [ { field: 'department', label: 'Department' }, { field: 'status', label: 'Status' } ] }); ```",
|
|
33
|
+
"category": "hooks",
|
|
34
|
+
"file": "hooks/useClientDataControls.ts"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": "useDataControls",
|
|
38
|
+
"type": "function",
|
|
39
|
+
"description": "useDataControls Unified hook for managing data filtering, sorting, searching, and faceting. Supports both client-side and server-side modes. **Client Mode:** - Processes data locally using pure functions - Computes facet counts automatically - Best for datasets < 5000 rows **Server Mode:** - Notifies parent when state changes (debounced for search) - Passes through server-provided data and counts - Best for large datasets or complex queries ```tsx const { data, facetCounts, resultCount } = useDataControls({ mode: 'client', data: rawData, filters: createFilters([...]), sort: { field: 'name', direction: 'asc' }, search: { query: searchQuery, fields: ['name', 'email'] }, facetConfigs: [{ field: 'department', label: 'Department' }] }); ``` ```tsx const { data, facetCounts, resultCount } = useDataControls({ mode: 'server', data: serverData, // Already filtered filters, sort, search, resultCount: totalCount, facetCounts: serverFacets, onStateChange: (state) => refetch(state) }); ```",
|
|
40
|
+
"category": "hooks",
|
|
41
|
+
"file": "hooks/useDataControls.ts"
|
|
42
|
+
},
|
|
29
43
|
{
|
|
30
44
|
"name": "useDebounce",
|
|
31
45
|
"type": "function",
|
|
@@ -60,6 +74,13 @@
|
|
|
60
74
|
"description": "Hook to check if a media query matches the current viewport ```tsx const isMobile = useMediaQuery('(max-width: 767px)'); const prefersReducedMotion = useMediaQuery('(prefers-reduced-motion: reduce)'); const isLandscape = useMediaQuery('(orientation: landscape)'); ```",
|
|
61
75
|
"category": "hooks",
|
|
62
76
|
"file": "hooks/useMediaQuery.ts"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name": "useServerDataControls",
|
|
80
|
+
"type": "function",
|
|
81
|
+
"description": "useServerDataControls Server-side hook that notifies the parent when filter/sort/search state changes. Search queries are debounced to avoid excessive API calls. This hook doesn't manipulate data - it just provides a clean way to: 1. Debounce search input 2. Notify when any state changes 3. Trigger server refetch ```tsx const [filters, setFilters] = useState(null); const [sort, setSort] = useState({ field: 'name', direction: 'asc' }); const [search, setSearch] = useState({ query: '', fields: ['name'] }); useServerDataControls({ filters, sort, search, onStateChange: (state) => { // Refetch data with new parameters refetch({ filters: state.filters, sort: state.sort, search: state.search?.query }); } }); ```",
|
|
82
|
+
"category": "hooks",
|
|
83
|
+
"file": "hooks/useServerDataControls.ts"
|
|
63
84
|
}
|
|
64
85
|
]
|
|
65
86
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@texturehq/edges",
|
|
3
|
-
"version": "1.13.
|
|
3
|
+
"version": "1.13.1",
|
|
4
4
|
"author": "Nicholas Brown <nick@texturehq.com>",
|
|
5
5
|
"description": "A shared component library for Texture",
|
|
6
6
|
"type": "module",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
66
|
"@phosphor-icons/react": "^2.1.7",
|
|
67
|
-
"@tanstack/react-virtual": "^3.
|
|
67
|
+
"@tanstack/react-virtual": "^3.13.12",
|
|
68
68
|
"@tiptap/core": "^3.4.5",
|
|
69
69
|
"@tiptap/extension-link": "^3.4.5",
|
|
70
70
|
"@tiptap/pm": "^3.4.5",
|
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"file-saver": "^2.0.5",
|
|
88
88
|
"filestack-react": "^6.0.0",
|
|
89
89
|
"framer-motion": "^12.23.18",
|
|
90
|
+
"fuse.js": "^7.0.0",
|
|
90
91
|
"lucide-react": "^0.544.0",
|
|
91
92
|
"luxon": "^3.4.4",
|
|
92
93
|
"mapbox-gl": "3.7.0",
|