@seip/blue-bird-css 0.0.0-stage β†’ 0.3.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.
Files changed (3) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1014 -3
  3. package/package.json +92 -5
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Seip25
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,1014 @@
1
- # Temporary Holding Version
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.
1
+ # 🐦 Blue Bird CSS & JS Framework
2
+
3
+ A lightweight, semantic, modern design framework inspired by modern aesthetics and Tailwind-like utility speed. **Zero build step and zero configuration required**.
4
+
5
+ πŸ“– **[Live Interactive Documentation](https://seip25.github.io/Blue-bird-css/)**
6
+
7
+ ---
8
+
9
+ ## πŸ“‹ Table of Contents
10
+
11
+ - [⚑ Key Features](#-key-features)
12
+ - [πŸš€ Quick Start (NPM & CDN)](#-quick-start-npm--cdn)
13
+ - [✨ VS Code Autocompletion & TypeScript](#-vs-code-autocompletion--typescript)
14
+ - [🧠 JavaScript Engine (`bluebird.js`) & API](#-javascript-engine-bluebirdjs--api)
15
+ - [Core `bluebird()` Function](#core-bluebird-function)
16
+ - [Responsive Data Table (`ResponsiveDataTable`)](#responsive-data-table-responsivedatatable)
17
+ - [Toast Notifications (`toast()`)](#toast-notifications-toast)
18
+ - [Snackbar (`snackbar()`)](#snackbar-snackbar)
19
+ - [Command Palette (`Ctrl+K`)](#command-palette-ctrlk)
20
+ - [4-Direction Drawer Panels](#4-direction-drawer-panels)
21
+ - [Interactive Tabs](#interactive-tabs)
22
+ - [Touch & Drag Carousel](#touch--drag-carousel)
23
+ - [Automatic Mobile Navigation](#automatic-mobile-navigation)
24
+ - [HTTP Fetch Client (`Http()`)](#http-fetch-client-http)
25
+ - [URL Parameter Helper (`getUrlParameter()`)](#url-parameter-helper-geturlparameter)
26
+ - [Declarative HTML `data-*` Attributes](#declarative-html-data--attributes)
27
+ - [🎨 CSS Components & Utilities](#-css-components--utilities)
28
+ - [Buttons, Soft Tint & Cyberpunk Glow](#buttons-soft-tint--cyberpunk-glow)
29
+ - [Badges & Tooltips](#badges--tooltips)
30
+ - [Forms & Floating Labels](#forms--floating-labels)
31
+ - [Cards](#cards)
32
+ - [Modals (`<dialog>`)](#modals-dialog)
33
+ - [Dropdowns](#dropdowns)
34
+ - [Tables](#tables)
35
+ - [Skeleton Loading Placeholders](#skeleton-loading-placeholders)
36
+ - [Progress Bars, Gauge & Spinners](#progress-bars-gauge--spinners)
37
+ - [Bottom Navigation](#bottom-navigation)
38
+ - [πŸ“ Layout System & Grid](#-layout-system--grid)
39
+ - [Containers](#containers)
40
+ - [Grid System (1 to 12 Columns)](#grid-system-1-to-12-columns)
41
+ - [Flexbox & Spacing](#flexbox--spacing)
42
+ - [Responsiveness & Breakpoints](#responsiveness--breakpoints)
43
+ - [✨ CSS Animations & Motion Effects](#-css-animations--motion-effects)
44
+ - [🎨 Theming & Light / Dark Mode](#-theming--light--dark-mode)
45
+ - [πŸ“„ License](#-license)
46
+
47
+ ---
48
+
49
+ ## ⚑ Key Features
50
+
51
+ - **Semantic HTML First**: Automatic out-of-the-box styling for base HTML tags (`button`, `header`, `main`, `aside`, `input`, `select`, `textarea`, `table`, `progress`, `dialog`, `<details><summary>`).
52
+ - **Modern Design Language**: Clean borders, consistent rounded corners (`rounded-xl`), sleek dark palettes with high-contrast accents, and subtle glassmorphic shadows.
53
+ - **Subtle & Soft Tint Buttons**: Tinted soft background buttons (`bg-primary-subtle`, `bg-blue-subtle`, `bg-green-subtle`, `bg-purple-subtle`, `bg-red-subtle`, `bg-pink-subtle`, etc.).
54
+ - **Perfectly Aligned Link Buttons**: Text link buttons (`.btn-link` or `a.link`) engineered to match standard button height and baseline vertical alignment exactly when placed side-by-side with solid buttons.
55
+ - **Filled Floating Inputs**: Floating label inputs supporting both Outline style (`.floating`) and Material/Modern filled container style (`.floating-fill`).
56
+ - **Cyberpunk Neon & Futuristic Buttons**: Interactive futuristic buttons with multi-layer neon glow shadows, chamfered cut corners (`.btn-cyberpunk-cut`), RGB glitch effects (`.btn-cyberpunk-glitch`), and color palettes (`.btn-cyberpunk-cyan`, `.btn-cyberpunk-blue`, `.btn-cyberpunk-red`, `.btn-cyberpunk-pink`, `.btn-cyberpunk-yellow`, `.btn-cyberpunk-green`, `.btn-cyberpunk-purple`, `.btn-cyberpunk-orange`, `.btn-cyberpunk-indigo`, `.btn-cyberpunk-white`).
57
+ - **4-Direction Drawers**: Standalone slide-out panels from `.drawer-left`, `.drawer-right`, `.drawer-top`, or `.drawer-bottom` (mobile bottom sheet).
58
+ - **Automatic Mobile Navigation Drawer**: Transforms the desktop `<aside>` sidebar inside `<main>` into a responsive mobile drawer (`☰`) on screens `<768px` via `bluebird.js`.
59
+ - **Mobile Touch & Swipe Carousel**: Touch swipe physics, desktop mouse drag, arrow controls, indicator dots, and automatic cycling via `data-autoplay="true"`.
60
+ - **Expressive Color Palette**: Solid and subtle color utility classes for Blue, Red, Green, Yellow, Purple, Indigo, Pink, Teal, Orange, Cyan, Lime, Rose, Fuchsia, Emerald, Sky, and Amber.
61
+ - **Micro-Interaction Micro-FX**: Material Ripple effect on button clicks, plus CSS keyframe animations (`.animate-spin`, `.animate-pulse`, `.animate-bounce`, `.animate-fade-in`, `.animate-slide-up`, `.animate-float`, `.animate-wiggle`, `.animate-shimmer`).
62
+
63
+ ---
64
+
65
+ ## πŸš€ Quick Start (NPM, Next.js & CDN)
66
+
67
+ ### Option A: Next.js & React (App Router & Pages Router)
68
+
69
+ Instala el paquete oficial:
70
+
71
+ ```bash
72
+ npm install @seip/blue-bird-css
73
+ ```
74
+
75
+ #### 1. Importa el CSS en `app/layout.tsx`:
76
+
77
+ ```tsx
78
+ import type { Metadata } from 'next';
79
+ import '@seip/blue-bird-css/css';
80
+ import { ThemeProvider } from '@seip/blue-bird-css/react';
81
+
82
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
83
+ return (
84
+ <html lang="es" suppressHydrationWarning>
85
+ <body>
86
+ <ThemeProvider defaultTheme="system">
87
+ {children}
88
+ </ThemeProvider>
89
+ </body>
90
+ </html>
91
+ );
92
+ }
93
+ ```
94
+
95
+ #### 2. Usa componentes y hooks en tus pΓ‘ginas (`app/page.tsx`):
96
+
97
+ ```tsx
98
+ 'use client';
99
+
100
+ import { ThemeToggle, useToast, Button, Card, CardHeader, CardTitle, CardContent } from '@seip/blue-bird-css/react';
101
+
102
+ export default function Page() {
103
+ const { toast } = useToast();
104
+
105
+ return (
106
+ <main className="container py-8 space-y-6">
107
+ <header className="flex items-center justify-between">
108
+ <h1 className="text-3xl font-bold">Mi App Next.js</h1>
109
+ <ThemeToggle />
110
+ </header>
111
+
112
+ {/* Clases idΓ©nticas a Tailwind con soporte responsive */}
113
+ <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
114
+ <Card hoverable className="p-6">
115
+ <CardHeader>
116
+ <CardTitle>Card SemΓ‘ntica</CardTitle>
117
+ </CardHeader>
118
+ <CardContent>
119
+ <p className="text-sm text-secondary">
120
+ Totalmente compatible con Tailwind CSS y HTML semΓ‘ntico nativo.
121
+ </p>
122
+ <Button
123
+ variant="primary"
124
+ className="mt-4"
125
+ onClick={() => toast({ title: 'Β‘Guardado!', type: 'success' })}
126
+ >
127
+ Lanzar Toast
128
+ </Button>
129
+ </CardContent>
130
+ </Card>
131
+ </div>
132
+ </main>
133
+ );
134
+ }
135
+ ```
136
+
137
+ ---
138
+
139
+ ### Option B: Install via NPM (Vite / React / Bundlers)
140
+
141
+ ```bash
142
+ npm install @seip/blue-bird-css
143
+ ```
144
+
145
+ En tu punto de entrada principal (`main.jsx`, `index.js`, etc.):
146
+
147
+ ```javascript
148
+ // Import CSS (compilado con @layer para evitar conflictos de especificidad)
149
+ import '@seip/blue-bird-css/css';
150
+
151
+ // Import JS helpers
152
+ import { toast, snackbar, ResponsiveDataTable, bluebird } from '@seip/blue-bird-css';
153
+
154
+ // Listo para usar!
155
+ toast({ message: 'Hello from Blue Bird!', type: 'success' });
156
+ ```
157
+
158
+ ---
159
+
160
+ ### Option C: Vanilla HTML / JS via CDN (Zero Build Step)
161
+
162
+ Incluye la hoja de estilos y el helper JavaScript en tu `<head>`:
163
+
164
+ ```html
165
+ <!-- Blue Bird CSS (Minified, con Eye-Care Dark Mode, utilidades Tailwind y @layer) -->
166
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@seip/blue-bird-css@latest/dist/bluebird.min.css" />
167
+
168
+ <!-- Blue Bird JS Helper (Automatic drawers, toasts, carousels, command palette) -->
169
+ <script src="https://cdn.jsdelivr.net/npm/@seip/blue-bird-css@latest/dist/bluebird.min.js" defer></script>
170
+ ```
171
+
172
+ ---
173
+
174
+ ## 🎯 Compatibilidad con Tailwind CSS (88%+ Parity)
175
+
176
+ Blue Bird CSS ofrece pasaje directo e intuitivo para desarrolladores habituados a Tailwind CSS:
177
+
178
+ - **Flexbox & Grid**: `flex`, `flex-col`, `flex-row`, `items-center`, `justify-between`, `grid`, `grid-cols-1` a `grid-cols-12`, `col-span-*`, `gap-0` a `gap-12`.
179
+ - **Responsive Prefixes**: `sm:`, `md:`, `lg:`, `xl:`, `2xl:` para layout, flex, grid, gap, padding, margin, width y typography.
180
+ - **TipografΓ­a Completa**: `text-xs` hasta `text-9xl`, `font-thin` a `font-black`, `uppercase`, `lowercase`, `capitalize`, `italic`, `truncate`, `text-balance`.
181
+ - **Dimensiones SemΓ‘nticas**: `max-w-xs` a `max-w-7xl`, `max-w-prose`, `size-0` a `size-32`, `min-h-screen`, `h-screen`, `h-dvh`, fracciones `w-1/2`, `w-1/3`, `w-2/3`, `w-1/4`, `w-3/4`.
182
+ - **Espaciado Inteligente**: `space-x-*`, `space-y-*`, `divide-x`, `divide-y`, `border-t`, `border-b`, `border-l`, `border-r`.
183
+ - **Efectos e Interactividad**: `opacity-0` a `opacity-100`, `pointer-events-none`, `cursor-not-allowed`, `sr-only`, `not-sr-only`.
184
+ - **HTML SemΓ‘ntico Nativo**: Estilos elegantes para `<dialog>`, `<progress>`, `<meter>`, `<fieldset>`, `<legend>`, `<hr>`, `<time>`, `<del>`, `<ins>`.
185
+
186
+ ## ✨ VS Code Autocompletion & TypeScript
187
+
188
+ Blue Bird includes first-class autocompletion tools:
189
+
190
+ ### 1. HTML & CSS Class Autocomplete in VS Code
191
+ All 700+ utility and component classes are indexed in `dist/bluebird.html-data.json`. To enable instant autocompletion and hover descriptions in your project, add this to `.vscode/settings.json`:
192
+
193
+ ```json
194
+ {
195
+ "html.customData": [
196
+ "./node_modules/@seip/blue-bird/dist/bluebird.html-data.json"
197
+ ]
198
+ }
199
+ ```
200
+
201
+ Now, when you type `class="` in any `.html` or `.jsx` file, VS Code will suggest classes (`btn-primary`, `btn-cyberpunk-cut`, `glow-blue`, `floating-fill`, etc.) with documentation!
202
+
203
+ ### 2. TypeScript Declarations
204
+ Blue Bird provides comprehensive typings in `dist/bluebird.d.ts` for all JavaScript functions, components, and DataTable APIs with full IntelliSense.
205
+
206
+ ---
207
+
208
+ ### Complete Basic HTML Example:
209
+
210
+ ```html
211
+ <!DOCTYPE html>
212
+ <html lang="en" data-theme="dark">
213
+ <head>
214
+ <meta charset="UTF-8" />
215
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
216
+ <title>My Blue Bird App</title>
217
+ <link rel="stylesheet" href="https://seip25.github.io/Blue-bird-css/bluebird.css" />
218
+ <script src="https://seip25.github.io/Blue-bird-css/bluebird.js"></script>
219
+ </head>
220
+ <body>
221
+ <!-- Header with Navigation -->
222
+ <header>
223
+ <nav>
224
+ <h2>🐦 Blue Bird App</h2>
225
+ <div class="flex gap-2">
226
+ <button class="bg-blue-subtle">Dashboard</button>
227
+ <button class="primary glow-pulse">Get Started</button>
228
+ </div>
229
+ </nav>
230
+ </header>
231
+
232
+ <!-- Main Layout with Responsive Sidebar -->
233
+ <main>
234
+ <aside>
235
+ <h4>Navigation</h4>
236
+ <a href="#">Home</a>
237
+ <a href="#">Components</a>
238
+ <a href="#">Settings</a>
239
+ </aside>
240
+
241
+ <div>
242
+ <article class="card">
243
+ <div class="card-header">
244
+ <h3 class="card-title">Modern Web Application</h3>
245
+ <p class="card-description">Clean semantic markup with zero build step overhead.</p>
246
+ </div>
247
+ <div class="card-content">
248
+ <div class="floating-fill mb-4">
249
+ <input type="text" id="username" placeholder=" " />
250
+ <label for="username">Username</label>
251
+ </div>
252
+ <button class="primary" onclick="toast({ title: 'Success!', description: 'Settings saved successfully.', type: 'success' })">
253
+ Save Changes
254
+ </button>
255
+ </div>
256
+ </article>
257
+ </div>
258
+ </main>
259
+ </body>
260
+ </html>
261
+ ```
262
+
263
+ ---
264
+
265
+ ## 🧠 JavaScript Engine (`bluebird.js`) & API
266
+
267
+ `bluebird.js` is a zero-dependency, lightweight JavaScript helper that powers dynamic notifications, tabs, command palettes, touch carousels, and responsive mobile navigation drawers.
268
+
269
+ ### Core `bluebird()` Function
270
+
271
+ ```javascript
272
+ // Main entry point signature:
273
+ bluebird(component, options);
274
+ ```
275
+
276
+ ---
277
+
278
+ ### Responsive Data Table (`ResponsiveDataTable`)
279
+
280
+ `ResponsiveDataTable` is a reactive, dependency-free JavaScript data table component that automatically adapts its layout:
281
+ - **Desktop (`>=768px`)**: Renders a standard tabular `<table>` with formatted cells, sortable-ready layout, and actionable buttons.
282
+ - **Mobile (`<768px`)**: Seamlessly collapses into a stack of structured, accessible `<article>` cards with header summaries and key-value detail rows.
283
+ - **Real-Time Live Search**: Instantly filters across all visible column values as you type.
284
+ - **Dynamic Pagination**: Auto-calculates pages with smart ellipsis navigation and configurable page sizes.
285
+ - **HTML String Rendering**: Seamlessly parses HTML strings in cell data (such as `<span class="badge">...</span>` or status indicators).
286
+ - **Edit & Delete Action Callbacks**: Built-in action triggers with row data payload.
287
+
288
+ #### Basic Example (HTML & JavaScript)
289
+
290
+ ```html
291
+ <!-- 1. HTML Target Container -->
292
+ <div id="users-datatable"></div>
293
+
294
+ <!-- 2. Include Blue Bird CSS & JS -->
295
+ <link rel="stylesheet" href="https://seip25.github.io/Blue-bird-css/bluebird.css" />
296
+ <script src="https://seip25.github.io/Blue-bird-css/bluebird.js"></script>
297
+
298
+ <script>
299
+ // 3. Instantiate ResponsiveDataTable
300
+ const datatable = new ResponsiveDataTable('users-datatable', {
301
+ data: [
302
+ { id: 1, name: 'Ana LΓ³pez', email: 'ana@example.com', role: '<span class="badge badge-primary">Admin</span>', status: 'Active' },
303
+ { id: 2, name: 'Luis GarcΓ­a', email: 'luis@example.com', role: '<span class="badge badge-secondary">Editor</span>', status: 'Active' },
304
+ { id: 3, name: 'Marta Ruiz', email: 'marta@example.com', role: '<span class="badge badge-outline">Viewer</span>', status: 'Inactive' },
305
+ { id: 4, name: 'Carlos DΓ­az', email: 'carlos@example.com', role: '<span class="badge badge-secondary">Editor</span>', status: 'Pending' }
306
+ ],
307
+ columns: [
308
+ { key: 'id', title: 'ID' },
309
+ { key: 'name', title: 'Full Name' },
310
+ { key: 'email', title: 'Email Address' },
311
+ { key: 'role', title: 'Role' },
312
+ { key: 'status', title: 'Status' }
313
+ ],
314
+ rowsPerPage: 5,
315
+ search: true, // Live real-time search filter
316
+ pagination: true, // Page number controls
317
+ summaryFields: ['name'], // Field displayed as card header in mobile view
318
+ edit: (event, id) => toast({ title: 'Edit', description: `Edit user #${id}`, type: 'info' }),
319
+ delete: (event, id) => toast({ title: 'Delete', description: `Deleted user #${id}`, type: 'error' }),
320
+ breakpoint: 768 // Viewport width (px) to switch to mobile cards
321
+ });
322
+ </script>
323
+ ```
324
+
325
+ #### Initialization via `bluebird('datatable', options)`
326
+
327
+ ```javascript
328
+ // Alternatively initialize via the unified bluebird dispatcher:
329
+ const table = bluebird('datatable', {
330
+ container: 'users-datatable', // Container ID or DOM element
331
+ data: usersList,
332
+ columns: [
333
+ { key: 'id', title: 'ID' },
334
+ { key: 'name', title: 'Name' },
335
+ { key: 'email', title: 'Email' }
336
+ ],
337
+ rowsPerPage: 10
338
+ });
339
+ ```
340
+
341
+ #### Configuration Options
342
+
343
+ | Option | Type | Default | Description |
344
+ | :--- | :--- | :--- | :--- |
345
+ | `data` | `Array<Object>` | `[]` | Array of row objects to display in the table. |
346
+ | `columns` | `Array<Object>` | `[]` | Column definitions: `{ key: string, title: string }`. |
347
+ | `rowsPerPage` | `number` | `10` | Number of items per page. |
348
+ | `search` | `boolean` | `true` | Enables the live instant search input bar above table. |
349
+ | `pagination` | `boolean` | `true` | Enables pagination controls below the table. |
350
+ | `summaryFields` | `Array<string>` | `['id']` | Column keys displayed in the mobile card title header. |
351
+ | `edit` | `boolean \| Function` | `false` | Callback `(event, item) => ...` executed when Edit button is clicked. |
352
+ | `delete` | `boolean \| Function` | `false` | Callback `(event, item) => ...` executed when Delete button is clicked. |
353
+ | `breakpoint` | `number` | `768` | Screen width in pixels below which table converts to mobile cards. |
354
+ | `headerTitles` | `Object` | `{}` | Optional key-to-title dictionary override mapping. |
355
+
356
+ #### Instance Methods
357
+
358
+ ```javascript
359
+ // Update dataset dynamically (resets pagination to page 1):
360
+ table.updateData(newUsersArray);
361
+
362
+ // Update table column structure dynamically:
363
+ table.updateColumns([
364
+ { key: 'id', title: 'ID' },
365
+ { key: 'title', title: 'Title' },
366
+ { key: 'category', title: 'Category' }
367
+ ]);
368
+
369
+ // Navigate to a specific page programmatically:
370
+ table.changePage(2);
371
+ ```
372
+
373
+ ---
374
+
375
+ ### Toast Notifications (`toast()`)
376
+
377
+ Stacked, auto-dismissing toast notification system.
378
+
379
+ ```javascript
380
+ // Via global toast helper function:
381
+ toast({
382
+ title: 'Payment Completed',
383
+ description: 'Your transaction #9402 has been processed.',
384
+ type: 'success', // 'success' | 'error' | 'warning' | 'info'
385
+ position: 'bottom-right', // 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'
386
+ duration: 4000 // Milliseconds to auto-dismiss (0 for persistent)
387
+ });
388
+
389
+ // Via bluebird function:
390
+ bluebird('toast', {
391
+ title: 'Network Error',
392
+ description: 'Could not establish connection to server.',
393
+ type: 'error',
394
+ position: 'top-right'
395
+ });
396
+ ```
397
+
398
+ ---
399
+
400
+ ### Snackbar (`snackbar()`)
401
+
402
+ Single floating bottom alert bar.
403
+
404
+ ```javascript
405
+ // Via global snackbar helper function:
406
+ snackbar({
407
+ message: 'Item archived successfully.',
408
+ type: 'info', // 'info' | 'success' | 'warning' | 'error'
409
+ duration: 3000
410
+ });
411
+
412
+ // Via bluebird function:
413
+ bluebird('snackbar', {
414
+ message: 'Welcome to Blue Bird CSS!',
415
+ type: 'success'
416
+ });
417
+ ```
418
+
419
+ ---
420
+
421
+ ### Command Palette (`Ctrl+K`)
422
+
423
+ Fast, keyboard-accessible command menu modal. Press <kbd>Ctrl+K</kbd> or <kbd>Cmd+K</kbd> anywhere on the page to open or close.
424
+
425
+ ```javascript
426
+ // Open/close programmatically:
427
+ bluebird('command', { action: 'open' }); // 'open' | 'close' | 'toggle'
428
+ ```
429
+
430
+ ---
431
+
432
+ ### 4-Direction Drawer Panels
433
+
434
+ Slide-out drawer panels from any direction of the screen.
435
+
436
+ ```html
437
+ <!-- HTML Declarative Trigger -->
438
+ <button data-drawer-target="my-left-drawer">Open Left Drawer</button>
439
+
440
+ <div id="my-left-drawer" class="drawer drawer-left">
441
+ <div class="drawer-header">
442
+ <h3>Drawer Navigation</h3>
443
+ <button data-drawer-close class="ghost">&times;</button>
444
+ </div>
445
+ <div class="drawer-body">
446
+ <p>Drawer content goes here...</p>
447
+ </div>
448
+ </div>
449
+ ```
450
+
451
+ ```javascript
452
+ // Programmatic JavaScript API:
453
+ bluebird('drawer', { id: 'my-left-drawer', action: 'open' });
454
+ bluebird('drawer', { id: 'my-left-drawer', action: 'close' });
455
+ bluebird('drawer', { id: 'my-left-drawer', action: 'toggle' });
456
+ ```
457
+
458
+ ---
459
+
460
+ ### Interactive Tabs
461
+
462
+ Switch active content panels declaratively without writing custom JS event listeners.
463
+
464
+ ```html
465
+ <div class="tabs">
466
+ <div class="tab-list">
467
+ <button class="tab-trigger active" data-tab-target="tab-profile">Profile</button>
468
+ <button class="tab-trigger" data-tab-target="tab-security">Security</button>
469
+ </div>
470
+
471
+ <div id="tab-profile" class="tab-content active">
472
+ <p>Profile settings content...</p>
473
+ </div>
474
+
475
+ <div id="tab-security" class="tab-content">
476
+ <p>Security settings content...</p>
477
+ </div>
478
+ </div>
479
+ ```
480
+
481
+ ```javascript
482
+ // Switch tabs programmatically:
483
+ bluebird('tab', { id: 'tab-security' });
484
+ ```
485
+
486
+ ---
487
+
488
+ ### Touch & Drag Carousel
489
+
490
+ Mobile-first touch swipe, desktop mouse drag, arrow buttons, indicator dots, and optional autoplay.
491
+
492
+ ```html
493
+ <div class="carousel" data-autoplay="true" data-interval="3500">
494
+ <button class="carousel-nav carousel-prev">&larr;</button>
495
+ <button class="carousel-nav carousel-next">&rarr;</button>
496
+
497
+ <div class="carousel-track">
498
+ <div class="carousel-item responsive-card">Slide Card 1</div>
499
+ <div class="carousel-item responsive-card">Slide Card 2</div>
500
+ <div class="carousel-item responsive-card">Slide Card 3</div>
501
+ </div>
502
+
503
+ <div class="carousel-indicators"></div>
504
+ </div>
505
+ ```
506
+
507
+ ```javascript
508
+ // Manual initialization if created dynamically:
509
+ bluebird('carousel', { selector: '.carousel', autoplay: true, interval: 4000 });
510
+ ```
511
+
512
+ ---
513
+
514
+ ### Automatic Mobile Navigation
515
+
516
+ When your page uses standard semantic HTML structure:
517
+
518
+ ```html
519
+ <header>
520
+ <nav>...</nav>
521
+ </header>
522
+ <main>
523
+ <aside>...</aside>
524
+ <div>...</div>
525
+ </main>
526
+ ```
527
+
528
+ On small viewports (`<768px`), `bluebird.js` automatically hides the desktop `<aside>` sidebar and injects a mobile drawer toggle button (`☰`) into your top `<header><nav>`, providing a slide-over mobile drawer navigation.
529
+
530
+ ---
531
+
532
+ ### HTTP Fetch Client (`Http()`)
533
+
534
+ A modern `fetch` wrapper with automatic CSRF token detection, JSON payload handling, and structured error throwing.
535
+
536
+ ```javascript
537
+ // 1. Basic GET Request
538
+ const users = await Http('/api/users');
539
+
540
+ // 2. POST JSON Request (Automatically attaches X-CSRF-Token if #csrf input exists)
541
+ const newUser = await Http('/api/users/create', 'POST', {
542
+ name: 'Alex Johnson',
543
+ email: 'alex@example.com'
544
+ });
545
+
546
+ // 3. Multipart FormData Upload
547
+ const form = new FormData();
548
+ form.append('avatar', fileInput.files[0]);
549
+ const result = await Http('/api/profile/upload', 'POST', false, form);
550
+ ```
551
+
552
+ ---
553
+
554
+ ### URL Parameter Helper (`getUrlParameter()`)
555
+
556
+ Easily inspect query parameters from `window.location.search`:
557
+
558
+ ```javascript
559
+ // Current URL: https://example.com/dashboard?tab=analytics&user=42
560
+ const tab = getUrlParameter('tab'); // "analytics"
561
+ const user = getUrlParameter('user'); // "42"
562
+ ```
563
+
564
+ ---
565
+
566
+ ### Declarative HTML `data-*` Attributes
567
+
568
+ `bluebird.js` includes built-in declarative event listeners that work directly on HTML markup without writing JavaScript:
569
+
570
+ | Attribute | Target / Example | Description |
571
+ | :--- | :--- | :--- |
572
+ | `data-copy` | `<button data-copy="https://myurl.com">Copy Link</button>` | Copies text to clipboard and displays an instant success toast. |
573
+ | `data-confirm` | `<button data-confirm="Are you sure you want to delete this record?">Delete</button>` | Prompts user confirmation before action executes. |
574
+ | `data-scroll-to` | `<a data-scroll-to="#pricing">View Pricing</a>` | Performs a smooth animated scroll to the target selector. |
575
+ | `data-password-toggle` | `<button data-password-toggle="#pass-input">πŸ‘οΈ</button>` | Toggles input mask between `password` and `text`. |
576
+ | `data-step-up` / `data-step-down` | `<button data-step-up="#qty">+</button>` | Increments or decrements a numeric input. |
577
+ | `data-filter-target` | `<input data-filter-target="#users-table" />` | Real-time live filtering on list items, table rows, or cards. |
578
+ | `data-auto-resize` | `<textarea data-auto-resize></textarea>` | Auto-expands textarea height to fit content without scrollbars. |
579
+ | `data-modal-target` / `data-close-dialog` | `<button data-modal-target="#my-modal">Open</button>` | Opens or closes HTML5 native `<dialog>` modals. |
580
+ | `data-toggle="theme"` | `<button data-toggle="theme">Toggle Theme</button>` | Toggles Light/Dark theme and persists preference in `localStorage`. |
581
+ | `data-toast` / `data-toast-title` | `<button data-toast="Saved!" data-toast-title="Success">Save</button>` | Triggers a toast notification purely via HTML. |
582
+ | `data-snackbar` | `<button data-snackbar="Profile updated">Update</button>` | Triggers a snackbar message on click. |
583
+
584
+ ---
585
+
586
+ ## 🎨 CSS Components & Utilities
587
+
588
+ ### Buttons, Soft Tint & Cyberpunk Glow
589
+
590
+ #### 1. Core Variants & Sizes
591
+
592
+ ```html
593
+ <!-- Base Variants -->
594
+ <button>Primary Default</button>
595
+ <button class="secondary">Secondary</button>
596
+ <button class="outline">Outline</button>
597
+ <button class="destructive">Destructive</button>
598
+ <button class="ghost">Ghost</button>
599
+
600
+ <!-- Button Sizes -->
601
+ <button class="primary btn-xs">Extra Small (xs)</button>
602
+ <button class="primary btn-sm">Small (sm)</button>
603
+ <button class="primary btn-md">Medium (md)</button>
604
+ <button class="primary btn-lg">Large (lg)</button>
605
+ <button class="primary btn-xl">Extra Large (xl)</button>
606
+ <button class="primary btn-icon">+</button>
607
+ ```
608
+
609
+ #### 2. Soft Tint Buttons (Subtle / Soft Tint)
610
+
611
+ ```html
612
+ <button class="bg-primary-subtle">Primary Subtle</button>
613
+ <button class="bg-blue-subtle">Blue Subtle</button>
614
+ <button class="bg-red-subtle">Red Subtle</button>
615
+ <button class="bg-green-subtle">Green Subtle</button>
616
+ <button class="bg-yellow-subtle">Yellow Subtle</button>
617
+ <button class="bg-purple-subtle">Purple Subtle</button>
618
+ <button class="bg-pink-subtle">Pink Subtle</button>
619
+ <button class="bg-emerald-subtle">Emerald Subtle</button>
620
+ ```
621
+
622
+ #### 3. Perfectly Aligned Link Buttons (`.btn-link` / `a.link`)
623
+
624
+ ```html
625
+ <button class="primary">Solid Button</button>
626
+ <a href="#" class="btn-link">Link Button (Anchor)</a>
627
+ <button class="btn-link">Link Button (Button)</button>
628
+ ```
629
+
630
+ #### 4. Neon Cyberpunk & Futuristic Buttons
631
+
632
+ ```html
633
+ <!-- Cyberpunk Color Palette -->
634
+ <button class="btn-cyberpunk">Neon Cyan</button>
635
+ <button class="btn-cyberpunk-blue">Neon Blue</button>
636
+ <button class="btn-cyberpunk-red">Neon Red</button>
637
+ <button class="btn-cyberpunk-pink">Neon Pink</button>
638
+ <button class="btn-cyberpunk-yellow">Neon Yellow</button>
639
+ <button class="btn-cyberpunk-green">Neon Green</button>
640
+ <button class="btn-cyberpunk-purple">Neon Purple</button>
641
+ <button class="btn-cyberpunk-orange">Neon Orange</button>
642
+ <button class="btn-cyberpunk-indigo">Neon Indigo</button>
643
+
644
+ <!-- Chamfered Cut Corner Modifier -->
645
+ <button class="btn-cyberpunk-pink btn-cyberpunk-cut">Cut Pink</button>
646
+ <button class="btn-cyberpunk-yellow btn-cyberpunk-cut">Cut Yellow</button>
647
+
648
+ <!-- Glitch & Pulse Effects -->
649
+ <button class="btn-cyberpunk btn-cyberpunk-glitch">RGB Glitch</button>
650
+ <button class="primary glow-pulse">Energy Pulse</button>
651
+ ```
652
+
653
+ ---
654
+
655
+ ### Badges & Tooltips
656
+
657
+ ```html
658
+ <span class="badge badge-primary">Primary</span>
659
+ <span class="badge badge-secondary">Secondary</span>
660
+ <span class="badge badge-pink">Pink</span>
661
+ <span class="badge badge-success">Success</span>
662
+ <span class="badge badge-warning">Warning</span>
663
+ <span class="badge badge-destructive">Destructive</span>
664
+ <span class="badge badge-outline">Outline</span>
665
+
666
+ <!-- Hover tooltip via data-tooltip -->
667
+ <button class="primary" data-tooltip="Save changes to database">Save</button>
668
+ ```
669
+
670
+ ---
671
+
672
+ ### Forms & Floating Labels
673
+
674
+ All form controls (`<input>`, `<select>`, `<textarea>`) are automatically styled out of the box.
675
+
676
+ #### Standard & Fill Variant (`.fill`)
677
+
678
+ ```html
679
+ <!-- Standard inputs -->
680
+ <input type="text" placeholder="Standard Text Input" />
681
+ <input type="email" placeholder="Email Input" />
682
+
683
+ <!-- Filled Variant (.fill) -->
684
+ <input type="text" class="fill" placeholder="Filled Input" />
685
+ <select class="fill">
686
+ <option>Filled Select</option>
687
+ </select>
688
+ ```
689
+
690
+ #### Floating Labels (Outline & Filled Style)
691
+
692
+ ```html
693
+ <!-- Outline Floating Label -->
694
+ <div class="floating">
695
+ <input type="email" id="email" placeholder=" " />
696
+ <label for="email">Email Address</label>
697
+ </div>
698
+
699
+ <!-- Filled Container Floating Label (Material Style) -->
700
+ <div class="floating-fill">
701
+ <input type="text" id="fullname" placeholder=" " />
702
+ <label for="fullname">Full Name</label>
703
+ </div>
704
+ ```
705
+
706
+ #### Checkboxes, Radios & Switches
707
+
708
+ ```html
709
+ <!-- Checkbox & Radio -->
710
+ <label><input type="checkbox" checked /> I agree to terms</label>
711
+ <label><input type="radio" name="group1" checked /> Option A</label>
712
+
713
+ <!-- Standard Pill Switch -->
714
+ <label><input type="checkbox" role="switch" checked /> Notifications</label>
715
+
716
+ <!-- Android Material Switch -->
717
+ <label><input type="checkbox" class="switch-android" checked /> Dark Mode</label>
718
+ ```
719
+
720
+ ---
721
+
722
+ ### Cards
723
+
724
+ ```html
725
+ <div class="card">
726
+ <div class="card-header">
727
+ <h3 class="card-title">Card Header Title</h3>
728
+ <p class="card-description">Subtitle or description text.</p>
729
+ </div>
730
+ <div class="card-content">
731
+ <p>Main card body contents...</p>
732
+ </div>
733
+ <div class="card-footer">
734
+ <button class="primary btn-sm">Action</button>
735
+ </div>
736
+ </div>
737
+ ```
738
+
739
+ ---
740
+
741
+ ### Modals (`<dialog>`)
742
+
743
+ Uses native HTML5 `<dialog>` elements with backdrop blur and fullscreen support.
744
+
745
+ ```html
746
+ <!-- Standard Dialog Modal -->
747
+ <dialog id="myModal">
748
+ <article>
749
+ <header class="flex items-center between">
750
+ <h4>Confirm Action</h4>
751
+ <button class="ghost" onclick="myModal.close()">&times;</button>
752
+ </header>
753
+ <p>Are you sure you want to proceed?</p>
754
+ <footer>
755
+ <button class="ghost" onclick="myModal.close()">Cancel</button>
756
+ <button class="primary" onclick="myModal.close()">Confirm</button>
757
+ </footer>
758
+ </article>
759
+ </dialog>
760
+
761
+ <!-- Open via Native JS -->
762
+ <button onclick="myModal.showModal()">Open Dialog</button>
763
+
764
+ <!-- Fullscreen Dialog -->
765
+ <dialog id="modalFull" class="dialog-full">
766
+ <article>
767
+ <h4>Immersive Fullscreen Modal</h4>
768
+ <button class="secondary" onclick="modalFull.close()">Close</button>
769
+ </article>
770
+ </dialog>
771
+ ```
772
+
773
+ ---
774
+
775
+ ### Dropdowns
776
+
777
+ CSS hover/focus dropdown menu without heavy dependencies.
778
+
779
+ ```html
780
+ <div class="dropdown">
781
+ <button class="dropdown-toggle">Menu</button>
782
+ <div class="dropdown-content">
783
+ <a href="#" class="dropdown-item">Profile</a>
784
+ <a href="#" class="dropdown-item">Settings</a>
785
+ <a href="#" class="dropdown-item">Logout</a>
786
+ </div>
787
+ </div>
788
+ ```
789
+
790
+ ---
791
+
792
+ ### Tables
793
+
794
+ ```html
795
+ <table class="table-striped table-hover">
796
+ <thead>
797
+ <tr>
798
+ <th>User</th>
799
+ <th>Role</th>
800
+ <th>Status</th>
801
+ </tr>
802
+ </thead>
803
+ <tbody>
804
+ <tr>
805
+ <td>Sarah Jenkins</td>
806
+ <td>Administrator</td>
807
+ <td><span class="badge badge-success">Active</span></td>
808
+ </tr>
809
+ </tbody>
810
+ </table>
811
+ ```
812
+
813
+ *Optional table utility classes:* `.table-striped`, `.table-hover`, `.table-bordered`, `.table-compact`.
814
+
815
+ ---
816
+
817
+ ### Skeleton Loading Placeholders
818
+
819
+ Animated shimmer placeholder elements to indicate loading states during data fetching.
820
+
821
+ ```html
822
+ <div class="card p-6">
823
+ <div class="flex items-center gap-4 mb-4">
824
+ <span class="skeleton skeleton-avatar"></span>
825
+ <div class="flex-1">
826
+ <span class="skeleton skeleton-title"></span>
827
+ <span class="skeleton skeleton-text" style="width: 40%"></span>
828
+ </div>
829
+ </div>
830
+ <span class="skeleton skeleton-text"></span>
831
+ <span class="skeleton skeleton-text" style="width: 80%"></span>
832
+ <div class="flex gap-2 mt-4">
833
+ <span class="skeleton skeleton-button"></span>
834
+ </div>
835
+ </div>
836
+ ```
837
+
838
+ ---
839
+
840
+ ### Progress Bars, Gauge & Spinners
841
+
842
+ ```html
843
+ <!-- Native HTML5 Progress Element -->
844
+ <progress value="60" max="100"></progress>
845
+
846
+ <!-- Native HTML5 Meter Gauge Element -->
847
+ <meter min="0" max="100" value="85" low="33" high="66" optimum="50"></meter>
848
+
849
+ <!-- Custom Progress Bar -->
850
+ <div class="progress">
851
+ <div class="progress-bar bg-purple" style="width: 75%"></div>
852
+ </div>
853
+
854
+ <!-- Indeterminate Spinners -->
855
+ <span class="spinner spinner-sm"></span>
856
+ <span class="spinner"></span>
857
+ <span class="spinner spinner-lg"></span>
858
+
859
+ <!-- Step Process Control (.steps) -->
860
+ <div class="steps">
861
+ <div class="step completed">
862
+ <div class="step-circle">1</div>
863
+ <span class="step-label">Cart</span>
864
+ </div>
865
+ <div class="step active">
866
+ <div class="step-circle">2</div>
867
+ <span class="step-label">Shipping</span>
868
+ </div>
869
+ <div class="step">
870
+ <div class="step-circle">3</div>
871
+ <span class="step-label">Payment</span>
872
+ </div>
873
+ </div>
874
+ ```
875
+
876
+ ---
877
+
878
+ ### Bottom Navigation
879
+
880
+ Fixed bottom app bar for mobile viewports.
881
+
882
+ ```html
883
+ <nav class="bottom-nav">
884
+ <a href="#" class="bottom-nav-item active">
885
+ <span class="bottom-nav-icon">🏠</span>
886
+ <span class="bottom-nav-label">Home</span>
887
+ </a>
888
+ <a href="#" class="bottom-nav-item">
889
+ <span class="bottom-nav-icon">πŸ”</span>
890
+ <span class="bottom-nav-label">Search</span>
891
+ </a>
892
+ <a href="#" class="bottom-nav-item">
893
+ <span class="bottom-nav-icon">βš™οΈ</span>
894
+ <span class="bottom-nav-label">Settings</span>
895
+ </a>
896
+ </nav>
897
+ ```
898
+
899
+ ---
900
+
901
+ ## πŸ“ Layout System & Grid
902
+
903
+ ### Containers
904
+
905
+ ```html
906
+ <div class="container">Centered Container (max 1200px)</div>
907
+ <div class="container-sm">Small Container (max 640px)</div>
908
+ <div class="container-md">Medium Container (max 768px)</div>
909
+ <div class="container-lg">Large Container (max 1024px)</div>
910
+ <div class="container-xl">Extra Large Container (max 1280px)</div>
911
+ <div class="container-fluid">Full Width Container (100%)</div>
912
+ ```
913
+
914
+ ---
915
+
916
+ ### Grid System (1 to 12 Columns)
917
+
918
+ ```html
919
+ <!-- 3-column equal grid -->
920
+ <div class="grid grid-cols-3 gap-4">
921
+ <div>Column 1</div>
922
+ <div>Column 2</div>
923
+ <div>Column 3</div>
924
+ </div>
925
+
926
+ <!-- Custom column spans -->
927
+ <div class="grid grid-cols-12 gap-4">
928
+ <div class="col-span-8">Spans 8 columns</div>
929
+ <div class="col-span-4">Spans 4 columns</div>
930
+ </div>
931
+ ```
932
+
933
+ *Supports:* `.grid-cols-1` through `.grid-cols-12` and `.col-span-1` through `.col-span-12`.
934
+
935
+ ---
936
+
937
+ ### Flexbox & Spacing
938
+
939
+ - **Flexbox Layout:** `.flex`, `.flex-col`, `.flex-row`, `.flex-wrap`, `.flex-1`, `.items-center`, `.justify-between`, `.justify-center`, `.justify-end`.
940
+ - **Gap & Spacing:** `.gap-1` to `.gap-8`, `.m-1` to `.m-8`, `.p-1` to `.p-8`, `.mx-*`, `.my-*`, `.px-*`, `.py-*`.
941
+ - **Shadows:** `.shadow-sm`, `.shadow-md`, `.shadow-lg`, `.shadow-xl`, `.shadow-inner`, `.shadow-none`.
942
+ - **Borders:** `.border`, `.border-0`, `.border-2`, `.border-b`, `.border-t`, `.border-l`, `.border-r`.
943
+ - **Border Radius:** `.rounded-none`, `.rounded-sm`, `.rounded-md`, `.rounded-lg`, `.rounded-xl`, `.rounded-2xl`, `.rounded-full`.
944
+
945
+ ---
946
+
947
+ ### Responsiveness & Breakpoints
948
+
949
+ - Mobile main breakpoint: `<768px`.
950
+ - `.hidden-sm`: Hides elements on mobile screens (`<768px`).
951
+ - `.visible-sm`: Shows elements only on mobile screens (`<768px`).
952
+
953
+ ---
954
+
955
+ ## ✨ CSS Animations & Motion Effects
956
+
957
+ Ready-to-use motion keyframes and utility classes:
958
+
959
+ ```html
960
+ <!-- Infinite Spin Loading -->
961
+ <span class="animate-spin spinner"></span>
962
+
963
+ <!-- Ping & Pulse radar -->
964
+ <span class="animate-ping bg-blue rounded-full w-3 h-3"></span>
965
+ <div class="animate-pulse">Loading data...</div>
966
+
967
+ <!-- Bounce animation -->
968
+ <span class="animate-bounce">↓ Scroll Down</span>
969
+
970
+ <!-- Smooth Entrances & Float -->
971
+ <div class="animate-fade-in">Fade In Entrance</div>
972
+ <div class="animate-slide-up">Slide Up Entrance</div>
973
+ <div class="animate-float">Floating Bobbing Animation</div>
974
+ <div class="animate-wiggle">Wiggle Shake Effect</div>
975
+
976
+ <!-- Hover lift effect -->
977
+ <button class="secondary hover-lift">Hover Lift Button</button>
978
+ ```
979
+
980
+ ---
981
+
982
+ ## 🎨 Theming & Eye-Care Light / Dark Mode
983
+
984
+ Blue Bird CSS features an **Eye-Care Dark Mode** crafted to protect your vision during long development and browsing sessions. Instead of harsh `#000000` pitch black and blinding `#ffffff` stark white, it uses soothing charcoal-slate backgrounds (`#101419` and `#171d25`) paired with soft slate-white typography (`#e2e8f0`).
985
+
986
+ ### Automatic OS Detection & Manual Toggle
987
+ Blue Bird automatically respects the operating system's `prefers-color-scheme: dark` preference, and allows instant manual toggling via the `data-theme` attribute:
988
+
989
+ ```html
990
+ <!-- Forced Dark Theme -->
991
+ <html data-theme="dark">
992
+
993
+ <!-- Forced Light Theme -->
994
+ <html data-theme="light">
995
+ ```
996
+
997
+ ```javascript
998
+ // Dynamic toggle function:
999
+ function toggleTheme() {
1000
+ const html = document.documentElement;
1001
+ const current = html.getAttribute('data-theme');
1002
+ html.setAttribute('data-theme', current === 'dark' ? 'light' : 'dark');
1003
+ }
1004
+ ```
1005
+
1006
+ ### Color Palette Shorthands
1007
+
1008
+ Apply any solid color (`.bg-blue`, `.bg-red`, `.bg-green`, `.bg-purple`, `.bg-pink`, `.bg-emerald`, `.bg-orange`, `.bg-amber`, etc.) or subtle tint (`.bg-blue-subtle`, `.bg-red-subtle`, `.bg-green-subtle`, etc.) to elements.
1009
+
1010
+ ---
1011
+
1012
+ ## πŸ“„ License
1013
+
1014
+ MIT Β© [Seip25](https://github.com/seip25) β€” Built for modern, fast, and sleek web development.
package/package.json CHANGED
@@ -1,6 +1,93 @@
1
- {
2
- "name": "@seip/blue-bird-css",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
1
+ {
2
+ "name": "@seip/blue-bird-css",
3
+ "version": "0.3.0",
4
+ "description": "Semantic, modern, eye-care CSS framework with zero build step, Pico.css simplicity and Shadcn/Tailwind aesthetics.",
5
+ "type": "module",
6
+ "author": "Seip25",
7
+ "license": "MIT",
8
+ "homepage": "https://seip25.github.io/Blue-bird-css",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/seip25/Blue-bird-css.git"
12
+ },
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
16
+ "main": "./dist/bluebird.js",
17
+ "module": "./dist/bluebird.esm.js",
18
+ "types": "./dist/bluebird.d.ts",
19
+ "style": "./dist/bluebird.min.css",
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/bluebird.d.ts",
23
+ "import": "./dist/bluebird.esm.js",
24
+ "require": "./dist/bluebird.js"
25
+ },
26
+ "./react": {
27
+ "types": "./dist/react/index.d.ts",
28
+ "import": "./dist/react/index.js",
29
+ "default": "./dist/react/index.js"
30
+ },
31
+ "./css": "./dist/bluebird.min.css",
32
+ "./style": "./dist/bluebird.css",
33
+ "./min.css": "./dist/bluebird.min.css",
34
+ "./html-data": "./dist/bluebird.html-data.json"
35
+ },
36
+ "files": [
37
+ "dist/bluebird.css",
38
+ "dist/bluebird.min.css",
39
+ "dist/bluebird.js",
40
+ "dist/bluebird.min.js",
41
+ "dist/bluebird.esm.js",
42
+ "dist/bluebird.d.ts",
43
+ "dist/react",
44
+ "dist/bluebird.html-data.json",
45
+ "README.md",
46
+ "LICENSE"
47
+ ],
48
+ "keywords": [
49
+ "css",
50
+ "framework",
51
+ "semantic",
52
+ "eye-care",
53
+ "dark-mode",
54
+ "tailwind",
55
+ "shadcn",
56
+ "pico",
57
+ "minimal",
58
+ "responsive",
59
+ "react",
60
+ "nextjs",
61
+ "cyberpunk"
62
+ ],
63
+ "scripts": {
64
+ "dev": "vite",
65
+ "build:css": "node scripts/build-framework.js",
66
+ "build:docs": "vite build",
67
+ "build": "npm run build:docs && npm run build:css",
68
+ "lint": "eslint .",
69
+ "preview": "vite preview",
70
+ "predeploy": "npm run build",
71
+ "deploy:gh": "gh-pages -d dist",
72
+ "deploy:npm": "npm publish --access public",
73
+ "deploy": "npm run build && npm run deploy:gh && npm run deploy:npm"
74
+ },
75
+ "dependencies": {
76
+ "gh-pages": "^6.3.0",
77
+ "highlight.js": "^11.11.1",
78
+ "react": "^19.2.4",
79
+ "react-dom": "^19.2.4",
80
+ "react-router-dom": "^7.14.0"
81
+ },
82
+ "devDependencies": {
83
+ "@eslint/js": "^9.39.4",
84
+ "@types/react": "^19.2.14",
85
+ "@types/react-dom": "^19.2.3",
86
+ "@vitejs/plugin-react": "^6.0.1",
87
+ "eslint": "^9.39.4",
88
+ "eslint-plugin-react-hooks": "^7.0.1",
89
+ "eslint-plugin-react-refresh": "^0.5.2",
90
+ "globals": "^17.4.0",
91
+ "vite": "^8.0.15"
92
+ }
6
93
  }