@ibis-design/svelte 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +136 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +1451 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/AppLayout.svelte.d.ts +1 -0
- package/dist/lib/AuthLayout.svelte.d.ts +1 -0
- package/dist/lib/Button.svelte.d.ts +1 -0
- package/dist/lib/Card.svelte.d.ts +1 -0
- package/dist/lib/DashboardLayout.svelte.d.ts +1 -0
- package/dist/types/button.d.ts +8 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/layout.d.ts +27 -0
- package/package.json +40 -0
package/README.md
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# @ibis-design/svelte
|
|
2
|
+
|
|
3
|
+
Svelte 5 component library for the IBIS design system. Provides primitives (Button, Card) and full layout shells (AuthLayout, AppLayout, DashboardLayout) styled via CSS custom properties from `@ibis-design/css`.
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
- **Svelte 5** (runes and snippets; no slots).
|
|
8
|
+
- **@ibis-design/css** — design tokens. The consuming application must load the token stylesheet once so `:root` variables are available.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install @ibis-design/svelte @ibis-design/css
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Token CSS
|
|
17
|
+
|
|
18
|
+
Import the design tokens in your application entry or root layout so all components receive the correct variables:
|
|
19
|
+
|
|
20
|
+
```js
|
|
21
|
+
// e.g. in your app entry (main.ts, +layout.svelte, or App.svelte)
|
|
22
|
+
import '@ibis-design/css';
|
|
23
|
+
// or
|
|
24
|
+
import '@ibis-design/css/ibis-design.css';
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Without this import, components will not have colors, spacing, or typography from the design system.
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
### Primitives
|
|
32
|
+
|
|
33
|
+
**Button** — use the `children` snippet for the label:
|
|
34
|
+
|
|
35
|
+
```svelte
|
|
36
|
+
<script>
|
|
37
|
+
import { Button } from '@ibis-design/svelte';
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<Button variant="primary" size="md">Submit</Button>
|
|
41
|
+
<Button variant="secondary" size="sm">Cancel</Button>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Card** — use the `children` snippet for content:
|
|
45
|
+
|
|
46
|
+
```svelte
|
|
47
|
+
<script>
|
|
48
|
+
import { Card } from '@ibis-design/svelte';
|
|
49
|
+
</script>
|
|
50
|
+
|
|
51
|
+
<Card>
|
|
52
|
+
<p>Card content</p>
|
|
53
|
+
</Card>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Layouts
|
|
57
|
+
|
|
58
|
+
Layouts use **snippets** (Svelte 5). Pass snippet props for header, sidebar, and main content. Content between the component tags is the `children` snippet.
|
|
59
|
+
|
|
60
|
+
**AppLayout** — generic app shell with optional header, sidebar, main, and footer:
|
|
61
|
+
|
|
62
|
+
```svelte
|
|
63
|
+
<script>
|
|
64
|
+
import { AppLayout } from '@ibis-design/svelte';
|
|
65
|
+
|
|
66
|
+
// Define snippets and pass as props; content between tags is children
|
|
67
|
+
</script>
|
|
68
|
+
|
|
69
|
+
<AppLayout
|
|
70
|
+
header={headerSnippet}
|
|
71
|
+
sidebar={sidebarSnippet}
|
|
72
|
+
footer={footerSnippet}
|
|
73
|
+
>
|
|
74
|
+
<p>Main page content</p>
|
|
75
|
+
</AppLayout>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
With inline snippets:
|
|
79
|
+
|
|
80
|
+
```svelte
|
|
81
|
+
<script>
|
|
82
|
+
import { AppLayout } from '@ibis-design/svelte';
|
|
83
|
+
</script>
|
|
84
|
+
|
|
85
|
+
{#snippet header()}
|
|
86
|
+
<nav>App header</nav>
|
|
87
|
+
{/snippet}
|
|
88
|
+
{#snippet sidebar()}
|
|
89
|
+
<aside>Sidebar</aside>
|
|
90
|
+
{/snippet}
|
|
91
|
+
|
|
92
|
+
<AppLayout header={header} sidebar={sidebar}>
|
|
93
|
+
<p>Main content</p>
|
|
94
|
+
</AppLayout>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**AuthLayout** — centered single-column layout for login/signup:
|
|
98
|
+
|
|
99
|
+
```svelte
|
|
100
|
+
<script>
|
|
101
|
+
import { AuthLayout } from '@ibis-design/svelte';
|
|
102
|
+
</script>
|
|
103
|
+
|
|
104
|
+
<AuthLayout logo={logoSnippet} footer={footerSnippet}>
|
|
105
|
+
<form>Login form</form>
|
|
106
|
+
</AuthLayout>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**DashboardLayout** — dashboard shell with themed header and sidebar (same snippet props as AppLayout).
|
|
110
|
+
|
|
111
|
+
## Exports
|
|
112
|
+
|
|
113
|
+
- **Components:** `Button`, `Card`, `AuthLayout`, `AppLayout`, `DashboardLayout`
|
|
114
|
+
- **Types:** `ButtonVariant`, `ButtonSize`, `AuthLayoutProps`, `AppLayoutProps`, `DashboardLayoutProps` (from `@ibis-design/svelte`)
|
|
115
|
+
|
|
116
|
+
## Build
|
|
117
|
+
|
|
118
|
+
From the package directory:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
npm run build
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
From the monorepo root:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
npm run build --workspaces
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Type checking
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
npm run check
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Runs `svelte-check` with the package `tsconfig.json`.
|
package/dist/index.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibis-button.svelte-118lylz{font-family:var(--font-family-sans);font-weight:var(--font-weight-medium);border:var(--border-width-thin) solid transparent;border-radius:var(--border-radius-default);cursor:pointer;transition:background-color var(--transition-duration-fast) var(--transition-timing-default), opacity var(--transition-duration-fast) var(--transition-timing-default)}.ibis-button.svelte-118lylz:disabled{opacity:var(--opacity-disabled);cursor:not-allowed}.ibis-button--primary.svelte-118lylz{background-color:var(--color-buttons-simple);color:var(--color-white)}.ibis-button--primary.svelte-118lylz:not(:disabled):hover{background-color:var(--color-primary-700)}.ibis-button--secondary.svelte-118lylz{color:var(--color-primary-500);border-color:var(--color-primary-500);background-color:#0000}.ibis-button--secondary.svelte-118lylz:not(:disabled):hover{background-color:var(--color-primary-50)}.ibis-button--sm.svelte-118lylz{padding:var(--spacing-1) var(--spacing-3);font-size:var(--font-size-normal-text-sm)}.ibis-button--md.svelte-118lylz{padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-normal-text-default)}.ibis-button--lg.svelte-118lylz{padding:var(--spacing-3) var(--spacing-6);font-size:var(--font-size-normal-text-lg)}.ibis-card.svelte-2gevwt{background-color:var(--color-backgrounds-classic-bg-light);border-radius:var(--border-radius-md);box-shadow:var(--shadow-default);padding:var(--spacing-4);font-family:var(--font-family-sans);font-size:var(--font-size-normal-text-default);line-height:var(--line-height-normal)}.ibis-auth-layout.svelte-bz8iij{min-height:100vh;padding:var(--spacing-6);background-color:var(--color-backgrounds-themed-bg-ibis-white);font-family:var(--font-family-sans);flex-direction:column;justify-content:center;align-items:center;display:flex}.ibis-auth-layout__logo.svelte-bz8iij{margin-bottom:var(--spacing-8)}.ibis-auth-layout__main.svelte-bz8iij{flex:0 auto;width:100%;max-width:24rem}.ibis-auth-layout__footer.svelte-bz8iij{margin-top:var(--spacing-8);font-size:var(--font-size-normal-text-sm);color:var(--color-neutral-600)}.ibis-app-layout.svelte-1ff24d4{background-color:var(--color-backgrounds-classic-bg-light);min-height:100vh;font-family:var(--font-family-sans);flex-direction:column;display:flex}.ibis-app-layout__header.svelte-1ff24d4{z-index:var(--z-index-sticky);flex:none}.ibis-app-layout__body.svelte-1ff24d4{flex:auto;min-height:0;display:flex}.ibis-app-layout__sidebar.svelte-1ff24d4{background-color:var(--color-neutral-50);border-right:var(--border-width-thin) solid var(--color-neutral-200);flex:none;width:16rem}.ibis-app-layout__main.svelte-1ff24d4{padding:var(--spacing-6);flex:auto;overflow:auto}.ibis-app-layout__footer.svelte-1ff24d4{padding:var(--spacing-4);border-top:var(--border-width-thin) solid var(--color-neutral-200);font-size:var(--font-size-normal-text-sm);color:var(--color-neutral-600);flex:none}.ibis-dashboard-layout.svelte-1y27ool{background-color:var(--color-backgrounds-classic-bg-light);min-height:100vh;font-family:var(--font-family-sans);flex-direction:column;display:flex}.ibis-dashboard-layout__header.svelte-1y27ool{background:linear-gradient(var(--color-buttons-gradient-start), var(--color-buttons-gradient-end));color:var(--color-white);z-index:var(--z-index-sticky);flex:none}.ibis-dashboard-layout__body.svelte-1y27ool{flex:auto;min-height:0;display:flex}.ibis-dashboard-layout__sidebar.svelte-1y27ool{background-color:var(--color-neutral-100);border-right:var(--border-width-thin) solid var(--color-neutral-300);flex:none;width:14rem}.ibis-dashboard-layout__main.svelte-1y27ool{padding:var(--spacing-6);flex:auto;overflow:auto}.ibis-dashboard-layout__footer.svelte-1y27ool{padding:var(--spacing-3);border-top:var(--border-width-thin) solid var(--color-neutral-200);font-size:var(--font-size-normal-text-xs);color:var(--color-neutral-600);flex:none}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @ibis-design/svelte
|
|
3
|
+
*
|
|
4
|
+
* Svelte 5 component library for the IBIS design system. Provides primitives
|
|
5
|
+
* (Button, Card) and full layout shells (AuthLayout, AppLayout, DashboardLayout)
|
|
6
|
+
* styled via CSS custom properties from @ibis-design/css.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```svelte
|
|
10
|
+
* import '@ibis-design/css';
|
|
11
|
+
* import { Button, AppLayout } from '@ibis-design/svelte';
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @packageDocumentation
|
|
15
|
+
*/
|
|
16
|
+
export { default as Button } from './lib/Button.svelte';
|
|
17
|
+
export { default as Card } from './lib/Card.svelte';
|
|
18
|
+
export { default as AuthLayout } from './lib/AuthLayout.svelte';
|
|
19
|
+
export { default as AppLayout } from './lib/AppLayout.svelte';
|
|
20
|
+
export { default as DashboardLayout } from './lib/DashboardLayout.svelte';
|
|
21
|
+
export * from './types/index';
|