@vertz/ui 0.2.20 → 0.2.22

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 (35) hide show
  1. package/dist/shared/{chunk-4fwcwxn6.js → chunk-2qe6aqhb.js} +235 -1
  2. package/dist/shared/{chunk-mtsvrj9e.js → chunk-4cmt1ve8.js} +1 -1
  3. package/dist/shared/chunk-4xkw6h1s.js +73 -0
  4. package/dist/shared/{chunk-j5qtsm0b.js → chunk-67z8b0q8.js} +97 -21
  5. package/dist/shared/{chunk-fkbgbf3n.js → chunk-7g722pdh.js} +70 -12
  6. package/dist/shared/{chunk-6wd36w21.js → chunk-am9zaw4h.js} +3 -1
  7. package/dist/shared/{chunk-14eqne2a.js → chunk-bybgyjye.js} +1 -1
  8. package/dist/shared/{chunk-afawz764.js → chunk-c61572xp.js} +1 -1
  9. package/dist/shared/{chunk-07bh4m1e.js → chunk-kjwp5q5s.js} +10 -5
  10. package/dist/shared/chunk-mwc4v48d.js +36 -0
  11. package/dist/shared/{chunk-yjs76c7v.js → chunk-pdqr78k9.js} +1 -1
  12. package/dist/shared/{chunk-c3r237f0.js → chunk-pq8khh47.js} +32 -11
  13. package/dist/shared/{chunk-fs3eec4b.js → chunk-szk0hyjg.js} +3 -3
  14. package/dist/shared/chunk-vwz86vg9.js +208 -0
  15. package/dist/shared/{chunk-j09yyh34.js → chunk-yb4a0smw.js} +1 -1
  16. package/dist/src/auth/public.d.ts +30 -2
  17. package/dist/src/auth/public.js +95 -136
  18. package/dist/src/components/index.d.ts +70 -0
  19. package/dist/src/components/index.js +213 -0
  20. package/dist/src/css/public.d.ts +48 -14
  21. package/dist/src/css/public.js +4 -4
  22. package/dist/src/form/public.js +2 -2
  23. package/dist/src/index.d.ts +131 -20
  24. package/dist/src/index.js +45 -36
  25. package/dist/src/internals.d.ts +110 -62
  26. package/dist/src/internals.js +18 -14
  27. package/dist/src/jsx-runtime/index.d.ts +20 -0
  28. package/dist/src/jsx-runtime/index.js +13 -3
  29. package/dist/src/query/public.js +4 -4
  30. package/dist/src/router/public.d.ts +47 -1
  31. package/dist/src/router/public.js +10 -9
  32. package/dist/src/test/index.d.ts +33 -0
  33. package/dist/src/test/index.js +4 -4
  34. package/package.json +7 -3
  35. package/dist/shared/chunk-mgfrrrjq.js +0 -384
@@ -1,16 +1,44 @@
1
- /** A raw CSS declaration: { property, value } for styles that can't be expressed as shorthands. */
2
- interface RawDeclaration {
3
- property: string;
4
- value: string;
5
- }
6
- /** A value within a nested selector array: shorthand string or raw declaration. */
7
- type StyleValue = string | RawDeclaration;
8
- /** A style entry in the array: either a shorthand string or an object for nested selectors. */
9
- type StyleEntry = string | Record<string, StyleValue[]>;
1
+ /** All keyword names. */
2
+ type Keyword = "flex" | "grid" | "block" | "inline" | "hidden" | "inline-flex" | "flex-1" | "flex-col" | "flex-row" | "flex-wrap" | "flex-nowrap" | "fixed" | "absolute" | "relative" | "sticky" | "uppercase" | "lowercase" | "capitalize" | "outline-none" | "overflow-hidden" | "select-none" | "pointer-events-none" | "whitespace-nowrap" | "shrink-0" | "italic" | "not-italic";
3
+ type BaseUtility = Keyword | `${SpacingProperty}:${SpacingValue}` | `${BgColorProperty}:${ColorToken}` | `${SizeProperty}:${SizeKeyword | SpacingValue | "screen"}` | `${RadiusProperty}:${RadiusValue}` | `${ShadowProperty}:${ShadowValue}` | `${AlignmentProperty}:${AlignmentValue}` | `${FontWeightProperty}:${FontWeightValue}` | `${LineHeightProperty}:${LineHeightValue}` | `${ContentProperty}:${ContentValue}` | `${RawProperty}:${string}` | `ring:${`${number}` | ColorToken}` | `text:${FontSizeValue | TextAlignKeyword | ColorToken}` | `font:${FontSizeValue | FontWeightValue}` | `border:${`${number}` | ColorToken}` | `list:${ListKeyword}`;
4
+ type PseudoUtility = `${PseudoPrefix}:${Keyword}` | `${PseudoPrefix}:${PropertyName}:${string}`;
5
+ /**
6
+ * Union of all valid CSS utility class strings.
7
+ *
8
+ * Used by `css()` and `variants()` to validate string entries at compile time.
9
+ * Invalid utility class names produce TypeScript errors with autocomplete
10
+ * suggestions for valid alternatives.
11
+ *
12
+ * Properties that accept arbitrary CSS values (cursor, z, opacity, transition,
13
+ * etc.) use `${string}` for their value portion — these won't validate values
14
+ * but will still validate the property name prefix.
15
+ */
16
+ type UtilityClass = BaseUtility | PseudoUtility;
17
+ /**
18
+ * A value within a nested selector array: utility class string or CSS declarations map.
19
+ *
20
+ * Use a utility string for design token shorthands: 'p:4', 'bg:primary'
21
+ * Use Record<string, string> for raw CSS: { 'flex-direction': 'row' }
22
+ */
23
+ type StyleValue = UtilityClass | Record<string, string>;
24
+ /**
25
+ * A style entry: utility class string or nested selectors map.
26
+ *
27
+ * Nested selector values can be:
28
+ * - Array form: ['text:foreground', { 'background-color': 'red' }]
29
+ * - Direct object: { 'flex-direction': 'row', 'align-items': 'center' }
30
+ */
31
+ type StyleEntry = UtilityClass | Record<string, StyleValue[] | Record<string, string>>;
10
32
  /** Input to css(): a record of named style blocks. */
11
33
  type CSSInput = Record<string, StyleEntry[]>;
12
- /** Output of css(): block names as top-level properties, plus non-enumerable `css`. */
13
- type CSSOutput<T extends CSSInput = CSSInput> = { readonly [K in keyof T & string] : string } & {
34
+ /**
35
+ * Output of css(): block names as top-level properties, plus non-enumerable `css`.
36
+ *
37
+ * The generic constraint uses `Record<string, unknown[]>` instead of `CSSInput`
38
+ * because CSSOutput only uses the keys of T (to map them to string class names).
39
+ * This allows theme component types to use `string[]` block values for simplicity.
40
+ */
41
+ type CSSOutput<T extends Record<string, unknown[]> = CSSInput> = { readonly [K in keyof T & string] : string } & {
14
42
  readonly css: string;
15
43
  };
16
44
  /**
@@ -227,8 +255,14 @@ interface ThemeProviderProps {
227
255
  * walker can claim the existing SSR node during mount().
228
256
  */
229
257
  declare function ThemeProvider({ theme, children }: ThemeProviderProps): HTMLElement;
230
- /** A record of variant names to their possible values (each value maps to style entries). */
231
- type VariantDefinitions = Record<string, Record<string, StyleEntry[]>>;
258
+ /**
259
+ * A record of variant names to their possible values (each value maps to style entries).
260
+ *
261
+ * Uses `unknown[]` for the style array type to allow both `StyleEntry[]` (constrained)
262
+ * and `string[]` (legacy theme component types). Only the keys (variant names and
263
+ * option names) are used for type inference; style values are handled at runtime.
264
+ */
265
+ type VariantDefinitions = Record<string, Record<string, unknown[]>>;
232
266
  /** Extract the variant props type from a variant definitions object. */
233
267
  type VariantProps<V extends VariantDefinitions> = { [K in keyof V]? : keyof V[K] };
234
268
  /** A compound variant rule: matches when all specified variant values are active. */
@@ -259,4 +293,4 @@ interface VariantFunction<V extends VariantDefinitions> {
259
293
  * @returns A function that accepts variant props and returns a className string.
260
294
  */
261
295
  declare function variants<V extends VariantDefinitions>(config: VariantsConfig<V>): VariantFunction<V>;
262
- export { variants, s, globalCss, font, defineTheme, css, compileTheme, compileFonts, VariantsConfig, VariantProps, VariantFunction, ThemeProviderProps, ThemeProvider, ThemeInput, Theme, StyleEntry, PreloadItem, GlobalCSSOutput, GlobalCSSInput, FontSrc, FontOptions, FontFallbackMetrics, FontDescriptor, FallbackFontName, CompiledTheme, CompiledFonts, CompileThemeOptions, CompileFontsOptions, CSSOutput, CSSInput };
296
+ export { variants, s, globalCss, font, defineTheme, css, compileTheme, compileFonts, VariantsConfig, VariantProps, VariantFunction, UtilityClass, ThemeProviderProps, ThemeProvider, ThemeInput, Theme, StyleValue, StyleEntry, PreloadItem, GlobalCSSOutput, GlobalCSSInput, FontSrc, FontOptions, FontFallbackMetrics, FontDescriptor, FallbackFontName, CompiledTheme, CompiledFonts, CompileThemeOptions, CompileFontsOptions, CSSOutput, CSSInput };
@@ -8,11 +8,11 @@ import {
8
8
  globalCss,
9
9
  s,
10
10
  variants
11
- } from "../../shared/chunk-c3r237f0.js";
12
- import"../../shared/chunk-mgfrrrjq.js";
11
+ } from "../../shared/chunk-pq8khh47.js";
12
+ import"../../shared/chunk-vwz86vg9.js";
13
13
  import"../../shared/chunk-prj7nm08.js";
14
- import"../../shared/chunk-afawz764.js";
15
- import"../../shared/chunk-4fwcwxn6.js";
14
+ import"../../shared/chunk-c61572xp.js";
15
+ import"../../shared/chunk-2qe6aqhb.js";
16
16
  export {
17
17
  variants,
18
18
  s,
@@ -3,8 +3,8 @@ import {
3
3
  form,
4
4
  formDataToObject,
5
5
  validate
6
- } from "../../shared/chunk-j09yyh34.js";
7
- import"../../shared/chunk-4fwcwxn6.js";
6
+ } from "../../shared/chunk-yb4a0smw.js";
7
+ import"../../shared/chunk-2qe6aqhb.js";
8
8
  export {
9
9
  validate,
10
10
  formDataToObject,
@@ -223,19 +223,47 @@ declare const slideOutToLeft: string;
223
223
  declare const slideOutToRight: string;
224
224
  declare const accordionDown: string;
225
225
  declare const accordionUp: string;
226
- /** A raw CSS declaration: { property, value } for styles that can't be expressed as shorthands. */
227
- interface RawDeclaration {
228
- property: string;
229
- value: string;
230
- }
231
- /** A value within a nested selector array: shorthand string or raw declaration. */
232
- type StyleValue = string | RawDeclaration;
233
- /** A style entry in the array: either a shorthand string or an object for nested selectors. */
234
- type StyleEntry = string | Record<string, StyleValue[]>;
226
+ /** All keyword names. */
227
+ type Keyword = "flex" | "grid" | "block" | "inline" | "hidden" | "inline-flex" | "flex-1" | "flex-col" | "flex-row" | "flex-wrap" | "flex-nowrap" | "fixed" | "absolute" | "relative" | "sticky" | "uppercase" | "lowercase" | "capitalize" | "outline-none" | "overflow-hidden" | "select-none" | "pointer-events-none" | "whitespace-nowrap" | "shrink-0" | "italic" | "not-italic";
228
+ type BaseUtility = Keyword | `${SpacingProperty}:${SpacingValue}` | `${BgColorProperty}:${ColorToken}` | `${SizeProperty}:${SizeKeyword | SpacingValue | "screen"}` | `${RadiusProperty}:${RadiusValue}` | `${ShadowProperty}:${ShadowValue}` | `${AlignmentProperty}:${AlignmentValue}` | `${FontWeightProperty}:${FontWeightValue}` | `${LineHeightProperty}:${LineHeightValue}` | `${ContentProperty}:${ContentValue}` | `${RawProperty}:${string}` | `ring:${`${number}` | ColorToken}` | `text:${FontSizeValue | TextAlignKeyword | ColorToken}` | `font:${FontSizeValue | FontWeightValue}` | `border:${`${number}` | ColorToken}` | `list:${ListKeyword}`;
229
+ type PseudoUtility = `${PseudoPrefix}:${Keyword}` | `${PseudoPrefix}:${PropertyName}:${string}`;
230
+ /**
231
+ * Union of all valid CSS utility class strings.
232
+ *
233
+ * Used by `css()` and `variants()` to validate string entries at compile time.
234
+ * Invalid utility class names produce TypeScript errors with autocomplete
235
+ * suggestions for valid alternatives.
236
+ *
237
+ * Properties that accept arbitrary CSS values (cursor, z, opacity, transition,
238
+ * etc.) use `${string}` for their value portion — these won't validate values
239
+ * but will still validate the property name prefix.
240
+ */
241
+ type UtilityClass = BaseUtility | PseudoUtility;
242
+ /**
243
+ * A value within a nested selector array: utility class string or CSS declarations map.
244
+ *
245
+ * Use a utility string for design token shorthands: 'p:4', 'bg:primary'
246
+ * Use Record<string, string> for raw CSS: { 'flex-direction': 'row' }
247
+ */
248
+ type StyleValue = UtilityClass | Record<string, string>;
249
+ /**
250
+ * A style entry: utility class string or nested selectors map.
251
+ *
252
+ * Nested selector values can be:
253
+ * - Array form: ['text:foreground', { 'background-color': 'red' }]
254
+ * - Direct object: { 'flex-direction': 'row', 'align-items': 'center' }
255
+ */
256
+ type StyleEntry = UtilityClass | Record<string, StyleValue[] | Record<string, string>>;
235
257
  /** Input to css(): a record of named style blocks. */
236
258
  type CSSInput = Record<string, StyleEntry[]>;
237
- /** Output of css(): block names as top-level properties, plus non-enumerable `css`. */
238
- type CSSOutput<T extends CSSInput = CSSInput> = { readonly [K in keyof T & string] : string } & {
259
+ /**
260
+ * Output of css(): block names as top-level properties, plus non-enumerable `css`.
261
+ *
262
+ * The generic constraint uses `Record<string, unknown[]>` instead of `CSSInput`
263
+ * because CSSOutput only uses the keys of T (to map them to string class names).
264
+ * This allows theme component types to use `string[]` block values for simplicity.
265
+ */
266
+ type CSSOutput<T extends Record<string, unknown[]> = CSSInput> = { readonly [K in keyof T & string] : string } & {
239
267
  readonly css: string;
240
268
  };
241
269
  /**
@@ -514,8 +542,14 @@ interface ThemeProviderProps {
514
542
  * walker can claim the existing SSR node during mount().
515
543
  */
516
544
  declare function ThemeProvider({ theme, children }: ThemeProviderProps): HTMLElement;
517
- /** A record of variant names to their possible values (each value maps to style entries). */
518
- type VariantDefinitions = Record<string, Record<string, StyleEntry[]>>;
545
+ /**
546
+ * A record of variant names to their possible values (each value maps to style entries).
547
+ *
548
+ * Uses `unknown[]` for the style array type to allow both `StyleEntry[]` (constrained)
549
+ * and `string[]` (legacy theme component types). Only the keys (variant names and
550
+ * option names) are used for type inference; style values are handled at runtime.
551
+ */
552
+ type VariantDefinitions = Record<string, Record<string, unknown[]>>;
519
553
  /** Extract the variant props type from a variant definitions object. */
520
554
  type VariantProps<V extends VariantDefinitions> = { [K in keyof V]? : keyof V[K] };
521
555
  /** A compound variant rule: matches when all specified variant values are active. */
@@ -557,19 +591,22 @@ type DialogComponent<
557
591
  > = (props: TProps & {
558
592
  dialog: DialogHandle<TResult>;
559
593
  }) => Node;
560
- declare class DialogDismissedError extends Error {
561
- constructor();
562
- }
594
+ type DialogResult<T> = {
595
+ readonly ok: true;
596
+ readonly data: T;
597
+ } | {
598
+ readonly ok: false;
599
+ };
563
600
  interface DialogStack {
564
601
  open<
565
602
  TResult,
566
603
  TProps
567
- >(component: DialogComponent<TResult, TProps>, props: TProps): Promise<TResult>;
604
+ >(component: DialogComponent<TResult, TProps>, props: TProps): Promise<DialogResult<TResult>>;
568
605
  /** @internal — used by useDialogStack() to pass captured context scope */
569
606
  openWithScope<
570
607
  TResult,
571
608
  TProps
572
- >(component: DialogComponent<TResult, TProps>, props: TProps, scope: ContextScope | null): Promise<TResult>;
609
+ >(component: DialogComponent<TResult, TProps>, props: TProps, scope: ContextScope | null): Promise<DialogResult<TResult>>;
573
610
  readonly size: number;
574
611
  closeAll(): void;
575
612
  }
@@ -630,6 +667,12 @@ declare function setAdapter(adapter: RenderAdapter | null): void;
630
667
  */
631
668
  declare function createDOMAdapter(): RenderAdapter;
632
669
  /**
670
+ * Wait for all CSS animations on an element to complete, then call back.
671
+ * If no animations are running, calls back immediately.
672
+ * Respects prefers-reduced-motion by skipping the wait.
673
+ */
674
+ declare function onAnimationsComplete(el: Element, callback: () => void): void;
675
+ /**
633
676
  * Create a DOM element with optional static properties.
634
677
  *
635
678
  * This is a compiler output target — the compiler generates calls
@@ -888,6 +931,8 @@ interface ImageProps {
888
931
  width: number;
889
932
  height: number;
890
933
  alt: string;
934
+ className?: string;
935
+ /** @deprecated Use `className` instead. */
891
936
  class?: string;
892
937
  pictureClass?: string;
893
938
  style?: string;
@@ -1123,6 +1168,24 @@ type RoutePattern<TRouteMap extends Record<string, unknown>> = keyof TRouteMap &
1123
1168
  * ```
1124
1169
  */
1125
1170
  type RoutePaths<TRouteMap extends Record<string, unknown>> = { [K in RoutePattern<TRouteMap>] : PathWithParams<K> }[RoutePattern<TRouteMap>];
1171
+ /**
1172
+ * View Transitions API integration.
1173
+ *
1174
+ * Provides a utility to wrap DOM updates in browser view transitions,
1175
+ * with graceful degradation for unsupported browsers, reduced motion
1176
+ * preferences, and SSR environments.
1177
+ */
1178
+ /** View transition configuration. */
1179
+ interface ViewTransitionConfig {
1180
+ /**
1181
+ * CSS class name added to `<html>` during the transition,
1182
+ * enabling per-transition CSS animation rules via
1183
+ * `.className::view-transition-old(root)` etc.
1184
+ *
1185
+ * Omit for the default cross-fade.
1186
+ */
1187
+ className?: string;
1188
+ }
1126
1189
  /** Schema interface for parsing and validating values (search params, path params). */
1127
1190
  interface SearchParamSchema<T> {
1128
1191
  parse(data: unknown): {
@@ -1161,6 +1224,10 @@ interface RouteConfig<
1161
1224
  children?: RouteDefinitionMap;
1162
1225
  /** Whether to pre-render this route at build time (default: true for static routes). */
1163
1226
  prerender?: boolean;
1227
+ /** Generate param combinations for pre-rendering dynamic routes at build time. */
1228
+ generateParams?: () => Array<Record<string, string>> | Promise<Array<Record<string, string>>>;
1229
+ /** Per-route view transition config. Overrides global RouterOptions.viewTransition. */
1230
+ viewTransition?: boolean | ViewTransitionConfig;
1164
1231
  }
1165
1232
  /** A map of path patterns to route configs (user input format). */
1166
1233
  interface RouteDefinitionMap {
@@ -1191,6 +1258,8 @@ interface RouteConfigLike {
1191
1258
  searchParams?: SearchParamSchema<unknown>;
1192
1259
  children?: Record<string, RouteConfigLike>;
1193
1260
  prerender?: boolean;
1261
+ generateParams?: () => Array<Record<string, string>> | Promise<Array<Record<string, string>>>;
1262
+ viewTransition?: boolean | ViewTransitionConfig;
1194
1263
  }
1195
1264
  /**
1196
1265
  * Phantom branded array that carries the route map type `T`.
@@ -1226,6 +1295,10 @@ interface CompiledRoute {
1226
1295
  children?: CompiledRoute[];
1227
1296
  /** Whether to pre-render this route at build time (default: true for static routes). */
1228
1297
  prerender?: boolean;
1298
+ /** Generate param combinations for pre-rendering dynamic routes at build time. */
1299
+ generateParams?: () => Array<Record<string, string>> | Promise<Array<Record<string, string>>>;
1300
+ /** Per-route view transition config. */
1301
+ viewTransition?: boolean | ViewTransitionConfig;
1229
1302
  }
1230
1303
  /** A single matched route entry in the matched chain. */
1231
1304
  interface MatchedRoute {
@@ -1276,6 +1349,11 @@ interface LinkProps<T extends Record<string, RouteConfigLike> = RouteDefinitionM
1276
1349
  activeClass?: string;
1277
1350
  /** Static class name for the anchor element. */
1278
1351
  className?: string;
1352
+ /**
1353
+ * Static class for the anchor element.
1354
+ * @deprecated Use `className` instead.
1355
+ */
1356
+ class?: string;
1279
1357
  /** Prefetch strategy. 'hover' triggers server pre-fetch on mouseenter/focus. */
1280
1358
  prefetch?: "hover";
1281
1359
  }
@@ -1298,7 +1376,7 @@ declare function createLink(currentPath: ReadonlySignal<string>, navigate: (url:
1298
1376
  * Reads the router from `RouterContext` automatically — no manual wiring needed.
1299
1377
  * Just use `<Link href="/about">About</Link>` inside a router-provided tree.
1300
1378
  */
1301
- declare function Link({ href, children, activeClass, className }: LinkProps): HTMLAnchorElement;
1379
+ declare function Link({ href, children, activeClass, class: classProp, className }: LinkProps): HTMLAnchorElement;
1302
1380
  type NavigateSearchValue = string | number | boolean | null | undefined;
1303
1381
  type NavigateSearch = string | URLSearchParams | Record<string, NavigateSearchValue | readonly NavigateSearchValue[]>;
1304
1382
  /** Options for router.navigate(). */
@@ -1309,6 +1387,11 @@ interface NavigateOptions {
1309
1387
  params?: Record<string, string>;
1310
1388
  /** Search params appended to the final URL. */
1311
1389
  search?: NavigateSearch;
1390
+ /**
1391
+ * Override view transition for this navigation only.
1392
+ * `false` explicitly disables even if route/global config enables transitions.
1393
+ */
1394
+ viewTransition?: boolean | ViewTransitionConfig;
1312
1395
  }
1313
1396
  type NavigateOptionsFor<TPath extends string> = string extends TPath ? NavigateOptions : TPath extends `${string}:${string}` | `${string}*` ? Omit<NavigateOptions, "params"> & {
1314
1397
  params: ExtractParams<TPath>;
@@ -1336,6 +1419,14 @@ interface RouterOptions {
1336
1419
  _prefetchNavData?: (url: string, options?: {
1337
1420
  timeout?: number;
1338
1421
  }) => PrefetchHandle;
1422
+ /**
1423
+ * Global view transition setting.
1424
+ * - `true` → all navigations use the default cross-fade
1425
+ * - `ViewTransitionConfig` → all navigations use the config
1426
+ * - Per-route and per-navigation overrides take precedence
1427
+ * - Default: `undefined` (no transitions)
1428
+ */
1429
+ viewTransition?: boolean | ViewTransitionConfig;
1339
1430
  }
1340
1431
  /**
1341
1432
  * The router instance returned by createRouter.
@@ -1446,6 +1537,26 @@ declare function parseSearchParams<T = Record<string, string>>(urlParams: URLSea
1446
1537
  * @returns The current search params value
1447
1538
  */
1448
1539
  declare function useSearchParams<T>(searchSignal: ReadonlySignal<T>): T;
1540
+ /** Input type for registerTheme(). Compatible with configureTheme() output. */
1541
+ interface RegisterThemeInput {
1542
+ components: {
1543
+ primitives?: object;
1544
+ };
1545
+ }
1546
+ /**
1547
+ * Register a theme for use with `@vertz/ui/components`.
1548
+ *
1549
+ * Call once at app startup, before any component from `@vertz/ui/components` is used.
1550
+ * Calling again replaces the previously registered theme.
1551
+ *
1552
+ * @example
1553
+ * ```ts
1554
+ * import { registerTheme } from '@vertz/ui';
1555
+ * import { configureTheme } from '@vertz/theme-shadcn';
1556
+ * registerTheme(configureTheme({ palette: 'zinc', radius: 'md' }));
1557
+ * ```
1558
+ */
1559
+ declare function registerTheme(resolved: RegisterThemeInput): void;
1449
1560
  /**
1450
1561
  * Error thrown when `onCleanup()` is called outside a disposal scope.
1451
1562
  * Similar to React's invalid hook call error — fail-fast so developers
@@ -1798,4 +1909,4 @@ declare function resetRelationSchemas_TEST_ONLY(): void;
1798
1909
  * ```
1799
1910
  */
1800
1911
  declare function createTestStore(data: Record<string, Record<string, unknown>>): EntityStore;
1801
- export { zoomOut, zoomIn, variants, validate, useSearchParams, useRouter, useParams, useDialogStack, useContext, untrack, slideOutToTop, slideOutToRight, slideOutToLeft, slideOutToBottom, slideInFromTop, slideInFromRight, slideInFromLeft, slideInFromBottom, signal, setAdapter, s, resolveChildren, resetRelationSchemas_TEST_ONLY, resetInjectedStyles, registerRelationSchema, ref, queryMatch, query, parseSearchParams, palettes, onMount2 as onMount, mount, keyframes, isRenderNode, isQueryDescriptor, isBrowser, invalidate, injectCSS, hydrateIslands, hydrate, globalCss, getRelationSchema, getQueryEnvelopeStore, getInjectedCSS, getEntityStore, getAdapter, formDataToObject, form, font, fadeOut, fadeIn, defineTheme, defineRoutes, css, createTestStore, createRouter, createOptimisticHandler, createLink, createFieldState, createDialogStack, createDOMAdapter, createContext, configureImageOptimizer, computed, compileTheme, compileFonts, children, buildOptimizedUrl, batch, accordionUp, accordionDown, __staticText, __exitChildren, __enterChildren, __element, __append, VariantsConfig, VariantProps, VariantFunction, ValidationResult, UnwrapSignals, TypedRoutes, TypedRouter, ThemeProviderProps, ThemeProvider, ThemeInput, Theme, SuspenseProps, Suspense, StyleValue, StyleEntry, Signal, SerializedStore, SearchParamSchema, SdkMethodWithMeta, SdkMethod, RouterViewProps, RouterView, RouterOptions, RouterContext, Router, RoutePattern, RoutePaths, RouteMatch, RouteDefinitionMap, RouteConfig, RenderText, RenderNode, RenderElement, RenderAdapter, RelationSchema, RelationFieldDef, Ref, ReadonlySignal, RawDeclaration, RENDER_NODE_BRAND, QueryResult, QueryOptions, QueryMatchHandlers, QueryEnvelopeStore, QueryEnvelope, QueryDescriptor3 as QueryDescriptor, PresenceProps, Presence, PreloadItem, PathWithParams, ParamSchema, OutletContextValue, OutletContext, Outlet, NavigateOptions, NavigateInput, MountOptions, MountHandle, MergeSelectOptions, MatchedRoute, LoaderData, ListTransitionProps, ListTransition, LinkProps, LinkFactoryOptions, Link, IslandRegistry, IslandProps, Island, InferRouteMap, ImageProps, Image, GlobalCSSOutput, GlobalCSSInput, FormSchema, FormOptions, FormInstance, FormDataOptions, FontSrc, FontOptions, FontFallbackMetrics, FontDescriptor, FieldState, FieldSelectionTracker, FallbackFontName, ExtractParams, ErrorBoundaryProps, ErrorBoundary, EntityStoreOptions, EntityStore, DisposeFn, DisposalScopeError, DialogStackContext, DialogStack, DialogHandle, DialogDismissedError, DialogComponent, Context, Computed, ComponentRegistry, ComponentLoader, ComponentFunction, CompiledTheme, CompiledRoute, CompiledFonts, CompileThemeOptions, CompileFontsOptions, ColorPalette, ChildrenAccessor, ChildValue, CacheStore, CSSOutput, CSSInput, ANIMATION_EASING, ANIMATION_DURATION };
1912
+ export { zoomOut, zoomIn, variants, validate, useSearchParams, useRouter, useParams, useDialogStack, useContext, untrack, slideOutToTop, slideOutToRight, slideOutToLeft, slideOutToBottom, slideInFromTop, slideInFromRight, slideInFromLeft, slideInFromBottom, signal, setAdapter, s, resolveChildren, resetRelationSchemas_TEST_ONLY, resetInjectedStyles, registerTheme, registerRelationSchema, ref, queryMatch, query, parseSearchParams, palettes, onMount2 as onMount, onAnimationsComplete, mount, keyframes, isRenderNode, isQueryDescriptor, isBrowser, invalidate, injectCSS, hydrateIslands, hydrate, globalCss, getRelationSchema, getQueryEnvelopeStore, getInjectedCSS, getEntityStore, getAdapter, formDataToObject, form, font, fadeOut, fadeIn, defineTheme, defineRoutes, css, createTestStore, createRouter, createOptimisticHandler, createLink, createFieldState, createDialogStack, createDOMAdapter, createContext, configureImageOptimizer, computed, compileTheme, compileFonts, children, buildOptimizedUrl, batch, accordionUp, accordionDown, __staticText, __exitChildren, __enterChildren, __element, __append, VariantsConfig, VariantProps, VariantFunction, ValidationResult, UnwrapSignals, TypedRoutes, TypedRouter, ThemeProviderProps, ThemeProvider, ThemeInput, Theme, SuspenseProps, Suspense, StyleValue, StyleEntry, Signal, SerializedStore, SearchParamSchema, SdkMethodWithMeta, SdkMethod, RouterViewProps, RouterView, RouterOptions, RouterContext, Router, RoutePattern, RoutePaths, RouteMatch, RouteDefinitionMap, RouteConfig, RenderText, RenderNode, RenderElement, RenderAdapter, RelationSchema, RelationFieldDef, RegisterThemeInput, Ref, ReadonlySignal, RENDER_NODE_BRAND, QueryResult, QueryOptions, QueryMatchHandlers, QueryEnvelopeStore, QueryEnvelope, QueryDescriptor3 as QueryDescriptor, PresenceProps, Presence, PreloadItem, PathWithParams, ParamSchema, OutletContextValue, OutletContext, Outlet, NavigateOptions, NavigateInput, MountOptions, MountHandle, MergeSelectOptions, MatchedRoute, LoaderData, ListTransitionProps, ListTransition, LinkProps, LinkFactoryOptions, Link, IslandRegistry, IslandProps, Island, InferRouteMap, ImageProps, Image, GlobalCSSOutput, GlobalCSSInput, FormSchema, FormOptions, FormInstance, FormDataOptions, FontSrc, FontOptions, FontFallbackMetrics, FontDescriptor, FieldState, FieldSelectionTracker, FallbackFontName, ExtractParams, ErrorBoundaryProps, ErrorBoundary, EntityStoreOptions, EntityStore, DisposeFn, DisposalScopeError, DialogStackContext, DialogStack, DialogResult, DialogHandle, DialogComponent, Context, Computed, ComponentRegistry, ComponentLoader, ComponentFunction, CompiledTheme, CompiledRoute, CompiledFonts, CompileThemeOptions, CompileFontsOptions, ColorPalette, ChildrenAccessor, ChildValue, CacheStore, CSSOutput, CSSInput, ANIMATION_EASING, ANIMATION_DURATION };
package/dist/src/index.js CHANGED
@@ -1,3 +1,6 @@
1
+ import {
2
+ registerTheme
3
+ } from "../shared/chunk-mwc4v48d.js";
1
4
  import {
2
5
  ANIMATION_DURATION,
3
6
  ANIMATION_EASING,
@@ -21,7 +24,7 @@ import {
21
24
  slideOutToTop,
22
25
  zoomIn,
23
26
  zoomOut
24
- } from "../shared/chunk-yjs76c7v.js";
27
+ } from "../shared/chunk-pdqr78k9.js";
25
28
  import {
26
29
  Link,
27
30
  Outlet,
@@ -30,20 +33,21 @@ import {
30
33
  createLink,
31
34
  parseSearchParams,
32
35
  useSearchParams
33
- } from "../shared/chunk-j5qtsm0b.js";
34
- import"../shared/chunk-07bh4m1e.js";
36
+ } from "../shared/chunk-67z8b0q8.js";
37
+ import"../shared/chunk-kjwp5q5s.js";
38
+ import"../shared/chunk-4xkw6h1s.js";
35
39
  import {
36
40
  createRouter
37
- } from "../shared/chunk-fkbgbf3n.js";
41
+ } from "../shared/chunk-7g722pdh.js";
38
42
  import {
39
43
  defineRoutes
40
- } from "../shared/chunk-6wd36w21.js";
44
+ } from "../shared/chunk-am9zaw4h.js";
41
45
  import {
42
46
  createFieldState,
43
47
  form,
44
48
  formDataToObject,
45
49
  validate
46
- } from "../shared/chunk-j09yyh34.js";
50
+ } from "../shared/chunk-yb4a0smw.js";
47
51
  import {
48
52
  EntityStore,
49
53
  FieldSelectionTracker,
@@ -57,7 +61,7 @@ import {
57
61
  queryMatch,
58
62
  registerRelationSchema,
59
63
  resetRelationSchemas_TEST_ONLY
60
- } from "../shared/chunk-fs3eec4b.js";
64
+ } from "../shared/chunk-szk0hyjg.js";
61
65
  import"../shared/chunk-jrtrk5z4.js";
62
66
  import {
63
67
  ThemeProvider,
@@ -74,20 +78,14 @@ import {
74
78
  resolveChildren,
75
79
  s,
76
80
  variants
77
- } from "../shared/chunk-c3r237f0.js";
81
+ } from "../shared/chunk-pq8khh47.js";
78
82
  import {
79
83
  __append,
80
84
  __element,
81
85
  __enterChildren,
82
86
  __exitChildren,
83
- __staticText,
84
- claimElement,
85
- endHydration,
86
- enterChildren,
87
- exitChildren,
88
- getIsHydrating,
89
- startHydration
90
- } from "../shared/chunk-mgfrrrjq.js";
87
+ __staticText
88
+ } from "../shared/chunk-vwz86vg9.js";
91
89
  import"../shared/chunk-prj7nm08.js";
92
90
  import {
93
91
  RENDER_NODE_BRAND,
@@ -95,32 +93,39 @@ import {
95
93
  getAdapter,
96
94
  isRenderNode,
97
95
  setAdapter
98
- } from "../shared/chunk-afawz764.js";
96
+ } from "../shared/chunk-c61572xp.js";
99
97
  import {
100
98
  RouterContext,
101
99
  useParams,
102
100
  useRouter
103
- } from "../shared/chunk-mtsvrj9e.js";
101
+ } from "../shared/chunk-4cmt1ve8.js";
104
102
  import {
105
103
  isBrowser
106
- } from "../shared/chunk-14eqne2a.js";
104
+ } from "../shared/chunk-bybgyjye.js";
107
105
  import {
108
106
  DisposalScopeError,
109
107
  _tryOnCleanup,
110
108
  batch,
109
+ claimElement,
111
110
  computed,
112
111
  createContext,
112
+ discardDeferredEffects,
113
113
  domEffect,
114
+ endHydration,
115
+ enterChildren,
116
+ exitChildren,
114
117
  getContextScope,
118
+ getIsHydrating,
115
119
  getSSRContext,
116
120
  popScope,
117
121
  pushScope,
118
122
  runCleanups,
119
123
  setContextScope,
120
124
  signal,
125
+ startHydration,
121
126
  untrack,
122
127
  useContext
123
- } from "../shared/chunk-4fwcwxn6.js";
128
+ } from "../shared/chunk-2qe6aqhb.js";
124
129
  // src/component/error-boundary-context.ts
125
130
  var handlerStack = [];
126
131
  function pushErrorHandler(handler) {
@@ -516,18 +521,11 @@ function useDialogStack() {
516
521
  }
517
522
  };
518
523
  }
519
-
520
- class DialogDismissedError extends Error {
521
- constructor() {
522
- super("Dialog was dismissed");
523
- this.name = "DialogDismissedError";
524
- }
525
- }
526
524
  function createDialogStack(container) {
527
525
  const entries = [];
528
526
  let nextId = 0;
529
527
  function open(component, props, capturedScope) {
530
- return new Promise((resolve, reject) => {
528
+ return new Promise((resolve) => {
531
529
  if (entries.length > 0) {
532
530
  entries[entries.length - 1].wrapper.setAttribute("data-state", "background");
533
531
  }
@@ -540,9 +538,9 @@ function createDialogStack(container) {
540
538
  wrapper,
541
539
  node: null,
542
540
  resolve,
543
- reject,
544
541
  cleanups: [],
545
- dismissible: true
542
+ dismissible: true,
543
+ settled: false
546
544
  };
547
545
  const prevScope = setContextScope(capturedScope ?? null);
548
546
  const scope = pushScope();
@@ -571,9 +569,12 @@ function createDialogStack(container) {
571
569
  });
572
570
  }
573
571
  function closeEntry(entry, result) {
572
+ if (entry.settled)
573
+ return;
574
574
  const idx = entries.indexOf(entry);
575
575
  if (idx === -1)
576
576
  return;
577
+ entry.settled = true;
577
578
  entry.wrapper.setAttribute("data-state", "closed");
578
579
  onAnimationsComplete(entry.wrapper, () => {
579
580
  runCleanups(entry.cleanups);
@@ -588,7 +589,7 @@ function createDialogStack(container) {
588
589
  entries[entries.length - 1].wrapper.setAttribute("data-state", "open");
589
590
  }
590
591
  updateDepthAttributes();
591
- entry.resolve(result);
592
+ entry.resolve({ ok: true, data: result });
592
593
  });
593
594
  }
594
595
  function updateDepthAttributes() {
@@ -613,9 +614,12 @@ function createDialogStack(container) {
613
614
  }
614
615
  };
615
616
  function dismissEntry(entry) {
617
+ if (entry.settled)
618
+ return;
616
619
  const idx = entries.indexOf(entry);
617
620
  if (idx === -1)
618
621
  return;
622
+ entry.settled = true;
619
623
  entry.wrapper.setAttribute("data-state", "closed");
620
624
  onAnimationsComplete(entry.wrapper, () => {
621
625
  runCleanups(entry.cleanups);
@@ -630,7 +634,7 @@ function createDialogStack(container) {
630
634
  entries[entries.length - 1].wrapper.setAttribute("data-state", "open");
631
635
  }
632
636
  updateDepthAttributes();
633
- entry.reject(new DialogDismissedError);
637
+ entry.resolve({ ok: false });
634
638
  });
635
639
  }
636
640
  }
@@ -662,6 +666,7 @@ var BUILD_ONLY_PROPS = new Set([
662
666
  "width",
663
667
  "height",
664
668
  "alt",
669
+ "className",
665
670
  "class",
666
671
  "style",
667
672
  "loading",
@@ -677,7 +682,8 @@ function Image({
677
682
  width,
678
683
  height,
679
684
  alt,
680
- class: className,
685
+ className,
686
+ class: classProp,
681
687
  style,
682
688
  loading = "lazy",
683
689
  decoding = "async",
@@ -702,10 +708,11 @@ function Image({
702
708
  el.setAttribute("alt", alt);
703
709
  el.setAttribute("loading", resolvedLoading);
704
710
  el.setAttribute("decoding", resolvedDecoding);
711
+ const effectiveClass = className ?? classProp;
705
712
  if (resolvedFetchpriority)
706
713
  el.setAttribute("fetchpriority", resolvedFetchpriority);
707
- if (className)
708
- el.setAttribute("class", className);
714
+ if (effectiveClass)
715
+ el.setAttribute("class", effectiveClass);
709
716
  if (style)
710
717
  el.setAttribute("style", style);
711
718
  for (const [key, value] of Object.entries(rest)) {
@@ -798,6 +805,7 @@ function mount(app, options) {
798
805
  mountedRoots.set(root, handle2);
799
806
  return handle2;
800
807
  } catch (e) {
808
+ discardDeferredEffects();
801
809
  endHydration();
802
810
  popScope();
803
811
  runCleanups(scope2);
@@ -891,6 +899,7 @@ export {
891
899
  resolveChildren,
892
900
  resetRelationSchemas_TEST_ONLY,
893
901
  resetInjectedStyles,
902
+ registerTheme,
894
903
  registerRelationSchema,
895
904
  ref,
896
905
  queryMatch,
@@ -898,6 +907,7 @@ export {
898
907
  parseSearchParams,
899
908
  palettes,
900
909
  onMount,
910
+ onAnimationsComplete,
901
911
  mount,
902
912
  keyframes,
903
913
  isRenderNode,
@@ -961,7 +971,6 @@ export {
961
971
  EntityStore,
962
972
  DisposalScopeError,
963
973
  DialogStackContext,
964
- DialogDismissedError,
965
974
  ANIMATION_EASING,
966
975
  ANIMATION_DURATION
967
976
  };