@almadar/ui 6.59.0 → 6.62.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.
- package/dist/BehaviorValueFrame-3ORZHPWQ.css +1252 -0
- package/dist/BehaviorValueFrame-QYFJEMN5.js +18 -0
- package/dist/TraitValueFrame-2WMYJOA5.css +1252 -0
- package/dist/TraitValueFrame-X6IL3UST.js +17 -0
- package/dist/Typography-KBATMU2V.js +5 -0
- package/dist/{UISlotRenderer-YNY7V2UJ.js → UISlotRenderer-NZBV5BUI.js} +12 -10
- package/dist/avl/index.cjs +32263 -28103
- package/dist/avl/index.d.ts +36 -13
- package/dist/avl/index.js +298 -6130
- package/dist/{avl-3d-context-BpBKZIbc.d.ts → avl-3d-context-Dxun3-ri.d.ts} +2 -0
- package/dist/{chunk-YYYHH5BA.js → chunk-7JRWELUC.js} +4 -6
- package/dist/{chunk-723MJUU3.js → chunk-CXQENFO2.js} +1 -1
- package/dist/chunk-D4NAA2JW.js +49 -0
- package/dist/{chunk-I5QOYW2Z.js → chunk-DXPCAQJU.js} +205 -2
- package/dist/{chunk-J755QADM.js → chunk-EDPUQ2ZJ.js} +327 -18
- package/dist/{chunk-4ZGXIW3B.js → chunk-ERDYADVZ.js} +1 -1
- package/dist/{chunk-7CVXM2KS.js → chunk-EZ5FSNOE.js} +2 -2
- package/dist/{chunk-E6MWYQVZ.js → chunk-G6EFTACU.js} +9713 -786
- package/dist/{chunk-MZIDOJMD.js → chunk-GVQOTA7T.js} +2 -1
- package/dist/{chunk-Q47ZN2DW.js → chunk-N23SVGTH.js} +83 -1
- package/dist/{chunk-KJGVLXEN.js → chunk-N4IJS5DD.js} +50 -116
- package/dist/{chunk-LZRW6GXG.js → chunk-QOV3TUAA.js} +2 -3
- package/dist/chunk-WBWXBA5H.js +434 -0
- package/dist/{chunk-V3FGTQUE.js → chunk-ZR45FGW3.js} +7 -1
- package/dist/{cn-DIql5232.d.ts → cn-CDIhHCUC.d.ts} +40 -16
- package/dist/components/index.cjs +14779 -4354
- package/dist/components/index.d.ts +200 -180
- package/dist/components/index.js +16 -17
- package/dist/context/index.cjs +9 -1
- package/dist/context/index.js +3 -1
- package/dist/hooks/index.cjs +78 -9
- package/dist/hooks/index.d.ts +43 -2
- package/dist/hooks/index.js +6 -7
- package/dist/lib/drawable/three/index.cjs +361 -27
- package/dist/lib/drawable/three/index.d.ts +2 -2
- package/dist/lib/drawable/three/index.js +28 -7
- package/dist/lib/index.cjs +117 -5
- package/dist/lib/index.d.ts +2 -2
- package/dist/lib/index.js +99 -6
- package/dist/locales/index.cjs +6 -9
- package/dist/locales/index.js +2 -2
- package/dist/providers/index.cjs +14137 -1311
- package/dist/providers/index.d.ts +36 -4
- package/dist/providers/index.js +37 -17
- package/dist/runtime/index.cjs +28769 -18640
- package/dist/runtime/index.d.ts +70 -3
- package/dist/runtime/index.js +15 -381
- package/dist/ssr/index.cjs +508 -134
- package/dist/ssr/index.d.cts +56 -4
- package/dist/ssr/index.d.ts +56 -4
- package/dist/ssr/index.js +446 -72
- package/dist/{verificationRegistry-B3dj1Zl8.d.ts → verificationRegistry-B5aGl7WF.d.ts} +2 -1
- package/locales/ar.json +2 -3
- package/locales/en.json +2 -3
- package/locales/sl.json +2 -3
- package/package.json +8 -8
- package/tailwind-preset.cjs +78 -8
- package/themes/_base.css +27 -0
- package/themes/_contract.md +6 -0
- package/themes/_fonts.css +4 -4
- package/themes/_foundation.css +11 -0
- package/themes/_presets.css +2 -0
- package/themes/almadar-website.css +10 -0
- package/themes/almadar.css +10 -0
- package/themes/atelier.css +10 -0
- package/themes/bauhaus.css +10 -0
- package/themes/bloomberg-dense.css +10 -0
- package/themes/clay.css +10 -0
- package/themes/corporate.css +10 -0
- package/themes/gazette.css +10 -0
- package/themes/glass.css +10 -0
- package/themes/kflow.css +5 -0
- package/themes/kiosk.css +10 -0
- package/themes/linear-clean.css +10 -0
- package/themes/material.css +10 -0
- package/themes/minimalist.css +10 -0
- package/themes/nata.css +304 -0
- package/themes/neon.css +10 -0
- package/themes/notion-editorial.css +10 -0
- package/themes/orb.css +10 -0
- package/themes/prism.css +10 -0
- package/themes/rawi.css +304 -0
- package/themes/retro.css +10 -0
- package/themes/risograph.css +10 -0
- package/themes/scandi.css +10 -0
- package/themes/solarpunk.css +10 -0
- package/themes/terminal.css +138 -128
- package/dist/Typography-LZTP72Y4.js +0 -5
- package/dist/chunk-D2E44ODB.js +0 -350
- package/dist/chunk-N7JIG57B.js +0 -138
- package/dist/chunk-QJIAJ6EH.js +0 -2256
package/dist/ssr/index.d.cts
CHANGED
|
@@ -2,6 +2,9 @@ import React from 'react';
|
|
|
2
2
|
import { A11yProps, EventKey, EventPayload, EventEmit, Asset, AssetUrl, SurfaceMode, SkeletonSpec } from '@almadar/core';
|
|
3
3
|
import { LucideIcon } from 'lucide-react';
|
|
4
4
|
|
|
5
|
+
type BandEdge = 'none' | 'curve' | 'wave' | 'arc' | 'tilt' | 'step' | 'scallop';
|
|
6
|
+
type BandEdgeColor = 'background' | 'muted' | 'surface' | 'gradient' | 'inverse';
|
|
7
|
+
|
|
5
8
|
/**
|
|
6
9
|
* Box Component
|
|
7
10
|
*
|
|
@@ -11,7 +14,7 @@ import { LucideIcon } from 'lucide-react';
|
|
|
11
14
|
|
|
12
15
|
type BoxPadding = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
|
|
13
16
|
type BoxMargin = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "auto";
|
|
14
|
-
type BoxBg = "transparent" | "primary" | "secondary" | "muted" | "accent" | "surface" | "overlay";
|
|
17
|
+
type BoxBg = "transparent" | "primary" | "secondary" | "muted" | "accent" | "surface" | "overlay" | "gradient" | "inverse";
|
|
15
18
|
type BoxRounded = "none" | "sm" | "md" | "lg" | "xl" | "2xl" | "full";
|
|
16
19
|
type BoxShadow = "none" | "sm" | "md" | "lg" | "xl";
|
|
17
20
|
interface BoxProps extends Omit<React.HTMLAttributes<HTMLDivElement>, keyof A11yProps>, A11yProps {
|
|
@@ -63,7 +66,10 @@ interface BoxProps extends Omit<React.HTMLAttributes<HTMLDivElement>, keyof A11y
|
|
|
63
66
|
* @payloadFor action
|
|
64
67
|
*/
|
|
65
68
|
actionPayload?: EventPayload;
|
|
66
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Declarative hover event — emits UI:{hoverEvent} with { hovered: true/false } on mouseEnter/mouseLeave
|
|
71
|
+
* @notification
|
|
72
|
+
*/
|
|
67
73
|
hoverEvent?: EventEmit<{
|
|
68
74
|
hovered: boolean;
|
|
69
75
|
}>;
|
|
@@ -71,6 +77,20 @@ interface BoxProps extends Omit<React.HTMLAttributes<HTMLDivElement>, keyof A11y
|
|
|
71
77
|
tapReveal?: boolean;
|
|
72
78
|
/** Maximum width (CSS value, e.g., "550px", "80rem") */
|
|
73
79
|
maxWidth?: string;
|
|
80
|
+
/** Shape cut into the top edge of a full-width band; "curve" uses the theme's shape */
|
|
81
|
+
edgeTop?: BandEdge;
|
|
82
|
+
/** Shape cut into the bottom edge of a full-width band; "curve" uses the theme's shape */
|
|
83
|
+
edgeBottom?: BandEdge;
|
|
84
|
+
/** Surface of the neighbouring band, which fills the cut */
|
|
85
|
+
edgeColor?: BandEdgeColor;
|
|
86
|
+
/** Mirror the edge shapes horizontally */
|
|
87
|
+
edgeFlip?: boolean;
|
|
88
|
+
/** Lay the theme's texture over the band */
|
|
89
|
+
texture?: boolean;
|
|
90
|
+
/** Content that appears or changes inside the box eases in instead of switching in one frame (new rows, swapped views, changed text), played in presentation motion (the theme's dramatic duration, standard easing) so it can be watched. Off under reduced motion. */
|
|
91
|
+
animateChanges?: boolean;
|
|
92
|
+
/** Scene behind the band's content (photo, illustration, pattern); never takes clicks */
|
|
93
|
+
backdrop?: React.ReactNode;
|
|
74
94
|
/** Children elements */
|
|
75
95
|
children?: React.ReactNode;
|
|
76
96
|
}
|
|
@@ -115,7 +135,10 @@ interface StackProps extends Omit<React.AriaAttributes, keyof A11yProps>, A11yPr
|
|
|
115
135
|
as?: React.ElementType;
|
|
116
136
|
/** Click handler */
|
|
117
137
|
onClick?: (e: React.MouseEvent) => void;
|
|
118
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* Keyboard handler
|
|
140
|
+
* @notification
|
|
141
|
+
*/
|
|
119
142
|
onKeyDown?: (e: React.KeyboardEvent) => void;
|
|
120
143
|
/** Element id */
|
|
121
144
|
id?: string;
|
|
@@ -292,7 +315,7 @@ declare const Icon: React.FC<IconProps>;
|
|
|
292
315
|
type ButtonVariant = "primary" | "secondary" | "ghost" | "danger" | "success" | "warning" | "default" | "link";
|
|
293
316
|
type ButtonSize = "sm" | "md" | "lg";
|
|
294
317
|
/** @accessibleName label */
|
|
295
|
-
interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof A11yProps>, A11yProps {
|
|
318
|
+
interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof A11yProps | 'onClick'>, A11yProps {
|
|
296
319
|
/** Additional CSS classes applied to the root element. */
|
|
297
320
|
className?: string;
|
|
298
321
|
variant?: ButtonVariant;
|
|
@@ -323,6 +346,11 @@ interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>
|
|
|
323
346
|
disabled?: boolean;
|
|
324
347
|
/** Makes the button a link: `#anchor` scrolls, an absolute URL loads, a path navigates in-app */
|
|
325
348
|
href?: string;
|
|
349
|
+
/**
|
|
350
|
+
* Runs on activation, on the button or, with `href`, on the link; calling
|
|
351
|
+
* `preventDefault()` there keeps a link from following its `href`.
|
|
352
|
+
*/
|
|
353
|
+
onClick?: (event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;
|
|
326
354
|
/** Test identifier for automated tests */
|
|
327
355
|
'data-testid'?: string;
|
|
328
356
|
}
|
|
@@ -498,6 +526,7 @@ declare const Avatar: React.FC<AvatarProps>;
|
|
|
498
526
|
type ImageFit = 'cover' | 'contain' | 'fill' | 'none';
|
|
499
527
|
type ImageAspect = 'auto' | '1/1' | '4/3' | '3/2' | '16/9' | '21/9';
|
|
500
528
|
type ImageRounded = 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';
|
|
529
|
+
type ImagePosition = 'center' | 'top' | 'bottom' | 'left' | 'right';
|
|
501
530
|
/** @accessibleName alt */
|
|
502
531
|
interface ImageProps extends A11yProps {
|
|
503
532
|
/** Image source URL */
|
|
@@ -514,6 +543,14 @@ interface ImageProps extends A11yProps {
|
|
|
514
543
|
bordered?: boolean;
|
|
515
544
|
/** "lazy" defers off-screen images; "eager" for above-the-fold media */
|
|
516
545
|
loading?: 'lazy' | 'eager';
|
|
546
|
+
/** Which part of the image stays visible when it is cropped */
|
|
547
|
+
position?: ImagePosition;
|
|
548
|
+
/** Candidate sources at different widths (the HTML `srcset`) */
|
|
549
|
+
srcSet?: string;
|
|
550
|
+
/** Rendered widths at each breakpoint (the HTML `sizes`) */
|
|
551
|
+
sizes?: string;
|
|
552
|
+
/** The page's main image: load it first */
|
|
553
|
+
priority?: boolean;
|
|
517
554
|
/** Additional class names */
|
|
518
555
|
className?: string;
|
|
519
556
|
}
|
|
@@ -702,6 +739,21 @@ interface AnimatedRevealProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
|
|
|
702
739
|
delay?: number;
|
|
703
740
|
/** How much of the element must be visible before triggering, 0-1 (default: 0.15) */
|
|
704
741
|
threshold?: number;
|
|
742
|
+
/**
|
|
743
|
+
* scroll trigger: event emitted once (as UI:{revealEvent}) the first time the element scrolls into view; never under reduced motion
|
|
744
|
+
* @notification
|
|
745
|
+
*/
|
|
746
|
+
revealEvent?: EventKey;
|
|
747
|
+
/**
|
|
748
|
+
* scroll trigger: event emitted (as UI:{enterEvent}) every time the element enters the view
|
|
749
|
+
* @notification
|
|
750
|
+
*/
|
|
751
|
+
enterEvent?: EventKey;
|
|
752
|
+
/**
|
|
753
|
+
* scroll trigger: event emitted (as UI:{leaveEvent}) every time the element leaves the view after having entered it
|
|
754
|
+
* @notification
|
|
755
|
+
*/
|
|
756
|
+
leaveEvent?: EventKey;
|
|
705
757
|
/** Animate only the first time the element enters the viewport (default: true) */
|
|
706
758
|
once?: boolean;
|
|
707
759
|
/** Manual control: when trigger='manual', set this to true to animate */
|
package/dist/ssr/index.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ import React from 'react';
|
|
|
2
2
|
import { A11yProps, EventKey, EventPayload, EventEmit, Asset, AssetUrl, SurfaceMode, SkeletonSpec } from '@almadar/core';
|
|
3
3
|
import { LucideIcon } from 'lucide-react';
|
|
4
4
|
|
|
5
|
+
type BandEdge = 'none' | 'curve' | 'wave' | 'arc' | 'tilt' | 'step' | 'scallop';
|
|
6
|
+
type BandEdgeColor = 'background' | 'muted' | 'surface' | 'gradient' | 'inverse';
|
|
7
|
+
|
|
5
8
|
/**
|
|
6
9
|
* Box Component
|
|
7
10
|
*
|
|
@@ -11,7 +14,7 @@ import { LucideIcon } from 'lucide-react';
|
|
|
11
14
|
|
|
12
15
|
type BoxPadding = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
|
|
13
16
|
type BoxMargin = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "auto";
|
|
14
|
-
type BoxBg = "transparent" | "primary" | "secondary" | "muted" | "accent" | "surface" | "overlay";
|
|
17
|
+
type BoxBg = "transparent" | "primary" | "secondary" | "muted" | "accent" | "surface" | "overlay" | "gradient" | "inverse";
|
|
15
18
|
type BoxRounded = "none" | "sm" | "md" | "lg" | "xl" | "2xl" | "full";
|
|
16
19
|
type BoxShadow = "none" | "sm" | "md" | "lg" | "xl";
|
|
17
20
|
interface BoxProps extends Omit<React.HTMLAttributes<HTMLDivElement>, keyof A11yProps>, A11yProps {
|
|
@@ -63,7 +66,10 @@ interface BoxProps extends Omit<React.HTMLAttributes<HTMLDivElement>, keyof A11y
|
|
|
63
66
|
* @payloadFor action
|
|
64
67
|
*/
|
|
65
68
|
actionPayload?: EventPayload;
|
|
66
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Declarative hover event — emits UI:{hoverEvent} with { hovered: true/false } on mouseEnter/mouseLeave
|
|
71
|
+
* @notification
|
|
72
|
+
*/
|
|
67
73
|
hoverEvent?: EventEmit<{
|
|
68
74
|
hovered: boolean;
|
|
69
75
|
}>;
|
|
@@ -71,6 +77,20 @@ interface BoxProps extends Omit<React.HTMLAttributes<HTMLDivElement>, keyof A11y
|
|
|
71
77
|
tapReveal?: boolean;
|
|
72
78
|
/** Maximum width (CSS value, e.g., "550px", "80rem") */
|
|
73
79
|
maxWidth?: string;
|
|
80
|
+
/** Shape cut into the top edge of a full-width band; "curve" uses the theme's shape */
|
|
81
|
+
edgeTop?: BandEdge;
|
|
82
|
+
/** Shape cut into the bottom edge of a full-width band; "curve" uses the theme's shape */
|
|
83
|
+
edgeBottom?: BandEdge;
|
|
84
|
+
/** Surface of the neighbouring band, which fills the cut */
|
|
85
|
+
edgeColor?: BandEdgeColor;
|
|
86
|
+
/** Mirror the edge shapes horizontally */
|
|
87
|
+
edgeFlip?: boolean;
|
|
88
|
+
/** Lay the theme's texture over the band */
|
|
89
|
+
texture?: boolean;
|
|
90
|
+
/** Content that appears or changes inside the box eases in instead of switching in one frame (new rows, swapped views, changed text), played in presentation motion (the theme's dramatic duration, standard easing) so it can be watched. Off under reduced motion. */
|
|
91
|
+
animateChanges?: boolean;
|
|
92
|
+
/** Scene behind the band's content (photo, illustration, pattern); never takes clicks */
|
|
93
|
+
backdrop?: React.ReactNode;
|
|
74
94
|
/** Children elements */
|
|
75
95
|
children?: React.ReactNode;
|
|
76
96
|
}
|
|
@@ -115,7 +135,10 @@ interface StackProps extends Omit<React.AriaAttributes, keyof A11yProps>, A11yPr
|
|
|
115
135
|
as?: React.ElementType;
|
|
116
136
|
/** Click handler */
|
|
117
137
|
onClick?: (e: React.MouseEvent) => void;
|
|
118
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* Keyboard handler
|
|
140
|
+
* @notification
|
|
141
|
+
*/
|
|
119
142
|
onKeyDown?: (e: React.KeyboardEvent) => void;
|
|
120
143
|
/** Element id */
|
|
121
144
|
id?: string;
|
|
@@ -292,7 +315,7 @@ declare const Icon: React.FC<IconProps>;
|
|
|
292
315
|
type ButtonVariant = "primary" | "secondary" | "ghost" | "danger" | "success" | "warning" | "default" | "link";
|
|
293
316
|
type ButtonSize = "sm" | "md" | "lg";
|
|
294
317
|
/** @accessibleName label */
|
|
295
|
-
interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof A11yProps>, A11yProps {
|
|
318
|
+
interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof A11yProps | 'onClick'>, A11yProps {
|
|
296
319
|
/** Additional CSS classes applied to the root element. */
|
|
297
320
|
className?: string;
|
|
298
321
|
variant?: ButtonVariant;
|
|
@@ -323,6 +346,11 @@ interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>
|
|
|
323
346
|
disabled?: boolean;
|
|
324
347
|
/** Makes the button a link: `#anchor` scrolls, an absolute URL loads, a path navigates in-app */
|
|
325
348
|
href?: string;
|
|
349
|
+
/**
|
|
350
|
+
* Runs on activation, on the button or, with `href`, on the link; calling
|
|
351
|
+
* `preventDefault()` there keeps a link from following its `href`.
|
|
352
|
+
*/
|
|
353
|
+
onClick?: (event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;
|
|
326
354
|
/** Test identifier for automated tests */
|
|
327
355
|
'data-testid'?: string;
|
|
328
356
|
}
|
|
@@ -498,6 +526,7 @@ declare const Avatar: React.FC<AvatarProps>;
|
|
|
498
526
|
type ImageFit = 'cover' | 'contain' | 'fill' | 'none';
|
|
499
527
|
type ImageAspect = 'auto' | '1/1' | '4/3' | '3/2' | '16/9' | '21/9';
|
|
500
528
|
type ImageRounded = 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';
|
|
529
|
+
type ImagePosition = 'center' | 'top' | 'bottom' | 'left' | 'right';
|
|
501
530
|
/** @accessibleName alt */
|
|
502
531
|
interface ImageProps extends A11yProps {
|
|
503
532
|
/** Image source URL */
|
|
@@ -514,6 +543,14 @@ interface ImageProps extends A11yProps {
|
|
|
514
543
|
bordered?: boolean;
|
|
515
544
|
/** "lazy" defers off-screen images; "eager" for above-the-fold media */
|
|
516
545
|
loading?: 'lazy' | 'eager';
|
|
546
|
+
/** Which part of the image stays visible when it is cropped */
|
|
547
|
+
position?: ImagePosition;
|
|
548
|
+
/** Candidate sources at different widths (the HTML `srcset`) */
|
|
549
|
+
srcSet?: string;
|
|
550
|
+
/** Rendered widths at each breakpoint (the HTML `sizes`) */
|
|
551
|
+
sizes?: string;
|
|
552
|
+
/** The page's main image: load it first */
|
|
553
|
+
priority?: boolean;
|
|
517
554
|
/** Additional class names */
|
|
518
555
|
className?: string;
|
|
519
556
|
}
|
|
@@ -702,6 +739,21 @@ interface AnimatedRevealProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
|
|
|
702
739
|
delay?: number;
|
|
703
740
|
/** How much of the element must be visible before triggering, 0-1 (default: 0.15) */
|
|
704
741
|
threshold?: number;
|
|
742
|
+
/**
|
|
743
|
+
* scroll trigger: event emitted once (as UI:{revealEvent}) the first time the element scrolls into view; never under reduced motion
|
|
744
|
+
* @notification
|
|
745
|
+
*/
|
|
746
|
+
revealEvent?: EventKey;
|
|
747
|
+
/**
|
|
748
|
+
* scroll trigger: event emitted (as UI:{enterEvent}) every time the element enters the view
|
|
749
|
+
* @notification
|
|
750
|
+
*/
|
|
751
|
+
enterEvent?: EventKey;
|
|
752
|
+
/**
|
|
753
|
+
* scroll trigger: event emitted (as UI:{leaveEvent}) every time the element leaves the view after having entered it
|
|
754
|
+
* @notification
|
|
755
|
+
*/
|
|
756
|
+
leaveEvent?: EventKey;
|
|
705
757
|
/** Animate only the first time the element enters the viewport (default: true) */
|
|
706
758
|
once?: boolean;
|
|
707
759
|
/** Manual control: when trigger='manual', set this to true to animate */
|