@strands.gg/accui 2.17.65 → 2.18.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.
Files changed (48) hide show
  1. package/dist/{StrandsUIPlugin-DZU1IjwD.cjs.js → StrandsUIPlugin-CMTkJfQt.cjs.js} +19 -19
  2. package/dist/{StrandsUIPlugin-AI0SbvpH.es.js → StrandsUIPlugin-CQONZWOX.es.js} +1133 -1127
  3. package/dist/accui.css +1 -1
  4. package/dist/index.cjs.js +5 -5
  5. package/dist/index.es.js +5615 -5516
  6. package/dist/nuxt/module.cjs.js +2 -2
  7. package/dist/nuxt/module.es.js +7 -6
  8. package/dist/nuxt/runtime/composables/useStrandsAuth.cjs.js +1 -1
  9. package/dist/nuxt/runtime/composables/useStrandsAuth.es.js +1 -1
  10. package/dist/nuxt/runtime/plugin.client.cjs.js +1 -1
  11. package/dist/nuxt/runtime/plugin.client.es.js +15 -13
  12. package/dist/types/index.d.ts +7 -0
  13. package/dist/vite.cjs.js +1 -1
  14. package/dist/vite.es.js +1 -1
  15. package/dist/vue/components/index.d.ts +1 -1
  16. package/dist/vue/ui/UiCheckboxGroup.vue.d.ts +1 -0
  17. package/dist/vue/ui/UiMegaMenu.vue.d.ts +28 -1
  18. package/dist/vue/ui/UiRadioGroup.vue.d.ts +1 -0
  19. package/dist/vue/ui/UiTabs.vue.d.ts +2 -0
  20. package/dist/webcomponents/define-element.d.ts +1 -1
  21. package/dist/webcomponents/entries/sl-avatar-editor.d.ts +2 -0
  22. package/dist/webcomponents/entries/sl-color-picker.d.ts +2 -0
  23. package/dist/webcomponents/entries/sl-datetime-picker.d.ts +2 -0
  24. package/dist/webcomponents/entries/sl-font-picker.d.ts +2 -0
  25. package/dist/webcomponents/entries/sl-hero.d.ts +2 -0
  26. package/dist/webcomponents/entries/sl-level-progress.d.ts +2 -0
  27. package/dist/webcomponents/entries/sl-mega-menu.d.ts +5 -0
  28. package/dist/webcomponents/loader.d.ts +3 -3
  29. package/dist/webcomponents/registry.d.ts +1 -1
  30. package/package.json +1 -1
  31. /package/dist/vue/{components → ui}/VirtualList.vue.d.ts +0 -0
  32. /package/dist/webcomponents/entries/{strands-alert.d.ts → sl-alert.d.ts} +0 -0
  33. /package/dist/webcomponents/entries/{strands-button.d.ts → sl-button.d.ts} +0 -0
  34. /package/dist/webcomponents/entries/{strands-card.d.ts → sl-card.d.ts} +0 -0
  35. /package/dist/webcomponents/entries/{strands-checkbox-group.d.ts → sl-checkbox-group.d.ts} +0 -0
  36. /package/dist/webcomponents/entries/{strands-divider.d.ts → sl-divider.d.ts} +0 -0
  37. /package/dist/webcomponents/entries/{strands-input.d.ts → sl-input.d.ts} +0 -0
  38. /package/dist/webcomponents/entries/{strands-link.d.ts → sl-link.d.ts} +0 -0
  39. /package/dist/webcomponents/entries/{strands-loader-spinner.d.ts → sl-loader-spinner.d.ts} +0 -0
  40. /package/dist/webcomponents/entries/{strands-modal.d.ts → sl-modal.d.ts} +0 -0
  41. /package/dist/webcomponents/entries/{strands-pill.d.ts → sl-pill.d.ts} +0 -0
  42. /package/dist/webcomponents/entries/{strands-radio-group.d.ts → sl-radio-group.d.ts} +0 -0
  43. /package/dist/webcomponents/entries/{strands-slider.d.ts → sl-slider.d.ts} +0 -0
  44. /package/dist/webcomponents/entries/{strands-table.d.ts → sl-table.d.ts} +0 -0
  45. /package/dist/webcomponents/entries/{strands-tabs.d.ts → sl-tabs.d.ts} +0 -0
  46. /package/dist/webcomponents/entries/{strands-theme-toggle.d.ts → sl-theme-toggle.d.ts} +0 -0
  47. /package/dist/webcomponents/entries/{strands-toggle.d.ts → sl-toggle.d.ts} +0 -0
  48. /package/dist/webcomponents/entries/{strands-tooltip.d.ts → sl-tooltip.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";const o=require("@nuxt/kit");var n=typeof document<"u"?document.currentScript:null;const h={baseUrl:"https://your-api.example.com",accentColor:"#EA00A8",redirectUrl:"/",onSignOutUrl:"/",autoRefresh:!0,refreshInterval:4,protectedRoutes:[],guestOnlyRoutes:["/auth","/login","/register"],devMode:!1,styles:!0,supportEmail:"",oauth2RedirectUrl:"",theme:"system"},g=o.defineNuxtModule({meta:{name:"@strands.gg/accui/nuxt",configKey:"strandsAuth",compatibility:{nuxt:"^3.0.0 || ^4.0.0"}},defaults:h,async setup(a,t){const s=o.createResolver(typeof document>"u"?require("url").pathToFileURL(__filename).href:n&&n.tagName.toUpperCase()==="SCRIPT"&&n.src||new URL("nuxt/module.cjs.js",document.baseURI).href);t.options.runtimeConfig.public=t.options.runtimeConfig.public||{};const i={...a,styles:a.styles!==!1};if(t.options.runtimeConfig.public.strandsAuth=i,t.options.appConfig&&(t.options.appConfig.strandsAuth=i),a.styles!==!1&&t.options.css.push("@strands.gg/accui/style.css"),a.accentColor&&a.accentColor!=="#EA00A8"){const e=a.accentColor,p=`
1
+ "use strict";const o=require("@nuxt/kit");var n=typeof document<"u"?document.currentScript:null;const h={mode:"direct",baseUrl:"https://your-api.example.com",accentColor:"#EA00A8",redirectUrl:"/",onSignOutUrl:"/",autoRefresh:!0,refreshInterval:4,protectedRoutes:[],guestOnlyRoutes:["/auth","/login","/register"],devMode:!1,styles:!0,supportEmail:"",oauth2RedirectUrl:"",theme:"system"},g=o.defineNuxtModule({meta:{name:"@strands.gg/accui/nuxt",configKey:"strandsAuth",compatibility:{nuxt:"^3.0.0 || ^4.0.0"}},defaults:h,async setup(a,t){const s=o.createResolver(typeof document>"u"?require("url").pathToFileURL(__filename).href:n&&n.tagName.toUpperCase()==="SCRIPT"&&n.src||new URL("nuxt/module.cjs.js",document.baseURI).href);t.options.runtimeConfig.public=t.options.runtimeConfig.public||{};const i={...a,styles:a.styles!==!1};if(t.options.runtimeConfig.public.strandsAuth=i,t.options.appConfig&&(t.options.appConfig.strandsAuth=i),a.styles!==!1&&t.options.css.push("@strands.gg/accui/style.css"),a.accentColor&&a.accentColor!=="#EA00A8"){const e=a.accentColor,p=`
2
2
  :root {
3
3
  --strands-custom-accent: ${e};
4
4
  --strands-custom-50: color-mix(in srgb, ${e} 10%, white);
@@ -13,7 +13,7 @@
13
13
  --strands-custom-900: color-mix(in srgb, ${e} 40%, black);
14
14
  --strands-custom-950: color-mix(in srgb, ${e} 25%, black);
15
15
  }
16
- `;t.options.app.head=t.options.app.head||{},t.options.app.head.style=t.options.app.head.style||[],t.options.app.head.style.unshift({innerHTML:p,key:"strands-accent-override"})}const r="es.js",u=s.resolve(`./runtime/plugin.client.${r}`),d=s.resolve(`./runtime/plugin.server.${r}`),c=s.resolve(`./runtime/middleware/auth.global.${r}`),l=s.resolve(`./runtime/plugins/auth-interceptor.client.${r}`);o.addPlugin({src:u,mode:"client"}),o.addPlugin({src:d,mode:"server"}),o.addPlugin({src:l,mode:"client"}),o.addRouteMiddleware({name:"auth",path:c,global:!0}),t.hook("pages:extend",()=>{}),o.addImports([{name:"useStrandsAuth",as:"useStrandsAuth",from:s.resolve(`./runtime/composables/useStrandsAuth.${r}`)},{name:"useAuthUser",as:"useAuthUser",from:s.resolve(`./runtime/composables/useStrandsAuth.${r}`)},{name:"useAuthState",as:"useAuthState",from:s.resolve(`./runtime/composables/useStrandsAuth.${r}`)},{name:"useAuthenticatedFetch",as:"useAuthenticatedFetch",from:s.resolve(`./runtime/composables/useAuthenticatedFetch.${r}`)},{name:"useStrandsOAuth",as:"useStrandsOAuth",from:s.resolve(`./runtime/composables/useStrandsOAuth.${r}`)}]);const m=["StrandsAuth","StrandsSignIn","StrandsSignUp","StrandsCompleteSignUp","StrandsUserProfile","StrandsUserButton","StrandsPasswordReset","StrandsMFASetup","StrandsMfaVerification","StrandsMfaModal","StrandsBackupCodesModal","StrandsConfirmModal","StrandsEmailMfaSetupModal","StrandsHardwareKeySetupModal","StrandsSessionsModal","StrandsSettingsModal","StrandsTotpSetupModal","StrandsConfigProvider","SignedIn","StrandsLogo","StrandsSecuredFooter","StrandsNav","StrandsNavItem","StrandsOAuthButton","StrandsOAuthCallback","UiAlert","UiApp","UiAvatarEditor","UiBunnyFontPicker","UiButton","UiCard","UiCheckboxGroup","UiColorPicker","UiDateTimePicker","UiDivider","UiHero","UiInput","UiLevelProgress","UiLink","UiLoader","UiMegaMenu","UiMegaMenuItem","UiMegaMenuPanel","UiMegaMenuGroup","UiModal","UiPill","UiRadioGroup","UiSlider","UiTable","UiTabs","UiThemeToggle","UiToggle","UiTooltip","VirtualList","SvgIcon","IconGithub","IconGoogle"];for(const e of m)o.addComponent({name:e,export:e,filePath:"@strands.gg/accui"});t.hook("prepare:types",e=>{e.references.push({types:"@strands.gg/auth-nuxt"}),e.declarations&&e.declarations.push(`
16
+ `;t.options.app.head=t.options.app.head||{},t.options.app.head.style=t.options.app.head.style||[],t.options.app.head.style.unshift({innerHTML:p,key:"strands-accent-override"})}const r="es.js",u=s.resolve(`./runtime/plugin.client.${r}`),d=s.resolve(`./runtime/plugin.server.${r}`),c=s.resolve(`./runtime/middleware/auth.global.${r}`),l=s.resolve(`./runtime/plugins/auth-interceptor.client.${r}`);o.addPlugin({src:u,mode:"client"}),o.addPlugin({src:d,mode:"server"}),a.mode!=="oauth2"&&(o.addPlugin({src:l,mode:"client"}),o.addRouteMiddleware({name:"auth",path:c,global:!0})),t.hook("pages:extend",()=>{}),o.addImports([{name:"useStrandsAuth",as:"useStrandsAuth",from:s.resolve(`./runtime/composables/useStrandsAuth.${r}`)},{name:"useAuthUser",as:"useAuthUser",from:s.resolve(`./runtime/composables/useStrandsAuth.${r}`)},{name:"useAuthState",as:"useAuthState",from:s.resolve(`./runtime/composables/useStrandsAuth.${r}`)},{name:"useAuthenticatedFetch",as:"useAuthenticatedFetch",from:s.resolve(`./runtime/composables/useAuthenticatedFetch.${r}`)},{name:"useStrandsOAuth",as:"useStrandsOAuth",from:s.resolve(`./runtime/composables/useStrandsOAuth.${r}`)}]);const m=["StrandsAuth","StrandsSignIn","StrandsSignUp","StrandsCompleteSignUp","StrandsUserProfile","StrandsUserButton","StrandsPasswordReset","StrandsMFASetup","StrandsMfaVerification","StrandsMfaModal","StrandsBackupCodesModal","StrandsConfirmModal","StrandsEmailMfaSetupModal","StrandsHardwareKeySetupModal","StrandsSessionsModal","StrandsSettingsModal","StrandsTotpSetupModal","StrandsConfigProvider","SignedIn","StrandsLogo","StrandsSecuredFooter","StrandsNav","StrandsNavItem","StrandsOAuthButton","StrandsOAuthCallback","UiAlert","UiApp","UiAvatarEditor","UiBunnyFontPicker","UiButton","UiCard","UiCheckboxGroup","UiColorPicker","UiDateTimePicker","UiDivider","UiHero","UiInput","UiLevelProgress","UiLink","UiLoader","UiMegaMenu","UiMegaMenuItem","UiMegaMenuPanel","UiMegaMenuGroup","UiModal","UiPill","UiRadioGroup","UiSlider","UiTable","UiTabs","UiThemeToggle","UiToggle","UiTooltip","VirtualList","SvgIcon","IconGithub","IconGoogle"];for(const e of m)o.addComponent({name:e,export:e,filePath:"@strands.gg/accui"});t.hook("prepare:types",e=>{e.references.push({types:"@strands.gg/auth-nuxt"}),e.declarations&&e.declarations.push(`
17
17
  declare global {
18
18
  const useStrandsAuth: typeof import('${s.resolve("./runtime/composables/useStrandsAuth.d.ts")}')['useStrandsAuth']
19
19
  const useAuthUser: typeof import('${s.resolve("./runtime/composables/useStrandsAuth.d.ts")}')['useAuthUser']
@@ -1,5 +1,6 @@
1
1
  import { defineNuxtModule as p, createResolver as h, addPlugin as a, addRouteMiddleware as g, addImports as S, addComponent as f } from "@nuxt/kit";
2
2
  const A = {
3
+ mode: "direct",
3
4
  baseUrl: "https://your-api.example.com",
4
5
  accentColor: "#EA00A8",
5
6
  redirectUrl: "/",
@@ -51,21 +52,21 @@ const A = {
51
52
  key: "strands-accent-override"
52
53
  });
53
54
  }
54
- const o = "es.js", i = s.resolve(`./runtime/plugin.client.${o}`), u = s.resolve(`./runtime/plugin.server.${o}`), l = s.resolve(`./runtime/middleware/auth.global.${o}`), c = s.resolve(`./runtime/plugins/auth-interceptor.client.${o}`);
55
+ const o = "es.js", i = s.resolve(`./runtime/plugin.client.${o}`), u = s.resolve(`./runtime/plugin.server.${o}`), d = s.resolve(`./runtime/middleware/auth.global.${o}`), c = s.resolve(`./runtime/plugins/auth-interceptor.client.${o}`);
55
56
  a({
56
57
  src: i,
57
58
  mode: "client"
58
59
  }), a({
59
60
  src: u,
60
61
  mode: "server"
61
- }), a({
62
+ }), r.mode !== "oauth2" && (a({
62
63
  src: c,
63
64
  mode: "client"
64
65
  }), g({
65
66
  name: "auth",
66
- path: l,
67
+ path: d,
67
68
  global: !0
68
- }), t.hook("pages:extend", () => {
69
+ })), t.hook("pages:extend", () => {
69
70
  }), S([
70
71
  {
71
72
  name: "useStrandsAuth",
@@ -93,7 +94,7 @@ const A = {
93
94
  from: s.resolve(`./runtime/composables/useStrandsOAuth.${o}`)
94
95
  }
95
96
  ]);
96
- const d = [
97
+ const l = [
97
98
  // Strands Auth Components
98
99
  "StrandsAuth",
99
100
  "StrandsSignIn",
@@ -157,7 +158,7 @@ const A = {
157
158
  "IconGithub",
158
159
  "IconGoogle"
159
160
  ];
160
- for (const e of d)
161
+ for (const e of l)
161
162
  f({
162
163
  name: e,
163
164
  export: e,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("vue"),a=require("nuxt/app"),u=require("../../../useStrandsAuth-B4p_U9vB.cjs.js");const i=()=>{let e;try{const s=a.useRuntimeConfig();s&&s.public&&(e=s.public.strandsAuth)}catch{}const n=u.useStrandsAuth();return{...n,initialize:async()=>{await n.initialize()},signIn:async s=>{const t=await n.signIn(s);return t&&e?.onSignInUrl&&await a.navigateTo(e.onSignInUrl),t},signUp:async s=>await n.signUp({email:s.email,password:"",firstName:"",lastName:""}),signOut:async()=>{await n.signOut(),e?.onSignOutUrl&&await a.navigateTo(e.onSignOutUrl)}}},l=()=>{const{user:e}=i();return{user:e}},r=()=>{const{isAuthenticated:e,isLoading:n}=i();return{isAuthenticated:e,isLoading:n}};exports.useAuthState=r;exports.useAuthUser=l;exports.useStrandsAuth=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("vue"),a=require("nuxt/app"),u=require("../../../useStrandsAuth-B4p_U9vB.cjs.js");const i=()=>{let e;try{const s=a.useRuntimeConfig();s&&s.public&&(e=s.public.strandsAuth)}catch{}const n=u.useStrandsAuth();return{...n,initialize:async()=>{await n.initialize()},signIn:async s=>{const t=await n.signIn(s);return t&&e?.onSignInUrl&&!n.mfaRequired.value&&await a.navigateTo(e.onSignInUrl),t},signUp:async s=>await n.signUp({email:s.email,password:"",firstName:"",lastName:""}),signOut:async()=>{await n.signOut(),e?.onSignOutUrl&&await a.navigateTo(e.onSignOutUrl)}}},l=()=>{const{user:e}=i();return{user:e}},r=()=>{const{isAuthenticated:e,isLoading:n}=i();return{isAuthenticated:e,isLoading:n}};exports.useAuthState=r;exports.useAuthUser=l;exports.useStrandsAuth=i;
@@ -72,7 +72,7 @@ const o = () => ({
72
72
  // Override methods with Nuxt-specific navigation
73
73
  signIn: async (i) => {
74
74
  const a = await s.signIn(i);
75
- return a && e?.onSignInUrl && await t(e.onSignInUrl), a;
75
+ return a && e?.onSignInUrl && !s.mfaRequired.value && await t(e.onSignInUrl), a;
76
76
  },
77
77
  signUp: async (i) => await s.signUp({
78
78
  email: i.email,
@@ -1 +1 @@
1
- "use strict";const n=require("nuxt/app"),t=require("../../useStrandsConfig-BYOAEt9d.cjs.js"),d=require("../../useDarkMode-Dd0Q5Nnz.cjs.js"),c=n.defineNuxtPlugin({name:"strands-auth-client",async setup(){const o=n.useRuntimeConfig().public.strandsAuth,e={...t.STRANDS_AUTH_DEFAULTS,...o};if(t.setStrandsConfig(e),typeof window<"u"&&(window.__STRANDS_CONFIG__=e),e?.accentColor&&typeof window<"u"&&document.documentElement.style.setProperty("--strands-accent",e.accentColor),typeof window<"u"){const r=e?.theme||"system";d.useGlobalDarkMode().setTheme(r)}const{useStrandsAuth:s}=await Promise.resolve().then(()=>require("./composables/useStrandsAuth.cjs.js")),{initialize:i}=s();await i()}});module.exports=c;
1
+ "use strict";const o=require("nuxt/app"),s=require("../../useStrandsConfig-BYOAEt9d.cjs.js"),d=require("../../useDarkMode-Dd0Q5Nnz.cjs.js"),r=o.defineNuxtPlugin({name:"strands-auth-client",async setup(){const i=o.useRuntimeConfig().public.strandsAuth,e={...s.STRANDS_AUTH_DEFAULTS,...i};if(s.setStrandsConfig(e),typeof window<"u"&&(window.__STRANDS_CONFIG__=e),e?.accentColor&&typeof window<"u"&&document.documentElement.style.setProperty("--strands-accent",e.accentColor),typeof window<"u"){const n=e?.theme||"system";d.useGlobalDarkMode().setTheme(n)}if(e?.mode!=="oauth2"){const{useStrandsAuth:n}=await Promise.resolve().then(()=>require("./composables/useStrandsAuth.cjs.js")),{initialize:t}=n();await t()}}});module.exports=r;
@@ -1,21 +1,23 @@
1
- import { defineNuxtPlugin as s, useRuntimeConfig as a } from "nuxt/app";
2
- import { s as d, S as c } from "../../useStrandsConfig-B2UXxIbT.es.js";
3
- import { u as r } from "../../useDarkMode-BdG1G2mj.es.js";
4
- const g = s({
1
+ import { defineNuxtPlugin as i, useRuntimeConfig as s } from "nuxt/app";
2
+ import { s as a, S as d } from "../../useStrandsConfig-B2UXxIbT.es.js";
3
+ import { u as c } from "../../useDarkMode-BdG1G2mj.es.js";
4
+ const l = i({
5
5
  name: "strands-auth-client",
6
6
  async setup() {
7
- const e = a().public.strandsAuth, t = {
8
- ...c,
9
- ...e
7
+ const o = s().public.strandsAuth, t = {
8
+ ...d,
9
+ ...o
10
10
  };
11
- if (d(t), typeof window < "u" && (window.__STRANDS_CONFIG__ = t), t?.accentColor && typeof window < "u" && document.documentElement.style.setProperty("--strands-accent", t.accentColor), typeof window < "u") {
12
- const i = t?.theme || "system";
13
- r().setTheme(i);
11
+ if (a(t), typeof window < "u" && (window.__STRANDS_CONFIG__ = t), t?.accentColor && typeof window < "u" && document.documentElement.style.setProperty("--strands-accent", t.accentColor), typeof window < "u") {
12
+ const e = t?.theme || "system";
13
+ c().setTheme(e);
14
+ }
15
+ if (t?.mode !== "oauth2") {
16
+ const { useStrandsAuth: e } = await import("./composables/useStrandsAuth.es.js"), { initialize: n } = e();
17
+ await n();
14
18
  }
15
- const { useStrandsAuth: n } = await import("./composables/useStrandsAuth.es.js"), { initialize: o } = n();
16
- await o();
17
19
  }
18
20
  });
19
21
  export {
20
- g as default
22
+ l as default
21
23
  };
@@ -85,6 +85,13 @@ export interface OAuthProvider {
85
85
  scopes?: string[];
86
86
  }
87
87
  export interface StrandsAuthConfig {
88
+ /**
89
+ * Authentication mode for the Nuxt module
90
+ * - 'direct': First-party mode — uses HttpOnly cookies, auth interceptor, and auto-initialises useStrandsAuth (default)
91
+ * - 'oauth2': Third-party mode — skips auth interceptor, auto-init, and route middleware. Use this for apps on a different domain that authenticate via OAuth2.
92
+ * @default 'direct'
93
+ */
94
+ mode?: 'direct' | 'oauth2';
88
95
  /**
89
96
  * Base URL for the Strands Auth API
90
97
  * @default 'https://your-api.example.com'
package/dist/vite.cjs.js CHANGED
@@ -26,4 +26,4 @@ if (typeof window !== 'undefined') {
26
26
  window.__STRANDS_INJECTED__ = true
27
27
  }
28
28
  `}
29
- ${s}`,map:null}:null}}}function d(i={}){return{install(a){Promise.resolve().then(()=>require("./StrandsUIPlugin-DZU1IjwD.cjs.js")).then(n=>n.StrandsUIPlugin$1).then(n=>{const r=n.default;a.use(r)}),Promise.resolve().then(()=>require("./useStrandsConfig-BYOAEt9d.cjs.js")).then(n=>n.useStrandsConfig$1).then(n=>{const{setStrandsConfig:r}=n;r(i),typeof window<"u"&&(window.__STRANDS_CONFIG__=i)})}}}exports.StrandsAuth=e;exports.StrandsAuthVitePlugin=e;exports.createStrandsAuth=d;exports.default=e;exports.strandsAuth=e;
29
+ ${s}`,map:null}:null}}}function d(i={}){return{install(a){Promise.resolve().then(()=>require("./StrandsUIPlugin-CMTkJfQt.cjs.js")).then(n=>n.StrandsUIPlugin$1).then(n=>{const r=n.default;a.use(r)}),Promise.resolve().then(()=>require("./useStrandsConfig-BYOAEt9d.cjs.js")).then(n=>n.useStrandsConfig$1).then(n=>{const{setStrandsConfig:r}=n;r(i),typeof window<"u"&&(window.__STRANDS_CONFIG__=i)})}}}exports.StrandsAuth=e;exports.StrandsAuthVitePlugin=e;exports.createStrandsAuth=d;exports.default=e;exports.strandsAuth=e;
package/dist/vite.es.js CHANGED
@@ -73,7 +73,7 @@ ${s}`,
73
73
  function d(r = {}) {
74
74
  return {
75
75
  install(a) {
76
- import("./StrandsUIPlugin-AI0SbvpH.es.js").then((n) => n.m).then((n) => {
76
+ import("./StrandsUIPlugin-CQONZWOX.es.js").then((n) => n.m).then((n) => {
77
77
  const i = n.default;
78
78
  a.use(i);
79
79
  }), import("./useStrandsConfig-B2UXxIbT.es.js").then((n) => n.a).then((n) => {
@@ -15,7 +15,7 @@ export { default as SvgIcon } from './SvgIcon.vue';
15
15
  export { default as StrandsUserButton } from './StrandsUserButton.vue';
16
16
  export { default as StrandsNav, StrandsNavItem } from './StrandsNav';
17
17
  export type { NavItem } from './StrandsNav';
18
- export { default as VirtualList } from './VirtualList.vue';
18
+ export { default as VirtualList } from '../ui/VirtualList.vue';
19
19
  export * from './icons';
20
20
  export { preloadCriticalComponents } from '../utils/lazyComponents';
21
21
  export { default as StrandsMFASetup } from './StrandsMFASetup.vue';
@@ -39,6 +39,7 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
39
39
  size: "sm" | "md" | "lg";
40
40
  modelValue: (string | number)[];
41
41
  orientation: "horizontal" | "vertical";
42
+ options: CheckboxOption[];
42
43
  fieldId: string;
43
44
  showSelectAll: boolean;
44
45
  selectAllLabel: string;
@@ -1,3 +1,24 @@
1
+ export interface MegaMenuPanelLink {
2
+ label: string;
3
+ href?: string;
4
+ description?: string;
5
+ }
6
+ export interface MegaMenuPanelGroup {
7
+ title?: string;
8
+ links: MegaMenuPanelLink[];
9
+ }
10
+ export interface MegaMenuItemConfig {
11
+ label: string;
12
+ href?: string;
13
+ active?: boolean;
14
+ disabled?: boolean;
15
+ panel?: {
16
+ width?: 'auto' | 'full' | string;
17
+ columns?: 1 | 2 | 3 | 4;
18
+ gap?: 'sm' | 'md' | 'lg';
19
+ groups: MegaMenuPanelGroup[];
20
+ };
21
+ }
1
22
  export interface UiMegaMenuProps {
2
23
  triggerMode?: 'hover' | 'click';
3
24
  closeDelay?: number;
@@ -7,6 +28,7 @@ export interface UiMegaMenuProps {
7
28
  maxWidth?: string;
8
29
  variant?: 'default' | 'transparent';
9
30
  mobileBreakpoint?: number;
31
+ items?: MegaMenuItemConfig[];
10
32
  }
11
33
  declare function __VLS_template(): {
12
34
  attrs: Partial<{}>;
@@ -26,9 +48,14 @@ declare function __VLS_template(): {
26
48
  rootEl: HTMLElement;
27
49
  };
28
50
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
29
- declare const __VLS_component: import('vue').DefineComponent<UiMegaMenuProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<UiMegaMenuProps> & Readonly<{}>, {
51
+ declare const __VLS_component: import('vue').DefineComponent<UiMegaMenuProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
52
+ navigate: (link: MegaMenuPanelLink) => any;
53
+ }, string, import('vue').PublicProps, Readonly<UiMegaMenuProps> & Readonly<{
54
+ onNavigate?: (link: MegaMenuPanelLink) => any;
55
+ }>, {
30
56
  variant: "default" | "transparent";
31
57
  maxWidth: string;
58
+ items: MegaMenuItemConfig[];
32
59
  sticky: boolean;
33
60
  triggerMode: "hover" | "click";
34
61
  closeDelay: number;
@@ -35,6 +35,7 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
35
35
  variant: "default" | "card";
36
36
  size: "sm" | "md" | "lg";
37
37
  orientation: "horizontal" | "vertical";
38
+ options: RadioOption[];
38
39
  fieldId: string;
39
40
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
40
41
  export default _default;
@@ -68,11 +68,13 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
68
68
  }>, {
69
69
  variant: "default" | "pills" | "cards" | "minimal";
70
70
  size: "sm" | "md" | "lg";
71
+ modelValue: string;
71
72
  orientation: "horizontal" | "vertical";
72
73
  sticky: {
73
74
  side: "top" | "right" | "bottom" | "left";
74
75
  offset: number;
75
76
  } | null;
77
+ tabs: Tab[];
76
78
  underlineWidth: string;
77
79
  tabWidth: "fill" | "fit";
78
80
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
@@ -1,5 +1,5 @@
1
1
  import { Component } from 'vue';
2
- export declare const baseStyles = "\n :host {\n /* Typography */\n --accui-font-sans: 'Inter', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif;\n --accui-font-mono: \"Courier New\", Courier, ui-monospace, SFMono-Regular, \"SF Mono\", Consolas, \"Liberation Mono\", Menlo, monospace;\n\n /* Brand Colors - inherit from document or use defaults */\n --strands-accent: var(--strands-custom-accent, #EA00A8);\n --accui-strands-accent: var(--strands-custom-accent, #EA00A8);\n --accui-strands-50: var(--strands-custom-50, color-mix(in srgb, var(--strands-accent) 10%, white));\n --accui-strands-100: var(--strands-custom-100, color-mix(in srgb, var(--strands-accent) 20%, white));\n --accui-strands-200: var(--strands-custom-200, color-mix(in srgb, var(--strands-accent) 30%, white));\n --accui-strands-300: var(--strands-custom-300, color-mix(in srgb, var(--strands-accent) 40%, white));\n --accui-strands-400: var(--strands-custom-400, color-mix(in srgb, var(--strands-accent) 70%, white));\n --accui-strands-500: var(--strands-custom-500, var(--strands-accent));\n --accui-strands-600: var(--strands-custom-600, color-mix(in srgb, var(--strands-accent) 85%, black));\n --accui-strands-700: var(--strands-custom-700, color-mix(in srgb, var(--strands-accent) 70%, black));\n --accui-strands-800: var(--strands-custom-800, color-mix(in srgb, var(--strands-accent) 55%, black));\n --accui-strands-900: var(--strands-custom-900, color-mix(in srgb, var(--strands-accent) 40%, black));\n --accui-strands-950: var(--strands-custom-950, color-mix(in srgb, var(--strands-accent) 25%, black));\n\n /* Neutral Colors */\n --accui-neutral-50: #fafafa;\n --accui-neutral-100: #f5f5f5;\n --accui-neutral-200: #e5e5e5;\n --accui-neutral-300: #d4d4d4;\n --accui-neutral-400: #a3a3a3;\n --accui-neutral-500: #737373;\n --accui-neutral-600: #525252;\n --accui-neutral-700: #404040;\n --accui-neutral-800: #262626;\n --accui-neutral-900: #171717;\n --accui-neutral-950: #0a0a0a;\n\n /* Gray Colors */\n --accui-gray-50: #f9fafb;\n --accui-gray-100: #f3f4f6;\n --accui-gray-200: #e5e7eb;\n --accui-gray-300: #d1d5db;\n --accui-gray-400: #9ca3af;\n --accui-gray-500: #6b7280;\n --accui-gray-600: #4b5563;\n --accui-gray-700: #374151;\n --accui-gray-800: #1f2937;\n --accui-gray-900: #111827;\n --accui-gray-950: #030712;\n\n /* Status Colors */\n --accui-red-500: #ef4444;\n --accui-red-600: #dc2626;\n --accui-green-500: #22c55e;\n --accui-green-600: #16a34a;\n --accui-yellow-500: #f97316;\n --accui-yellow-600: #ea580c;\n\n /* Spacing Scale */\n --accui-space-0: 0;\n --accui-space-1: 0.25rem;\n --accui-space-2: 0.5rem;\n --accui-space-3: 0.75rem;\n --accui-space-4: 1rem;\n --accui-space-5: 1.25rem;\n --accui-space-6: 1.5rem;\n --accui-space-8: 2rem;\n\n /* Border Radius */\n --accui-radius-none: 0;\n --accui-radius-sm: 0.125rem;\n --accui-radius-md: 0.375rem;\n --accui-radius-lg: 0.5rem;\n --accui-radius-xl: 0.75rem;\n --accui-radius-2xl: 1rem;\n --accui-radius-full: 9999px;\n\n /* Transition Timings */\n --accui-transition-fast: 0.15s;\n --accui-transition-duration: 0.25s;\n --animation-duration: 0.25s;\n\n /* Theme Colors (Light Mode Default) */\n --accui-bg-primary: #ffffff;\n --accui-bg-secondary: #f9fafb;\n --accui-bg-tertiary: #f3f4f6;\n --accui-text-primary: #111827;\n --accui-text-secondary: #6b7280;\n --accui-text-tertiary: #9ca3af;\n --accui-border-primary: #e5e7eb;\n --accui-border-secondary: #d1d5db;\n --accui-border-tertiary: #9ca3af;\n\n /* Button Variables */\n --accui-button-primary-background: var(--accui-strands-500);\n --accui-button-primary-background-hover: var(--accui-strands-600);\n --accui-button-primary-text: #ffffff;\n --accui-button-primary-border: transparent;\n\n --accui-button-secondary-background: #f0f0f0;\n --accui-button-secondary-background-hover: #e2e2e2;\n --accui-button-secondary-text: #000000;\n --accui-button-secondary-border: #f0f0f0;\n\n --accui-button-ghost-background: transparent;\n --accui-button-ghost-background-hover: var(--accui-bg-secondary);\n --accui-button-ghost-text: var(--accui-text-primary);\n --accui-button-ghost-border: transparent;\n\n --accui-button-outline-background: transparent;\n --accui-button-outline-background-hover: var(--accui-strands-50);\n --accui-button-outline-text: var(--accui-strands-500);\n --accui-button-outline-border: var(--accui-strands-500);\n\n /* Input Variables */\n --accui-input-background: var(--accui-bg-primary);\n --accui-input-background-focus: var(--accui-bg-primary);\n --accui-input-text: var(--accui-text-primary);\n --accui-input-placeholder: var(--accui-text-tertiary);\n --accui-input-border: var(--accui-border-primary);\n --accui-input-border-focus: var(--strands-accent, #EA00A8);\n --accui-input-shadow-focus: 0 0 0 3px color-mix(in srgb, var(--strands-accent, #EA00A8) 10%, transparent);\n\n /* Card Variables */\n --accui-card-background: var(--accui-bg-primary);\n --accui-card-border: var(--accui-border-primary);\n --accui-card-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1);\n\n /* Alert Variables */\n --accui-alert-success-background: #f0fdf4;\n --accui-alert-success-text: #15803d;\n --accui-alert-success-border: #bbf7d0;\n\n --accui-alert-error-background: #fef2f2;\n --accui-alert-error-text: #dc2626;\n --accui-alert-error-border: #fecaca;\n\n --accui-alert-warning-background: #fefce8;\n --accui-alert-warning-text: #ca8a04;\n --accui-alert-warning-border: #fde047;\n\n --accui-alert-info-background: #eff6ff;\n --accui-alert-info-text: #2563eb;\n --accui-alert-info-border: #bfdbfe;\n\n /* Toggle Variables */\n --accui-toggle-background: var(--accui-border-secondary);\n --accui-toggle-background-active: var(--accui-strands-500);\n --accui-toggle-thumb: #ffffff;\n\n /* Tabs Variables */\n --accui-tabs-background: var(--accui-bg-secondary);\n --accui-tabs-border: var(--accui-border-primary);\n --accui-tabs-button-text: var(--accui-text-secondary);\n --accui-tabs-button-text-active: var(--accui-text-primary);\n --accui-tabs-button-background: var(--accui-bg-primary);\n --accui-tabs-button-background-hover: var(--accui-bg-secondary);\n --accui-tabs-indicator: var(--accui-strands-500);\n\n /* Divider Variables */\n --accui-divider-color: var(--accui-border-primary);\n --accui-divider-text: var(--accui-text-secondary);\n\n /* Display as inline-block by default */\n display: inline-block;\n }\n\n /* Dark mode support - detect from document */\n :host-context([data-theme=\"dark\"]) {\n --accui-bg-primary: #0f172a;\n --accui-bg-secondary: #1e293b;\n --accui-bg-tertiary: #334155;\n --accui-text-primary: #f8fafc;\n --accui-text-secondary: #cbd5e1;\n --accui-text-tertiary: #94a3b8;\n --accui-border-primary: #334155;\n --accui-border-secondary: #475569;\n --accui-border-tertiary: #64748b;\n\n --accui-button-secondary-background: var(--accui-bg-secondary);\n --accui-button-secondary-background-hover: var(--accui-bg-tertiary);\n --accui-button-secondary-text: var(--accui-text-primary);\n --accui-button-secondary-border: var(--accui-bg-secondary);\n\n --accui-button-ghost-background-hover: var(--accui-bg-tertiary);\n\n --accui-button-outline-background-hover: var(--accui-strands-950);\n --accui-button-outline-text: var(--accui-strands-400);\n --accui-button-outline-border: var(--accui-strands-400);\n\n --accui-alert-success-background: #0f2a1a;\n --accui-alert-success-text: #4ade80;\n --accui-alert-success-border: #16a34a;\n\n --accui-alert-error-background: #2a0f0f;\n --accui-alert-error-text: #f87171;\n --accui-alert-error-border: #dc2626;\n\n --accui-alert-warning-background: #2a2508;\n --accui-alert-warning-text: #fbbf24;\n --accui-alert-warning-border: #eab308;\n\n --accui-alert-info-background: #0f1a2a;\n --accui-alert-info-text: #60a5fa;\n --accui-alert-info-border: #3b82f6;\n\n --accui-toggle-background: var(--accui-border-tertiary);\n\n --accui-tabs-background: var(--accui-bg-tertiary);\n --accui-tabs-button-background: var(--accui-bg-secondary);\n --accui-tabs-button-background-hover: var(--accui-bg-primary);\n }\n\n /* Base reset for Shadow DOM content */\n *, *::before, *::after {\n box-sizing: border-box;\n }\n";
2
+ export declare const baseStyles = "\n :host {\n /* Typography */\n --accui-font-sans: 'Inter', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif;\n --accui-font-mono: \"Courier New\", Courier, ui-monospace, SFMono-Regular, \"SF Mono\", Consolas, \"Liberation Mono\", Menlo, monospace;\n\n /* Brand Colors - inherit from document or use defaults */\n --strands-accent: var(--strands-custom-accent, #EA00A8);\n --accui-strands-accent: var(--strands-custom-accent, #EA00A8);\n --accui-strands-50: var(--strands-custom-50, color-mix(in srgb, var(--strands-accent) 10%, white));\n --accui-strands-100: var(--strands-custom-100, color-mix(in srgb, var(--strands-accent) 20%, white));\n --accui-strands-200: var(--strands-custom-200, color-mix(in srgb, var(--strands-accent) 30%, white));\n --accui-strands-300: var(--strands-custom-300, color-mix(in srgb, var(--strands-accent) 40%, white));\n --accui-strands-400: var(--strands-custom-400, color-mix(in srgb, var(--strands-accent) 70%, white));\n --accui-strands-500: var(--strands-custom-500, var(--strands-accent));\n --accui-strands-600: var(--strands-custom-600, color-mix(in srgb, var(--strands-accent) 85%, black));\n --accui-strands-700: var(--strands-custom-700, color-mix(in srgb, var(--strands-accent) 70%, black));\n --accui-strands-800: var(--strands-custom-800, color-mix(in srgb, var(--strands-accent) 55%, black));\n --accui-strands-900: var(--strands-custom-900, color-mix(in srgb, var(--strands-accent) 40%, black));\n --accui-strands-950: var(--strands-custom-950, color-mix(in srgb, var(--strands-accent) 25%, black));\n\n /* Neutral Colors */\n --accui-neutral-50: #fafafa;\n --accui-neutral-100: #f5f5f5;\n --accui-neutral-200: #e5e5e5;\n --accui-neutral-300: #d4d4d4;\n --accui-neutral-400: #a3a3a3;\n --accui-neutral-500: #737373;\n --accui-neutral-600: #525252;\n --accui-neutral-700: #404040;\n --accui-neutral-800: #262626;\n --accui-neutral-900: #171717;\n --accui-neutral-950: #0a0a0a;\n\n /* Gray Colors */\n --accui-gray-50: #f9fafb;\n --accui-gray-100: #f3f4f6;\n --accui-gray-200: #e5e7eb;\n --accui-gray-300: #d1d5db;\n --accui-gray-400: #9ca3af;\n --accui-gray-500: #6b7280;\n --accui-gray-600: #4b5563;\n --accui-gray-700: #374151;\n --accui-gray-800: #1f2937;\n --accui-gray-900: #111827;\n --accui-gray-950: #030712;\n\n /* Status Colors */\n --accui-red-500: #ef4444;\n --accui-red-600: #dc2626;\n --accui-green-500: #22c55e;\n --accui-green-600: #16a34a;\n --accui-yellow-500: #f97316;\n --accui-yellow-600: #ea580c;\n\n /* Spacing Scale */\n --accui-space-0: 0;\n --accui-space-1: 0.25rem;\n --accui-space-2: 0.5rem;\n --accui-space-3: 0.75rem;\n --accui-space-4: 1rem;\n --accui-space-5: 1.25rem;\n --accui-space-6: 1.5rem;\n --accui-space-8: 2rem;\n\n /* Border Radius */\n --accui-radius-none: 0;\n --accui-radius-sm: 0.125rem;\n --accui-radius-md: 0.375rem;\n --accui-radius-lg: 0.5rem;\n --accui-radius-xl: 0.75rem;\n --accui-radius-2xl: 1rem;\n --accui-radius-full: 9999px;\n\n /* Transition Timings */\n --accui-transition-fast: 0.15s;\n --accui-transition-duration: 0.25s;\n --animation-duration: 0.25s;\n\n /* Theme Colors (Light Mode Default) */\n --accui-bg-primary: #ffffff;\n --accui-bg-secondary: #f9fafb;\n --accui-bg-tertiary: #f3f4f6;\n --accui-text-primary: #111827;\n --accui-text-secondary: #6b7280;\n --accui-text-tertiary: #9ca3af;\n --accui-border-primary: #e5e7eb;\n --accui-border-secondary: #d1d5db;\n --accui-border-tertiary: #9ca3af;\n\n /* Button Variables */\n --accui-button-primary-background: var(--accui-strands-500);\n --accui-button-primary-background-hover: var(--accui-strands-600);\n --accui-button-primary-text: #ffffff;\n --accui-button-primary-border: transparent;\n\n --accui-button-secondary-background: #f0f0f0;\n --accui-button-secondary-background-hover: #e2e2e2;\n --accui-button-secondary-text: #000000;\n --accui-button-secondary-border: #f0f0f0;\n\n --accui-button-ghost-background: transparent;\n --accui-button-ghost-background-hover: var(--accui-bg-secondary);\n --accui-button-ghost-text: var(--accui-text-primary);\n --accui-button-ghost-border: transparent;\n\n --accui-button-outline-background: transparent;\n --accui-button-outline-background-hover: var(--accui-strands-50);\n --accui-button-outline-text: var(--accui-strands-500);\n --accui-button-outline-border: var(--accui-strands-500);\n\n /* Input Variables */\n --accui-input-background: var(--accui-bg-primary);\n --accui-input-background-focus: var(--accui-bg-primary);\n --accui-input-text: var(--accui-text-primary);\n --accui-input-placeholder: var(--accui-text-tertiary);\n --accui-input-border: var(--accui-border-primary);\n --accui-input-border-focus: var(--strands-accent, #EA00A8);\n --accui-input-shadow-focus: 0 0 0 3px color-mix(in srgb, var(--strands-accent, #EA00A8) 10%, transparent);\n\n /* Card Variables */\n --accui-card-background: var(--accui-bg-primary);\n --accui-card-border: var(--accui-border-primary);\n --accui-card-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1);\n\n /* Alert Variables */\n --accui-alert-success-background: #f0fdf4;\n --accui-alert-success-text: #15803d;\n --accui-alert-success-border: #bbf7d0;\n\n --accui-alert-error-background: #fef2f2;\n --accui-alert-error-text: #dc2626;\n --accui-alert-error-border: #fecaca;\n\n --accui-alert-warning-background: #fefce8;\n --accui-alert-warning-text: #ca8a04;\n --accui-alert-warning-border: #fde047;\n\n --accui-alert-info-background: #eff6ff;\n --accui-alert-info-text: #2563eb;\n --accui-alert-info-border: #bfdbfe;\n\n /* Toggle Variables */\n --accui-toggle-background: var(--accui-border-secondary);\n --accui-toggle-background-active: var(--accui-strands-500);\n --accui-toggle-thumb: #ffffff;\n\n /* Tabs Variables */\n --accui-tabs-background: var(--accui-bg-secondary);\n --accui-tabs-border: var(--accui-border-primary);\n --accui-tabs-button-text: var(--accui-text-secondary);\n --accui-tabs-button-text-active: var(--accui-text-primary);\n --accui-tabs-button-background: var(--accui-bg-primary);\n --accui-tabs-button-background-hover: var(--accui-bg-secondary);\n --accui-tabs-indicator: var(--accui-strands-500);\n\n /* Divider Variables */\n --accui-divider-color: var(--accui-border-primary);\n --accui-divider-text: var(--accui-text-secondary);\n\n /* Modal Variables */\n --accui-modal-background: var(--accui-bg-primary);\n --accui-modal-overlay: rgba(0, 0, 0, 0.5);\n --accui-modal-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n\n /* Table Variables */\n --accui-table-background: var(--accui-bg-primary);\n --accui-table-header-background: var(--accui-bg-secondary);\n --accui-table-header-text: var(--accui-text-primary);\n --accui-table-row-hover: var(--accui-bg-secondary);\n --accui-table-border: var(--accui-border-primary);\n --accui-table-cell-text: var(--accui-text-primary);\n\n /* ColorPicker Variables */\n --accui-colorpicker-background: var(--accui-bg-primary);\n --accui-colorpicker-border: var(--accui-border-primary);\n --accui-colorpicker-text: var(--accui-text-primary);\n --accui-colorpicker-input-background: var(--accui-bg-secondary);\n --accui-colorpicker-button-hover: var(--accui-bg-secondary);\n --accui-colorpicker-contrast-background: var(--accui-bg-secondary);\n\n /* AvatarEditor Variables */\n --accui-avatar-background: var(--accui-bg-primary);\n --accui-avatar-border: var(--accui-border-primary);\n --accui-avatar-button-background: var(--accui-bg-secondary);\n --accui-avatar-button-hover: var(--accui-bg-tertiary);\n --accui-avatar-text: var(--accui-text-primary);\n\n /* Display as inline-block by default */\n display: inline-block;\n }\n\n /* Dark mode support - detect from document */\n :host-context([data-theme=\"dark\"]) {\n --accui-bg-primary: #0f172a;\n --accui-bg-secondary: #1e293b;\n --accui-bg-tertiary: #334155;\n --accui-text-primary: #f8fafc;\n --accui-text-secondary: #cbd5e1;\n --accui-text-tertiary: #94a3b8;\n --accui-border-primary: #334155;\n --accui-border-secondary: #475569;\n --accui-border-tertiary: #64748b;\n\n --accui-button-secondary-background: var(--accui-bg-secondary);\n --accui-button-secondary-background-hover: var(--accui-bg-tertiary);\n --accui-button-secondary-text: var(--accui-text-primary);\n --accui-button-secondary-border: var(--accui-bg-secondary);\n\n --accui-button-ghost-background-hover: var(--accui-bg-tertiary);\n\n --accui-button-outline-background-hover: var(--accui-strands-950);\n --accui-button-outline-text: var(--accui-strands-400);\n --accui-button-outline-border: var(--accui-strands-400);\n\n --accui-alert-success-background: #0f2a1a;\n --accui-alert-success-text: #4ade80;\n --accui-alert-success-border: #16a34a;\n\n --accui-alert-error-background: #2a0f0f;\n --accui-alert-error-text: #f87171;\n --accui-alert-error-border: #dc2626;\n\n --accui-alert-warning-background: #2a2508;\n --accui-alert-warning-text: #fbbf24;\n --accui-alert-warning-border: #eab308;\n\n --accui-alert-info-background: #0f1a2a;\n --accui-alert-info-text: #60a5fa;\n --accui-alert-info-border: #3b82f6;\n\n --accui-toggle-background: var(--accui-border-tertiary);\n\n --accui-tabs-background: var(--accui-bg-tertiary);\n --accui-tabs-button-background: var(--accui-bg-secondary);\n --accui-tabs-button-background-hover: var(--accui-bg-primary);\n\n --accui-input-shadow-focus: 0 0 0 3px rgba(234, 0, 168, 0.2);\n --accui-card-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.3);\n\n --accui-modal-background: var(--accui-bg-secondary);\n --accui-modal-overlay: rgba(0, 0, 0, 0.7);\n --accui-modal-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.5);\n\n --accui-table-row-hover: var(--accui-bg-tertiary);\n\n --accui-colorpicker-background: var(--accui-bg-secondary);\n --accui-colorpicker-text: var(--accui-text-primary);\n --accui-colorpicker-input-background: var(--accui-bg-tertiary);\n --accui-colorpicker-button-hover: var(--accui-bg-tertiary);\n --accui-colorpicker-contrast-background: var(--accui-bg-primary);\n\n --accui-avatar-button-background: var(--accui-bg-tertiary);\n }\n\n /* Base reset for Shadow DOM content */\n *, *::before, *::after {\n box-sizing: border-box;\n }\n";
3
3
  /**
4
4
  * Creates and registers a custom element from a Vue component
5
5
  *
@@ -0,0 +1,2 @@
1
+ import { default as UiAvatarEditor } from '../../vue/ui/UiAvatarEditor.vue';
2
+ export { UiAvatarEditor };
@@ -0,0 +1,2 @@
1
+ import { default as UiColorPicker } from '../../vue/ui/UiColorPicker.vue';
2
+ export { UiColorPicker };
@@ -0,0 +1,2 @@
1
+ import { default as UiDateTimePicker } from '../../vue/ui/UiDateTimePicker.vue';
2
+ export { UiDateTimePicker };
@@ -0,0 +1,2 @@
1
+ import { default as UiBunnyFontPicker } from '../../vue/ui/UiBunnyFontPicker.vue';
2
+ export { UiBunnyFontPicker };
@@ -0,0 +1,2 @@
1
+ import { default as UiHero } from '../../vue/ui/UiHero.vue';
2
+ export { UiHero };
@@ -0,0 +1,2 @@
1
+ import { default as UiLevelProgress } from '../../vue/ui/UiLevelProgress.vue';
2
+ export { UiLevelProgress };
@@ -0,0 +1,5 @@
1
+ import { default as UiMegaMenu } from '../../vue/ui/UiMegaMenu.vue';
2
+ export { default as UiMegaMenuItem } from '../../vue/ui/UiMegaMenu/UiMegaMenu.Item.vue';
3
+ export { default as UiMegaMenuPanel } from '../../vue/ui/UiMegaMenu/UiMegaMenu.Panel.vue';
4
+ export { default as UiMegaMenuGroup } from '../../vue/ui/UiMegaMenu/UiMegaMenu.Group.vue';
5
+ export { UiMegaMenu };
@@ -15,14 +15,14 @@ declare function loadComponents(shortNames: string[], onProgress?: (loaded: numb
15
15
  }>;
16
16
  }>;
17
17
  /**
18
- * StrandsLoader Custom Element
18
+ * LumenLoader Custom Element
19
19
  *
20
20
  * Attributes:
21
21
  * - components: Comma-separated list of component names to load
22
22
  * - base-url: Override the base URL for component files
23
23
  * - show-loading: Show a loading indicator whilst components load
24
24
  */
25
- declare class StrandsLoader extends HTMLElement {
25
+ declare class LumenLoader extends HTMLElement {
26
26
  private _connected;
27
27
  private _loadPromise;
28
28
  static get observedAttributes(): string[];
@@ -54,4 +54,4 @@ declare class StrandsLoader extends HTMLElement {
54
54
  */
55
55
  static getComponentInfo(name: string): ComponentInfo | undefined;
56
56
  }
57
- export { StrandsLoader, loadComponent, loadComponents, loadedComponents };
57
+ export { LumenLoader, loadComponent, loadComponents, loadedComponents };
@@ -7,7 +7,7 @@
7
7
  export interface ComponentInfo {
8
8
  /** The custom element tag name */
9
9
  tagName: string;
10
- /** The short name used in the loader (e.g., 'button' for strands-button) */
10
+ /** The short name used in the loader (e.g., 'button' for sl-button) */
11
11
  shortName: string;
12
12
  /** Description of the component */
13
13
  description: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strands.gg/accui",
3
- "version": "2.17.65",
3
+ "version": "2.18.1",
4
4
  "description": "Strands Authentication UI Components",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs.js",