ui8kit 0.0.8 → 1.0.2

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 CHANGED
@@ -0,0 +1,213 @@
1
+ ## Semantic Components Integration Guide
2
+
3
+ ### CLI Installation (Recommended)
4
+
5
+ The semantic registry extends utility components with enhanced styling and behavior. Follow these steps:
6
+
7
+ #### 1. Initialize Base Registry (Required)
8
+ ```bash
9
+ # Initialize utility registry first (foundation requirement)
10
+ npx buildy-ui@latest init
11
+ ```
12
+
13
+ #### 2. Initialize Semantic Registry
14
+ ```bash
15
+ # Initialize semantic registry
16
+ npx buildy-ui@latest init --registry semantic
17
+
18
+ # Skip prompts and use defaults
19
+ npx buildy-ui@latest init --yes --registry semantic
20
+ ```
21
+
22
+ #### 3. Add Semantic Components
23
+ ```bash
24
+ # Add specific semantic components
25
+ npx buildy-ui@latest add button card --registry semantic
26
+ npx buildy-ui@latest add input --registry semantic
27
+
28
+ # Install ALL semantic components at once
29
+ npx buildy-ui@latest add --all --registry semantic
30
+
31
+ # Preview what would be installed
32
+ npx buildy-ui@latest add --all --dry-run --registry semantic
33
+
34
+ # Force overwrite existing files
35
+ npx buildy-ui@latest add button --force --registry semantic
36
+ ```
37
+
38
+ #### Project Structure After Installation
39
+ ```
40
+ semantic/
41
+ ├── ui/ # Semantic UI components
42
+ ├── blocks/ # Semantic blocks
43
+ ├── components/ # Semantic components
44
+ ├── templates/ # Semantic templates
45
+ └── buildy.config.json
46
+
47
+ utility/ # Base registry (required)
48
+ ├── ui/
49
+ ├── blocks/
50
+ └── buildy.config.json
51
+
52
+ lib/ # Shared utilities
53
+ └── utils.ts
54
+ ```
55
+
56
+ ## CSS Integration with Tailwind (PROD Mode)
57
+
58
+ ### Package Installation (Recommended for Tailwind projects)
59
+
60
+ Since semantic CSS files contain Tailwind directives (`@apply`), they must be processed during build time:
61
+
62
+ ```bash
63
+ # Install the CSS package
64
+ npm install ui8kit
65
+ # or
66
+ yarn add ui8kit
67
+ # or
68
+ pnpm add ui8kit
69
+ ```
70
+
71
+ ### Import in your CSS/SCSS files
72
+
73
+ ```css
74
+ /* Import all semantic styles */
75
+ @import "ui8kit/css/dist/semantic/index.css";
76
+
77
+ /* Or import individual components */
78
+ @import "ui8kit/css/dist/semantic/button.css";
79
+ @import "ui8kit/css/dist/semantic/card.css";
80
+ @import "ui8kit/css/dist/semantic/input.css";
81
+ ```
82
+
83
+ ### Why Package Installation is Required
84
+
85
+ Semantic CSS files contain Tailwind directives that need compilation:
86
+
87
+ ```css
88
+ /* Example from button.css */
89
+ .button-default {
90
+ @apply bg-primary text-primary-foreground shadow-xs hover:bg-primary/90;
91
+ }
92
+
93
+ .button-destructive {
94
+ @apply bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90;
95
+ }
96
+ ```
97
+
98
+ ### CDN vs Package Comparison
99
+
100
+ | Method | Use Case | Tailwind Directives | Build Required |
101
+ |--------|----------|-------------------|----------------|
102
+ | **Package** | Production projects | ✅ Supported | ✅ Required |
103
+ | **CDN** | Quick prototyping | ❌ Pre-compiled only | ❌ Not required |
104
+
105
+ ### Integration with Tailwind Config
106
+
107
+ Add the package path to your `tailwind.config.js` for proper purging:
108
+
109
+ ```js
110
+ /** @type {import('tailwindcss').Config} */
111
+ module.exports = {
112
+ content: [
113
+ "./src/**/*.{js,ts,jsx,tsx}",
114
+ "./node_modules/ui8kit/**/*.{js,ts,jsx,tsx}", // Add this line
115
+ ],
116
+ // ... rest of your config
117
+ }
118
+ ```
119
+
120
+ **Note**: CDN links with `@import` URLs will remain as external references and won't be processed by Tailwind's build system.
121
+
122
+ ### CDN Integration (only DEV Mode)
123
+
124
+ For projects that prefer CDN over CLI installation:
125
+
126
+ #### Full Semantic Stylesheet
127
+ ```html
128
+ <!-- Load complete semantic components -->
129
+ <link rel="stylesheet" href="https://unpkg.com/ui8kit@1.0.1/css/dist/semantic/index.css">
130
+ <!-- OR -->
131
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ui8kit@latest/css/dist/semantic/index.css">
132
+ ```
133
+
134
+ #### Individual Component Stylesheets
135
+ ```html
136
+ <!-- Load only specific components you need -->
137
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ui8kit@latest/css/dist/semantic/button.css">
138
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ui8kit@latest/css/dist/semantic/card.css">
139
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ui8kit@latest/css/dist/semantic/input.css">
140
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ui8kit@latest/css/dist/semantic/alert.css">
141
+ ```
142
+
143
+ #### Available Individual Components
144
+ - `button.css` - Enhanced button styles
145
+ - `card.css` - Card component layouts
146
+ - `input.css` - Form input styling
147
+ - `alert.css` - Alert and notification styles
148
+ - `badge.css` - Badge and label components
149
+ - `avatar.css` - User avatar components
150
+ - `table.css` - Data table styling
151
+ - `pagination.css` - Navigation pagination
152
+ - `breadcrumb.css` - Navigation breadcrumbs
153
+ - `skeleton.css` - Loading skeleton states
154
+
155
+ ### Usage Examples
156
+
157
+ #### With CLI Installation
158
+ ```jsx
159
+ // After CLI installation, components are available via aliases
160
+ import { Button } from '@/semantic/ui/button'
161
+ import { Card } from '@/semantic/ui/card'
162
+
163
+ function App() {
164
+ return (
165
+ <Card>
166
+ <Button variant="semantic">Semantic Button</Button>
167
+ </Card>
168
+ )
169
+ }
170
+ ```
171
+
172
+ #### With CDN Integration
173
+ ```html
174
+ <!DOCTYPE html>
175
+ <html>
176
+ <head>
177
+ <!-- Load semantic styles -->
178
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ui8kit@latest/css/dist/semantic/index.css">
179
+ </head>
180
+ <body>
181
+ <!-- Use semantic classes directly -->
182
+ <div class="semantic-card">
183
+ <button class="semantic-btn semantic-btn-primary">
184
+ Semantic Button
185
+ </button>
186
+ </div>
187
+ </body>
188
+ </html>
189
+ ```
190
+
191
+ ### Registry Dependencies
192
+
193
+ **Important**: Semantic registry requires utility registry as foundation:
194
+ - ✅ Utility registry must be initialized first
195
+ - ✅ Components must exist in utility before installing in semantic
196
+ - ❌ Cannot use semantic registry without utility base
197
+
198
+ ### Performance Considerations
199
+
200
+ **CLI Method**:
201
+ - ✅ Tree-shaking friendly
202
+ - ✅ Only includes used components
203
+ - ✅ TypeScript support
204
+ - ✅ Local development workflow
205
+
206
+ **CDN Method**:
207
+ - ✅ No build step required
208
+ - ✅ Instant integration
209
+ - ✅ Cacheable across projects
210
+ - ⚠️ Individual files = multiple HTTP requests
211
+ - ⚠️ Full bundle may include unused styles
212
+
213
+ Choose CLI for development projects, CDN for quick prototyping or static sites.
@@ -0,0 +1,11 @@
1
+ .alert {
2
+ @apply relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current;
3
+ }
4
+
5
+ .alert-default {
6
+ @apply bg-card text-card-foreground;
7
+ }
8
+
9
+ .alert-destructive {
10
+ @apply text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90;
11
+ }
@@ -0,0 +1,59 @@
1
+ .article {
2
+ @apply bg-card text-card-foreground flex flex-col gap-6 rounded-md border shadow-sm;
3
+ }
4
+
5
+ .article-header {
6
+ @apply flex flex-col gap-2 px-6 mt-4;
7
+ }
8
+
9
+ .article-title {
10
+ @apply text-2xl font-bold mb-4;
11
+ }
12
+
13
+ .article-meta {
14
+ @apply flex flex-wrap items-center gap-3 text-sm text-muted-foreground;
15
+ }
16
+
17
+ .article-time {
18
+ @apply text-sm text-muted-foreground;
19
+ }
20
+
21
+ .article-author {
22
+ @apply text-sm not-italic;
23
+ }
24
+
25
+ .article-figure {
26
+ @apply overflow-hidden;
27
+ }
28
+
29
+ .article-image {
30
+ @apply aspect-video w-full object-cover rounded-t-md;
31
+ }
32
+
33
+ .article-figcaption {
34
+ @apply mt-2 text-center text-sm text-muted-foreground;
35
+ }
36
+
37
+ .article-content {
38
+ @apply max-w-none px-6 py-4;
39
+ }
40
+
41
+ .article-blockquote {
42
+ @apply border-l-4 border-muted pl-4 italic;
43
+ }
44
+
45
+ .article-footer {
46
+ @apply flex items-center justify-between px-6 py-4;
47
+ }
48
+
49
+ .article-tags {
50
+ @apply flex flex-wrap gap-2;
51
+ }
52
+
53
+ .article-tag {
54
+ @apply inline-flex items-center rounded-full border bg-muted px-2.5 py-0.5 text-xs font-semibold;
55
+ }
56
+
57
+ .article-actions {
58
+ @apply flex items-center gap-2;
59
+ }
@@ -0,0 +1,11 @@
1
+ .avatar {
2
+ @apply relative flex size-8 shrink-0 overflow-hidden rounded-full;
3
+ }
4
+
5
+ .avatar-image {
6
+ @apply aspect-square size-full;
7
+ }
8
+
9
+ .avatar-fallback {
10
+ @apply bg-muted flex size-full items-center justify-center rounded-full;
11
+ }
@@ -0,0 +1,19 @@
1
+ .badge {
2
+ @apply inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden;
3
+ }
4
+
5
+ .badge-default {
6
+ @apply border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90;
7
+ }
8
+
9
+ .badge-secondary {
10
+ @apply border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90;
11
+ }
12
+
13
+ .badge-destructive {
14
+ @apply border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60;
15
+ }
16
+
17
+ .badge-outline {
18
+ @apply text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground;
19
+ }
@@ -0,0 +1,23 @@
1
+ .breadcrumb-list {
2
+ @apply text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5;
3
+ }
4
+
5
+ .breadcrumb-item {
6
+ @apply inline-flex items-center gap-1.5;
7
+ }
8
+
9
+ .breadcrumb-link {
10
+ @apply hover:text-foreground transition-colors;
11
+ }
12
+
13
+ .breadcrumb-page {
14
+ @apply text-foreground font-normal;
15
+ }
16
+
17
+ .breadcrumb-separator {
18
+ @apply [&>svg]:size-3.5;
19
+ }
20
+
21
+ .breadcrumb-ellipsis {
22
+ @apply flex size-9 items-center justify-center;
23
+ }
@@ -0,0 +1,39 @@
1
+ .button {
2
+ @apply inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive; @apply h-9 px-4 py-2 has-[>svg]:px-3;
3
+ }
4
+
5
+ .button-default {
6
+ @apply bg-primary text-primary-foreground shadow-xs hover:bg-primary/90;
7
+ }
8
+
9
+ .button-destructive {
10
+ @apply bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60;
11
+ }
12
+
13
+ .button-outline {
14
+ @apply border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50;
15
+ }
16
+
17
+ .button-secondary {
18
+ @apply bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80;
19
+ }
20
+
21
+ .button-ghost {
22
+ @apply hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50;
23
+ }
24
+
25
+ .button-link {
26
+ @apply text-primary underline-offset-4 hover:underline;
27
+ }
28
+
29
+ .button-sm {
30
+ @apply h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5;
31
+ }
32
+
33
+ .button-lg {
34
+ @apply h-10 rounded-md px-6 has-[>svg]:px-4;
35
+ }
36
+
37
+ .button-icon {
38
+ @apply size-9;
39
+ }
@@ -0,0 +1,43 @@
1
+ .card {
2
+ @apply bg-card text-card-foreground flex flex-col gap-6 rounded-md border shadow-sm;
3
+ }
4
+
5
+ .card-header {
6
+ @apply @container/card-header grid-rows-[auto_auto] grid auto-rows-min items-start gap-1.5 mt-4 px-6 has-[data-slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6;
7
+ }
8
+
9
+ .card-title {
10
+ @apply leading-none font-bold text-xl mb-2;
11
+ }
12
+
13
+ .card-description {
14
+ @apply text-muted-foreground text-sm mb-4;
15
+ }
16
+
17
+ .card-action {
18
+ @apply col-start-2 row-span-2 row-start-1 self-start justify-self-end;
19
+ }
20
+
21
+ .article-meta {
22
+ @apply flex flex-wrap items-center gap-3 text-sm text-muted-foreground;
23
+ }
24
+
25
+ .article-figure {
26
+ @apply overflow-hidden;
27
+ }
28
+
29
+ .article-image {
30
+ @apply aspect-video w-full object-cover rounded-t-md;
31
+ }
32
+
33
+ .article-figcaption {
34
+ @apply mt-2 text-center text-sm text-muted-foreground;
35
+ }
36
+
37
+ .card-content {
38
+ @apply px-6 py-4;
39
+ }
40
+
41
+ .card-footer {
42
+ @apply flex items-center px-6 [.border-t]:pt-6;
43
+ }
@@ -0,0 +1,19 @@
1
+ @import "./label.css";
2
+ @import "./card.css";
3
+ @import "./sheet.css";
4
+ @import "./section.css";
5
+ @import "./nav.css";
6
+ @import "./markup.css";
7
+ @import "./main.css";
8
+ @import "./article.css";
9
+ @import "./alert.css";
10
+ @import "./badge.css";
11
+ @import "./button.css";
12
+ @import "./link.css";
13
+ @import "./avatar.css";
14
+ @import "./breadcrumb.css";
15
+ @import "./input.css";
16
+ @import "./pagination.css";
17
+ @import "./skeleton.css";
18
+ @import "./table.css";
19
+ @import "./textarea.css";
@@ -0,0 +1,3 @@
1
+ .input {
2
+ @apply file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm;
3
+ }
@@ -0,0 +1,3 @@
1
+ .label {
2
+ @apply flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50;
3
+ }
@@ -0,0 +1,39 @@
1
+ .link {
2
+ @apply inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive; @apply h-9 px-4 py-2 has-[>svg]:px-3;
3
+ }
4
+
5
+ .link-default {
6
+ @apply bg-primary text-primary-foreground shadow-xs hover:bg-primary/90;
7
+ }
8
+
9
+ .link-destructive {
10
+ @apply bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60;
11
+ }
12
+
13
+ .link-outline {
14
+ @apply border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50;
15
+ }
16
+
17
+ .link-secondary {
18
+ @apply bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80;
19
+ }
20
+
21
+ .link-ghost {
22
+ @apply hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50;
23
+ }
24
+
25
+ .link-link {
26
+ @apply text-primary underline-offset-4 hover:underline;
27
+ }
28
+
29
+ .link-sm {
30
+ @apply h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5;
31
+ }
32
+
33
+ .link-lg {
34
+ @apply h-10 rounded-md px-6 has-[>svg]:px-4;
35
+ }
36
+
37
+ .link-icon {
38
+ @apply size-9;
39
+ }
@@ -0,0 +1,3 @@
1
+ .main {
2
+ @apply flex-1;
3
+ }
@@ -0,0 +1,23 @@
1
+ .h1 {
2
+ @apply text-3xl font-bold mb-4;
3
+ }
4
+
5
+ .h2 {
6
+ @apply text-2xl font-bold mb-4;
7
+ }
8
+
9
+ .h3 {
10
+ @apply text-xl font-bold;
11
+ }
12
+
13
+ .h4 {
14
+ @apply text-xl font-bold;
15
+ }
16
+
17
+ .h5 {
18
+ @apply text-lg font-bold;
19
+ }
20
+
21
+ .h6 {
22
+ @apply text-base font-bold;
23
+ }
@@ -0,0 +1,63 @@
1
+ .nav {
2
+ @apply hidden lg:flex items-center space-x-1;
3
+ }
4
+
5
+ .nav-layout {
6
+ @apply relative;
7
+ }
8
+
9
+ .nav-bar {
10
+ @apply sticky top-0 z-50 w-full border-b border-border bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60;
11
+ }
12
+
13
+ .nav-list {
14
+ @apply flex items-center space-x-1;
15
+ }
16
+
17
+ .nav-item {
18
+ @apply relative;
19
+ }
20
+
21
+ .nav-link {
22
+ @apply inline-flex items-center px-3 py-2 text-sm font-medium rounded-md transition-colors hover:bg-accent hover:text-accent-foreground data-[active=true]:bg-accent data-[active=true]:text-accent-foreground;
23
+ }
24
+
25
+ .nav-dropdown {
26
+ @apply relative;
27
+ }
28
+
29
+ .nav-dropdown-content {
30
+ @apply absolute top-full left-0 mt-1 w-48 rounded-md bg-popover border border-border shadow-lg z-50 origin-top-left;
31
+ }
32
+
33
+ .nav-dropdown-item {
34
+ @apply block px-4 py-2 text-sm text-popover-foreground transition-colors hover:bg-accent hover:text-accent-foreground;
35
+ }
36
+
37
+ .nav-trigger {
38
+ @apply lg:hidden inline-flex items-center justify-center p-2 rounded-md text-foreground hover:bg-accent hover:text-accent-foreground focus:outline-none focus:ring-2 focus:ring-ring cursor-pointer;
39
+ }
40
+
41
+ .nav-mobile {
42
+ @apply fixed inset-0 z-50 lg:hidden opacity-0 invisible -translate-y-full transition-all duration-300 ease-out peer-checked:opacity-100 peer-checked:visible peer-checked:translate-y-0;
43
+ }
44
+
45
+ .nav-mobile-list {
46
+ @apply space-y-1;
47
+ }
48
+
49
+ .nav-mobile-link {
50
+ @apply flex items-center w-full px-3 py-3 text-base font-medium rounded-md transition-colors hover:bg-accent hover:text-accent-foreground data-[active=true]:bg-accent data-[active=true]:text-accent-foreground;
51
+ }
52
+
53
+ .nav-mobile-dropdown-item {
54
+ @apply block px-3 py-2 text-sm rounded-md transition-colors hover:bg-accent hover:text-accent-foreground;
55
+ }
56
+
57
+ .nav-group {
58
+ @apply py-2;
59
+ }
60
+
61
+ .nav-group-buttons {
62
+ @apply flex items-center space-x-2;
63
+ }
@@ -0,0 +1,11 @@
1
+ .pagination {
2
+ @apply mx-auto flex w-full justify-center;
3
+ }
4
+
5
+ .pagination-content {
6
+ @apply flex flex-row items-center gap-1;
7
+ }
8
+
9
+ .pagination-ellipsis {
10
+ @apply flex size-9 items-center justify-center;
11
+ }
@@ -0,0 +1,43 @@
1
+ .section {
2
+ @apply w-full py-6 md:py-12 lg:py-18;
3
+ }
4
+
5
+ .container {
6
+ @apply container mx-auto px-4 md:px-6 lg:px-8;
7
+ }
8
+
9
+ .full-width {
10
+ @apply w-full;
11
+ }
12
+
13
+ .section-header {
14
+ @apply w-full py-6 md:py-12 lg:py-18;
15
+ }
16
+
17
+ .section-title {
18
+ @apply text-3xl font-bold mb-4;
19
+ }
20
+
21
+ .section-description {
22
+ @apply text-secondary-foreground mb-4;
23
+ }
24
+
25
+ .section-footer {
26
+ @apply py-8;
27
+ }
28
+
29
+ .section-content {
30
+ @apply w-full;
31
+ }
32
+
33
+ .row {
34
+ @apply flex flex-wrap -mx-4;
35
+ }
36
+
37
+ .col {
38
+ @apply w-full px-4;
39
+ }
40
+
41
+ .grid {
42
+ @apply grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6;
43
+ }
@@ -0,0 +1,35 @@
1
+ .sheet-trigger {
2
+ @apply inline-flex md:hidden items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all h-9 p-2 border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground cursor-pointer;
3
+ }
4
+
5
+ .sheet-content {
6
+ @apply fixed inset-y-0 left-0 z-50 w-full max-w-sm bg-background shadow-lg border-r transform -translate-x-full transition-transform duration-300 ease-out peer-checked:translate-x-0 flex flex-col overflow-hidden;
7
+ }
8
+
9
+ .sheet-overlay {
10
+ @apply fixed inset-0 z-40 bg-black/50 backdrop-blur-sm opacity-0 invisible transition-all duration-300 ease-out peer-checked:opacity-100 peer-checked:visible peer-checked:pointer-events-auto transform-gpu cursor-pointer;
11
+ }
12
+
13
+ .sheet-header {
14
+ @apply flex flex-col space-y-2 p-6;
15
+ }
16
+
17
+ .sheet-body {
18
+ @apply flex-1 overflow-y-auto p-6;
19
+ }
20
+
21
+ .sheet-footer {
22
+ @apply mt-auto flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 p-6;
23
+ }
24
+
25
+ .sheet-title {
26
+ @apply text-lg font-semibold text-foreground;
27
+ }
28
+
29
+ .sheet-description {
30
+ @apply text-sm text-muted-foreground;
31
+ }
32
+
33
+ .sheet-close {
34
+ @apply inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring cursor-pointer;
35
+ }
@@ -0,0 +1,3 @@
1
+ .skeleton {
2
+ @apply bg-accent animate-pulse rounded-md;
3
+ }
@@ -0,0 +1,31 @@
1
+ .table {
2
+ @apply w-full caption-bottom text-sm;
3
+ }
4
+
5
+ .table-header {
6
+ @apply [&_tr]:border-b;
7
+ }
8
+
9
+ .table-body {
10
+ @apply [&_tr:last-child]:border-0;
11
+ }
12
+
13
+ .table-footer {
14
+ @apply bg-muted/50 border-t font-medium [&>tr]:last:border-b-0;
15
+ }
16
+
17
+ .table-row {
18
+ @apply hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors;
19
+ }
20
+
21
+ .table-head {
22
+ @apply text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px];
23
+ }
24
+
25
+ .table-cell {
26
+ @apply p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px];
27
+ }
28
+
29
+ .table-caption {
30
+ @apply text-muted-foreground mt-4 text-sm;
31
+ }
@@ -0,0 +1,3 @@
1
+ .textarea {
2
+ @apply border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm;
3
+ }
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "ui8kit",
3
- "version": "0.0.8",
3
+ "version": "1.0.2",
4
4
  "description": "UI8Kit components registry for buildy-ui cli",
5
5
  "main": "index.js",
6
6
  "files": [
7
+ "*.css",
8
+ "**/*.css",
9
+ "semantic/",
10
+ "dist/",
7
11
  "r/",
8
12
  "index.json"
9
13
  ],