@strands.gg/accui 2.15.10 → 2.16.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 (30) hide show
  1. package/dist/StrandsUIPlugin-C9rrMU2i.cjs.js +1 -0
  2. package/dist/{StrandsUIPlugin-JP858JzQ.es.js → StrandsUIPlugin-tl7L52hZ.es.js} +15 -63
  3. package/dist/accui.css +1 -1
  4. package/dist/index.cjs.js +1 -1
  5. package/dist/index.es.js +149 -177
  6. package/dist/vite.cjs.js +1 -1
  7. package/dist/vite.es.js +1 -1
  8. package/dist/webcomponents/define-element.d.ts +24 -0
  9. package/dist/webcomponents/entries/strands-alert.d.ts +12 -0
  10. package/dist/webcomponents/entries/strands-button.d.ts +12 -0
  11. package/dist/webcomponents/entries/strands-card.d.ts +12 -0
  12. package/dist/webcomponents/entries/strands-checkbox-group.d.ts +11 -0
  13. package/dist/webcomponents/entries/strands-divider.d.ts +12 -0
  14. package/dist/webcomponents/entries/strands-input.d.ts +14 -0
  15. package/dist/webcomponents/entries/strands-link.d.ts +12 -0
  16. package/dist/webcomponents/entries/strands-loader-spinner.d.ts +10 -0
  17. package/dist/webcomponents/entries/strands-modal.d.ts +16 -0
  18. package/dist/webcomponents/entries/strands-pill.d.ts +11 -0
  19. package/dist/webcomponents/entries/strands-radio-group.d.ts +11 -0
  20. package/dist/webcomponents/entries/strands-slider.d.ts +10 -0
  21. package/dist/webcomponents/entries/strands-table.d.ts +13 -0
  22. package/dist/webcomponents/entries/strands-tabs.d.ts +12 -0
  23. package/dist/webcomponents/entries/strands-theme-toggle.d.ts +10 -0
  24. package/dist/webcomponents/entries/strands-toggle.d.ts +10 -0
  25. package/dist/webcomponents/entries/strands-tooltip.d.ts +12 -0
  26. package/dist/webcomponents/index.d.ts +8 -0
  27. package/dist/webcomponents/loader.d.ts +73 -0
  28. package/dist/webcomponents/registry.d.ts +41 -0
  29. package/package.json +3 -1
  30. package/dist/StrandsUIPlugin-DSCUXdBp.cjs.js +0 -1
package/dist/vite.es.js CHANGED
@@ -86,7 +86,7 @@ ${code}`,
86
86
  function createStrandsAuth(config = {}) {
87
87
  return {
88
88
  install(app) {
89
- import("./StrandsUIPlugin-JP858JzQ.es.js").then((n) => n.n).then((module) => {
89
+ import("./StrandsUIPlugin-tl7L52hZ.es.js").then((n) => n.n).then((module) => {
90
90
  const StrandsUIPlugin = module.default;
91
91
  app.use(StrandsUIPlugin);
92
92
  });
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Utility for converting Vue components to Web Components
3
+ *
4
+ * This module provides helpers for registering Vue components as custom elements
5
+ * with proper style handling and Shadow DOM integration.
6
+ */
7
+ import { type Component } from 'vue';
8
+ 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";
9
+ /**
10
+ * Creates and registers a custom element from a Vue component
11
+ *
12
+ * @param tagName - The custom element tag name (e.g., 'strands-button')
13
+ * @param component - The Vue component to convert
14
+ * @param additionalStyles - Optional additional CSS to inject
15
+ */
16
+ export declare function registerCustomElement(tagName: string, component: Component, additionalStyles?: string): void;
17
+ /**
18
+ * Check if a custom element is already registered
19
+ */
20
+ export declare function isElementRegistered(tagName: string): boolean;
21
+ /**
22
+ * Wait for a custom element to be defined
23
+ */
24
+ export declare function whenDefined(tagName: string): Promise<CustomElementConstructor>;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Strands Alert Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-alert variant="success" title="Success!">
7
+ * Operation completed successfully.
8
+ * </strands-alert>
9
+ * ```
10
+ */
11
+ import UiAlert from '../../vue/ui/UiAlert.vue';
12
+ export { UiAlert };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Strands Button Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-button variant="primary" size="md">
7
+ * Click Me
8
+ * </strands-button>
9
+ * ```
10
+ */
11
+ import UiButton from '../../vue/ui/UiButton.vue';
12
+ export { UiButton };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Strands Card Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-card>
7
+ * Card content goes here
8
+ * </strands-card>
9
+ * ```
10
+ */
11
+ import UiCard from '../../vue/ui/UiCard.vue';
12
+ export { UiCard };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Strands Checkbox Group Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-checkbox-group name="choices" options='[{"value":"a","label":"Option A"},{"value":"b","label":"Option B"}]'>
7
+ * </strands-checkbox-group>
8
+ * ```
9
+ */
10
+ import UiCheckboxGroup from '../../vue/ui/UiCheckboxGroup.vue';
11
+ export { UiCheckboxGroup };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Strands Divider Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-divider></strands-divider>
7
+ * <strands-divider orientation="vertical"></strands-divider>
8
+ * <strands-divider>Or</strands-divider>
9
+ * ```
10
+ */
11
+ import UiDivider from '../../vue/ui/UiDivider.vue';
12
+ export { UiDivider };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Strands Input Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-input
7
+ * type="email"
8
+ * label="Email"
9
+ * placeholder="Enter your email"
10
+ * ></strands-input>
11
+ * ```
12
+ */
13
+ import UiInput from '../../vue/ui/UiInput.vue';
14
+ export { UiInput };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Strands Link Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-link href="https://example.com" external>
7
+ * Visit Example
8
+ * </strands-link>
9
+ * ```
10
+ */
11
+ import UiLink from '../../vue/ui/UiLink.vue';
12
+ export { UiLink };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Strands Loader Spinner Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-loader-spinner size="md"></strands-loader-spinner>
7
+ * ```
8
+ */
9
+ import UiLoader from '../../vue/ui/UiLoader.vue';
10
+ export { UiLoader };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Strands Modal Web Component
3
+ *
4
+ * Note: Modals in web components have limitations due to Shadow DOM.
5
+ * The modal will render within its shadow root, which may affect
6
+ * positioning and overlay behaviour.
7
+ *
8
+ * Usage:
9
+ * ```html
10
+ * <strands-modal open title="Modal Title">
11
+ * Modal content here
12
+ * </strands-modal>
13
+ * ```
14
+ */
15
+ import UiModal from '../../vue/ui/UiModal.vue';
16
+ export { UiModal };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Strands Pill Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-pill variant="filled" color="primary">Badge</strands-pill>
7
+ * <strands-pill variant="dot" color="success">Active</strands-pill>
8
+ * ```
9
+ */
10
+ import UiPill from '../../vue/ui/UiPill.vue';
11
+ export { UiPill };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Strands Radio Group Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-radio-group name="choice" options='[{"value":"a","label":"Option A"},{"value":"b","label":"Option B"}]'>
7
+ * </strands-radio-group>
8
+ * ```
9
+ */
10
+ import UiRadioGroup from '../../vue/ui/UiRadioGroup.vue';
11
+ export { UiRadioGroup };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Strands Slider Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-slider min="0" max="100" value="50"></strands-slider>
7
+ * ```
8
+ */
9
+ import UiSlider from '../../vue/ui/UiSlider.vue';
10
+ export { UiSlider };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Strands Table Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-table
7
+ * columns='[{"key":"name","label":"Name"},{"key":"email","label":"Email"}]'
8
+ * data='[{"name":"John","email":"john@example.com"}]'
9
+ * ></strands-table>
10
+ * ```
11
+ */
12
+ import UiTable from '../../vue/ui/UiTable.vue';
13
+ export { UiTable };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Strands Tabs Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-tabs>
7
+ * <!-- Tab content via slots -->
8
+ * </strands-tabs>
9
+ * ```
10
+ */
11
+ import UiTabs from '../../vue/ui/UiTabs.vue';
12
+ export { UiTabs };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Strands Theme Toggle Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-theme-toggle></strands-theme-toggle>
7
+ * ```
8
+ */
9
+ import UiThemeToggle from '../../vue/ui/UiThemeToggle.vue';
10
+ export { UiThemeToggle };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Strands Toggle Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-toggle label="Enable notifications"></strands-toggle>
7
+ * ```
8
+ */
9
+ import UiToggle from '../../vue/ui/UiToggle.vue';
10
+ export { UiToggle };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Strands Tooltip Web Component
3
+ *
4
+ * Usage:
5
+ * ```html
6
+ * <strands-tooltip content="Helpful information" position="top">
7
+ * <button>Hover me</button>
8
+ * </strands-tooltip>
9
+ * ```
10
+ */
11
+ import UiTooltip from '../../vue/ui/UiTooltip.vue';
12
+ export { UiTooltip };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Strands UI Web Components
3
+ *
4
+ * This module exports all web component functionality for the Strands UI library.
5
+ */
6
+ export * from './loader';
7
+ export * from './registry';
8
+ export * from './define-element';
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Strands UI Web Components Loader
3
+ *
4
+ * A custom element that lazy-loads Strands UI components on demand.
5
+ *
6
+ * Usage:
7
+ * ```html
8
+ * <script src="https://use.strandsui.com/loader.js"></script>
9
+ * <strands-loader components="button,alert,input"></strands-loader>
10
+ * ```
11
+ *
12
+ * Events:
13
+ * - 'strands:ready' - Dispatched when all requested components are loaded
14
+ * - 'strands:error' - Dispatched if any component fails to load
15
+ * - 'strands:progress' - Dispatched as each component loads
16
+ */
17
+ import { type ComponentInfo } from './registry';
18
+ declare const loadedComponents: Set<string>;
19
+ /**
20
+ * Load a single component with deduplication
21
+ */
22
+ declare function loadComponent(shortName: string): Promise<void>;
23
+ /**
24
+ * Load multiple components in parallel
25
+ */
26
+ declare function loadComponents(shortNames: string[], onProgress?: (loaded: number, total: number, componentName: string) => void): Promise<{
27
+ loaded: string[];
28
+ failed: Array<{
29
+ name: string;
30
+ error: Error;
31
+ }>;
32
+ }>;
33
+ /**
34
+ * StrandsLoader Custom Element
35
+ *
36
+ * Attributes:
37
+ * - components: Comma-separated list of component names to load
38
+ * - base-url: Override the base URL for component files
39
+ * - show-loading: Show a loading indicator whilst components load
40
+ */
41
+ declare class StrandsLoader extends HTMLElement {
42
+ private _connected;
43
+ private _loadPromise;
44
+ static get observedAttributes(): string[];
45
+ constructor();
46
+ connectedCallback(): void;
47
+ disconnectedCallback(): void;
48
+ attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
49
+ private _render;
50
+ private _updateStatus;
51
+ private _loadComponents;
52
+ private _dispatchEvent;
53
+ /**
54
+ * Programmatically load additional components
55
+ */
56
+ load(componentNames: string | string[]): Promise<{
57
+ loaded: string[];
58
+ failed: string[];
59
+ }>;
60
+ /**
61
+ * Check if a component is loaded
62
+ */
63
+ isLoaded(componentName: string): boolean;
64
+ /**
65
+ * Get list of all available components
66
+ */
67
+ static get availableComponents(): string[];
68
+ /**
69
+ * Get component info
70
+ */
71
+ static getComponentInfo(name: string): ComponentInfo | undefined;
72
+ }
73
+ export { StrandsLoader, loadComponent, loadComponents, loadedComponents };
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Component Registry
3
+ *
4
+ * Maps component short names to their module paths for dynamic loading.
5
+ * This allows the loader to dynamically import only the requested components.
6
+ */
7
+ export interface ComponentInfo {
8
+ /** The custom element tag name */
9
+ tagName: string;
10
+ /** The short name used in the loader (e.g., 'button' for strands-button) */
11
+ shortName: string;
12
+ /** Description of the component */
13
+ description: string;
14
+ }
15
+ /**
16
+ * Registry of all available components
17
+ */
18
+ export declare const componentRegistry: Record<string, ComponentInfo>;
19
+ /**
20
+ * Get component info by short name
21
+ */
22
+ export declare function getComponentInfo(shortName: string): ComponentInfo | undefined;
23
+ /**
24
+ * Get all available component short names
25
+ */
26
+ export declare function getAvailableComponents(): string[];
27
+ /**
28
+ * Check if a component exists in the registry
29
+ */
30
+ export declare function isValidComponent(shortName: string): boolean;
31
+ /**
32
+ * Parse a comma-separated list of component names
33
+ */
34
+ export declare function parseComponentList(componentString: string): string[];
35
+ /**
36
+ * Validate a list of component names and return invalid ones
37
+ */
38
+ export declare function validateComponentList(components: string[]): {
39
+ valid: string[];
40
+ invalid: string[];
41
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strands.gg/accui",
3
- "version": "2.15.10",
3
+ "version": "2.16.0",
4
4
  "description": "Strands Authentication UI Components",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs.js",
@@ -65,8 +65,10 @@
65
65
  "scripts": {
66
66
  "build": "vite build && tsc --emitDeclarationOnly",
67
67
  "build-demo": "vite build --config vite.demo.config.ts",
68
+ "build-webcomponents": "vite build --config vite.webcomponents.config.ts",
68
69
  "serve": "vite",
69
70
  "serve-demo": "vite --config vite.demo.config.ts",
71
+ "serve-webcomponents": "serve -c serve.webcomponents.json -l 3002 dist-webcomponents",
70
72
  "dev": "vite build --watch",
71
73
  "preview": "vite preview",
72
74
  "preview-demo": "vite preview --config vite.demo.config.ts",