@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 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}
@@ -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';