@texturehq/edges 1.7.3 → 1.7.6

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.
@@ -105,22 +105,18 @@
105
105
 
106
106
  @keyframes zoom-in-97 {
107
107
  from {
108
- opacity: 0;
109
108
  transform: scale(0.97);
110
109
  }
111
110
  to {
112
- opacity: 1;
113
111
  transform: scale(1);
114
112
  }
115
113
  }
116
114
 
117
115
  @keyframes zoom-out-97 {
118
116
  from {
119
- opacity: 1;
120
117
  transform: scale(1);
121
118
  }
122
119
  to {
123
- opacity: 0;
124
120
  transform: scale(0.97);
125
121
  }
126
122
  }
@@ -143,6 +139,103 @@
143
139
  }
144
140
  }
145
141
 
142
+ @keyframes slide-in-from-bottom {
143
+ from {
144
+ transform: translateY(100%);
145
+ }
146
+ to {
147
+ transform: translateY(0);
148
+ }
149
+ }
150
+
151
+ @keyframes slide-out-to-bottom {
152
+ from {
153
+ transform: translateY(0);
154
+ }
155
+ to {
156
+ transform: translateY(100%);
157
+ }
158
+ }
159
+
160
+ @keyframes slide-in-from-bottom-with-scale {
161
+ from {
162
+ opacity: 0;
163
+ transform: translateY(100%) scale(0.95);
164
+ }
165
+ to {
166
+ opacity: 1;
167
+ transform: translateY(0) scale(1);
168
+ }
169
+ }
170
+
171
+ @keyframes slide-out-to-bottom-with-scale {
172
+ from {
173
+ opacity: 1;
174
+ transform: translateY(0) scale(1);
175
+ }
176
+ to {
177
+ opacity: 0;
178
+ transform: translateY(100%) scale(0.95);
179
+ }
180
+ }
181
+
182
+ @keyframes tray-enter {
183
+ from {
184
+ opacity: 0;
185
+ transform: translateY(100%);
186
+ }
187
+ to {
188
+ opacity: 1;
189
+ transform: translateY(0);
190
+ }
191
+ }
192
+
193
+ @keyframes tray-enter-scale {
194
+ from {
195
+ opacity: 0;
196
+ transform: translateY(100%) scale(0.97);
197
+ }
198
+ to {
199
+ opacity: 1;
200
+ transform: translateY(0) scale(1);
201
+ }
202
+ }
203
+
204
+ @keyframes tray-exit {
205
+ from {
206
+ opacity: 1;
207
+ transform: translateY(0);
208
+ }
209
+ to {
210
+ opacity: 0;
211
+ transform: translateY(100%);
212
+ }
213
+ }
214
+
215
+ @keyframes tray-exit-scale {
216
+ from {
217
+ opacity: 1;
218
+ transform: translateY(0) scale(1);
219
+ }
220
+ to {
221
+ opacity: 0;
222
+ transform: translateY(100%) scale(0.97);
223
+ }
224
+ }
225
+
226
+ @keyframes handle-wiggle {
227
+ 0%,
228
+ 100% {
229
+ transform: translateX(0);
230
+ }
231
+ 25% {
232
+ transform: translateX(-2px);
233
+ }
234
+ 75% {
235
+ transform: translateX(2px);
236
+ }
237
+ }
238
+
146
239
  /* ============================================
147
240
  Animation Utility Classes
148
241
  ============================================ */
@@ -170,3 +263,11 @@
170
263
  .fade-out {
171
264
  animation: fade-out 0.15s ease-in;
172
265
  }
266
+
267
+ .slide-in-from-bottom {
268
+ animation: slide-in-from-bottom 0.3s ease-out;
269
+ }
270
+
271
+ .slide-out-to-bottom {
272
+ animation: slide-out-to-bottom 0.2s ease-in;
273
+ }
package/dist/styles.css CHANGED
@@ -804,21 +804,17 @@
804
804
  }
805
805
  @keyframes zoom-in-97 {
806
806
  from {
807
- opacity: 0;
808
807
  transform: scale(0.97);
809
808
  }
810
809
  to {
811
- opacity: 1;
812
810
  transform: scale(1);
813
811
  }
814
812
  }
815
813
  @keyframes zoom-out-97 {
816
814
  from {
817
- opacity: 1;
818
815
  transform: scale(1);
819
816
  }
820
817
  to {
821
- opacity: 0;
822
818
  transform: scale(0.97);
823
819
  }
824
820
  }
@@ -838,6 +834,93 @@
838
834
  transform: translateY(-0.5rem);
839
835
  }
840
836
  }
837
+ @keyframes slide-in-from-bottom {
838
+ from {
839
+ transform: translateY(100%);
840
+ }
841
+ to {
842
+ transform: translateY(0);
843
+ }
844
+ }
845
+ @keyframes slide-out-to-bottom {
846
+ from {
847
+ transform: translateY(0);
848
+ }
849
+ to {
850
+ transform: translateY(100%);
851
+ }
852
+ }
853
+ @keyframes slide-in-from-bottom-with-scale {
854
+ from {
855
+ opacity: 0;
856
+ transform: translateY(100%) scale(0.95);
857
+ }
858
+ to {
859
+ opacity: 1;
860
+ transform: translateY(0) scale(1);
861
+ }
862
+ }
863
+ @keyframes slide-out-to-bottom-with-scale {
864
+ from {
865
+ opacity: 1;
866
+ transform: translateY(0) scale(1);
867
+ }
868
+ to {
869
+ opacity: 0;
870
+ transform: translateY(100%) scale(0.95);
871
+ }
872
+ }
873
+ @keyframes tray-enter {
874
+ from {
875
+ opacity: 0;
876
+ transform: translateY(100%);
877
+ }
878
+ to {
879
+ opacity: 1;
880
+ transform: translateY(0);
881
+ }
882
+ }
883
+ @keyframes tray-enter-scale {
884
+ from {
885
+ opacity: 0;
886
+ transform: translateY(100%) scale(0.97);
887
+ }
888
+ to {
889
+ opacity: 1;
890
+ transform: translateY(0) scale(1);
891
+ }
892
+ }
893
+ @keyframes tray-exit {
894
+ from {
895
+ opacity: 1;
896
+ transform: translateY(0);
897
+ }
898
+ to {
899
+ opacity: 0;
900
+ transform: translateY(100%);
901
+ }
902
+ }
903
+ @keyframes tray-exit-scale {
904
+ from {
905
+ opacity: 1;
906
+ transform: translateY(0) scale(1);
907
+ }
908
+ to {
909
+ opacity: 0;
910
+ transform: translateY(100%) scale(0.97);
911
+ }
912
+ }
913
+ @keyframes handle-wiggle {
914
+ 0%, 100% {
915
+ transform: translateX(0);
916
+ }
917
+ 25% {
918
+ transform: translateX(-2px);
919
+ }
920
+ 75% {
921
+ transform: translateX(2px);
922
+ }
923
+ }
841
924
  .slide-in-from-right {
842
925
  animation: slide-in-from-right 0.3s ease-out;
843
926
  }
@@ -856,6 +939,12 @@
856
939
  .fade-out {
857
940
  animation: fade-out 0.15s ease-in;
858
941
  }
942
+ .slide-in-from-bottom {
943
+ animation: slide-in-from-bottom 0.3s ease-out;
944
+ }
945
+ .slide-out-to-bottom {
946
+ animation: slide-out-to-bottom 0.2s ease-in;
947
+ }
859
948
  .scrollbar-hide {
860
949
  scrollbar-width: none;
861
950
  &::-webkit-scrollbar {
@@ -1779,6 +1868,9 @@
1779
1868
  --tw-border-spacing-y: var(--spacing-0);
1780
1869
  border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);
1781
1870
  }
1871
+ .origin-bottom {
1872
+ transform-origin: bottom;
1873
+ }
1782
1874
  .origin-top-left {
1783
1875
  transform-origin: 0 0;
1784
1876
  }
@@ -1818,9 +1910,18 @@
1818
1910
  .transform {
1819
1911
  transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
1820
1912
  }
1913
+ .animate-\[handle-wiggle_0\.6s_ease-in-out\] {
1914
+ animation: handle-wiggle 0.6s ease-in-out;
1915
+ }
1821
1916
  .animate-\[ping_2s_ease-in-out_infinite\] {
1822
1917
  animation: ping 2s ease-in-out infinite;
1823
1918
  }
1919
+ .animate-\[tray-enter-scale_400ms_cubic-bezier\(0\.32\,0\.72\,0\,1\)\] {
1920
+ animation: tray-enter-scale 400ms cubic-bezier(0.32,0.72,0,1);
1921
+ }
1922
+ .animate-\[tray-enter_400ms_cubic-bezier\(0\.32\,0\.72\,0\,1\)\] {
1923
+ animation: tray-enter 400ms cubic-bezier(0.32,0.72,0,1);
1924
+ }
1824
1925
  .animate-bounce {
1825
1926
  animation: var(--animate-bounce);
1826
1927
  }
@@ -2300,6 +2401,10 @@
2300
2401
  border-style: var(--tw-border-style);
2301
2402
  border-width: 7px;
2302
2403
  }
2404
+ .border-x {
2405
+ border-inline-style: var(--tw-border-style);
2406
+ border-inline-width: 1px;
2407
+ }
2303
2408
  .border-y {
2304
2409
  border-block-style: var(--tw-border-style);
2305
2410
  border-block-width: 1px;
@@ -2381,6 +2486,12 @@
2381
2486
  .border-border-default {
2382
2487
  border-color: var(--color-border-default);
2383
2488
  }
2489
+ .border-border-default\/40 {
2490
+ border-color: color-mix(in srgb, #e5e7eb 40%, transparent);
2491
+ @supports (color: color-mix(in lab, red, red)) {
2492
+ border-color: color-mix(in oklab, var(--color-border-default) 40%, transparent);
2493
+ }
2494
+ }
2384
2495
  .border-border-default\/50 {
2385
2496
  border-color: color-mix(in srgb, #e5e7eb 50%, transparent);
2386
2497
  @supports (color: color-mix(in lab, red, red)) {
@@ -2956,6 +3067,9 @@
2956
3067
  .pt-1 {
2957
3068
  padding-top: var(--spacing-1);
2958
3069
  }
3070
+ .pt-2 {
3071
+ padding-top: var(--spacing-2);
3072
+ }
2959
3073
  .pt-4 {
2960
3074
  padding-top: var(--spacing-4);
2961
3075
  }
@@ -2986,6 +3100,9 @@
2986
3100
  .pb-0 {
2987
3101
  padding-bottom: var(--spacing-0);
2988
3102
  }
3103
+ .pb-1 {
3104
+ padding-bottom: var(--spacing-1);
3105
+ }
2989
3106
  .pb-1\.5 {
2990
3107
  padding-bottom: calc(var(--spacing) * 1.5);
2991
3108
  }
@@ -2998,6 +3115,9 @@
2998
3115
  .pb-4 {
2999
3116
  padding-bottom: var(--spacing-4);
3000
3117
  }
3118
+ .pb-6 {
3119
+ padding-bottom: var(--spacing-6);
3120
+ }
3001
3121
  .pb-28 {
3002
3122
  padding-bottom: var(--spacing-28);
3003
3123
  }
@@ -3440,6 +3560,12 @@
3440
3560
  --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-black) 20%, transparent) var(--tw-shadow-alpha), transparent);
3441
3561
  }
3442
3562
  }
3563
+ .shadow-black\/30 {
3564
+ --tw-shadow-color: color-mix(in srgb, #000000 30%, transparent);
3565
+ @supports (color: color-mix(in lab, red, red)) {
3566
+ --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-black) 30%, transparent) var(--tw-shadow-alpha), transparent);
3567
+ }
3568
+ }
3443
3569
  .ring-background-surface {
3444
3570
  --tw-ring-color: var(--color-background-surface);
3445
3571
  }
@@ -3884,6 +4010,13 @@
3884
4010
  outline-color: var(--color-feedback-error-border);
3885
4011
  }
3886
4012
  }
4013
+ .hover\:w-16 {
4014
+ &:hover {
4015
+ @media (hover: hover) {
4016
+ width: var(--spacing-16);
4017
+ }
4018
+ }
4019
+ }
3887
4020
  .hover\:scale-110 {
3888
4021
  &:hover {
3889
4022
  @media (hover: hover) {
@@ -3977,6 +4110,13 @@
3977
4110
  }
3978
4111
  }
3979
4112
  }
4113
+ .hover\:bg-border-default {
4114
+ &:hover {
4115
+ @media (hover: hover) {
4116
+ background-color: var(--color-border-default);
4117
+ }
4118
+ }
4119
+ }
3980
4120
  .hover\:bg-feedback-error-background {
3981
4121
  &:hover {
3982
4122
  @media (hover: hover) {
@@ -4293,6 +4433,16 @@
4293
4433
  opacity: 50%;
4294
4434
  }
4295
4435
  }
4436
+ .data-\[exiting\]\:animate-\[tray-exit-scale_250ms_cubic-bezier\(0\.32\,0\,0\.67\,0\)\] {
4437
+ &[data-exiting] {
4438
+ animation: tray-exit-scale 250ms cubic-bezier(0.32,0,0.67,0);
4439
+ }
4440
+ }
4441
+ .data-\[exiting\]\:animate-\[tray-exit_250ms_cubic-bezier\(0\.32\,0\,0\.67\,0\)\] {
4442
+ &[data-exiting] {
4443
+ animation: tray-exit 250ms cubic-bezier(0.32,0,0.67,0);
4444
+ }
4445
+ }
4296
4446
  .data-\[exiting\]\:duration-150 {
4297
4447
  &[data-exiting] {
4298
4448
  --tw-duration: 150ms;
@@ -4536,6 +4686,16 @@
4536
4686
  justify-content: space-between;
4537
4687
  }
4538
4688
  }
4689
+ .sm\:p-2 {
4690
+ @media (width >= 40rem) {
4691
+ padding: var(--spacing-2);
4692
+ }
4693
+ }
4694
+ .sm\:p-4 {
4695
+ @media (width >= 40rem) {
4696
+ padding: var(--spacing-4);
4697
+ }
4698
+ }
4539
4699
  .md\:relative {
4540
4700
  @media (width >= 48rem) {
4541
4701
  position: relative;
@@ -4651,6 +4811,11 @@
4651
4811
  display: none;
4652
4812
  }
4653
4813
  }
4814
+ .md\:h-10 {
4815
+ @media (width >= 48rem) {
4816
+ height: var(--spacing-10);
4817
+ }
4818
+ }
4654
4819
  .md\:h-96 {
4655
4820
  @media (width >= 48rem) {
4656
4821
  height: var(--spacing-96);
@@ -4671,6 +4836,11 @@
4671
4836
  max-height: 85vh;
4672
4837
  }
4673
4838
  }
4839
+ .md\:w-10 {
4840
+ @media (width >= 48rem) {
4841
+ width: var(--spacing-10);
4842
+ }
4843
+ }
4674
4844
  .md\:w-64 {
4675
4845
  @media (width >= 48rem) {
4676
4846
  width: var(--spacing-64);
@@ -5446,6 +5616,14 @@
5446
5616
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
5447
5617
  }
5448
5618
  }
5619
+ .dark\:shadow-black\/60 {
5620
+ @media (prefers-color-scheme: dark) {
5621
+ --tw-shadow-color: color-mix(in srgb, #000000 60%, transparent);
5622
+ @supports (color: color-mix(in lab, red, red)) {
5623
+ --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-black) 60%, transparent) var(--tw-shadow-alpha), transparent);
5624
+ }
5625
+ }
5626
+ }
5449
5627
  .dark\:ring-gray-700 {
5450
5628
  @media (prefers-color-scheme: dark) {
5451
5629
  --tw-ring-color: var(--color-gray-700);
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "1.7.3",
3
- "generatedAt": "2025-10-16T14:43:20.652Z",
2
+ "version": "1.7.6",
3
+ "generatedAt": "2025-10-19T15:36:30.017Z",
4
4
  "categories": {
5
5
  "hooks": {
6
6
  "description": "React hooks for common functionality like breakpoints, debouncing, local storage, and media queries",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@texturehq/edges",
3
- "version": "1.7.3",
3
+ "version": "1.7.6",
4
4
  "author": "Nicholas Brown <nick@texturehq.com>",
5
5
  "description": "A shared component library for Texture",
6
6
  "type": "module",
@@ -22,6 +22,9 @@ const DIST_DIR = path.join(ROOT, "dist");
22
22
  const MONO_ROOT = path.join(ROOT, "../..");
23
23
  const DOCS_AI_EDGES = path.join(MONO_ROOT, "docs/ai/edges");
24
24
 
25
+ const PACKAGE_JSON_PATH = path.join(ROOT, "package.json");
26
+ const PACKAGE_VERSION = JSON.parse(fs.readFileSync(PACKAGE_JSON_PATH, "utf8")).version;
27
+
25
28
  // ============================================================================
26
29
  // UTILITIES
27
30
  // ============================================================================
@@ -278,7 +281,7 @@ function generateComponentsManifest() {
278
281
  }
279
282
 
280
283
  const manifest = {
281
- version: process.env.npm_package_version || "unknown",
284
+ version: PACKAGE_VERSION,
282
285
  generatedAt: new Date().toISOString(),
283
286
  components: components,
284
287
  categories: categories,
@@ -390,7 +393,7 @@ function generateUtilitiesManifest() {
390
393
  console.log("\n🔧 Generating utilities manifest...");
391
394
 
392
395
  const manifest = {
393
- version: process.env.npm_package_version || "unknown",
396
+ version: PACKAGE_VERSION,
394
397
  generatedAt: new Date().toISOString(),
395
398
  categories: {},
396
399
  };
@@ -463,21 +466,52 @@ function generateUtilitiesManifest() {
463
466
  function parseThemeColors() {
464
467
  console.log("\n🎨 Parsing theme colors...");
465
468
 
466
- const themePath = path.join(DIST_DIR, "theme.css");
467
- if (!fs.existsSync(themePath)) {
468
- console.log(" âš ī¸ theme.css not found, skipping color extraction");
469
+ const distThemePath = path.join(DIST_DIR, "theme.css");
470
+ const sources = [];
471
+
472
+ if (fs.existsSync(distThemePath)) {
473
+ sources.push(distThemePath);
474
+ } else {
475
+ const generatedDir = path.join(SRC_DIR, "generated");
476
+ const fallbackFiles = [
477
+ path.join(generatedDir, "tailwind-tokens-light.css"),
478
+ path.join(generatedDir, "tailwind-tokens-dark.css"),
479
+ path.join(generatedDir, "viz-runtime.css"),
480
+ ];
481
+
482
+ for (const file of fallbackFiles) {
483
+ if (fs.existsSync(file)) {
484
+ sources.push(file);
485
+ }
486
+ }
487
+
488
+ if (sources.length > 0) {
489
+ console.log(" â„šī¸ Using generated token CSS as fallback (dist/theme.css missing)");
490
+ }
491
+ }
492
+
493
+ if (sources.length === 0) {
494
+ console.log(" âš ī¸ No theme CSS sources found, skipping color extraction");
469
495
  return {};
470
496
  }
471
497
 
472
- const themeContent = read(themePath);
473
498
  const colorVars = {};
474
- const colorRegex = /--color-([a-z-]+):\s*([^;]+);/g;
475
- let match;
499
+ const seen = new Set();
500
+ const colorRegex = /--color-([a-zA-Z0-9-]+):\s*([^;]+);/g;
501
+
502
+ for (const source of sources) {
503
+ const themeContent = read(source);
504
+ let match;
476
505
 
477
- while ((match = colorRegex.exec(themeContent))) {
478
- const varName = match[1];
479
- const value = match[2].trim();
480
- colorVars[varName] = value;
506
+ while ((match = colorRegex.exec(themeContent))) {
507
+ const varName = match[1];
508
+ const value = match[2].trim();
509
+
510
+ if (!seen.has(varName)) {
511
+ seen.add(varName);
512
+ colorVars[varName] = value;
513
+ }
514
+ }
481
515
  }
482
516
 
483
517
  console.log(` Found ${Object.keys(colorVars).length} color variables`);
@@ -495,7 +529,7 @@ function generateComponentsReference(componentsManifest) {
495
529
 
496
530
  let content = `# Edges Components Reference
497
531
 
498
- > **Auto-generated** - Do not edit manually. Run \`yarn generate:edges-docs\` to regenerate.
532
+ > **Auto-generated** - Do not edit manually. Run \`node scripts/generate-edges-docs.js\` to regenerate.
499
533
 
500
534
  This document provides a complete reference of all ${components.length} components in the @texturehq/edges design system, organized by functional category.
501
535
 
@@ -571,7 +605,7 @@ function generateHooksReference(utilitiesManifest) {
571
605
 
572
606
  let content = `# Edges Hooks Reference
573
607
 
574
- > **Auto-generated** - Do not edit manually. Run \`yarn generate:edges-docs\` to regenerate.
608
+ > **Auto-generated** - Do not edit manually. Run \`node scripts/generate-edges-docs.js\` to regenerate.
575
609
 
576
610
  This document provides a complete reference of all ${hooks.length} React hooks in the @texturehq/edges design system.
577
611
 
@@ -611,7 +645,7 @@ function generateUtilitiesReference(utilitiesManifest) {
611
645
 
612
646
  let content = `# Edges Utilities Reference
613
647
 
614
- > **Auto-generated** - Do not edit manually. Run \`yarn generate:edges-docs\` to regenerate.
648
+ > **Auto-generated** - Do not edit manually. Run \`node scripts/generate-edges-docs.js\` to regenerate.
615
649
 
616
650
  This document provides a complete reference of all utility functions in the @texturehq/edges design system.
617
651
 
@@ -657,7 +691,7 @@ function generateThemeSystemDoc(colorVars) {
657
691
 
658
692
  let content = `# Edges Theme System
659
693
 
660
- > **Auto-generated** - Do not edit manually. Run \`yarn generate:edges-docs\` to regenerate.
694
+ > **Auto-generated** - Do not edit manually. Run \`node scripts/generate-edges-docs.js\` to regenerate.
661
695
 
662
696
  ## Overview
663
697
 
@@ -781,7 +815,7 @@ function generateEdgesReadme(componentsManifest, utilitiesManifest) {
781
815
 
782
816
  let content = `# Edges Design System - AI Context
783
817
 
784
- > **Auto-generated** - Do not edit manually. Run \`yarn generate:edges-docs\` to regenerate.
818
+ > **Auto-generated** - Do not edit manually. Run \`node scripts/generate-edges-docs.js\` to regenerate.
785
819
 
786
820
  👋 **AI Agents: Start here!**
787
821