@strands.gg/accui 1.4.1 → 1.6.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 (65) hide show
  1. package/dist/accui.css +134 -252
  2. package/dist/nuxt/module.cjs.js +1 -0
  3. package/dist/nuxt/module.cjs.js.map +1 -1
  4. package/dist/nuxt/module.d.ts.map +1 -1
  5. package/dist/nuxt/module.es.js +1 -0
  6. package/dist/nuxt/module.es.js.map +1 -1
  7. package/dist/nuxt/runtime/composables/useStrandsAuth.cjs.js +1 -1
  8. package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts +19 -0
  9. package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts.map +1 -1
  10. package/dist/nuxt/runtime/composables/useStrandsAuth.es.js +1 -1
  11. package/dist/nuxt/runtime/plugin.client.cjs.js +1 -1
  12. package/dist/nuxt/runtime/plugin.client.es.js +1 -1
  13. package/dist/nuxt/runtime/plugin.server.cjs.js +1 -1
  14. package/dist/nuxt/runtime/plugin.server.es.js +1 -1
  15. package/dist/nuxt-v4/module.cjs.js +1 -0
  16. package/dist/nuxt-v4/module.cjs.js.map +1 -1
  17. package/dist/nuxt-v4/module.d.ts.map +1 -1
  18. package/dist/nuxt-v4/module.es.js +1 -0
  19. package/dist/nuxt-v4/module.es.js.map +1 -1
  20. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.cjs.js +1 -1
  21. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.es.js +1 -1
  22. package/dist/nuxt-v4/runtime/plugin.client.cjs.js +1 -1
  23. package/dist/nuxt-v4/runtime/plugin.client.es.js +1 -1
  24. package/dist/nuxt-v4/runtime/plugin.server.cjs.js +1 -1
  25. package/dist/nuxt-v4/runtime/plugin.server.es.js +1 -1
  26. package/dist/strands-auth-ui.cjs.js +2071 -1422
  27. package/dist/strands-auth-ui.cjs.js.map +1 -1
  28. package/dist/strands-auth-ui.es.js +2073 -1424
  29. package/dist/strands-auth-ui.es.js.map +1 -1
  30. package/dist/types/index.d.ts +7 -0
  31. package/dist/types/index.d.ts.map +1 -1
  32. package/dist/{useStrandsAuth-SdmBCyFS.js → useStrandsAuth-CO9JEdxM.js} +79 -2
  33. package/dist/useStrandsAuth-CO9JEdxM.js.map +1 -0
  34. package/dist/{useStrandsAuth-zR8fRWme.cjs → useStrandsAuth-z4jAu9Uv.cjs} +79 -2
  35. package/dist/useStrandsAuth-z4jAu9Uv.cjs.map +1 -0
  36. package/dist/{useStrandsConfig-COEj6nFc.js → useStrandsConfig-Bdk-g0jS.js} +9 -1
  37. package/dist/useStrandsConfig-Bdk-g0jS.js.map +1 -0
  38. package/dist/{useStrandsConfig-DW4ez8t4.cjs → useStrandsConfig-CtmQtE7Y.cjs} +9 -1
  39. package/dist/useStrandsConfig-CtmQtE7Y.cjs.map +1 -0
  40. package/dist/vue/components/SignedIn.vue.d.ts +4 -0
  41. package/dist/vue/components/SignedIn.vue.d.ts.map +1 -1
  42. package/dist/vue/components/SignedOut.vue.d.ts +4 -0
  43. package/dist/vue/components/SignedOut.vue.d.ts.map +1 -1
  44. package/dist/vue/components/StrandsUserButton.vue.d.ts +19 -0
  45. package/dist/vue/components/StrandsUserButton.vue.d.ts.map +1 -0
  46. package/dist/vue/components/StrandsUserProfile.vue.d.ts +2 -0
  47. package/dist/vue/components/StrandsUserProfile.vue.d.ts.map +1 -1
  48. package/dist/vue/components/index.d.ts +1 -0
  49. package/dist/vue/components/index.d.ts.map +1 -1
  50. package/dist/vue/composables/useStrandsAuth.d.ts +19 -0
  51. package/dist/vue/composables/useStrandsAuth.d.ts.map +1 -1
  52. package/dist/vue/composables/useStrandsConfig.d.ts.map +1 -1
  53. package/dist/vue/ui/UiAvatarEditorSimple.vue.d.ts.map +1 -1
  54. package/dist/vue/ui/UiCard.vue.d.ts.map +1 -1
  55. package/dist/vue/ui/UiModal.vue.d.ts +0 -10
  56. package/dist/vue/ui/UiModal.vue.d.ts.map +1 -1
  57. package/dist/vue/ui/index.d.ts +1 -0
  58. package/dist/vue/ui/index.d.ts.map +1 -1
  59. package/dist/vue/utils/levels.d.ts +28 -0
  60. package/dist/vue/utils/levels.d.ts.map +1 -0
  61. package/package.json +1 -1
  62. package/dist/useStrandsAuth-SdmBCyFS.js.map +0 -1
  63. package/dist/useStrandsAuth-zR8fRWme.cjs.map +0 -1
  64. package/dist/useStrandsConfig-COEj6nFc.js.map +0 -1
  65. package/dist/useStrandsConfig-DW4ez8t4.cjs.map +0 -1
package/dist/accui.css CHANGED
@@ -53,6 +53,7 @@
53
53
  --color-blue-900: oklch(37.9% 0.146 265.522);
54
54
  --color-indigo-50: oklch(96.2% 0.018 272.314);
55
55
  --color-indigo-100: oklch(93% 0.034 272.788);
56
+ --color-indigo-500: oklch(58.5% 0.233 277.117);
56
57
  --color-purple-50: oklch(97.7% 0.014 308.299);
57
58
  --color-purple-100: oklch(94.6% 0.033 307.174);
58
59
  --color-purple-200: oklch(90.2% 0.063 306.703);
@@ -113,6 +114,7 @@
113
114
  --font-weight-medium: 500;
114
115
  --font-weight-semibold: 600;
115
116
  --font-weight-bold: 700;
117
+ --leading-tight: 1.25;
116
118
  --leading-relaxed: 1.625;
117
119
  --radius-md: 0.375rem;
118
120
  --radius-lg: 0.5rem;
@@ -383,6 +385,9 @@
383
385
  .top-1\/2 {
384
386
  top: calc(1/2 * 100%);
385
387
  }
388
+ .top-full {
389
+ top: 100%;
390
+ }
386
391
  .-right-1 {
387
392
  right: calc(var(--spacing) * -1);
388
393
  }
@@ -446,6 +451,9 @@
446
451
  .mx-auto {
447
452
  margin-inline: auto;
448
453
  }
454
+ .my-2 {
455
+ margin-block: calc(var(--spacing) * 2);
456
+ }
449
457
  .mt-0\.5 {
450
458
  margin-top: calc(var(--spacing) * 0.5);
451
459
  }
@@ -470,15 +478,9 @@
470
478
  .mr-1 {
471
479
  margin-right: calc(var(--spacing) * 1);
472
480
  }
473
- .mr-1\.5 {
474
- margin-right: calc(var(--spacing) * 1.5);
475
- }
476
481
  .mr-2 {
477
482
  margin-right: calc(var(--spacing) * 2);
478
483
  }
479
- .-mb-4 {
480
- margin-bottom: calc(var(--spacing) * -4);
481
- }
482
484
  .-mb-px {
483
485
  margin-bottom: -1px;
484
486
  }
@@ -503,9 +505,6 @@
503
505
  .mb-12 {
504
506
  margin-bottom: calc(var(--spacing) * 12);
505
507
  }
506
- .ml-1 {
507
- margin-left: calc(var(--spacing) * 1);
508
- }
509
508
  .ml-2 {
510
509
  margin-left: calc(var(--spacing) * 2);
511
510
  }
@@ -581,6 +580,9 @@
581
580
  .h-full {
582
581
  height: 100%;
583
582
  }
583
+ .h-px {
584
+ height: 1px;
585
+ }
584
586
  .max-h-96 {
585
587
  max-height: calc(var(--spacing) * 96);
586
588
  }
@@ -629,6 +631,12 @@
629
631
  .w-48 {
630
632
  width: calc(var(--spacing) * 48);
631
633
  }
634
+ .w-64 {
635
+ width: calc(var(--spacing) * 64);
636
+ }
637
+ .w-72 {
638
+ width: calc(var(--spacing) * 72);
639
+ }
632
640
  .w-80 {
633
641
  width: calc(var(--spacing) * 80);
634
642
  }
@@ -666,9 +674,6 @@
666
674
  .flex-1 {
667
675
  flex: 1;
668
676
  }
669
- .flex-shrink {
670
- flex-shrink: 1;
671
- }
672
677
  .flex-shrink-0 {
673
678
  flex-shrink: 0;
674
679
  }
@@ -680,6 +685,9 @@
680
685
  --tw-translate-y: calc(calc(1/2 * 100%) * -1);
681
686
  translate: var(--tw-translate-x) var(--tw-translate-y);
682
687
  }
688
+ .rotate-180 {
689
+ rotate: 180deg;
690
+ }
683
691
  .transform {
684
692
  transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
685
693
  }
@@ -748,6 +756,9 @@
748
756
  .justify-end {
749
757
  justify-content: flex-end;
750
758
  }
759
+ .gap-1\.5 {
760
+ gap: calc(var(--spacing) * 1.5);
761
+ }
751
762
  .gap-2 {
752
763
  gap: calc(var(--spacing) * 2);
753
764
  }
@@ -840,6 +851,11 @@
840
851
  margin-inline-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-x-reverse)));
841
852
  }
842
853
  }
854
+ .truncate {
855
+ overflow: hidden;
856
+ text-overflow: ellipsis;
857
+ white-space: nowrap;
858
+ }
843
859
  .overflow-hidden {
844
860
  overflow: hidden;
845
861
  }
@@ -1072,9 +1088,15 @@
1072
1088
  -o-object-fit: cover;
1073
1089
  object-fit: cover;
1074
1090
  }
1091
+ .p-1 {
1092
+ padding: calc(var(--spacing) * 1);
1093
+ }
1075
1094
  .p-1\.5 {
1076
1095
  padding: calc(var(--spacing) * 1.5);
1077
1096
  }
1097
+ .p-2 {
1098
+ padding: calc(var(--spacing) * 2);
1099
+ }
1078
1100
  .p-3 {
1079
1101
  padding: calc(var(--spacing) * 3);
1080
1102
  }
@@ -1159,9 +1181,6 @@
1159
1181
  .pr-10 {
1160
1182
  padding-right: calc(var(--spacing) * 10);
1161
1183
  }
1162
- .pb-2 {
1163
- padding-bottom: calc(var(--spacing) * 2);
1164
- }
1165
1184
  .pb-4 {
1166
1185
  padding-bottom: calc(var(--spacing) * 4);
1167
1186
  }
@@ -1223,6 +1242,10 @@
1223
1242
  --tw-leading: var(--leading-relaxed);
1224
1243
  line-height: var(--leading-relaxed);
1225
1244
  }
1245
+ .leading-tight {
1246
+ --tw-leading: var(--leading-tight);
1247
+ line-height: var(--leading-tight);
1248
+ }
1226
1249
  .font-bold {
1227
1250
  --tw-font-weight: var(--font-weight-bold);
1228
1251
  font-weight: var(--font-weight-bold);
@@ -1427,10 +1450,17 @@
1427
1450
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
1428
1451
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1429
1452
  }
1453
+ .ring-1 {
1454
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
1455
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1456
+ }
1430
1457
  .ring-2 {
1431
1458
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
1432
1459
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1433
1460
  }
1461
+ .ring-black {
1462
+ --tw-ring-color: var(--color-black);
1463
+ }
1434
1464
  .outline {
1435
1465
  outline-style: var(--tw-outline-style);
1436
1466
  outline-width: 1px;
@@ -1477,6 +1507,11 @@
1477
1507
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1478
1508
  transition-duration: var(--tw-duration, var(--default-transition-duration));
1479
1509
  }
1510
+ .transition-transform {
1511
+ transition-property: transform, translate, scale, rotate;
1512
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1513
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1514
+ }
1480
1515
  .duration-150 {
1481
1516
  --tw-duration: 150ms;
1482
1517
  transition-duration: 150ms;
@@ -1780,17 +1815,38 @@
1780
1815
  }
1781
1816
  }
1782
1817
  }
1818
+ .focus\:bg-gray-100 {
1819
+ &:focus {
1820
+ background-color: var(--color-gray-100);
1821
+ }
1822
+ }
1823
+ .focus\:bg-red-50 {
1824
+ &:focus {
1825
+ background-color: var(--color-red-50);
1826
+ }
1827
+ }
1783
1828
  .focus\:ring-2 {
1784
1829
  &:focus {
1785
1830
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
1786
1831
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1787
1832
  }
1788
1833
  }
1834
+ .focus\:ring-indigo-500 {
1835
+ &:focus {
1836
+ --tw-ring-color: var(--color-indigo-500);
1837
+ }
1838
+ }
1789
1839
  .focus\:ring-strands-400 {
1790
1840
  &:focus {
1791
1841
  --tw-ring-color: var(--color-strands-400);
1792
1842
  }
1793
1843
  }
1844
+ .focus\:ring-offset-2 {
1845
+ &:focus {
1846
+ --tw-ring-offset-width: 2px;
1847
+ --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1848
+ }
1849
+ }
1794
1850
  .focus\:outline-none {
1795
1851
  &:focus {
1796
1852
  --tw-outline-style: none;
@@ -1875,11 +1931,6 @@
1875
1931
  flex-direction: row;
1876
1932
  }
1877
1933
  }
1878
- .md\:mb-4 {
1879
- @media (width >= 48rem) {
1880
- margin-bottom: calc(var(--spacing) * 4);
1881
- }
1882
- }
1883
1934
  .md\:grid-cols-2 {
1884
1935
  @media (width >= 48rem) {
1885
1936
  grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -1895,27 +1946,14 @@
1895
1946
  grid-template-columns: repeat(4, minmax(0, 1fr));
1896
1947
  }
1897
1948
  }
1898
- .md\:gap-6 {
1899
- @media (width >= 48rem) {
1900
- gap: calc(var(--spacing) * 6);
1901
- }
1902
- }
1903
- .md\:space-y-4 {
1949
+ .md\:gap-4 {
1904
1950
  @media (width >= 48rem) {
1905
- :where(& > :not(:last-child)) {
1906
- --tw-space-y-reverse: 0;
1907
- margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));
1908
- margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));
1909
- }
1951
+ gap: calc(var(--spacing) * 4);
1910
1952
  }
1911
1953
  }
1912
- .md\:space-y-6 {
1954
+ .md\:gap-6 {
1913
1955
  @media (width >= 48rem) {
1914
- :where(& > :not(:last-child)) {
1915
- --tw-space-y-reverse: 0;
1916
- margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));
1917
- margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
1918
- }
1956
+ gap: calc(var(--spacing) * 6);
1919
1957
  }
1920
1958
  }
1921
1959
  .md\:text-3xl {
@@ -2521,16 +2559,6 @@
2521
2559
  opacity: 0.9;
2522
2560
  }
2523
2561
 
2524
- /* When used in a modal, the card should fill the available space */
2525
- .modal-card .card-content[data-v-68dad7e6] {
2526
- flex: 1;
2527
- overflow: hidden;
2528
- }
2529
- .modal-card .card-header[data-v-68dad7e6],
2530
- .modal-card .card-footer[data-v-68dad7e6] {
2531
- flex-shrink: 0;
2532
- }
2533
-
2534
2562
  /*
2535
2563
  BITWARDEN & PASSWORD MANAGER STYLE PREVENTION
2536
2564
  =============================================
@@ -2897,228 +2925,59 @@ input.pr-10[data-v-e87dc617] {
2897
2925
  padding: 12px;
2898
2926
  }
2899
2927
 
2900
- /* Modal Overlay - Full responsive behavior */
2901
2928
  .modal-overlay[data-v-63dd5ea5] {
2902
2929
  position: fixed;
2903
- inset: 0;
2904
- z-index: 50;
2930
+ top: 0;
2931
+ left: 0;
2932
+ right: 0;
2933
+ bottom: 0;
2934
+ background: rgba(0, 0, 0, 0.8);
2905
2935
  display: flex;
2906
2936
  align-items: center;
2907
2937
  justify-content: center;
2908
- background-color: rgba(0, 0, 0, 0.8);
2909
- transition: opacity 0.2s ease-in-out;
2910
-
2911
- /* Mobile-first padding */
2912
- padding: 0.75rem; /* 12px on mobile */
2913
- }
2914
-
2915
- /* Tablet and larger padding */
2916
- @media (min-width: 768px) {
2917
- .modal-overlay[data-v-63dd5ea5] {
2918
- padding: 1rem; /* 16px on tablet+ */
2919
- }
2920
- }
2921
-
2922
- /* Desktop padding */
2923
- @media (min-width: 1024px) {
2924
- .modal-overlay[data-v-63dd5ea5] {
2925
- padding: 1.5rem; /* 24px on desktop */
2926
- }
2927
- }
2928
-
2929
- /* Modal Container - Responsive sizing with width constraints */
2930
- .modal-container[data-v-63dd5ea5] {
2931
- width: 100%;
2932
- max-width: 100%;
2933
- max-height: 100%;
2934
- display: flex;
2935
- flex-direction: column;
2936
- transition: transform 0.2s ease-in-out;
2937
- transform: translateY(0);
2938
-
2939
- /* Mobile: Full width with minimal constraints */
2940
- min-width: auto;
2941
-
2942
- /* Default modal width constraints */
2943
- min-width: 320px; /* Minimum usable width */
2944
- max-width: 640px; /* Default maximum width for better readability */
2945
- }
2946
-
2947
- /* Tablet responsiveness */
2948
- @media (min-width: 640px) {
2949
- .modal-container[data-v-63dd5ea5] {
2950
- min-width: 320px;
2951
- max-width: min(640px, 95vw); /* Respect both fixed max and viewport */
2952
- max-height: 95vh;
2953
- }
2954
- }
2955
-
2956
- /* Desktop responsiveness */
2957
- @media (min-width: 768px) {
2958
- .modal-container[data-v-63dd5ea5] {
2959
- max-width: min(640px, 90vw); /* Respect both fixed max and viewport */
2960
- max-height: 90vh;
2961
- }
2962
- }
2963
-
2964
- /* Large desktop */
2965
- @media (min-width: 1024px) {
2966
- .modal-container[data-v-63dd5ea5] {
2967
- max-width: min(640px, 85vw); /* Respect both fixed max and viewport */
2968
- max-height: 85vh;
2969
- }
2970
- }
2971
-
2972
- /* Modal Card - Flexible layout */
2973
- .modal-card[data-v-63dd5ea5] {
2974
- display: flex;
2975
- flex-direction: column;
2976
- height: 100%;
2977
- max-height: 100%;
2978
- overflow: hidden;
2979
- border-radius: 0.5rem; /* Default rounded */
2980
- }
2981
-
2982
- /* Mobile: Less rounded corners, more mobile-friendly */
2983
- @media (max-width: 639px) {
2984
- .modal-card[data-v-63dd5ea5] {
2985
- border-radius: 0.375rem;
2986
- }
2938
+ padding: 1rem;
2939
+ z-index: 50;
2987
2940
  }
2988
-
2989
- /* Mobile: Override width constraints for very small screens */
2990
- @media (max-width: 639px) {
2991
2941
  .modal-container[data-v-63dd5ea5] {
2992
- min-width: 280px; /* Smaller minimum for mobile */
2993
- max-width: 100%; /* Full width available on mobile */
2994
- }
2995
- }
2996
-
2997
- /* Fullscreen mobile option */
2998
- @media (max-width: 639px) {
2999
- .modal-container.fullscreen-mobile[data-v-63dd5ea5] {
3000
- width: 100vw;
3001
- height: 100vh;
3002
- max-width: 100vw;
3003
- max-height: 100vh;
3004
- min-width: 100vw; /* Override min-width for fullscreen */
3005
- }
3006
- .modal-container.fullscreen-mobile .modal-card[data-v-63dd5ea5] {
3007
- border-radius: 0;
3008
- height: 100vh;
3009
- }
2942
+ background: white;
2943
+ border-radius: 0.5rem;
2944
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
2945
+ padding: 1.5rem;
2946
+ max-width: calc(100vw - 2rem);
2947
+ max-height: calc(100vh - 2rem);
2948
+ overflow-y: auto;
2949
+ width: auto;
3010
2950
  }
3011
-
3012
- /* Header - Always visible */
3013
2951
  .modal-header[data-v-63dd5ea5] {
3014
- flex-shrink: 0;
3015
- }
3016
-
3017
- /* Content - Scrollable area */
3018
- .modal-content[data-v-63dd5ea5] {
3019
- flex: 1;
3020
- overflow-y: auto;
3021
- overflow-x: hidden;
3022
- min-height: 0; /* Important for flex child scrolling */
3023
-
3024
- /* Responsive scrollbar spacing */
3025
- padding-right: 2px;
3026
- margin-right: -2px;
2952
+ padding-bottom: 1rem;
2953
+ border-bottom: 1px solid #e5e7eb;
2954
+ margin-bottom: 1.5rem;
3027
2955
  }
3028
-
3029
- /* Mobile: Larger touch targets and spacing */
3030
- @media (max-width: 639px) {
3031
2956
  .modal-content[data-v-63dd5ea5] {
3032
- padding-right: 3px;
3033
- margin-right: -3px;
3034
- }
2957
+ /* Let content flow naturally */
3035
2958
  }
3036
-
3037
- /* Footer - Always visible */
3038
2959
  .modal-footer[data-v-63dd5ea5] {
3039
- flex-shrink: 0;
3040
- margin-top: auto;
3041
- }
3042
-
3043
- /* Custom Scrollbar Styling - Responsive */
3044
- .modal-content[data-v-63dd5ea5]::-webkit-scrollbar {
3045
- width: 4px; /* Thinner on mobile */
2960
+ padding-top: 1rem;
2961
+ border-top: 1px solid #e5e7eb;
2962
+ margin-top: 1.5rem;
3046
2963
  }
3047
2964
 
3048
- /* Tablet and larger scrollbar */
3049
- @media (min-width: 768px) {
3050
- .modal-content[data-v-63dd5ea5]::-webkit-scrollbar {
3051
- width: 6px;
3052
- }
2965
+ /* Scrollbar styling */
2966
+ .modal-container[data-v-63dd5ea5]::-webkit-scrollbar {
2967
+ width: 6px;
3053
2968
  }
3054
- .modal-content[data-v-63dd5ea5]::-webkit-scrollbar-track {
2969
+ .modal-container[data-v-63dd5ea5]::-webkit-scrollbar-track {
3055
2970
  background: #f1f5f9;
3056
2971
  border-radius: 3px;
3057
2972
  }
3058
- .modal-content[data-v-63dd5ea5]::-webkit-scrollbar-thumb {
2973
+ .modal-container[data-v-63dd5ea5]::-webkit-scrollbar-thumb {
3059
2974
  background: #cbd5e1;
3060
2975
  border-radius: 3px;
3061
- -webkit-transition: background-color 0.2s ease;
3062
- transition: background-color 0.2s ease;
3063
2976
  }
3064
- .modal-content[data-v-63dd5ea5]::-webkit-scrollbar-thumb:hover {
2977
+ .modal-container[data-v-63dd5ea5]::-webkit-scrollbar-thumb:hover {
3065
2978
  background: #94a3b8;
3066
2979
  }
3067
2980
 
3068
- /* Firefox scrollbar - responsive */
3069
- .modal-content[data-v-63dd5ea5] {
3070
- scrollbar-width: thin;
3071
- scrollbar-color: #cbd5e1 #f1f5f9;
3072
- }
3073
-
3074
- /* Mobile: Even thinner scrollbar for Firefox */
3075
- @media (max-width: 639px) {
3076
- .modal-content[data-v-63dd5ea5] {
3077
- scrollbar-width: auto; /* Let Firefox decide */
3078
- }
3079
- }
3080
-
3081
- /* Touch-friendly scrolling for mobile */
3082
- @media (max-width: 639px) {
3083
- .modal-content[data-v-63dd5ea5] {
3084
- -webkit-overflow-scrolling: touch;
3085
- overscroll-behavior: contain;
3086
- }
3087
- }
3088
-
3089
- /* Animation and accessibility improvements */
3090
- @media (prefers-reduced-motion: reduce) {
3091
- .modal-overlay[data-v-63dd5ea5],
3092
- .modal-container[data-v-63dd5ea5],
3093
- .modal-content[data-v-63dd5ea5]::-webkit-scrollbar-thumb {
3094
- -webkit-transition: none;
3095
- transition: none;
3096
- }
3097
- }
3098
-
3099
- /* High contrast mode support */
3100
- @media (prefers-contrast: high) {
3101
- .modal-overlay[data-v-63dd5ea5] {
3102
- background-color: rgba(0, 0, 0, 0.9);
3103
- }
3104
- .modal-content[data-v-63dd5ea5]::-webkit-scrollbar-thumb {
3105
- background: #1e293b;
3106
- }
3107
- }
3108
-
3109
- /* Dark mode support preparation */
3110
- @media (prefers-color-scheme: dark) {
3111
- .modal-content[data-v-63dd5ea5]::-webkit-scrollbar-track {
3112
- background: #374151;
3113
- }
3114
- .modal-content[data-v-63dd5ea5]::-webkit-scrollbar-thumb {
3115
- background: #6b7280;
3116
- }
3117
- .modal-content[data-v-63dd5ea5]::-webkit-scrollbar-thumb:hover {
3118
- background: #9ca3af;
3119
- }
3120
- }
3121
-
3122
2981
  /* Simple fade transition - gentle and smooth */
3123
2982
  .fade-enter-active[data-v-4583e1b6],
3124
2983
  .fade-leave-active[data-v-4583e1b6] {
@@ -3438,6 +3297,18 @@ to {
3438
3297
  }
3439
3298
  }
3440
3299
 
3300
+ /* Modal-specific styles - removes border, radius, background, and padding */
3301
+ .profile-container-modal[data-v-9670e06b] {
3302
+ /* Remove any container-specific styles when in modal */
3303
+ }
3304
+ .profile-content-modal[data-v-9670e06b] {
3305
+ /* Remove card styling when in modal */
3306
+ background: transparent;
3307
+ border: none;
3308
+ border-radius: 0;
3309
+ padding: 0;
3310
+ box-shadow: none;
3311
+ }
3441
3312
  .expand-enter-active[data-v-9670e06b] {
3442
3313
  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
3443
3314
  overflow: hidden;
@@ -3463,14 +3334,25 @@ to {
3463
3334
  transform: translateY(0);
3464
3335
  }
3465
3336
 
3466
- /* Profile container - natural height, no constraints */
3467
- .profile-container[data-v-9670e06b] {
3468
- /* Removed max-height and overflow constraints */
3337
+ /* Transitions */
3338
+ .dropdown-enter-active[data-v-bfe49647],
3339
+ .dropdown-leave-active[data-v-bfe49647] {
3340
+ transition: all 0.15s ease;
3469
3341
  }
3470
-
3471
- /* Profile content - natural flow */
3472
- .profile-content[data-v-9670e06b] {
3473
- /* Removed overflow and scrolling styles - let the window handle scrolling */
3342
+ .dropdown-enter-from[data-v-bfe49647],
3343
+ .dropdown-leave-to[data-v-bfe49647] {
3344
+ opacity: 0;
3345
+ transform: scale(0.95) translateY(4px);
3346
+ }
3347
+ .dropdown-enter-to[data-v-bfe49647],
3348
+ .dropdown-leave-from[data-v-bfe49647] {
3349
+ opacity: 1;
3350
+ transform: scale(1) translateY(0);
3474
3351
  }
3475
3352
 
3476
- /* Profile styles - window scrolling, no internal overflow */
3353
+ /* Responsive adjustments */
3354
+ @media (max-width: 640px) {
3355
+ .dropdown-menu[data-v-bfe49647] {
3356
+ width: 16rem; /* w-64 */
3357
+ }
3358
+ }
@@ -75,6 +75,7 @@ const module$1 = kit.defineNuxtModule({
75
75
  "StrandsSignUp",
76
76
  "StrandsCompleteSignUp",
77
77
  "StrandsUserProfile",
78
+ "StrandsUserButton",
78
79
  "StrandsPasswordReset",
79
80
  "StrandsMFASetup",
80
81
  "StrandsConfigProvider",
@@ -1 +1 @@
1
- {"version":3,"file":"module.cjs.js","sources":["../../../../apps/accounts-ui/src/nuxt/module.ts"],"sourcesContent":["import { defineNuxtModule, addPlugin, createResolver, addImports, addComponent, addRouteMiddleware } from '@nuxt/kit'\n\n// Re-export types for users\nexport type { StrandsAuthConfig, StrandsAuthEndpoints } from '../types'\nimport type { StrandsAuthConfig } from '../types'\n\n// Create defaults that match the full interface to ensure proper type inference \nconst moduleDefaults: StrandsAuthConfig = {\n baseUrl: 'https://your-api.example.com',\n accentColor: '#EA00A8',\n redirectUrl: '/',\n onSignInUrl: '/dashboard',\n onSignOutUrl: '/',\n autoRefresh: true,\n refreshInterval: 4,\n protectedRoutes: [],\n guestOnlyRoutes: ['/auth', '/login', '/register'],\n devMode: false,\n styles: true,\n supportEmail: '',\n oauth2RedirectUrl: ''\n}\n\nexport default defineNuxtModule<StrandsAuthConfig>({\n meta: {\n name: '@strands.gg/accui/nuxt',\n configKey: 'strandsAuth',\n compatibility: {\n nuxt: '^3.0.0'\n }\n },\n defaults: moduleDefaults,\n async setup(options, nuxt) {\n const resolver = createResolver(import.meta.url)\n\n // Add runtime config\n nuxt.options.runtimeConfig.public = nuxt.options.runtimeConfig.public || {}\n ;(nuxt.options.runtimeConfig.public as any).strandsAuth = {\n ...options,\n styles: options.styles !== false\n }\n\n // Conditionally add CSS for styling based on autoImportStyles setting\n if (options.styles !== false) {\n nuxt.options.css.push('@strands.gg/accui/style.css')\n nuxt.options.css.push(resolver.resolve('./runtime/styles.css'))\n }\n\n // Plugin and middleware paths - always use built JavaScript files when module is distributed\n // This prevents issues when the module is loaded from dist/ directory\n const ext = 'es.js'\n \n // Add the main plugin\n addPlugin({\n src: resolver.resolve(`./runtime/plugin.client.${ext}`),\n mode: 'client'\n })\n\n // Add server plugin for SSR support\n addPlugin({\n src: resolver.resolve(`./runtime/plugin.server.${ext}`),\n mode: 'server'\n })\n\n // Add middleware for route protection\n addRouteMiddleware({\n name: 'auth',\n path: resolver.resolve(`./runtime/middleware/auth.global.${ext}`),\n global: true\n })\n\n // Add route middleware\n nuxt.hook('pages:extend', (pages) => {\n // This will be handled in the global middleware instead\n })\n\n // Auto-import composables\n addImports([\n {\n name: 'useStrandsAuth',\n as: 'useStrandsAuth',\n from: resolver.resolve(`./runtime/composables/useStrandsAuth.${ext}`)\n },\n {\n name: 'useAuthUser',\n as: 'useAuthUser', \n from: resolver.resolve(`./runtime/composables/useStrandsAuth.${ext}`)\n },\n {\n name: 'useAuthState',\n as: 'useAuthState',\n from: resolver.resolve(`./runtime/composables/useStrandsAuth.${ext}`)\n }\n ])\n\n // Auto-register components from the main bundle export\n const components = [\n 'StrandsAuth',\n 'StrandsSignIn', \n 'StrandsSignUp',\n 'StrandsCompleteSignUp',\n 'StrandsUserProfile',\n 'StrandsPasswordReset',\n 'StrandsMFASetup',\n 'StrandsConfigProvider',\n 'SignedIn',\n 'SignedOut',\n 'StrandsLogo',\n 'StrandsSecuredFooter',\n // UI Components\n 'StrandsUiAlert',\n 'StrandsUiButton',\n 'StrandsUiCard',\n 'StrandsUiInput',\n 'StrandsUiLink',\n 'StrandsUiTabs',\n 'StrandsUiLoader'\n ]\n\n for (const component of components) {\n addComponent({\n name: component,\n export: component,\n filePath: '@strands.gg/accui'\n })\n }\n\n // Add type declarations\n nuxt.hook('prepare:types', (opts) => {\n opts.references.push({\n types: '@strands.gg/auth-nuxt'\n })\n })\n }\n})"],"names":["defineNuxtModule","createResolver","addPlugin","addRouteMiddleware","addImports","addComponent"],"mappings":";;;AAOA,MAAM,iBAAoC;AAAA,EACxC,SAAS;AAAA,EACT,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,iBAAiB,CAAA;AAAA,EACjB,iBAAiB,CAAC,SAAS,UAAU,WAAW;AAAA,EAChD,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,mBAAmB;AACrB;AAEA,MAAA,WAAeA,qBAAoC;AAAA,EACjD,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,WAAW;AAAA,IACX,eAAe;AAAA,MACb,MAAM;AAAA,IAAA;AAAA,EACR;AAAA,EAEF,UAAU;AAAA,EACV,MAAM,MAAM,SAAS,MAAM;AACzB,UAAM,WAAWC,IAAAA,0QAA8B;AAG/C,SAAK,QAAQ,cAAc,SAAS,KAAK,QAAQ,cAAc,UAAU,CAAA;AACvE,SAAK,QAAQ,cAAc,OAAe,cAAc;AAAA,MACxD,GAAG;AAAA,MACH,QAAQ,QAAQ,WAAW;AAAA,IAAA;AAI7B,QAAI,QAAQ,WAAW,OAAO;AAC5B,WAAK,QAAQ,IAAI,KAAK,6BAA6B;AACnD,WAAK,QAAQ,IAAI,KAAK,SAAS,QAAQ,sBAAsB,CAAC;AAAA,IAChE;AAIA,UAAM,MAAM;AAGZC,kBAAU;AAAA,MACR,KAAK,SAAS,QAAQ,2BAA2B,GAAG,EAAE;AAAA,MACtD,MAAM;AAAA,IAAA,CACP;AAGDA,kBAAU;AAAA,MACR,KAAK,SAAS,QAAQ,2BAA2B,GAAG,EAAE;AAAA,MACtD,MAAM;AAAA,IAAA,CACP;AAGDC,2BAAmB;AAAA,MACjB,MAAM;AAAA,MACN,MAAM,SAAS,QAAQ,oCAAoC,GAAG,EAAE;AAAA,MAChE,QAAQ;AAAA,IAAA,CACT;AAGD,SAAK,KAAK,gBAAgB,CAAC,UAAU;AAAA,IAErC,CAAC;AAGDC,mBAAW;AAAA,MACT;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAM,SAAS,QAAQ,wCAAwC,GAAG,EAAE;AAAA,MAAA;AAAA,MAEtE;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAM,SAAS,QAAQ,wCAAwC,GAAG,EAAE;AAAA,MAAA;AAAA,MAEtE;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAM,SAAS,QAAQ,wCAAwC,GAAG,EAAE;AAAA,MAAA;AAAA,IACtE,CACD;AAGD,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,eAAW,aAAa,YAAY;AAClCC,uBAAa;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA,CACX;AAAA,IACH;AAGA,SAAK,KAAK,iBAAiB,CAAC,SAAS;AACnC,WAAK,WAAW,KAAK;AAAA,QACnB,OAAO;AAAA,MAAA,CACR;AAAA,IACH,CAAC;AAAA,EACH;AACF,CAAC;;"}
1
+ {"version":3,"file":"module.cjs.js","sources":["../../../../apps/accounts-ui/src/nuxt/module.ts"],"sourcesContent":["import { defineNuxtModule, addPlugin, createResolver, addImports, addComponent, addRouteMiddleware } from '@nuxt/kit'\n\n// Re-export types for users\nexport type { StrandsAuthConfig, StrandsAuthEndpoints } from '../types'\nimport type { StrandsAuthConfig } from '../types'\n\n// Create defaults that match the full interface to ensure proper type inference \nconst moduleDefaults: StrandsAuthConfig = {\n baseUrl: 'https://your-api.example.com',\n accentColor: '#EA00A8',\n redirectUrl: '/',\n onSignInUrl: '/dashboard',\n onSignOutUrl: '/',\n autoRefresh: true,\n refreshInterval: 4,\n protectedRoutes: [],\n guestOnlyRoutes: ['/auth', '/login', '/register'],\n devMode: false,\n styles: true,\n supportEmail: '',\n oauth2RedirectUrl: ''\n}\n\nexport default defineNuxtModule<StrandsAuthConfig>({\n meta: {\n name: '@strands.gg/accui/nuxt',\n configKey: 'strandsAuth',\n compatibility: {\n nuxt: '^3.0.0'\n }\n },\n defaults: moduleDefaults,\n async setup(options, nuxt) {\n const resolver = createResolver(import.meta.url)\n\n // Add runtime config\n nuxt.options.runtimeConfig.public = nuxt.options.runtimeConfig.public || {}\n ;(nuxt.options.runtimeConfig.public as any).strandsAuth = {\n ...options,\n styles: options.styles !== false\n }\n\n // Conditionally add CSS for styling based on autoImportStyles setting\n if (options.styles !== false) {\n nuxt.options.css.push('@strands.gg/accui/style.css')\n nuxt.options.css.push(resolver.resolve('./runtime/styles.css'))\n }\n\n // Plugin and middleware paths - always use built JavaScript files when module is distributed\n // This prevents issues when the module is loaded from dist/ directory\n const ext = 'es.js'\n \n // Add the main plugin\n addPlugin({\n src: resolver.resolve(`./runtime/plugin.client.${ext}`),\n mode: 'client'\n })\n\n // Add server plugin for SSR support\n addPlugin({\n src: resolver.resolve(`./runtime/plugin.server.${ext}`),\n mode: 'server'\n })\n\n // Add middleware for route protection\n addRouteMiddleware({\n name: 'auth',\n path: resolver.resolve(`./runtime/middleware/auth.global.${ext}`),\n global: true\n })\n\n // Add route middleware\n nuxt.hook('pages:extend', (pages) => {\n // This will be handled in the global middleware instead\n })\n\n // Auto-import composables\n addImports([\n {\n name: 'useStrandsAuth',\n as: 'useStrandsAuth',\n from: resolver.resolve(`./runtime/composables/useStrandsAuth.${ext}`)\n },\n {\n name: 'useAuthUser',\n as: 'useAuthUser', \n from: resolver.resolve(`./runtime/composables/useStrandsAuth.${ext}`)\n },\n {\n name: 'useAuthState',\n as: 'useAuthState',\n from: resolver.resolve(`./runtime/composables/useStrandsAuth.${ext}`)\n }\n ])\n\n // Auto-register components from the main bundle export\n const components = [\n 'StrandsAuth',\n 'StrandsSignIn', \n 'StrandsSignUp',\n 'StrandsCompleteSignUp',\n 'StrandsUserProfile',\n 'StrandsUserButton',\n 'StrandsPasswordReset',\n 'StrandsMFASetup',\n 'StrandsConfigProvider',\n 'SignedIn',\n 'SignedOut',\n 'StrandsLogo',\n 'StrandsSecuredFooter',\n // UI Components\n 'StrandsUiAlert',\n 'StrandsUiButton',\n 'StrandsUiCard',\n 'StrandsUiInput',\n 'StrandsUiLink',\n 'StrandsUiTabs',\n 'StrandsUiLoader'\n ]\n\n for (const component of components) {\n addComponent({\n name: component,\n export: component,\n filePath: '@strands.gg/accui'\n })\n }\n\n // Add type declarations\n nuxt.hook('prepare:types', (opts) => {\n opts.references.push({\n types: '@strands.gg/auth-nuxt'\n })\n })\n }\n})"],"names":["defineNuxtModule","createResolver","addPlugin","addRouteMiddleware","addImports","addComponent"],"mappings":";;;AAOA,MAAM,iBAAoC;AAAA,EACxC,SAAS;AAAA,EACT,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,iBAAiB,CAAA;AAAA,EACjB,iBAAiB,CAAC,SAAS,UAAU,WAAW;AAAA,EAChD,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,mBAAmB;AACrB;AAEA,MAAA,WAAeA,qBAAoC;AAAA,EACjD,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,WAAW;AAAA,IACX,eAAe;AAAA,MACb,MAAM;AAAA,IAAA;AAAA,EACR;AAAA,EAEF,UAAU;AAAA,EACV,MAAM,MAAM,SAAS,MAAM;AACzB,UAAM,WAAWC,IAAAA,0QAA8B;AAG/C,SAAK,QAAQ,cAAc,SAAS,KAAK,QAAQ,cAAc,UAAU,CAAA;AACvE,SAAK,QAAQ,cAAc,OAAe,cAAc;AAAA,MACxD,GAAG;AAAA,MACH,QAAQ,QAAQ,WAAW;AAAA,IAAA;AAI7B,QAAI,QAAQ,WAAW,OAAO;AAC5B,WAAK,QAAQ,IAAI,KAAK,6BAA6B;AACnD,WAAK,QAAQ,IAAI,KAAK,SAAS,QAAQ,sBAAsB,CAAC;AAAA,IAChE;AAIA,UAAM,MAAM;AAGZC,kBAAU;AAAA,MACR,KAAK,SAAS,QAAQ,2BAA2B,GAAG,EAAE;AAAA,MACtD,MAAM;AAAA,IAAA,CACP;AAGDA,kBAAU;AAAA,MACR,KAAK,SAAS,QAAQ,2BAA2B,GAAG,EAAE;AAAA,MACtD,MAAM;AAAA,IAAA,CACP;AAGDC,2BAAmB;AAAA,MACjB,MAAM;AAAA,MACN,MAAM,SAAS,QAAQ,oCAAoC,GAAG,EAAE;AAAA,MAChE,QAAQ;AAAA,IAAA,CACT;AAGD,SAAK,KAAK,gBAAgB,CAAC,UAAU;AAAA,IAErC,CAAC;AAGDC,mBAAW;AAAA,MACT;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAM,SAAS,QAAQ,wCAAwC,GAAG,EAAE;AAAA,MAAA;AAAA,MAEtE;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAM,SAAS,QAAQ,wCAAwC,GAAG,EAAE;AAAA,MAAA;AAAA,MAEtE;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAM,SAAS,QAAQ,wCAAwC,GAAG,EAAE;AAAA,MAAA;AAAA,IACtE,CACD;AAGD,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,eAAW,aAAa,YAAY;AAClCC,uBAAa;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA,CACX;AAAA,IACH;AAGA,SAAK,KAAK,iBAAiB,CAAC,SAAS;AACnC,WAAK,WAAW,KAAK;AAAA,QACnB,OAAO;AAAA,MAAA,CACR;AAAA,IACH,CAAC;AAAA,EACH;AACF,CAAC;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../apps/accounts-ui/src/nuxt/module.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;;AAmBjD,wBA+GE"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../apps/accounts-ui/src/nuxt/module.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;;AAmBjD,wBAgHE"}
@@ -73,6 +73,7 @@ const module = defineNuxtModule({
73
73
  "StrandsSignUp",
74
74
  "StrandsCompleteSignUp",
75
75
  "StrandsUserProfile",
76
+ "StrandsUserButton",
76
77
  "StrandsPasswordReset",
77
78
  "StrandsMFASetup",
78
79
  "StrandsConfigProvider",
@@ -1 +1 @@
1
- {"version":3,"file":"module.es.js","sources":["../../../../apps/accounts-ui/src/nuxt/module.ts"],"sourcesContent":["import { defineNuxtModule, addPlugin, createResolver, addImports, addComponent, addRouteMiddleware } from '@nuxt/kit'\n\n// Re-export types for users\nexport type { StrandsAuthConfig, StrandsAuthEndpoints } from '../types'\nimport type { StrandsAuthConfig } from '../types'\n\n// Create defaults that match the full interface to ensure proper type inference \nconst moduleDefaults: StrandsAuthConfig = {\n baseUrl: 'https://your-api.example.com',\n accentColor: '#EA00A8',\n redirectUrl: '/',\n onSignInUrl: '/dashboard',\n onSignOutUrl: '/',\n autoRefresh: true,\n refreshInterval: 4,\n protectedRoutes: [],\n guestOnlyRoutes: ['/auth', '/login', '/register'],\n devMode: false,\n styles: true,\n supportEmail: '',\n oauth2RedirectUrl: ''\n}\n\nexport default defineNuxtModule<StrandsAuthConfig>({\n meta: {\n name: '@strands.gg/accui/nuxt',\n configKey: 'strandsAuth',\n compatibility: {\n nuxt: '^3.0.0'\n }\n },\n defaults: moduleDefaults,\n async setup(options, nuxt) {\n const resolver = createResolver(import.meta.url)\n\n // Add runtime config\n nuxt.options.runtimeConfig.public = nuxt.options.runtimeConfig.public || {}\n ;(nuxt.options.runtimeConfig.public as any).strandsAuth = {\n ...options,\n styles: options.styles !== false\n }\n\n // Conditionally add CSS for styling based on autoImportStyles setting\n if (options.styles !== false) {\n nuxt.options.css.push('@strands.gg/accui/style.css')\n nuxt.options.css.push(resolver.resolve('./runtime/styles.css'))\n }\n\n // Plugin and middleware paths - always use built JavaScript files when module is distributed\n // This prevents issues when the module is loaded from dist/ directory\n const ext = 'es.js'\n \n // Add the main plugin\n addPlugin({\n src: resolver.resolve(`./runtime/plugin.client.${ext}`),\n mode: 'client'\n })\n\n // Add server plugin for SSR support\n addPlugin({\n src: resolver.resolve(`./runtime/plugin.server.${ext}`),\n mode: 'server'\n })\n\n // Add middleware for route protection\n addRouteMiddleware({\n name: 'auth',\n path: resolver.resolve(`./runtime/middleware/auth.global.${ext}`),\n global: true\n })\n\n // Add route middleware\n nuxt.hook('pages:extend', (pages) => {\n // This will be handled in the global middleware instead\n })\n\n // Auto-import composables\n addImports([\n {\n name: 'useStrandsAuth',\n as: 'useStrandsAuth',\n from: resolver.resolve(`./runtime/composables/useStrandsAuth.${ext}`)\n },\n {\n name: 'useAuthUser',\n as: 'useAuthUser', \n from: resolver.resolve(`./runtime/composables/useStrandsAuth.${ext}`)\n },\n {\n name: 'useAuthState',\n as: 'useAuthState',\n from: resolver.resolve(`./runtime/composables/useStrandsAuth.${ext}`)\n }\n ])\n\n // Auto-register components from the main bundle export\n const components = [\n 'StrandsAuth',\n 'StrandsSignIn', \n 'StrandsSignUp',\n 'StrandsCompleteSignUp',\n 'StrandsUserProfile',\n 'StrandsPasswordReset',\n 'StrandsMFASetup',\n 'StrandsConfigProvider',\n 'SignedIn',\n 'SignedOut',\n 'StrandsLogo',\n 'StrandsSecuredFooter',\n // UI Components\n 'StrandsUiAlert',\n 'StrandsUiButton',\n 'StrandsUiCard',\n 'StrandsUiInput',\n 'StrandsUiLink',\n 'StrandsUiTabs',\n 'StrandsUiLoader'\n ]\n\n for (const component of components) {\n addComponent({\n name: component,\n export: component,\n filePath: '@strands.gg/accui'\n })\n }\n\n // Add type declarations\n nuxt.hook('prepare:types', (opts) => {\n opts.references.push({\n types: '@strands.gg/auth-nuxt'\n })\n })\n }\n})"],"names":[],"mappings":";AAOA,MAAM,iBAAoC;AAAA,EACxC,SAAS;AAAA,EACT,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,iBAAiB,CAAA;AAAA,EACjB,iBAAiB,CAAC,SAAS,UAAU,WAAW;AAAA,EAChD,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,mBAAmB;AACrB;AAEA,MAAA,SAAe,iBAAoC;AAAA,EACjD,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,WAAW;AAAA,IACX,eAAe;AAAA,MACb,MAAM;AAAA,IAAA;AAAA,EACR;AAAA,EAEF,UAAU;AAAA,EACV,MAAM,MAAM,SAAS,MAAM;AACzB,UAAM,WAAW,eAAe,YAAY,GAAG;AAG/C,SAAK,QAAQ,cAAc,SAAS,KAAK,QAAQ,cAAc,UAAU,CAAA;AACvE,SAAK,QAAQ,cAAc,OAAe,cAAc;AAAA,MACxD,GAAG;AAAA,MACH,QAAQ,QAAQ,WAAW;AAAA,IAAA;AAI7B,QAAI,QAAQ,WAAW,OAAO;AAC5B,WAAK,QAAQ,IAAI,KAAK,6BAA6B;AACnD,WAAK,QAAQ,IAAI,KAAK,SAAS,QAAQ,sBAAsB,CAAC;AAAA,IAChE;AAIA,UAAM,MAAM;AAGZ,cAAU;AAAA,MACR,KAAK,SAAS,QAAQ,2BAA2B,GAAG,EAAE;AAAA,MACtD,MAAM;AAAA,IAAA,CACP;AAGD,cAAU;AAAA,MACR,KAAK,SAAS,QAAQ,2BAA2B,GAAG,EAAE;AAAA,MACtD,MAAM;AAAA,IAAA,CACP;AAGD,uBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,MAAM,SAAS,QAAQ,oCAAoC,GAAG,EAAE;AAAA,MAChE,QAAQ;AAAA,IAAA,CACT;AAGD,SAAK,KAAK,gBAAgB,CAAC,UAAU;AAAA,IAErC,CAAC;AAGD,eAAW;AAAA,MACT;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAM,SAAS,QAAQ,wCAAwC,GAAG,EAAE;AAAA,MAAA;AAAA,MAEtE;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAM,SAAS,QAAQ,wCAAwC,GAAG,EAAE;AAAA,MAAA;AAAA,MAEtE;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAM,SAAS,QAAQ,wCAAwC,GAAG,EAAE;AAAA,MAAA;AAAA,IACtE,CACD;AAGD,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,eAAW,aAAa,YAAY;AAClC,mBAAa;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA,CACX;AAAA,IACH;AAGA,SAAK,KAAK,iBAAiB,CAAC,SAAS;AACnC,WAAK,WAAW,KAAK;AAAA,QACnB,OAAO;AAAA,MAAA,CACR;AAAA,IACH,CAAC;AAAA,EACH;AACF,CAAC;"}
1
+ {"version":3,"file":"module.es.js","sources":["../../../../apps/accounts-ui/src/nuxt/module.ts"],"sourcesContent":["import { defineNuxtModule, addPlugin, createResolver, addImports, addComponent, addRouteMiddleware } from '@nuxt/kit'\n\n// Re-export types for users\nexport type { StrandsAuthConfig, StrandsAuthEndpoints } from '../types'\nimport type { StrandsAuthConfig } from '../types'\n\n// Create defaults that match the full interface to ensure proper type inference \nconst moduleDefaults: StrandsAuthConfig = {\n baseUrl: 'https://your-api.example.com',\n accentColor: '#EA00A8',\n redirectUrl: '/',\n onSignInUrl: '/dashboard',\n onSignOutUrl: '/',\n autoRefresh: true,\n refreshInterval: 4,\n protectedRoutes: [],\n guestOnlyRoutes: ['/auth', '/login', '/register'],\n devMode: false,\n styles: true,\n supportEmail: '',\n oauth2RedirectUrl: ''\n}\n\nexport default defineNuxtModule<StrandsAuthConfig>({\n meta: {\n name: '@strands.gg/accui/nuxt',\n configKey: 'strandsAuth',\n compatibility: {\n nuxt: '^3.0.0'\n }\n },\n defaults: moduleDefaults,\n async setup(options, nuxt) {\n const resolver = createResolver(import.meta.url)\n\n // Add runtime config\n nuxt.options.runtimeConfig.public = nuxt.options.runtimeConfig.public || {}\n ;(nuxt.options.runtimeConfig.public as any).strandsAuth = {\n ...options,\n styles: options.styles !== false\n }\n\n // Conditionally add CSS for styling based on autoImportStyles setting\n if (options.styles !== false) {\n nuxt.options.css.push('@strands.gg/accui/style.css')\n nuxt.options.css.push(resolver.resolve('./runtime/styles.css'))\n }\n\n // Plugin and middleware paths - always use built JavaScript files when module is distributed\n // This prevents issues when the module is loaded from dist/ directory\n const ext = 'es.js'\n \n // Add the main plugin\n addPlugin({\n src: resolver.resolve(`./runtime/plugin.client.${ext}`),\n mode: 'client'\n })\n\n // Add server plugin for SSR support\n addPlugin({\n src: resolver.resolve(`./runtime/plugin.server.${ext}`),\n mode: 'server'\n })\n\n // Add middleware for route protection\n addRouteMiddleware({\n name: 'auth',\n path: resolver.resolve(`./runtime/middleware/auth.global.${ext}`),\n global: true\n })\n\n // Add route middleware\n nuxt.hook('pages:extend', (pages) => {\n // This will be handled in the global middleware instead\n })\n\n // Auto-import composables\n addImports([\n {\n name: 'useStrandsAuth',\n as: 'useStrandsAuth',\n from: resolver.resolve(`./runtime/composables/useStrandsAuth.${ext}`)\n },\n {\n name: 'useAuthUser',\n as: 'useAuthUser', \n from: resolver.resolve(`./runtime/composables/useStrandsAuth.${ext}`)\n },\n {\n name: 'useAuthState',\n as: 'useAuthState',\n from: resolver.resolve(`./runtime/composables/useStrandsAuth.${ext}`)\n }\n ])\n\n // Auto-register components from the main bundle export\n const components = [\n 'StrandsAuth',\n 'StrandsSignIn', \n 'StrandsSignUp',\n 'StrandsCompleteSignUp',\n 'StrandsUserProfile',\n 'StrandsUserButton',\n 'StrandsPasswordReset',\n 'StrandsMFASetup',\n 'StrandsConfigProvider',\n 'SignedIn',\n 'SignedOut',\n 'StrandsLogo',\n 'StrandsSecuredFooter',\n // UI Components\n 'StrandsUiAlert',\n 'StrandsUiButton',\n 'StrandsUiCard',\n 'StrandsUiInput',\n 'StrandsUiLink',\n 'StrandsUiTabs',\n 'StrandsUiLoader'\n ]\n\n for (const component of components) {\n addComponent({\n name: component,\n export: component,\n filePath: '@strands.gg/accui'\n })\n }\n\n // Add type declarations\n nuxt.hook('prepare:types', (opts) => {\n opts.references.push({\n types: '@strands.gg/auth-nuxt'\n })\n })\n }\n})"],"names":[],"mappings":";AAOA,MAAM,iBAAoC;AAAA,EACxC,SAAS;AAAA,EACT,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,iBAAiB,CAAA;AAAA,EACjB,iBAAiB,CAAC,SAAS,UAAU,WAAW;AAAA,EAChD,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,mBAAmB;AACrB;AAEA,MAAA,SAAe,iBAAoC;AAAA,EACjD,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,WAAW;AAAA,IACX,eAAe;AAAA,MACb,MAAM;AAAA,IAAA;AAAA,EACR;AAAA,EAEF,UAAU;AAAA,EACV,MAAM,MAAM,SAAS,MAAM;AACzB,UAAM,WAAW,eAAe,YAAY,GAAG;AAG/C,SAAK,QAAQ,cAAc,SAAS,KAAK,QAAQ,cAAc,UAAU,CAAA;AACvE,SAAK,QAAQ,cAAc,OAAe,cAAc;AAAA,MACxD,GAAG;AAAA,MACH,QAAQ,QAAQ,WAAW;AAAA,IAAA;AAI7B,QAAI,QAAQ,WAAW,OAAO;AAC5B,WAAK,QAAQ,IAAI,KAAK,6BAA6B;AACnD,WAAK,QAAQ,IAAI,KAAK,SAAS,QAAQ,sBAAsB,CAAC;AAAA,IAChE;AAIA,UAAM,MAAM;AAGZ,cAAU;AAAA,MACR,KAAK,SAAS,QAAQ,2BAA2B,GAAG,EAAE;AAAA,MACtD,MAAM;AAAA,IAAA,CACP;AAGD,cAAU;AAAA,MACR,KAAK,SAAS,QAAQ,2BAA2B,GAAG,EAAE;AAAA,MACtD,MAAM;AAAA,IAAA,CACP;AAGD,uBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,MAAM,SAAS,QAAQ,oCAAoC,GAAG,EAAE;AAAA,MAChE,QAAQ;AAAA,IAAA,CACT;AAGD,SAAK,KAAK,gBAAgB,CAAC,UAAU;AAAA,IAErC,CAAC;AAGD,eAAW;AAAA,MACT;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAM,SAAS,QAAQ,wCAAwC,GAAG,EAAE;AAAA,MAAA;AAAA,MAEtE;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAM,SAAS,QAAQ,wCAAwC,GAAG,EAAE;AAAA,MAAA;AAAA,MAEtE;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAM,SAAS,QAAQ,wCAAwC,GAAG,EAAE;AAAA,MAAA;AAAA,IACtE,CACD;AAGD,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,eAAW,aAAa,YAAY;AAClC,mBAAa;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA,CACX;AAAA,IACH;AAGA,SAAK,KAAK,iBAAiB,CAAC,SAAS;AACnC,WAAK,WAAW,KAAK;AAAA,QACnB,OAAO;AAAA,MAAA,CACR;AAAA,IACH,CAAC;AAAA,EACH;AACF,CAAC;"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const app = require("nuxt/app");
4
- const useStrandsAuth$1 = require("../../../useStrandsAuth-zR8fRWme.cjs");
4
+ const useStrandsAuth$1 = require("../../../useStrandsAuth-z4jAu9Uv.cjs");
5
5
  const useStrandsAuth = () => {
6
6
  const config = app.useRuntimeConfig().public["strandsAuth"];
7
7
  const vueAuth = useStrandsAuth$1.useStrandsAuth();