@streamsai/ui 0.0.0-stage → 0.1.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 (206) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +57 -2
  3. package/dist/components/ui/agent-avatar.d.ts +50 -0
  4. package/dist/components/ui/agent-avatar.js +38 -0
  5. package/dist/components/ui/alert-dialog.d.ts +12 -0
  6. package/dist/components/ui/alert-dialog.js +37 -0
  7. package/dist/components/ui/alert.d.ts +10 -0
  8. package/dist/components/ui/alert.js +28 -0
  9. package/dist/components/ui/assets/loader.json.js +1 -0
  10. package/dist/components/ui/avatar-frame.d.ts +11 -0
  11. package/dist/components/ui/avatar-frame.js +20 -0
  12. package/dist/components/ui/avatar.d.ts +23 -0
  13. package/dist/components/ui/avatar.js +54 -0
  14. package/dist/components/ui/badge.d.ts +7 -0
  15. package/dist/components/ui/badge.js +36 -0
  16. package/dist/components/ui/bar-list.d.ts +40 -0
  17. package/dist/components/ui/bar-list.js +37 -0
  18. package/dist/components/ui/breadcrumb.d.ts +8 -0
  19. package/dist/components/ui/breadcrumb.js +21 -0
  20. package/dist/components/ui/button-group.d.ts +10 -0
  21. package/dist/components/ui/button-group.js +41 -0
  22. package/dist/components/ui/button.d.ts +9 -0
  23. package/dist/components/ui/button.js +39 -0
  24. package/dist/components/ui/card.d.ts +9 -0
  25. package/dist/components/ui/card.js +25 -0
  26. package/dist/components/ui/checkbox.d.ts +3 -0
  27. package/dist/components/ui/checkbox.js +16 -0
  28. package/dist/components/ui/chip.d.ts +13 -0
  29. package/dist/components/ui/chip.js +22 -0
  30. package/dist/components/ui/clickable.d.ts +27 -0
  31. package/dist/components/ui/clickable.js +54 -0
  32. package/dist/components/ui/code-block.d.ts +68 -0
  33. package/dist/components/ui/code-block.js +112 -0
  34. package/dist/components/ui/code-view.d.ts +21 -0
  35. package/dist/components/ui/code-view.js +20 -0
  36. package/dist/components/ui/collapsible.d.ts +6 -0
  37. package/dist/components/ui/collapsible.js +18 -0
  38. package/dist/components/ui/combobox.d.ts +14 -0
  39. package/dist/components/ui/combobox.js +37 -0
  40. package/dist/components/ui/command.d.ts +15 -0
  41. package/dist/components/ui/command.js +34 -0
  42. package/dist/components/ui/context-menu.d.ts +21 -0
  43. package/dist/components/ui/context-menu.js +60 -0
  44. package/dist/components/ui/counter.d.ts +11 -0
  45. package/dist/components/ui/counter.js +20 -0
  46. package/dist/components/ui/dialog.d.ts +17 -0
  47. package/dist/components/ui/dialog.js +41 -0
  48. package/dist/components/ui/disabled-reason.d.ts +22 -0
  49. package/dist/components/ui/disabled-reason.js +16 -0
  50. package/dist/components/ui/dropdown-menu.d.ts +33 -0
  51. package/dist/components/ui/dropdown-menu.js +58 -0
  52. package/dist/components/ui/editable-text.d.ts +95 -0
  53. package/dist/components/ui/editable-text.js +191 -0
  54. package/dist/components/ui/heading.d.ts +24 -0
  55. package/dist/components/ui/heading.js +92 -0
  56. package/dist/components/ui/hover-card.d.ts +9 -0
  57. package/dist/components/ui/hover-card.js +16 -0
  58. package/dist/components/ui/icon-button.d.ts +23 -0
  59. package/dist/components/ui/icon-button.js +32 -0
  60. package/dist/components/ui/input.d.ts +3 -0
  61. package/dist/components/ui/input.js +8 -0
  62. package/dist/components/ui/kbd.d.ts +12 -0
  63. package/dist/components/ui/kbd.js +12 -0
  64. package/dist/components/ui/label.d.ts +3 -0
  65. package/dist/components/ui/label.js +7 -0
  66. package/dist/components/ui/loader.d.ts +19 -0
  67. package/dist/components/ui/loader.js +157 -0
  68. package/dist/components/ui/message-toolbar.d.ts +20 -0
  69. package/dist/components/ui/message-toolbar.js +17 -0
  70. package/dist/components/ui/modal.d.ts +30 -0
  71. package/dist/components/ui/modal.js +41 -0
  72. package/dist/components/ui/nav-item.d.ts +25 -0
  73. package/dist/components/ui/nav-item.js +66 -0
  74. package/dist/components/ui/panel-section.d.ts +22 -0
  75. package/dist/components/ui/panel-section.js +26 -0
  76. package/dist/components/ui/popover.d.ts +14 -0
  77. package/dist/components/ui/popover.js +30 -0
  78. package/dist/components/ui/progress.d.ts +5 -0
  79. package/dist/components/ui/progress.js +16 -0
  80. package/dist/components/ui/provider-badge.d.ts +22 -0
  81. package/dist/components/ui/provider-badge.js +38 -0
  82. package/dist/components/ui/radio-group.d.ts +5 -0
  83. package/dist/components/ui/radio-group.js +21 -0
  84. package/dist/components/ui/reply-summary.d.ts +16 -0
  85. package/dist/components/ui/reply-summary.js +8 -0
  86. package/dist/components/ui/resizable.d.ts +8 -0
  87. package/dist/components/ui/resizable.js +15 -0
  88. package/dist/components/ui/rich-text-editor.d.ts +447 -0
  89. package/dist/components/ui/rich-text-editor.js +2419 -0
  90. package/dist/components/ui/running-indicator.d.ts +17 -0
  91. package/dist/components/ui/running-indicator.js +34 -0
  92. package/dist/components/ui/sandboxed-frame.d.ts +29 -0
  93. package/dist/components/ui/sandboxed-frame.js +77 -0
  94. package/dist/components/ui/scroll-area.d.ts +14 -0
  95. package/dist/components/ui/scroll-area.js +17 -0
  96. package/dist/components/ui/section-header.d.ts +12 -0
  97. package/dist/components/ui/section-header.js +12 -0
  98. package/dist/components/ui/select.d.ts +15 -0
  99. package/dist/components/ui/select.js +40 -0
  100. package/dist/components/ui/separator.d.ts +3 -0
  101. package/dist/components/ui/separator.js +13 -0
  102. package/dist/components/ui/sheet.d.ts +23 -0
  103. package/dist/components/ui/sheet.js +48 -0
  104. package/dist/components/ui/shimmer-text.d.ts +26 -0
  105. package/dist/components/ui/shimmer-text.js +32 -0
  106. package/dist/components/ui/sidebar.d.ts +63 -0
  107. package/dist/components/ui/sidebar.js +283 -0
  108. package/dist/components/ui/skeleton.d.ts +14 -0
  109. package/dist/components/ui/skeleton.js +12 -0
  110. package/dist/components/ui/sonner.d.ts +4 -0
  111. package/dist/components/ui/sonner.js +14 -0
  112. package/dist/components/ui/spark-bars.d.ts +29 -0
  113. package/dist/components/ui/spark-bars.js +24 -0
  114. package/dist/components/ui/spinner.d.ts +16 -0
  115. package/dist/components/ui/spinner.js +26 -0
  116. package/dist/components/ui/stacked-bar.d.ts +37 -0
  117. package/dist/components/ui/stacked-bar.js +56 -0
  118. package/dist/components/ui/status-dot.d.ts +16 -0
  119. package/dist/components/ui/status-dot.js +32 -0
  120. package/dist/components/ui/switch.d.ts +5 -0
  121. package/dist/components/ui/switch.js +13 -0
  122. package/dist/components/ui/tabs.d.ts +14 -0
  123. package/dist/components/ui/tabs.js +55 -0
  124. package/dist/components/ui/text.d.ts +27 -0
  125. package/dist/components/ui/text.js +100 -0
  126. package/dist/components/ui/textarea.d.ts +3 -0
  127. package/dist/components/ui/textarea.js +7 -0
  128. package/dist/components/ui/theme-toggle.d.ts +21 -0
  129. package/dist/components/ui/theme-toggle.js +17 -0
  130. package/dist/components/ui/toggle-group.d.ts +6 -0
  131. package/dist/components/ui/toggle-group.js +12 -0
  132. package/dist/components/ui/tooltip.d.ts +11 -0
  133. package/dist/components/ui/tooltip.js +21 -0
  134. package/dist/components/ui/trace.d.ts +24 -0
  135. package/dist/components/ui/trace.js +57 -0
  136. package/dist/components/ui/trend-line.d.ts +93 -0
  137. package/dist/components/ui/trend-line.js +215 -0
  138. package/dist/components/ui/truncate.d.ts +30 -0
  139. package/dist/components/ui/truncate.js +54 -0
  140. package/dist/components/ui/viewer-shell.d.ts +55 -0
  141. package/dist/components/ui/viewer-shell.js +15 -0
  142. package/dist/components/ui/virtual-list.d.ts +91 -0
  143. package/dist/components/ui/virtual-list.js +406 -0
  144. package/dist/components/ui/visually-hidden.d.ts +15 -0
  145. package/dist/components/ui/visually-hidden.js +19 -0
  146. package/dist/direction/index.d.ts +19 -0
  147. package/dist/direction/index.js +32 -0
  148. package/dist/hooks/use-code-highlighting.d.ts +22 -0
  149. package/dist/hooks/use-code-highlighting.js +47 -0
  150. package/dist/hooks/use-is-truncated.d.ts +7 -0
  151. package/dist/hooks/use-is-truncated.js +23 -0
  152. package/dist/hooks/use-mobile.d.ts +2 -0
  153. package/dist/hooks/use-mobile.js +15 -0
  154. package/dist/icons/custom.d.ts +29 -0
  155. package/dist/icons/custom.js +48 -0
  156. package/dist/icons/index.d.ts +49 -0
  157. package/dist/icons/index.js +50 -0
  158. package/dist/icons/provider-logos.d.ts +17 -0
  159. package/dist/icons/provider-logos.js +28 -0
  160. package/dist/icons/providers.d.ts +9 -0
  161. package/dist/icons/providers.js +51 -0
  162. package/dist/index.d.ts +102 -0
  163. package/dist/index.js +124 -0
  164. package/dist/lib/code-highlighter.d.ts +9 -0
  165. package/dist/lib/code-highlighter.js +65 -0
  166. package/dist/lib/code-language.d.ts +13 -0
  167. package/dist/lib/code-language.js +103 -0
  168. package/dist/lib/code-tokens.d.ts +9 -0
  169. package/dist/lib/code-tokens.js +27 -0
  170. package/dist/lib/copy-text.d.ts +6 -0
  171. package/dist/lib/copy-text.js +46 -0
  172. package/dist/lib/home-tile.d.ts +12 -0
  173. package/dist/lib/home-tile.js +45 -0
  174. package/dist/lib/reveal-mask.d.ts +9 -0
  175. package/dist/lib/reveal-mask.js +16 -0
  176. package/dist/lib/text-direction.d.ts +28 -0
  177. package/dist/lib/text-direction.js +119 -0
  178. package/dist/lib/utils.d.ts +11 -0
  179. package/dist/lib/utils.js +30 -0
  180. package/dist/motion/components.d.ts +184 -0
  181. package/dist/motion/components.js +211 -0
  182. package/dist/motion/config.d.ts +849 -0
  183. package/dist/motion/config.js +429 -0
  184. package/dist/motion/index.d.ts +8 -0
  185. package/dist/motion/index.js +8 -0
  186. package/dist/motion/modal-presence.d.ts +5 -0
  187. package/dist/motion/modal-presence.js +27 -0
  188. package/dist/motion/popup.d.ts +77 -0
  189. package/dist/motion/popup.js +103 -0
  190. package/dist/platform/index.d.ts +29 -0
  191. package/dist/platform/index.js +63 -0
  192. package/dist/styles/base.css +319 -0
  193. package/dist/styles/fonts/Figtree-Variable.woff2 +0 -0
  194. package/dist/styles/fonts/OFL.txt +93 -0
  195. package/dist/styles/fonts/Poppins-Medium.woff2 +0 -0
  196. package/dist/styles/fonts/Poppins-Regular.woff2 +0 -0
  197. package/dist/styles/fonts/Poppins-SemiBold.woff2 +0 -0
  198. package/dist/styles/fonts.css +28 -0
  199. package/dist/styles/globals.css +8 -0
  200. package/dist/styles/mcp-host.css +76 -0
  201. package/dist/styles/tokens.css +387 -0
  202. package/dist/styles/tokens.d.mts +57 -0
  203. package/dist/styles/tokens.mjs +59 -0
  204. package/dist/theme/index.d.ts +28 -0
  205. package/dist/theme/index.js +65 -0
  206. package/package.json +136 -3
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Streams
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,58 @@
1
- # Temporary Holding Version
1
+ # @streamsai/ui
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ The Streams design system: shadcn/ui components built on [Base UI](https://base-ui.com), design
4
+ tokens for light and dark themes, a theme provider and the Streams icon set. React 19 and Tailwind CSS v4.
5
+
6
+ ## Install
7
+
8
+ ```sh
9
+ pnpm add @streamsai/ui react react-dom tailwindcss
10
+ ```
11
+
12
+ `react`, `react-dom` and `tailwindcss` are peer dependencies.
13
+
14
+ ## Set up styles
15
+
16
+ In your Tailwind v4 CSS entry, import the package styles after Tailwind is available:
17
+
18
+ ```css
19
+ @import '@streamsai/ui/styles/globals.css';
20
+ ```
21
+
22
+ This brings in Tailwind, the design tokens, the Figtree and Poppins fonts and a `@source` for the
23
+ package's compiled components, so the utility classes they use are generated in your build. Use
24
+ `@streamsai/ui/styles/base.css` instead if you load your own fonts.
25
+
26
+ ## Use
27
+
28
+ ```tsx
29
+ import { Button, ThemeProvider } from '@streamsai/ui'
30
+
31
+ export function App() {
32
+ return (
33
+ <ThemeProvider>
34
+ <Button>Save</Button>
35
+ </ThemeProvider>
36
+ )
37
+ }
38
+ ```
39
+
40
+ Every component is also available as a subpath, for example
41
+ `import { Button } from '@streamsai/ui/components/button'`.
42
+
43
+ `ThemeProvider` toggles the `dark` class on `<html>`. To avoid a flash of the wrong theme, inline
44
+ `THEME_INIT_SCRIPT` (exported from the package) in your HTML before your app script.
45
+
46
+ ## Other entry points
47
+
48
+ | Import | What it is |
49
+ | -------------------------------------------------- | ------------------------------------------------------------- |
50
+ | `@streamsai/ui/tokens` | Design token palette as JavaScript (`colors`, ...) with types |
51
+ | `@streamsai/ui/styles/tokens.css` | Token custom properties only |
52
+ | `@streamsai/ui/styles/mcp-host.css` | Maps the tokens to the MCP Apps host CSS variables |
53
+ | `@streamsai/ui/hooks/*`, `@streamsai/ui/lib/utils` | Shared hooks and the `cn` class merger |
54
+
55
+ ## License
56
+
57
+ MIT. The bundled Figtree and Poppins fonts are licensed under the SIL Open Font License (see
58
+ `dist/styles/fonts/OFL.txt` in the package).
@@ -0,0 +1,50 @@
1
+ import * as React from 'react';
2
+ import { type AgentAvatarSize } from './avatar-frame.js';
3
+ /** A Pingo: static artwork in two widths and two formats, WebP preferred, JPEG as the fallback. */
4
+ export type AgentPingoPicture = {
5
+ kind: 'pingo';
6
+ /** The character's name. */
7
+ alt: string;
8
+ /** Fallback image (the small JPEG). Also the key the fade-in remembers. */
9
+ src: string;
10
+ /** JPEG candidates, e.g. `"/a-128.jpg 128w, /a-320.jpg 320w"`. */
11
+ srcSet: string;
12
+ /** WebP candidates, same widths. */
13
+ webpSrcSet: string;
14
+ /** The same character drawn for the dark theme; the light set above is hidden under `.dark`. */
15
+ dark?: {
16
+ src: string;
17
+ srcSet: string;
18
+ webpSrcSet: string;
19
+ };
20
+ };
21
+ /** Any other picture: an uploaded image (already resolved to a loadable URL) or an external one. */
22
+ export type AgentImagePicture = {
23
+ kind: 'image';
24
+ src: string;
25
+ };
26
+ export type AgentPicture = AgentPingoPicture | AgentImagePicture;
27
+ /**
28
+ * An agent's picture in the rounded-square agent frame, with an optional provider badge hanging
29
+ * off its bottom-right corner. Purely presentational: callers resolve which picture to draw.
30
+ *
31
+ * - The picture is clipped to the frame; the badge is a sibling of that clip so it can overhang.
32
+ * - No picture, or one that failed to load, shows `placeholder`: stable and static, never
33
+ * re-rolled to another character.
34
+ * - Nothing here moves except the one-time fade-in of an image the first time it is shown.
35
+ */
36
+ declare function AgentAvatar({ size, picture, imageFit, placeholder, placeholderClassName, badge, plain, className, }: {
37
+ size?: AgentAvatarSize;
38
+ picture: AgentPicture | null;
39
+ /** How an image fills the frame. `contain` keeps logos whole on a themed plate. */
40
+ imageFit?: 'cover' | 'contain';
41
+ /** Drawn when there is no picture or it failed to load. */
42
+ placeholder?: React.ReactNode;
43
+ placeholderClassName?: string;
44
+ /** Rendered over the bottom-right corner, outside the clip (a `ProviderBadge`). */
45
+ badge?: React.ReactNode;
46
+ /** Skips the hairline outline (the message row's avatar has none). */
47
+ plain?: boolean;
48
+ className?: string;
49
+ }): React.JSX.Element;
50
+ export { AgentAvatar };
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from '../../lib/utils.js';
4
+ import { FadeImage } from './avatar.js';
5
+ import { AGENT_AVATAR_PX, AGENT_AVATAR_RADIUS, AGENT_AVATAR_SIZE, } from './avatar-frame.js';
6
+ /**
7
+ * An agent's picture in the rounded-square agent frame, with an optional provider badge hanging
8
+ * off its bottom-right corner. Purely presentational: callers resolve which picture to draw.
9
+ *
10
+ * - The picture is clipped to the frame; the badge is a sibling of that clip so it can overhang.
11
+ * - No picture, or one that failed to load, shows `placeholder`: stable and static, never
12
+ * re-rolled to another character.
13
+ * - Nothing here moves except the one-time fade-in of an image the first time it is shown.
14
+ */
15
+ function AgentAvatar({ size = 'default', picture, imageFit = 'cover', placeholder, placeholderClassName, badge, plain = false, className, }) {
16
+ // The source that failed, so a new source gets a fresh try but the same one never retries.
17
+ const key = picture ? picture.src : null;
18
+ const [failedKey, setFailedKey] = React.useState(null);
19
+ const failed = key !== null && failedKey === key;
20
+ const shown = picture && !failed ? picture : null;
21
+ const contain = imageFit === 'contain' && shown?.kind === 'image';
22
+ const px = AGENT_AVATAR_PX[size];
23
+ const onError = () => setFailedKey(key);
24
+ return (_jsxs("span", { "data-slot": "avatar", "data-size": size, "data-picture": shown ? shown.kind : 'placeholder', "data-image-fit": contain ? 'contain' : undefined, className: cn('group/avatar relative flex shrink-0 select-none', AGENT_AVATAR_SIZE, className), style: { borderRadius: AGENT_AVATAR_RADIUS[size] }, children: [_jsx("span", { "data-slot": "avatar-clip", className: cn('relative flex size-full items-center justify-center overflow-hidden bg-muted', !plain &&
25
+ 'after:pointer-events-none after:absolute after:inset-0 after:rounded-[inherit] after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten',
26
+ // Tight hairline inset: the SVG already pads for corners. Mobile gets a slightly larger
27
+ // inset via the platform attribute (corner clip + thumb).
28
+ contain && 'bg-background p-0.5 in-data-[platform=mobile]:p-1'), style: { borderRadius: 'inherit' }, children: shown?.kind === 'pingo' ? (
29
+ // The theme is the `.dark` class on <html>, not `prefers-color-scheme`, so a <picture>
30
+ // media query cannot pick the artwork: the dark set is a sibling shown by `dark:block`.
31
+ _jsxs(_Fragment, { children: [_jsx(PingoImage, { set: shown, alt: shown.alt, px: px, onError: onError, className: shown.dark ? 'dark:hidden' : undefined }), shown.dark ? (_jsx(PingoImage, { set: shown.dark, alt: shown.alt, px: px, onError: onError, className: "hidden dark:contents", dark: true })) : null] })) : shown?.kind === 'image' ? (_jsx(FadeImage, { "data-slot": "avatar-image", src: shown.src, alt: "", draggable: false, className: cn('size-full', contain ? 'object-contain object-center' : 'aspect-square object-cover'), onError: onError })) : (_jsx("span", { "data-slot": "avatar-fallback", className: cn('flex size-full items-center justify-center bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs group-data-[size=xl]/avatar:text-4xl group-data-[size=xl]/avatar:[&>svg]:size-12', placeholderClassName), children: placeholder })) }), badge] }));
32
+ }
33
+ // `contents` on the <picture> so the image sizes against the frame, not an inline <picture> that
34
+ // shrinks to the nominal size and ignores a call site's own frame size (56px, 144px).
35
+ function PingoImage({ set, alt, px, onError, className, dark = false, }) {
36
+ return (_jsxs("picture", { className: cn('contents', className), "data-variant": dark ? 'dark' : undefined, children: [_jsx("source", { type: "image/webp", srcSet: set.webpSrcSet, sizes: `${px}px` }), _jsx(FadeImage, { "data-slot": "avatar-image", src: set.src, srcSet: set.srcSet, sizes: `${px}px`, alt: alt, width: 128, height: 128, draggable: false, className: "aspect-square size-full object-cover", onError: onError })] }));
37
+ }
38
+ export { AgentAvatar };
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ import { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog';
3
+ declare function AlertDialog({ actionsRef, onOpenChange, ...props }: AlertDialogPrimitive.Root.Props): React.JSX.Element;
4
+ declare function AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props): React.JSX.Element;
5
+ declare function AlertDialogContent({ className, children, ...props }: AlertDialogPrimitive.Popup.Props): React.JSX.Element;
6
+ declare function AlertDialogHeader({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
7
+ declare function AlertDialogFooter({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
8
+ declare function AlertDialogTitle({ className, ...props }: AlertDialogPrimitive.Title.Props): React.JSX.Element;
9
+ declare function AlertDialogDescription({ className, ...props }: AlertDialogPrimitive.Description.Props): React.JSX.Element;
10
+ declare function AlertDialogAction({ className, ...props }: AlertDialogPrimitive.Close.Props): React.JSX.Element;
11
+ declare function AlertDialogCancel({ className, ...props }: AlertDialogPrimitive.Close.Props): React.JSX.Element;
12
+ export { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog';
4
+ import { cn } from '../../lib/utils.js';
5
+ import { PopupExitContext, renderBackdrop, useModalRender, usePopupExit } from '../../motion/popup.js';
6
+ import { presets } from '../../motion/config.js';
7
+ import { buttonVariants } from './button.js';
8
+ function AlertDialog({ actionsRef, onOpenChange, ...props }) {
9
+ const exit = usePopupExit(actionsRef, onOpenChange);
10
+ return (_jsx(PopupExitContext, { value: exit.unmount, children: _jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props, actionsRef: exit.actionsRef, onOpenChange: exit.onOpenChange }) }));
11
+ }
12
+ function AlertDialogTrigger({ ...props }) {
13
+ return _jsx(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
14
+ }
15
+ function AlertDialogContent({ className, children, ...props }) {
16
+ const renderPopup = useModalRender(presets.dialog);
17
+ return (_jsxs(AlertDialogPrimitive.Portal, { children: [_jsx(AlertDialogPrimitive.Backdrop, { render: renderBackdrop, "data-slot": "alert-dialog-overlay", className: "fixed inset-y-0 left-[var(--overlay-inset-left,0px)] right-[var(--overlay-inset-right,0px)] z-(--z-modal) bg-black/10" }), _jsx(AlertDialogPrimitive.Popup, { render: renderPopup, "data-slot": "alert-dialog-content", className: cn('fixed top-1/2 left-[var(--overlay-inset-left,0px)] right-[var(--overlay-inset-right,0px)] mx-auto z-(--z-modal) grid w-[calc(100%-var(--overlay-inset-left,0px)-var(--overlay-inset-right,0px)-var(--modal-gutter,2rem))]! -translate-y-1/2 gap-4 rounded-xl bg-popover p-6 shadow-lg ring-1 ring-foreground/10 outline-none sm:max-w-lg', className), ...props, children: children })] }));
18
+ }
19
+ function AlertDialogHeader({ className, ...props }) {
20
+ return (_jsx("div", { "data-slot": "alert-dialog-header", className: cn('flex flex-col gap-2', className), ...props }));
21
+ }
22
+ function AlertDialogFooter({ className, ...props }) {
23
+ return (_jsx("div", { "data-slot": "alert-dialog-footer", className: cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className), ...props }));
24
+ }
25
+ function AlertDialogTitle({ className, ...props }) {
26
+ return (_jsx(AlertDialogPrimitive.Title, { "data-slot": "alert-dialog-title", className: cn('text-lg font-semibold', className), ...props }));
27
+ }
28
+ function AlertDialogDescription({ className, ...props }) {
29
+ return (_jsx(AlertDialogPrimitive.Description, { "data-slot": "alert-dialog-description", className: cn('text-sm text-muted-foreground', className), ...props }));
30
+ }
31
+ function AlertDialogAction({ className, ...props }) {
32
+ return (_jsx(AlertDialogPrimitive.Close, { "data-slot": "alert-dialog-action", className: cn(buttonVariants(), className), ...props }));
33
+ }
34
+ function AlertDialogCancel({ className, ...props }) {
35
+ return (_jsx(AlertDialogPrimitive.Close, { "data-slot": "alert-dialog-cancel", className: cn(buttonVariants({ variant: 'outline' }), className), ...props }));
36
+ }
37
+ export { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const alertVariants: (props?: ({
4
+ variant?: "default" | "destructive" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ declare function Alert({ className, variant, ...props }: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>): React.JSX.Element;
7
+ declare function AlertTitle({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
8
+ declare function AlertDescription({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
9
+ declare function AlertAction({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
10
+ export { Alert, AlertTitle, AlertDescription, AlertAction };
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cva } from 'class-variance-authority';
4
+ import { cn } from '../../lib/utils.js';
5
+ const alertVariants = cva("group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4", {
6
+ variants: {
7
+ variant: {
8
+ default: 'bg-card text-card-foreground',
9
+ destructive: 'bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current',
10
+ },
11
+ },
12
+ defaultVariants: {
13
+ variant: 'default',
14
+ },
15
+ });
16
+ function Alert({ className, variant, ...props }) {
17
+ return (_jsx("div", { "data-slot": "alert", role: "alert", className: cn(alertVariants({ variant }), className), ...props }));
18
+ }
19
+ function AlertTitle({ className, ...props }) {
20
+ return (_jsx("div", { "data-slot": "alert-title", className: cn('font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground', className), ...props }));
21
+ }
22
+ function AlertDescription({ className, ...props }) {
23
+ return (_jsx("div", { "data-slot": "alert-description", className: cn('text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4', className), ...props }));
24
+ }
25
+ function AlertAction({ className, ...props }) {
26
+ return (_jsx("div", { "data-slot": "alert-action", className: cn('absolute top-2 right-2', className), ...props }));
27
+ }
28
+ export { Alert, AlertTitle, AlertDescription, AlertAction };
@@ -0,0 +1 @@
1
+ export default {"v":"5.9.0","fr":60,"ip":0,"op":196,"w":160,"h":80,"nm":"Streams_Loader_Op_19_Export","ddd":0,"assets":[{"id":"comp_0","nm":"Pre-comp 10","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 4","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[960,539,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[40,40,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":231,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 2","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":31,"s":[-27.25,-27,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"t":41,"s":[-27.25,-27,0],"to":[0,0,0],"ti":[0,0,0]},{"t":71,"s":[62.75,-27,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-81.75,27.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[54,54],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-81.75,27.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8.539,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":11,"op":57,"st":-2,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 3","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":31,"s":[27,27.25,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"t":41,"s":[27,27.25,0],"to":[0,0,0],"ti":[0,0,0]},{"t":71,"s":[-69,27.25,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-81.75,27.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[54,54],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-81.75,27.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8.539,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":21,"op":57,"st":-2,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 9","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.387,"y":0.387},"t":31,"s":[-81.75,28,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"t":41,"s":[-81.75,28,0],"to":[0,0,0],"ti":[0,0,0]},{"t":71,"s":[-171.75,28,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-81.75,27.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[54,54],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-81.75,27.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8.539,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":57,"st":-2,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 4","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.717,"y":1},"o":{"x":0.387,"y":0},"t":1,"s":[-81.75,28,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.756,"y":0.894},"o":{"x":0.433,"y":0},"t":11,"s":[-27,-26.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.678,"y":1},"o":{"x":0.797,"y":0.34},"t":21,"s":[27.274,27.348,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":31,"s":[82,-27.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"t":41,"s":[82,-27.75,0],"to":[0,0,0],"ti":[0,0,0]},{"t":71,"s":[172,-27.75,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-81.75,27.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[54,54],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-81.75,27.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8.539,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":57,"st":-2,"bm":0},{"ddd":0,"ind":6,"ty":3,"nm":"Null 7","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"t":201,"s":[960,539,0],"to":[0,0,0],"ti":[38.043,-0.056,0]},{"t":231,"s":[926.5,550.167,0]}],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":201,"s":[80,80,100]},{"t":231,"s":[30,30,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":231,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Path 2","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":180,"ix":10},"p":{"a":0,"k":[0.067,19.173,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-38.591,0],"ix":1,"l":2},"s":{"a":0,"k":[49.75,49.75,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,42.626],[0,0],[42.626,0]],"o":[[0,0],[0,42.626],[-42.626,0]],"v":[[-77.181,-38.591],[77.181,-38.591],[0,38.591]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.168609619141,0.168609619141,0.168609619141,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":191,"op":231,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Path","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-0.027,-18.827,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-38.591,0],"ix":1,"l":2},"s":{"a":0,"k":[49.75,49.75,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,42.626],[0,0],[42.626,0]],"o":[[0,0],[0,42.626],[-42.626,0]],"v":[[-77.181,-38.591],[77.181,-38.591],[0,38.591]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.168609619141,0.168609619141,0.168609619141,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":191,"op":231,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":3,"nm":"Subtract 1","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":0},"o":{"x":0.167,"y":0.167},"t":191,"s":[19.558,68.975,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.05,"y":0},"t":201,"s":[19.558,68.975,0],"to":[0,0,0],"ti":[0,0,0]},{"t":221,"s":[52.982,68.642,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":191,"op":231,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":3,"nm":"Subtract","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":0},"o":{"x":0.167,"y":0.167},"t":191,"s":[85.558,30.975,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.05,"y":0},"t":201,"s":[85.558,30.975,0],"to":[0,0,0],"ti":[0,0,0]},{"t":221,"s":[52.851,32.642,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":191,"op":231,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Shape Layer 7","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"t":41,"s":[-160.845,-34.321,0],"to":[0,0,0],"ti":[0,0,0]},{"t":71,"s":[34.155,-34.321,0]}],"ix":2,"l":2},"a":{"a":0,"k":[34.155,-34.321,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[135.958,69.089],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[34.155,-34.321],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gs","o":{"a":0,"k":100,"ix":11},"w":{"a":0,"k":4,"ix":12},"g":{"p":3,"k":{"a":0,"k":[0,0.115,0.115,0.115,0.5,0.058,0.058,0.058,1,0,0,0],"ix":10}},"s":{"a":0,"k":[-334.908,-6.044],"ix":4},"e":{"a":0,"k":[343.059,-12.185],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":15},"bm":0,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8.539,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":57,"op":72,"st":41,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Shape Layer 6","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"t":41,"s":[151.822,34.49,0],"to":[0,0,0],"ti":[0,0,0]},{"t":71,"s":[-34.178,34.49,0]}],"ix":2,"l":2},"a":{"a":0,"k":[34.155,-34.321,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[135.958,69.089],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[34.155,-34.321],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gs","o":{"a":0,"k":100,"ix":11},"w":{"a":0,"k":4,"ix":12},"g":{"p":3,"k":{"a":0,"k":[0,0.115,0.115,0.115,0.5,0.058,0.058,0.058,1,0,0,0],"ix":10}},"s":{"a":0,"k":[-334.908,-6.044],"ix":4},"e":{"a":0,"k":[343.059,-12.185],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":15},"bm":0,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8.539,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":57,"op":72,"st":41,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Shape Layer 1","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":81,"s":[100,100,100]},{"i":{"x":[0.664,0.664,0.664],"y":[1,1,1]},"o":{"x":[0.328,0.328,0.328],"y":[0,0,0]},"t":111,"s":[90,90,100]},{"i":{"x":[0.73,0.73,0.73],"y":[1,1,1]},"o":{"x":[0.365,0.365,0.365],"y":[0,0,0]},"t":121,"s":[90,90,100]},{"i":{"x":[0.771,0.771,0.771],"y":[1,1,1]},"o":{"x":[0.424,0.424,0.424],"y":[0,0,0]},"t":151,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":161,"s":[100,100,100]},{"t":191,"s":[80,80,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"t":41,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-33.883,-68.877],[-34.164,0.972],[-34.087,1.087],[-34.09,0.987],[-34.001,19.844],[-33.905,46.827],[-34.1,69.934],[11.415,70.107],[23.899,69.99],[33.574,69.617],[32.889,1.022],[33.032,1.227],[33.111,0.82],[33.022,-68.895],[15.31,-68.932],[0.227,-69.274],[-17.248,-68.92]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":1,"y":0},"t":71,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-33.883,-68.877],[-34.164,0.972],[-67.657,1.02],[-101.997,0.969],[-101.907,19.762],[-102.123,46.676],[-102.006,69.935],[-67.87,70.022],[2.361,69.963],[33.574,69.617],[32.889,1.022],[66.997,1.089],[102.037,0.886],[101.948,-68.932],[69.312,-68.901],[33.003,-69.123],[-0.392,-68.944]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"t":81,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-33.883,-68.877],[-34.164,0.972],[-67.657,1.02],[-101.997,0.969],[-101.907,19.762],[-102.123,46.676],[-102.006,69.935],[-67.87,70.022],[2.361,69.963],[33.574,69.617],[32.889,1.022],[66.997,1.089],[102.037,0.886],[101.948,-68.932],[69.312,-68.901],[33.003,-69.123],[-0.392,-68.944]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":111,"s":[{"i":[[7.506,2.765],[36.346,-13.037],[6.92,-10.375],[1.089,-1.591],[-1.185,-7.506],[-9.877,-3.556],[-4.346,3.951],[-24.198,7.592],[-8.296,-5.531],[-15.407,-3.951],[-26.233,8.867],[-5.531,10.272],[3.161,5.531],[11.457,5.926],[2.765,-2.765],[16.593,-5.531],[20.148,15.407]],"o":[[-7.506,-2.765],[-28.643,10.274],[-1.861,2.79],[-5.136,7.506],[1.185,7.506],[9.877,3.556],[4.346,-3.951],[20.148,-6.321],[8.296,5.531],[15.407,3.951],[28.049,-9.481],[5.531,-10.272],[-3.161,-5.531],[-11.457,-5.926],[-2.765,2.765],[-16.593,5.531],[-20.148,-15.407]],"v":[[-17.383,-48.938],[-86.914,-45.778],[-135.907,-8.23],[-140.247,-1.531],[-143.407,19.012],[-118.123,41.926],[-103.506,37.185],[-66.37,14.272],[-24.889,22.963],[26.074,50.617],[88.889,46.272],[140.247,0.839],[141.037,-22.864],[120.099,-41.432],[101.531,-35.901],[73.877,-18.123],[25.679,-24.444]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"t":121,"s":[{"i":[[7.506,2.765],[36.346,-13.037],[6.92,-10.375],[1.089,-1.591],[-1.185,-7.506],[-9.877,-3.556],[-4.346,3.951],[-24.198,7.592],[-8.296,-5.531],[-15.407,-3.951],[-26.233,8.867],[-5.531,10.272],[3.161,5.531],[11.457,5.926],[2.765,-2.765],[16.593,-5.531],[20.148,15.407]],"o":[[-7.506,-2.765],[-28.643,10.274],[-1.861,2.79],[-5.136,7.506],[1.185,7.506],[9.877,3.556],[4.346,-3.951],[20.148,-6.321],[8.296,5.531],[15.407,3.951],[28.049,-9.481],[5.531,-10.272],[-3.161,-5.531],[-11.457,-5.926],[-2.765,2.765],[-16.593,5.531],[-20.148,-15.407]],"v":[[-17.383,-48.938],[-86.914,-45.778],[-135.907,-8.23],[-140.247,-1.531],[-143.407,19.012],[-118.123,41.926],[-103.506,37.185],[-66.37,14.272],[-24.889,22.963],[26.074,50.617],[88.889,46.272],[140.247,0.839],[141.037,-22.864],[120.099,-41.432],[101.531,-35.901],[73.877,-18.123],[25.679,-24.444]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":151,"s":[{"i":[[12.388,4.658],[24.304,-16.586],[3.112,-16.598],[-0.106,-1.885],[-3.092,-1.617],[-1.627,5.574],[-3.844,6.026],[-27.589,-17.256],[-7.815,-6.481],[-26.401,0.893],[-14.685,20.531],[-1.747,12.805],[2.55,4.609],[4.667,-4.068],[1.785,-6.236],[9.777,-8.417],[16.03,14.222]],"o":[[-7.356,-2.766],[-25.821,17.62],[-0.837,4.464],[0.594,10.597],[3.157,1.651],[3.373,-12.426],[6.292,-9.864],[13.212,8.264],[8.874,7.358],[15.897,-0.538],[9.81,-13.716],[1.284,-9.411],[-1.079,-1.951],[-3.083,4.432],[-1.076,3.76],[-10.64,9.161],[-29.449,-26.127]],"v":[[-29.138,-49.158],[-77.485,-44.109],[-117.071,20.864],[-118.094,30.653],[-112.157,45.599],[-103.623,38.926],[-87.292,-0.636],[-34.911,-8.494],[2.126,25.142],[53.482,54.546],[99.94,25.716],[116.966,-17.589],[116.2,-42.609],[106.833,-44.432],[99.465,-23.013],[82.973,9.167],[36.449,6.377]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"t":161,"s":[{"i":[[12.388,4.658],[24.304,-16.586],[3.112,-16.598],[-0.106,-1.885],[-3.092,-1.617],[-1.627,5.574],[-3.844,6.026],[-27.589,-17.256],[-7.815,-6.481],[-26.401,0.893],[-14.685,20.531],[-1.747,12.805],[2.55,4.609],[4.667,-4.068],[1.785,-6.236],[9.777,-8.417],[16.03,14.222]],"o":[[-7.356,-2.766],[-25.821,17.62],[-0.837,4.464],[0.594,10.597],[3.157,1.651],[3.373,-12.426],[6.292,-9.864],[13.212,8.264],[8.874,7.358],[15.897,-0.538],[9.81,-13.716],[1.284,-9.411],[-1.079,-1.951],[-3.083,4.432],[-1.076,3.76],[-10.64,9.161],[-29.449,-26.127]],"v":[[-29.138,-49.158],[-77.485,-44.109],[-117.071,20.864],[-118.094,30.653],[-112.157,45.599],[-103.623,38.926],[-87.292,-0.636],[-34.911,-8.494],[2.126,25.142],[53.482,54.546],[99.94,25.716],[116.966,-17.589],[116.2,-42.609],[106.833,-44.432],[99.465,-23.013],[82.973,9.167],[36.449,6.377]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0},"t":191,"s":[{"i":[[0,0],[13.819,0],[-3.609,-7.895],[-5.98,-7.053],[-7.236,-1.914],[-5.118,-0.192],[-9.242,4.93],[-12.076,14.441],[-1.258,22.739],[0,0],[-19.953,0.156],[7.559,14.487],[7.889,3.572],[22.906,0],[9.656,-6.761],[6.014,-12.868],[0,-13.329]],"o":[[0,0],[0.292,22.628],[3.609,7.895],[5.98,7.053],[9.111,2.41],[8.943,0.335],[7.239,-3.862],[9.099,-10.881],[9.124,-0.142],[0,0],[0,-21.136],[-6.783,-13],[-5.135,-2.326],[-22.906,0],[-8.006,5.606],[-5.499,11.766],[-10.949,0.373]],"v":[[-84.871,0.166],[-171.906,0.044],[-163.777,40.179],[-144.992,67.033],[-107.196,90.752],[-72.345,94.908],[-31.269,84.417],[-1.035,59.299],[19.361,0.016],[82.492,-0.145],[184.419,-0.156],[166.618,-54.855],[130.565,-86.055],[82.629,-94.624],[29.257,-75.92],[2.099,-42.769],[-6.373,0.014]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0},"t":201,"s":[{"i":[[0,0],[13.819,0],[-3.609,-7.895],[-5.98,-7.053],[-7.236,-1.914],[-5.118,-0.192],[-9.242,4.93],[-12.076,14.441],[-1.258,22.739],[0,0],[-19.953,0.156],[7.559,14.487],[7.889,3.572],[22.906,0],[9.656,-6.761],[6.014,-12.868],[0,-13.329]],"o":[[0,0],[0.292,22.628],[3.609,7.895],[5.98,7.053],[9.111,2.41],[8.943,0.335],[7.239,-3.862],[9.099,-10.881],[9.124,-0.142],[0,0],[0,-21.136],[-6.783,-13],[-5.135,-2.326],[-22.906,0],[-8.006,5.606],[-5.499,11.766],[-10.949,0.373]],"v":[[-84.871,0.166],[-171.906,0.044],[-163.777,40.179],[-144.992,67.033],[-107.196,90.752],[-72.345,94.908],[-31.269,84.417],[-1.035,59.299],[19.361,0.016],[82.492,-0.145],[184.419,-0.156],[166.618,-54.855],[130.565,-86.055],[82.629,-94.624],[29.257,-75.92],[2.099,-42.769],[-6.373,0.014]],"c":true}]},{"t":231,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-70.398,1.772],[-95.235,1.391],[-102.527,10.907],[-103.782,11.646],[-108.358,22.167],[-107.471,37.418],[-100.504,47.258],[-94.399,53.075],[-85.778,54.442],[-72.458,53.836],[-64.87,49.486],[-59.654,45.641],[-56.02,40.441],[-55.269,36.074],[-55.598,23.778],[-56.79,16.083],[-61.981,8.487]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.16862745098,0.16862745098,0.16862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":71,"op":191,"st":71,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Pre-comp 10","refId":"comp_0","sr":0.85,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[80,40,0],"ix":2,"l":2},"a":{"a":0,"k":[960,540,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1920,"h":1080,"ip":0,"op":196,"st":0,"bm":0}],"markers":[]}
@@ -0,0 +1,11 @@
1
+ export type AgentAvatarSize = 'sm' | 'default' | 'lg' | 'xl';
2
+ /**
3
+ * The avatar frame, the same for people and agents: 28/40/48px squares (`xl` 128px). The size
4
+ * classes live on the frame so call-site overrides (`size-[50px]`, `data-[size=sm]:size-5`, group
5
+ * rings) still apply.
6
+ */
7
+ export declare const AGENT_AVATAR_SIZE = "size-10 data-[size=lg]:size-12 data-[size=sm]:size-7 data-[size=xl]:size-32";
8
+ /** Corner radius of the rounded-square frame per size. */
9
+ export declare const AGENT_AVATAR_RADIUS: Record<AgentAvatarSize, number>;
10
+ /** Pixel width of the frame per size, for the `sizes` hint of a responsive picture. */
11
+ export declare const AGENT_AVATAR_PX: Record<AgentAvatarSize, number>;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * The avatar frame, the same for people and agents: 28/40/48px squares (`xl` 128px). The size
3
+ * classes live on the frame so call-site overrides (`size-[50px]`, `data-[size=sm]:size-5`, group
4
+ * rings) still apply.
5
+ */
6
+ export const AGENT_AVATAR_SIZE = 'size-10 data-[size=lg]:size-12 data-[size=sm]:size-7 data-[size=xl]:size-32';
7
+ /** Corner radius of the rounded-square frame per size. */
8
+ export const AGENT_AVATAR_RADIUS = {
9
+ sm: 7,
10
+ default: 10,
11
+ lg: 13,
12
+ xl: 36,
13
+ };
14
+ /** Pixel width of the frame per size, for the `sizes` hint of a responsive picture. */
15
+ export const AGENT_AVATAR_PX = {
16
+ sm: 28,
17
+ default: 40,
18
+ lg: 48,
19
+ xl: 128,
20
+ };
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import { Avatar as AvatarPrimitive } from '@base-ui/react/avatar';
3
+ import type { HTMLMotionProps } from '../../motion/index.js';
4
+ /**
5
+ * A person's picture. It draws the same frame as `AgentAvatar` (28/40/48px rounded squares, `xl`
6
+ * 128px, the corner radius per size from `AGENT_AVATAR_RADIUS`), so people and agents read as one family.
7
+ * The radius is inline and inherited by the image, fallback and hairline.
8
+ */
9
+ declare function Avatar({ className, size, style, ...props }: AvatarPrimitive.Root.Props & {
10
+ size?: 'default' | 'sm' | 'lg' | 'xl';
11
+ }): React.JSX.Element;
12
+ /**
13
+ * Fades in the first time its image is shown, not on every remount. Shared with `AgentAvatar`,
14
+ * which draws agent pictures (also keyed by `src`) outside Base UI's loading state.
15
+ */
16
+ declare function FadeImage(props: HTMLMotionProps<'img'>): React.JSX.Element;
17
+ declare function AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props): React.JSX.Element;
18
+ declare function AvatarFallback({ className, ...props }: AvatarPrimitive.Fallback.Props): React.JSX.Element;
19
+ declare function AvatarBadge({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
20
+ declare function AvatarGroup({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
21
+ /** The "+N" tile of a group; its size and corners follow `AGENT_AVATAR_SIZE` / `AGENT_AVATAR_RADIUS` for the group's avatars. */
22
+ declare function AvatarGroupCount({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
23
+ export { Avatar, FadeImage, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
@@ -0,0 +1,54 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { Avatar as AvatarPrimitive } from '@base-ui/react/avatar';
4
+ import { motion } from '../../motion/index.js';
5
+ import { presets } from '../../motion/config.js';
6
+ import { cn } from '../../lib/utils.js';
7
+ import { AGENT_AVATAR_RADIUS, AGENT_AVATAR_SIZE } from './avatar-frame.js';
8
+ /**
9
+ * A person's picture. It draws the same frame as `AgentAvatar` (28/40/48px rounded squares, `xl`
10
+ * 128px, the corner radius per size from `AGENT_AVATAR_RADIUS`), so people and agents read as one family.
11
+ * The radius is inline and inherited by the image, fallback and hairline.
12
+ */
13
+ function Avatar({ className, size = 'default', style, ...props }) {
14
+ return (_jsx(AvatarPrimitive.Root, { "data-slot": "avatar", "data-size": size, className: cn('group/avatar relative flex shrink-0 select-none after:absolute after:inset-0 after:rounded-[inherit] after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten', AGENT_AVATAR_SIZE, className), style: typeof style === 'function'
15
+ ? (state) => ({ borderRadius: AGENT_AVATAR_RADIUS[size], ...style(state) })
16
+ : { borderRadius: AGENT_AVATAR_RADIUS[size], ...style }, ...props }));
17
+ }
18
+ /** Sources that have faded in once: an avatar that remounts (back from a session) must not fade again. */
19
+ const shownSources = new Set();
20
+ /**
21
+ * Fades in the first time its image is shown, not on every remount. Shared with `AgentAvatar`,
22
+ * which draws agent pictures (also keyed by `src`) outside Base UI's loading state.
23
+ */
24
+ function FadeImage(props) {
25
+ const src = typeof props.src === 'string' ? props.src : undefined;
26
+ // Read at mount only (`initial` is ignored later); recorded in an effect so a StrictMode or
27
+ // discarded render never marks a source as shown.
28
+ const [seen] = React.useState(() => src !== undefined && shownSources.has(src));
29
+ React.useEffect(() => {
30
+ if (src !== undefined)
31
+ shownSources.add(src);
32
+ }, [src]);
33
+ return (_jsx(motion.img, { ...props, initial: seen ? false : presets.fade.initial, animate: presets.fade.animate }));
34
+ }
35
+ function renderAvatarImage(props) {
36
+ return _jsx(FadeImage, { ...props });
37
+ }
38
+ function AvatarImage({ className, ...props }) {
39
+ return (_jsx(AvatarPrimitive.Image, { render: renderAvatarImage, "data-slot": "avatar-image", className: cn('aspect-square size-full rounded-[inherit] object-cover', className), ...props }));
40
+ }
41
+ function AvatarFallback({ className, ...props }) {
42
+ return (_jsx(AvatarPrimitive.Fallback, { "data-slot": "avatar-fallback", className: cn('flex size-full items-center justify-center rounded-[inherit] bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs group-data-[size=xl]/avatar:text-4xl group-data-[size=xl]/avatar:[&>svg]:size-12', className), ...props }));
43
+ }
44
+ function AvatarBadge({ className, ...props }) {
45
+ return (_jsx("span", { "data-slot": "avatar-badge", className: cn('absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none', 'group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden', 'group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2', 'group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2', className), ...props }));
46
+ }
47
+ function AvatarGroup({ className, ...props }) {
48
+ return (_jsx("div", { "data-slot": "avatar-group", className: cn('group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background', className), ...props }));
49
+ }
50
+ /** The "+N" tile of a group; its size and corners follow `AGENT_AVATAR_SIZE` / `AGENT_AVATAR_RADIUS` for the group's avatars. */
51
+ function AvatarGroupCount({ className, ...props }) {
52
+ return (_jsx("div", { "data-slot": "avatar-group-count", className: cn('relative flex size-10 shrink-0 items-center justify-center rounded-[10px] bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-12 group-has-data-[size=lg]/avatar-group:rounded-[13px] group-has-data-[size=sm]/avatar-group:size-7 group-has-data-[size=sm]/avatar-group:rounded-[7px] [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3', className), ...props }));
53
+ }
54
+ export { Avatar, FadeImage, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
@@ -0,0 +1,7 @@
1
+ import { useRender } from '@base-ui/react/use-render';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const badgeVariants: (props?: ({
4
+ variant?: "link" | "outline" | "done" | "default" | "destructive" | "secondary" | "ghost" | "working" | "stuck" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ declare function Badge({ className, variant, render, ...props }: useRender.ComponentProps<'span'> & VariantProps<typeof badgeVariants>): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
7
+ export { Badge, badgeVariants };
@@ -0,0 +1,36 @@
1
+ import { mergeProps } from '@base-ui/react/merge-props';
2
+ import { useRender } from '@base-ui/react/use-render';
3
+ import { cva } from 'class-variance-authority';
4
+ import { cn } from '../../lib/utils.js';
5
+ const badgeVariants = cva('group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-colors focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!', {
6
+ variants: {
7
+ variant: {
8
+ default: 'bg-primary text-primary-foreground [a]:hover:bg-primary/80',
9
+ secondary: 'bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80',
10
+ destructive: 'bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20',
11
+ outline: 'border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground',
12
+ ghost: 'hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50',
13
+ link: 'text-primary underline-offset-4 hover:underline',
14
+ working: 'bg-status-working/15 text-status-working',
15
+ done: 'bg-status-done/15 text-status-done',
16
+ stuck: 'bg-status-stuck/15 text-status-stuck',
17
+ },
18
+ },
19
+ defaultVariants: {
20
+ variant: 'default',
21
+ },
22
+ });
23
+ function Badge({ className, variant = 'default', render, ...props }) {
24
+ return useRender({
25
+ defaultTagName: 'span',
26
+ props: mergeProps({
27
+ className: cn(badgeVariants({ variant }), className),
28
+ }, props),
29
+ render,
30
+ state: {
31
+ slot: 'badge',
32
+ variant,
33
+ },
34
+ });
35
+ }
36
+ export { Badge, badgeVariants };
@@ -0,0 +1,40 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface BarListItem {
3
+ label: string;
4
+ value: number;
5
+ /** Avatar, icon or rank in front of the label. */
6
+ leading?: ReactNode;
7
+ /** Makes the whole row a button. Pair it with `selectLabel`; rows without it stay plain text. */
8
+ onSelect?: () => void;
9
+ /** Accessible name of the row button (the visible text is only the label and the value). */
10
+ selectLabel?: string;
11
+ }
12
+ export interface BarListProps extends Omit<React.ComponentProps<'ol'>, 'children'> {
13
+ items: readonly BarListItem[];
14
+ /** Names the list for assistive tech. Required. */
15
+ 'aria-label': string;
16
+ formatValue?: (value: number) => string;
17
+ /**
18
+ * Optional hover/focus tip for the value cell. Return a string to wrap that row’s value in a
19
+ * Tooltip; return `undefined` to leave the value as plain text.
20
+ */
21
+ formatValueTooltip?: (value: number) => string | undefined;
22
+ }
23
+ /**
24
+ * Ranked horizontal bars. The widest bar is the largest value; every other bar is a share of it
25
+ * so the eye compares lengths, not labels. Plain list semantics — an `<ol>` with one row per
26
+ * item — so it reads top to bottom without any extra roles.
27
+ */
28
+ declare function BarList({ items, formatValue, formatValueTooltip, className, ...props }: BarListProps): import("react").JSX.Element;
29
+ export interface BarListSkeletonProps extends Omit<React.ComponentProps<'div'>, 'children'> {
30
+ /** How many rows to draw. Use the usual count, not the largest one. */
31
+ rows?: number;
32
+ /** Draw a round 28 px avatar (the `sm` size) in front of each label, as `BarList` does with `leading`. */
33
+ avatar?: boolean;
34
+ }
35
+ /**
36
+ * The loading shape of `BarList`: the same list, row grid and bar track, with a label stub, a
37
+ * value stub and a still track in each row. Rows are `aria-hidden`; the host names the busy region.
38
+ */
39
+ declare function BarListSkeleton({ rows, avatar, className, ...props }: BarListSkeletonProps): import("react").JSX.Element;
40
+ export { BarList, BarListSkeleton };