sv5ui 0.0.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.
- package/LICENSE +21 -0
- package/README.md +124 -0
- package/dist/Alert/Alert.svelte +120 -0
- package/dist/Alert/Alert.svelte.d.ts +5 -0
- package/dist/Alert/alert.types.d.ts +99 -0
- package/dist/Alert/alert.types.js +1 -0
- package/dist/Alert/alert.variants.d.ts +213 -0
- package/dist/Alert/alert.variants.js +293 -0
- package/dist/Alert/index.d.ts +2 -0
- package/dist/Alert/index.js +1 -0
- package/dist/Avatar/Avatar.svelte +70 -0
- package/dist/Avatar/Avatar.svelte.d.ts +6 -0
- package/dist/Avatar/avatar.types.d.ts +40 -0
- package/dist/Avatar/avatar.types.js +1 -0
- package/dist/Avatar/avatar.variants.d.ts +178 -0
- package/dist/Avatar/avatar.variants.js +28 -0
- package/dist/Avatar/index.d.ts +2 -0
- package/dist/Avatar/index.js +1 -0
- package/dist/AvatarGroup/AvatarGroup.svelte +66 -0
- package/dist/AvatarGroup/AvatarGroup.svelte.d.ts +5 -0
- package/dist/AvatarGroup/avatar-group.types.d.ts +34 -0
- package/dist/AvatarGroup/avatar-group.types.js +1 -0
- package/dist/AvatarGroup/avatar-group.variants.d.ts +173 -0
- package/dist/AvatarGroup/avatar-group.variants.js +45 -0
- package/dist/AvatarGroup/index.d.ts +2 -0
- package/dist/AvatarGroup/index.js +1 -0
- package/dist/Badge/Badge.svelte +74 -0
- package/dist/Badge/Badge.svelte.d.ts +5 -0
- package/dist/Badge/badge.types.d.ts +74 -0
- package/dist/Badge/badge.types.js +1 -0
- package/dist/Badge/badge.variants.d.ts +303 -0
- package/dist/Badge/badge.variants.js +245 -0
- package/dist/Badge/index.d.ts +2 -0
- package/dist/Badge/index.js +1 -0
- package/dist/Button/Button.svelte +103 -0
- package/dist/Button/Button.svelte.d.ts +6 -0
- package/dist/Button/button.types.d.ts +97 -0
- package/dist/Button/button.types.js +1 -0
- package/dist/Button/button.variants.d.ts +388 -0
- package/dist/Button/button.variants.js +461 -0
- package/dist/Button/index.d.ts +2 -0
- package/dist/Button/index.js +1 -0
- package/dist/Card/Card.svelte +53 -0
- package/dist/Card/Card.svelte.d.ts +5 -0
- package/dist/Card/card.types.d.ts +32 -0
- package/dist/Card/card.types.js +1 -0
- package/dist/Card/card.variants.d.ts +108 -0
- package/dist/Card/card.variants.js +32 -0
- package/dist/Card/index.d.ts +2 -0
- package/dist/Card/index.js +1 -0
- package/dist/Chip/Chip.svelte +50 -0
- package/dist/Chip/Chip.svelte.d.ts +5 -0
- package/dist/Chip/chip.types.d.ts +62 -0
- package/dist/Chip/chip.types.js +1 -0
- package/dist/Chip/chip.variants.d.ts +328 -0
- package/dist/Chip/chip.variants.js +58 -0
- package/dist/Chip/index.d.ts +2 -0
- package/dist/Chip/index.js +1 -0
- package/dist/Container/Container.svelte +27 -0
- package/dist/Container/Container.svelte.d.ts +5 -0
- package/dist/Container/container.types.d.ts +19 -0
- package/dist/Container/container.types.js +1 -0
- package/dist/Container/container.variants.d.ts +29 -0
- package/dist/Container/container.variants.js +9 -0
- package/dist/Container/index.d.ts +2 -0
- package/dist/Container/index.js +1 -0
- package/dist/Empty/Empty.svelte +83 -0
- package/dist/Empty/Empty.svelte.d.ts +5 -0
- package/dist/Empty/empty.types.d.ts +74 -0
- package/dist/Empty/empty.types.js +1 -0
- package/dist/Empty/empty.variants.d.ts +288 -0
- package/dist/Empty/empty.variants.js +364 -0
- package/dist/Empty/index.d.ts +2 -0
- package/dist/Empty/index.js +1 -0
- package/dist/Icon/Icon.svelte +40 -0
- package/dist/Icon/Icon.svelte.d.ts +6 -0
- package/dist/Icon/icon.types.d.ts +37 -0
- package/dist/Icon/icon.types.js +1 -0
- package/dist/Icon/index.d.ts +2 -0
- package/dist/Icon/index.js +1 -0
- package/dist/Kbd/Kbd.svelte +35 -0
- package/dist/Kbd/Kbd.svelte.d.ts +5 -0
- package/dist/Kbd/index.d.ts +3 -0
- package/dist/Kbd/index.js +2 -0
- package/dist/Kbd/kbd.types.d.ts +77 -0
- package/dist/Kbd/kbd.types.js +1 -0
- package/dist/Kbd/kbd.variants.d.ts +118 -0
- package/dist/Kbd/kbd.variants.js +96 -0
- package/dist/Kbd/useKbd.svelte.d.ts +29 -0
- package/dist/Kbd/useKbd.svelte.js +245 -0
- package/dist/Link/Link.svelte +117 -0
- package/dist/Link/Link.svelte.d.ts +5 -0
- package/dist/Link/index.d.ts +2 -0
- package/dist/Link/index.js +1 -0
- package/dist/Link/link.types.d.ts +68 -0
- package/dist/Link/link.types.js +1 -0
- package/dist/Link/link.variants.d.ts +138 -0
- package/dist/Link/link.variants.js +145 -0
- package/dist/Progress/Progress.svelte +89 -0
- package/dist/Progress/Progress.svelte.d.ts +6 -0
- package/dist/Progress/index.d.ts +2 -0
- package/dist/Progress/index.js +1 -0
- package/dist/Progress/progress.types.d.ts +63 -0
- package/dist/Progress/progress.types.js +1 -0
- package/dist/Progress/progress.variants.d.ts +483 -0
- package/dist/Progress/progress.variants.js +190 -0
- package/dist/Separator/Separator.svelte +67 -0
- package/dist/Separator/Separator.svelte.d.ts +6 -0
- package/dist/Separator/index.d.ts +2 -0
- package/dist/Separator/index.js +1 -0
- package/dist/Separator/separator.types.d.ts +48 -0
- package/dist/Separator/separator.types.js +1 -0
- package/dist/Separator/separator.variants.d.ts +488 -0
- package/dist/Separator/separator.variants.js +104 -0
- package/dist/Skeleton/Skeleton.svelte +31 -0
- package/dist/Skeleton/Skeleton.svelte.d.ts +5 -0
- package/dist/Skeleton/index.d.ts +2 -0
- package/dist/Skeleton/index.js +1 -0
- package/dist/Skeleton/skeleton.types.d.ts +18 -0
- package/dist/Skeleton/skeleton.types.js +1 -0
- package/dist/Skeleton/skeleton.variants.d.ts +18 -0
- package/dist/Skeleton/skeleton.variants.js +12 -0
- package/dist/Timeline/Timeline.svelte +106 -0
- package/dist/Timeline/Timeline.svelte.d.ts +5 -0
- package/dist/Timeline/index.d.ts +2 -0
- package/dist/Timeline/index.js +1 -0
- package/dist/Timeline/timeline.types.d.ts +130 -0
- package/dist/Timeline/timeline.types.js +1 -0
- package/dist/Timeline/timeline.variants.d.ts +413 -0
- package/dist/Timeline/timeline.variants.js +121 -0
- package/dist/User/User.svelte +94 -0
- package/dist/User/User.svelte.d.ts +5 -0
- package/dist/User/index.d.ts +2 -0
- package/dist/User/index.js +1 -0
- package/dist/User/user.types.d.ts +74 -0
- package/dist/User/user.types.js +1 -0
- package/dist/User/user.variants.d.ts +308 -0
- package/dist/User/user.variants.js +73 -0
- package/dist/config.d.ts +59 -0
- package/dist/config.js +94 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +20 -0
- package/dist/theme.css +410 -0
- package/package.json +104 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 ndlabdev
|
|
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
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# SV5UI
|
|
2
|
+
|
|
3
|
+
A modern, fully-typed Svelte 5 UI component library built with Tailwind CSS 4.
|
|
4
|
+
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](https://www.npmjs.com/package/sv5ui)
|
|
7
|
+
|
|
8
|
+
## Features
|
|
9
|
+
|
|
10
|
+
- **Svelte 5** - Built with runes, snippets, and the latest Svelte 5 features
|
|
11
|
+
- **Tailwind CSS 4** - Utility-first styling with [Tailwind Variants](https://www.tailwind-variants.org/) for type-safe composable variants
|
|
12
|
+
- **OKLCH Colors** - Semantic color tokens with light/dark mode support
|
|
13
|
+
- **Fully Typed** - Complete TypeScript support with strict mode
|
|
14
|
+
- **Accessible** - Built on [Bits UI](https://bits-ui.com) headless primitives
|
|
15
|
+
- **Customizable** - Global config system to override default variants and slot styles
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install sv5ui
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Peer dependencies: `svelte >= 5.0.0`, `tailwindcss >= 4.0.0`
|
|
24
|
+
|
|
25
|
+
## Quick Start
|
|
26
|
+
|
|
27
|
+
```css
|
|
28
|
+
/* layout.css */
|
|
29
|
+
@import 'sv5ui/theme.css';
|
|
30
|
+
@source "../../node_modules/sv5ui/dist";
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```svelte
|
|
34
|
+
<script>
|
|
35
|
+
import { Button, Alert, Avatar, Badge } from 'sv5ui'
|
|
36
|
+
</script>
|
|
37
|
+
|
|
38
|
+
<Button variant="solid" color="primary">Click me</Button>
|
|
39
|
+
<Alert title="Heads up!" description="Something happened." color="info" variant="soft" />
|
|
40
|
+
<Avatar src="/photo.jpg" alt="John Doe" size="lg" />
|
|
41
|
+
<Badge label="New" color="success" />
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Components
|
|
45
|
+
|
|
46
|
+
| Component | Description |
|
|
47
|
+
|-----------|-------------|
|
|
48
|
+
| **Alert** | Notification banners with actions and close support |
|
|
49
|
+
| **Avatar** | User avatar with image fallback and auto-generated initials |
|
|
50
|
+
| **AvatarGroup** | Grouped avatars with overflow count |
|
|
51
|
+
| **Badge** | Status indicators and tags |
|
|
52
|
+
| **Button** | Interactive button with loading, icon, and block modes |
|
|
53
|
+
| **Card** | Content container with header/body/footer slots |
|
|
54
|
+
| **Chip** | Compact notification indicators with positioning |
|
|
55
|
+
| **Container** | Responsive layout wrapper with max-width constraints |
|
|
56
|
+
| **Icon** | Iconify wrapper with 200,000+ icons |
|
|
57
|
+
| **Kbd** | Keyboard key display with automatic symbol mapping |
|
|
58
|
+
| **Link** | Smart navigation with active state detection |
|
|
59
|
+
| **Progress** | Determinate/indeterminate progress bars with step mode |
|
|
60
|
+
| **Separator** | Dividers with optional label, icon, or avatar content |
|
|
61
|
+
| **Timeline** | Sequence/step visualization with states |
|
|
62
|
+
|
|
63
|
+
> Browse the interactive docs by running `pnpm dev` and opening [localhost:5173](http://localhost:5173).
|
|
64
|
+
|
|
65
|
+
## Theming
|
|
66
|
+
|
|
67
|
+
SV5UI uses OKLCH color space with semantic tokens. Light and dark modes work automatically.
|
|
68
|
+
|
|
69
|
+
**Available color tokens:** `primary`, `secondary`, `tertiary`, `success`, `warning`, `error`, `info`, `surface`
|
|
70
|
+
|
|
71
|
+
**Dark mode** via `.dark` class or `prefers-color-scheme`, managed through [mode-watcher](https://github.com/svecosystem/mode-watcher).
|
|
72
|
+
|
|
73
|
+
**Custom colors** by overriding CSS variables:
|
|
74
|
+
|
|
75
|
+
```css
|
|
76
|
+
:root {
|
|
77
|
+
--color-primary: oklch(0.55 0.25 270);
|
|
78
|
+
--color-secondary: oklch(0.45 0.15 240);
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Customization
|
|
83
|
+
|
|
84
|
+
### Per-instance overrides
|
|
85
|
+
|
|
86
|
+
Override slot styles on any component via the `ui` prop:
|
|
87
|
+
|
|
88
|
+
```svelte
|
|
89
|
+
<Button ui={{ base: 'rounded-full', label: 'font-bold uppercase' }}>
|
|
90
|
+
Custom
|
|
91
|
+
</Button>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Global defaults
|
|
95
|
+
|
|
96
|
+
Use `defineConfig` to set library-wide defaults:
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
import { defineConfig } from 'sv5ui'
|
|
100
|
+
|
|
101
|
+
defineConfig({
|
|
102
|
+
button: {
|
|
103
|
+
defaultVariants: { variant: 'outline', size: 'lg' },
|
|
104
|
+
slots: { base: 'shadow-md' }
|
|
105
|
+
},
|
|
106
|
+
icons: { loading: 'svg-spinners:ring-resize' }
|
|
107
|
+
})
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Development
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
pnpm install # Install dependencies
|
|
114
|
+
pnpm dev # Start dev server
|
|
115
|
+
pnpm test # Run tests
|
|
116
|
+
pnpm check # Type check
|
|
117
|
+
pnpm prepack # Build library
|
|
118
|
+
pnpm lint # Lint
|
|
119
|
+
pnpm format # Format
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## License
|
|
123
|
+
|
|
124
|
+
[MIT](LICENSE)
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { AlertProps } from './alert.types.js'
|
|
3
|
+
|
|
4
|
+
export type Props = AlertProps
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<script lang="ts">
|
|
8
|
+
import { alertVariants, alertDefaults } from './alert.variants.js'
|
|
9
|
+
import { getComponentConfig, iconsDefaults } from '../config.js'
|
|
10
|
+
import Icon from '../Icon/Icon.svelte'
|
|
11
|
+
import Avatar from '../Avatar/Avatar.svelte'
|
|
12
|
+
import Button from '../Button/Button.svelte'
|
|
13
|
+
|
|
14
|
+
const config = getComponentConfig('alert', alertDefaults)
|
|
15
|
+
const icons = getComponentConfig('icons', iconsDefaults)
|
|
16
|
+
|
|
17
|
+
let {
|
|
18
|
+
as = 'div',
|
|
19
|
+
ui,
|
|
20
|
+
title,
|
|
21
|
+
description,
|
|
22
|
+
icon,
|
|
23
|
+
avatar,
|
|
24
|
+
color = config.defaultVariants.color,
|
|
25
|
+
variant = config.defaultVariants.variant,
|
|
26
|
+
orientation = config.defaultVariants.orientation,
|
|
27
|
+
open = true,
|
|
28
|
+
close = false,
|
|
29
|
+
closeIcon,
|
|
30
|
+
actions,
|
|
31
|
+
class: className,
|
|
32
|
+
leading,
|
|
33
|
+
titleSlot,
|
|
34
|
+
descriptionSlot,
|
|
35
|
+
actionsSlot,
|
|
36
|
+
closeSlot,
|
|
37
|
+
onClose,
|
|
38
|
+
...restProps
|
|
39
|
+
}: Props = $props()
|
|
40
|
+
|
|
41
|
+
const resolvedCloseIcon = $derived(closeIcon ?? icons.close)
|
|
42
|
+
|
|
43
|
+
const classes = $derived.by(() => {
|
|
44
|
+
const slots = alertVariants({ variant, color, orientation })
|
|
45
|
+
return {
|
|
46
|
+
root: slots.root({ class: [config.slots.root, className, ui?.root] }),
|
|
47
|
+
wrapper: slots.wrapper({ class: [config.slots.wrapper, ui?.wrapper] }),
|
|
48
|
+
title: slots.title({ class: [config.slots.title, ui?.title] }),
|
|
49
|
+
description: slots.description({ class: [config.slots.description, ui?.description] }),
|
|
50
|
+
icon: slots.icon({ class: [config.slots.icon, ui?.icon] }),
|
|
51
|
+
avatar: slots.avatar({ class: [config.slots.avatar, ui?.avatar] }),
|
|
52
|
+
actions: slots.actions({ class: [config.slots.actions, ui?.actions] }),
|
|
53
|
+
close: slots.close({ class: [config.slots.close, ui?.close] })
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
const closeButtonProps = $derived.by(() => {
|
|
58
|
+
if (!close) return null
|
|
59
|
+
if (close === true) return {}
|
|
60
|
+
return close
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
function handleClose() {
|
|
64
|
+
onClose?.()
|
|
65
|
+
}
|
|
66
|
+
</script>
|
|
67
|
+
|
|
68
|
+
{#if open}
|
|
69
|
+
<svelte:element this={as} class={classes.root} role="alert" {...restProps}>
|
|
70
|
+
{#if leading}
|
|
71
|
+
{@render leading()}
|
|
72
|
+
{:else if icon}
|
|
73
|
+
<Icon name={icon} class={classes.icon} />
|
|
74
|
+
{:else if avatar}
|
|
75
|
+
<Avatar {...avatar} class={classes.avatar} />
|
|
76
|
+
{/if}
|
|
77
|
+
|
|
78
|
+
{#if title || description || titleSlot || descriptionSlot}
|
|
79
|
+
<div class={classes.wrapper}>
|
|
80
|
+
{#if titleSlot}
|
|
81
|
+
{@render titleSlot()}
|
|
82
|
+
{:else if title}
|
|
83
|
+
<div class={classes.title}>{title}</div>
|
|
84
|
+
{/if}
|
|
85
|
+
|
|
86
|
+
{#if descriptionSlot}
|
|
87
|
+
{@render descriptionSlot()}
|
|
88
|
+
{:else if description}
|
|
89
|
+
<div class={classes.description}>{description}</div>
|
|
90
|
+
{/if}
|
|
91
|
+
</div>
|
|
92
|
+
{/if}
|
|
93
|
+
|
|
94
|
+
{#if actionsSlot}
|
|
95
|
+
{@render actionsSlot()}
|
|
96
|
+
{:else if actions && actions.length > 0}
|
|
97
|
+
<div class={classes.actions}>
|
|
98
|
+
{#each actions as action, index (index)}
|
|
99
|
+
<Button size="xs" {...action} />
|
|
100
|
+
{/each}
|
|
101
|
+
</div>
|
|
102
|
+
{/if}
|
|
103
|
+
|
|
104
|
+
{#if closeSlot}
|
|
105
|
+
<div class={classes.close}>
|
|
106
|
+
{@render closeSlot()}
|
|
107
|
+
</div>
|
|
108
|
+
{:else if closeButtonProps}
|
|
109
|
+
<Button
|
|
110
|
+
icon={resolvedCloseIcon}
|
|
111
|
+
variant="link"
|
|
112
|
+
color="surface"
|
|
113
|
+
class={classes.close}
|
|
114
|
+
onclick={handleClose}
|
|
115
|
+
aria-label="Close alert"
|
|
116
|
+
{...closeButtonProps}
|
|
117
|
+
/>
|
|
118
|
+
{/if}
|
|
119
|
+
</svelte:element>
|
|
120
|
+
{/if}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
import type { ClassNameValue } from 'tailwind-merge';
|
|
4
|
+
import type { AlertVariantProps, AlertSlots } from './alert.variants.js';
|
|
5
|
+
import type { AvatarProps } from '../Avatar/avatar.types.js';
|
|
6
|
+
import type { ButtonProps } from '../Button/button.types.js';
|
|
7
|
+
export type AlertProps = Omit<HTMLAttributes<HTMLDivElement>, 'class' | 'title'> & {
|
|
8
|
+
/**
|
|
9
|
+
* The HTML element to render as.
|
|
10
|
+
* @default 'div'
|
|
11
|
+
*/
|
|
12
|
+
as?: keyof HTMLElementTagNameMap;
|
|
13
|
+
/**
|
|
14
|
+
* Override styles for specific alert slots.
|
|
15
|
+
*/
|
|
16
|
+
ui?: Partial<Record<AlertSlots, ClassNameValue>>;
|
|
17
|
+
/**
|
|
18
|
+
* Alert title text.
|
|
19
|
+
*/
|
|
20
|
+
title?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Alert description text.
|
|
23
|
+
*/
|
|
24
|
+
description?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Icon name to display (Iconify format).
|
|
27
|
+
* Takes precedence over avatar.
|
|
28
|
+
*/
|
|
29
|
+
icon?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Avatar props to display on the left side.
|
|
32
|
+
* Only rendered if icon is not provided.
|
|
33
|
+
*/
|
|
34
|
+
avatar?: AvatarProps;
|
|
35
|
+
/**
|
|
36
|
+
* The color theme of the alert.
|
|
37
|
+
* @default 'primary'
|
|
38
|
+
*/
|
|
39
|
+
color?: NonNullable<AlertVariantProps['color']>;
|
|
40
|
+
/**
|
|
41
|
+
* The visual style variant.
|
|
42
|
+
* @default 'soft'
|
|
43
|
+
*/
|
|
44
|
+
variant?: NonNullable<AlertVariantProps['variant']>;
|
|
45
|
+
/**
|
|
46
|
+
* Layout orientation.
|
|
47
|
+
* @default 'horizontal'
|
|
48
|
+
*/
|
|
49
|
+
orientation?: NonNullable<AlertVariantProps['orientation']>;
|
|
50
|
+
/**
|
|
51
|
+
* Whether the alert is visible.
|
|
52
|
+
* @default true
|
|
53
|
+
*/
|
|
54
|
+
open?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Show close button.
|
|
57
|
+
* Pass ButtonProps to customize.
|
|
58
|
+
* @default false
|
|
59
|
+
*/
|
|
60
|
+
close?: boolean | ButtonProps;
|
|
61
|
+
/**
|
|
62
|
+
* Close button icon name.
|
|
63
|
+
* @default 'lucide:x'
|
|
64
|
+
*/
|
|
65
|
+
closeIcon?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Action buttons configuration.
|
|
68
|
+
*/
|
|
69
|
+
actions?: ButtonProps[];
|
|
70
|
+
/**
|
|
71
|
+
* Additional CSS classes for the root element.
|
|
72
|
+
*/
|
|
73
|
+
class?: ClassNameValue;
|
|
74
|
+
/**
|
|
75
|
+
* Custom leading content slot.
|
|
76
|
+
* Replaces icon/avatar when provided.
|
|
77
|
+
*/
|
|
78
|
+
leading?: Snippet;
|
|
79
|
+
/**
|
|
80
|
+
* Custom title content slot.
|
|
81
|
+
*/
|
|
82
|
+
titleSlot?: Snippet;
|
|
83
|
+
/**
|
|
84
|
+
* Custom description content slot.
|
|
85
|
+
*/
|
|
86
|
+
descriptionSlot?: Snippet;
|
|
87
|
+
/**
|
|
88
|
+
* Custom actions content slot.
|
|
89
|
+
*/
|
|
90
|
+
actionsSlot?: Snippet;
|
|
91
|
+
/**
|
|
92
|
+
* Custom close button content slot.
|
|
93
|
+
*/
|
|
94
|
+
closeSlot?: Snippet;
|
|
95
|
+
/**
|
|
96
|
+
* Callback when close button is clicked.
|
|
97
|
+
*/
|
|
98
|
+
onClose?: () => void;
|
|
99
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { type VariantProps } from 'tailwind-variants';
|
|
2
|
+
export declare const alertVariants: import("tailwind-variants").TVReturnType<{
|
|
3
|
+
variant: {
|
|
4
|
+
solid: string;
|
|
5
|
+
outline: string;
|
|
6
|
+
soft: string;
|
|
7
|
+
subtle: string;
|
|
8
|
+
};
|
|
9
|
+
color: {
|
|
10
|
+
primary: string;
|
|
11
|
+
secondary: string;
|
|
12
|
+
tertiary: string;
|
|
13
|
+
success: string;
|
|
14
|
+
warning: string;
|
|
15
|
+
error: string;
|
|
16
|
+
info: string;
|
|
17
|
+
surface: string;
|
|
18
|
+
};
|
|
19
|
+
orientation: {
|
|
20
|
+
horizontal: {
|
|
21
|
+
root: string;
|
|
22
|
+
actions: string;
|
|
23
|
+
};
|
|
24
|
+
vertical: {
|
|
25
|
+
root: string;
|
|
26
|
+
actions: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
title: {
|
|
30
|
+
true: {
|
|
31
|
+
description: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
}, {
|
|
35
|
+
root: string;
|
|
36
|
+
wrapper: string;
|
|
37
|
+
title: string;
|
|
38
|
+
description: string;
|
|
39
|
+
icon: string;
|
|
40
|
+
avatar: string;
|
|
41
|
+
actions: string;
|
|
42
|
+
close: string;
|
|
43
|
+
}, undefined, {
|
|
44
|
+
variant: {
|
|
45
|
+
solid: string;
|
|
46
|
+
outline: string;
|
|
47
|
+
soft: string;
|
|
48
|
+
subtle: string;
|
|
49
|
+
};
|
|
50
|
+
color: {
|
|
51
|
+
primary: string;
|
|
52
|
+
secondary: string;
|
|
53
|
+
tertiary: string;
|
|
54
|
+
success: string;
|
|
55
|
+
warning: string;
|
|
56
|
+
error: string;
|
|
57
|
+
info: string;
|
|
58
|
+
surface: string;
|
|
59
|
+
};
|
|
60
|
+
orientation: {
|
|
61
|
+
horizontal: {
|
|
62
|
+
root: string;
|
|
63
|
+
actions: string;
|
|
64
|
+
};
|
|
65
|
+
vertical: {
|
|
66
|
+
root: string;
|
|
67
|
+
actions: string;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
title: {
|
|
71
|
+
true: {
|
|
72
|
+
description: string;
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
}, {
|
|
76
|
+
root: string;
|
|
77
|
+
wrapper: string;
|
|
78
|
+
title: string;
|
|
79
|
+
description: string;
|
|
80
|
+
icon: string;
|
|
81
|
+
avatar: string;
|
|
82
|
+
actions: string;
|
|
83
|
+
close: string;
|
|
84
|
+
}, import("tailwind-variants").TVReturnType<{
|
|
85
|
+
variant: {
|
|
86
|
+
solid: string;
|
|
87
|
+
outline: string;
|
|
88
|
+
soft: string;
|
|
89
|
+
subtle: string;
|
|
90
|
+
};
|
|
91
|
+
color: {
|
|
92
|
+
primary: string;
|
|
93
|
+
secondary: string;
|
|
94
|
+
tertiary: string;
|
|
95
|
+
success: string;
|
|
96
|
+
warning: string;
|
|
97
|
+
error: string;
|
|
98
|
+
info: string;
|
|
99
|
+
surface: string;
|
|
100
|
+
};
|
|
101
|
+
orientation: {
|
|
102
|
+
horizontal: {
|
|
103
|
+
root: string;
|
|
104
|
+
actions: string;
|
|
105
|
+
};
|
|
106
|
+
vertical: {
|
|
107
|
+
root: string;
|
|
108
|
+
actions: string;
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
title: {
|
|
112
|
+
true: {
|
|
113
|
+
description: string;
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
}, {
|
|
117
|
+
root: string;
|
|
118
|
+
wrapper: string;
|
|
119
|
+
title: string;
|
|
120
|
+
description: string;
|
|
121
|
+
icon: string;
|
|
122
|
+
avatar: string;
|
|
123
|
+
actions: string;
|
|
124
|
+
close: string;
|
|
125
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
126
|
+
export type AlertVariantProps = VariantProps<typeof alertVariants>;
|
|
127
|
+
export type AlertSlots = keyof ReturnType<typeof alertVariants>;
|
|
128
|
+
export declare const alertDefaults: {
|
|
129
|
+
defaultVariants: import("tailwind-variants").TVDefaultVariants<{
|
|
130
|
+
variant: {
|
|
131
|
+
solid: string;
|
|
132
|
+
outline: string;
|
|
133
|
+
soft: string;
|
|
134
|
+
subtle: string;
|
|
135
|
+
};
|
|
136
|
+
color: {
|
|
137
|
+
primary: string;
|
|
138
|
+
secondary: string;
|
|
139
|
+
tertiary: string;
|
|
140
|
+
success: string;
|
|
141
|
+
warning: string;
|
|
142
|
+
error: string;
|
|
143
|
+
info: string;
|
|
144
|
+
surface: string;
|
|
145
|
+
};
|
|
146
|
+
orientation: {
|
|
147
|
+
horizontal: {
|
|
148
|
+
root: string;
|
|
149
|
+
actions: string;
|
|
150
|
+
};
|
|
151
|
+
vertical: {
|
|
152
|
+
root: string;
|
|
153
|
+
actions: string;
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
title: {
|
|
157
|
+
true: {
|
|
158
|
+
description: string;
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
}, {
|
|
162
|
+
root: string;
|
|
163
|
+
wrapper: string;
|
|
164
|
+
title: string;
|
|
165
|
+
description: string;
|
|
166
|
+
icon: string;
|
|
167
|
+
avatar: string;
|
|
168
|
+
actions: string;
|
|
169
|
+
close: string;
|
|
170
|
+
}, {
|
|
171
|
+
variant: {
|
|
172
|
+
solid: string;
|
|
173
|
+
outline: string;
|
|
174
|
+
soft: string;
|
|
175
|
+
subtle: string;
|
|
176
|
+
};
|
|
177
|
+
color: {
|
|
178
|
+
primary: string;
|
|
179
|
+
secondary: string;
|
|
180
|
+
tertiary: string;
|
|
181
|
+
success: string;
|
|
182
|
+
warning: string;
|
|
183
|
+
error: string;
|
|
184
|
+
info: string;
|
|
185
|
+
surface: string;
|
|
186
|
+
};
|
|
187
|
+
orientation: {
|
|
188
|
+
horizontal: {
|
|
189
|
+
root: string;
|
|
190
|
+
actions: string;
|
|
191
|
+
};
|
|
192
|
+
vertical: {
|
|
193
|
+
root: string;
|
|
194
|
+
actions: string;
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
title: {
|
|
198
|
+
true: {
|
|
199
|
+
description: string;
|
|
200
|
+
};
|
|
201
|
+
};
|
|
202
|
+
}, {
|
|
203
|
+
root: string;
|
|
204
|
+
wrapper: string;
|
|
205
|
+
title: string;
|
|
206
|
+
description: string;
|
|
207
|
+
icon: string;
|
|
208
|
+
avatar: string;
|
|
209
|
+
actions: string;
|
|
210
|
+
close: string;
|
|
211
|
+
}>;
|
|
212
|
+
slots: Partial<Record<AlertSlots, string>>;
|
|
213
|
+
};
|