@quinnjr/ngx-tailwindcss 1.0.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/.claude/settings.local.json +9 -0
- package/.cursorignore +61 -0
- package/.prettierignore +19 -0
- package/CHANGELOG.md +356 -0
- package/LICENSE +22 -0
- package/README.md +342 -0
- package/commitlint.config.cjs +4 -0
- package/extract-inline.js +1 -0
- package/package.json +149 -0
- package/pegasusheavy-ngx-tailwindcss-0.1.0.tgz +0 -0
- package/pnpm-workspace.yaml +17 -0
package/.cursorignore
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Dependencies
|
|
2
|
+
node_modules/
|
|
3
|
+
.pnpm-store/
|
|
4
|
+
|
|
5
|
+
# Build outputs
|
|
6
|
+
dist/
|
|
7
|
+
.angular/
|
|
8
|
+
.ng-cache/
|
|
9
|
+
coverage/
|
|
10
|
+
|
|
11
|
+
# IDE and editor
|
|
12
|
+
.idea/
|
|
13
|
+
.vscode/
|
|
14
|
+
*.swp
|
|
15
|
+
*.swo
|
|
16
|
+
*~
|
|
17
|
+
|
|
18
|
+
# OS files
|
|
19
|
+
.DS_Store
|
|
20
|
+
Thumbs.db
|
|
21
|
+
|
|
22
|
+
# Logs
|
|
23
|
+
*.log
|
|
24
|
+
npm-debug.log*
|
|
25
|
+
yarn-debug.log*
|
|
26
|
+
yarn-error.log*
|
|
27
|
+
pnpm-debug.log*
|
|
28
|
+
|
|
29
|
+
# Lock files (large and auto-generated)
|
|
30
|
+
pnpm-lock.yaml
|
|
31
|
+
package-lock.json
|
|
32
|
+
yarn.lock
|
|
33
|
+
|
|
34
|
+
# Test artifacts
|
|
35
|
+
.vitest/
|
|
36
|
+
__snapshots__/
|
|
37
|
+
|
|
38
|
+
# Generated files
|
|
39
|
+
*.tsbuildinfo
|
|
40
|
+
*.ngfactory.ts
|
|
41
|
+
*.ngsummary.json
|
|
42
|
+
*.metadata.json
|
|
43
|
+
|
|
44
|
+
# Documentation build
|
|
45
|
+
docs/.angular/
|
|
46
|
+
docs/dist/
|
|
47
|
+
docs/node_modules/
|
|
48
|
+
|
|
49
|
+
# Screenshots (for PR/debugging)
|
|
50
|
+
*.png
|
|
51
|
+
*.jpg
|
|
52
|
+
*.jpeg
|
|
53
|
+
*.gif
|
|
54
|
+
*.webp
|
|
55
|
+
|
|
56
|
+
# Temporary files
|
|
57
|
+
tmp/
|
|
58
|
+
temp/
|
|
59
|
+
.tmp/
|
|
60
|
+
.temp/
|
|
61
|
+
|
package/.prettierignore
ADDED
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.4.0] - 2026-01-13
|
|
9
|
+
|
|
10
|
+
### 🎯 Breaking Changes
|
|
11
|
+
|
|
12
|
+
- **Native App Support**: Tauri and Electron packages are now **optional** peer dependencies
|
|
13
|
+
- The library still works perfectly without them - all imports are dynamic
|
|
14
|
+
- Install `@tauri-apps/*` packages only if you need native app features
|
|
15
|
+
- Install `electron` only if you're building an Electron app
|
|
16
|
+
- Native components gracefully fall back to web equivalents when these packages aren't installed
|
|
17
|
+
|
|
18
|
+
### 🔒 Security
|
|
19
|
+
|
|
20
|
+
- Added CodeQL security analysis workflow for automated vulnerability scanning
|
|
21
|
+
|
|
22
|
+
### 🛠 CI/CD & Dependencies
|
|
23
|
+
|
|
24
|
+
- Bumped GitHub Actions dependencies:
|
|
25
|
+
- `actions/checkout` from 4 to 6
|
|
26
|
+
- `actions/setup-node` from 4 to 6
|
|
27
|
+
- `actions/configure-pages` from 4 to 5
|
|
28
|
+
- `actions/upload-artifact` from 4 to 6
|
|
29
|
+
- `actions/upload-pages-artifact` from 3 to 4
|
|
30
|
+
- `orhun/git-cliff-action` from 3 to 4
|
|
31
|
+
- `github/codeql-action` from 3 to 4
|
|
32
|
+
- `amannn/action-semantic-pull-request` from 5 to 6
|
|
33
|
+
- Bumped Angular dependencies in docs to 21.0.6:
|
|
34
|
+
- `@angular/core`
|
|
35
|
+
- `@angular/common`
|
|
36
|
+
- `@angular/compiler`
|
|
37
|
+
- `@angular/compiler-cli`
|
|
38
|
+
- `@angular/platform-browser`
|
|
39
|
+
|
|
40
|
+
## [0.3.4] - 2025-12-31
|
|
41
|
+
|
|
42
|
+
### 🐛 Bug Fixes
|
|
43
|
+
|
|
44
|
+
- **Volume Dial**: Refactored to use Angular's `model()` input for proper two-way binding support, fixing `NG0303` warning about `value` not being a known property
|
|
45
|
+
- **Pagination**: Fixed `NG0955` duplicate keys warning by using unique identifiers for left/right ellipsis in page number arrays
|
|
46
|
+
- **Native Components**: Fixed bundler resolution errors for Tauri/Electron imports in web-only applications by implementing dynamic import utilities that prevent static analysis
|
|
47
|
+
- **Dock Service**: Fixed `setBadge` method to properly use the `text` parameter by appending badge count to window title in Tauri (was previously calling `getCurrentWindow()` without using the result)
|
|
48
|
+
|
|
49
|
+
### 🧹 Code Quality
|
|
50
|
+
|
|
51
|
+
- Removed redundant `valueChange` output from volume dial (now handled automatically by `model()`)
|
|
52
|
+
- Cleaned up unused imports in volume dial component
|
|
53
|
+
- Added `dynamic-import.ts` utility for runtime-only imports of optional dependencies (Electron, Tauri)
|
|
54
|
+
- Updated native services to use dynamic import utilities: FilePickerService, SystemTrayService, DockService, NativeNotificationsService, UpdateService
|
|
55
|
+
|
|
56
|
+
## [0.3.3] - 2025-12-31
|
|
57
|
+
|
|
58
|
+
### 🎨 Dark Mode & UI Improvements
|
|
59
|
+
|
|
60
|
+
- Added dark mode variants to ghost and outline button variants
|
|
61
|
+
- Fixed ghost button icon visibility in dark mode
|
|
62
|
+
- Fixed avatar ring shapes (add rounded-full to prevent square rings)
|
|
63
|
+
- Fixed notification badge clipping (move outside button overflow)
|
|
64
|
+
- Removed redundant rounded corners from terminal and log-viewer
|
|
65
|
+
- Increased terminal and log-viewer demo heights to prevent cutoff
|
|
66
|
+
- Fixed DAW mixer fader styling (rectangular instead of rounded)
|
|
67
|
+
|
|
68
|
+
### 📦 Dependencies
|
|
69
|
+
|
|
70
|
+
- Updated `@angular/router` to 21.0.6 to match other Angular packages
|
|
71
|
+
|
|
72
|
+
## [0.3.2] - 2025-12-30
|
|
73
|
+
|
|
74
|
+
### 🛠 CI/CD Fixes
|
|
75
|
+
|
|
76
|
+
- Fixed GitHub Pages deployment for documentation
|
|
77
|
+
- Removed CNAME configuration for github.io deployment
|
|
78
|
+
- Deployed docs from main branch instead of release tags
|
|
79
|
+
- Allow docs deployment even if npm publish fails
|
|
80
|
+
|
|
81
|
+
## [0.3.1] - 2025-12-29
|
|
82
|
+
|
|
83
|
+
### 🧪 Testing
|
|
84
|
+
|
|
85
|
+
- Added comprehensive unit test coverage (1006 tests)
|
|
86
|
+
- All components now have spec files with thorough testing
|
|
87
|
+
- Fixed test utilities and improved test infrastructure
|
|
88
|
+
|
|
89
|
+
## [0.3.0] - 2025-12-28
|
|
90
|
+
|
|
91
|
+
### ✨ Native App UI Components
|
|
92
|
+
|
|
93
|
+
Complete suite of UI components for building desktop-like applications with Tauri, Electron, or PWAs:
|
|
94
|
+
|
|
95
|
+
#### Window & Chrome Components
|
|
96
|
+
- **Title Bar** - Custom draggable title bar with platform-specific controls
|
|
97
|
+
- **Window Controls** - macOS traffic lights, Windows, and Linux style buttons
|
|
98
|
+
- **Menu Bar** - Native-style menu bar with keyboard navigation
|
|
99
|
+
- **Context Menu** - Right-click context menus with submenus
|
|
100
|
+
|
|
101
|
+
#### Navigation Components
|
|
102
|
+
- **Sidebar** - Collapsible sidebar with tree navigation
|
|
103
|
+
- **File Tree** - Hierarchical file/folder explorer
|
|
104
|
+
- **Breadcrumb Navigation** - Path-based breadcrumbs
|
|
105
|
+
- **Tab Bar** - Document tabs with close/reorder
|
|
106
|
+
|
|
107
|
+
#### Search & Commands
|
|
108
|
+
- **Command Palette** - VS Code-style command palette (Cmd+K)
|
|
109
|
+
- **Search Bar** - Global search with suggestions
|
|
110
|
+
- **Quick Switcher** - Quick file/tab switcher
|
|
111
|
+
|
|
112
|
+
#### Settings & Preferences
|
|
113
|
+
- **Settings Panel** - Categorized settings layout
|
|
114
|
+
- **Preferences Dialog** - macOS-style preferences
|
|
115
|
+
- **Keyboard Shortcuts Editor** - Visual shortcut editor
|
|
116
|
+
- **Theme Selector** - Light/Dark/System mode toggle
|
|
117
|
+
|
|
118
|
+
#### Dialogs & Notifications
|
|
119
|
+
- **Alert Dialog** - Info, Warning, Error, Success variants
|
|
120
|
+
- **Confirm Dialog** - Confirmation with custom buttons
|
|
121
|
+
- **Prompt Dialog** - Text input prompts
|
|
122
|
+
- **About Dialog** - App info with version, credits
|
|
123
|
+
- **Update Dialog** - Update available notifications
|
|
124
|
+
- **Onboarding Wizard** - Step-by-step introductions
|
|
125
|
+
|
|
126
|
+
#### Data Display
|
|
127
|
+
- **Property Inspector** - Key-value property display
|
|
128
|
+
- **Terminal/Console** - Terminal output with ANSI colors
|
|
129
|
+
- **Log Viewer** - Log entries with filtering
|
|
130
|
+
- **Code/JSON Viewer** - Syntax highlighted code display
|
|
131
|
+
|
|
132
|
+
#### Status & Feedback
|
|
133
|
+
- **Status Bar** - Bottom status bar with sections
|
|
134
|
+
- **Toolbar** - Icon buttons with overflow menu
|
|
135
|
+
- **Activity Indicator** - Loading states
|
|
136
|
+
- **Connection Status** - Online/offline indicators
|
|
137
|
+
|
|
138
|
+
#### Interaction & Input
|
|
139
|
+
- **Resizable Panels** - Drag-to-resize split panels
|
|
140
|
+
- **Keyboard Shortcut Display** - Visual key combinations
|
|
141
|
+
- **Drag & Drop Directives** - twDraggable, twDropZone
|
|
142
|
+
- **Shortcut Directive** - twShortcut for keyboard bindings
|
|
143
|
+
|
|
144
|
+
### 🔧 Services
|
|
145
|
+
|
|
146
|
+
- `NativeAppPlatformService` - Window management, system info
|
|
147
|
+
- `StorageService` - Local, secure, and file storage
|
|
148
|
+
- `IpcService` - Tauri/Electron IPC communication
|
|
149
|
+
- `UpdateService` - App update management
|
|
150
|
+
- `FilePickerService` - Native file/folder dialogs
|
|
151
|
+
- `SystemTrayService` - System tray icon and menu
|
|
152
|
+
- `NativeNotificationsService` - System notifications
|
|
153
|
+
- `DockService` - Dock/taskbar integration
|
|
154
|
+
|
|
155
|
+
## [0.2.0] - 2025-12-26
|
|
156
|
+
|
|
157
|
+
### ✨ Music/Audio Components
|
|
158
|
+
|
|
159
|
+
Professional DAW-style audio components for music applications:
|
|
160
|
+
|
|
161
|
+
- **Piano Keyboard** - Interactive piano with MIDI support
|
|
162
|
+
- **Volume Dial** - Rotary volume/parameter control
|
|
163
|
+
- **Mixer Faders** - Multi-channel mixing interface
|
|
164
|
+
- **Waveform Display** - Audio waveform visualization
|
|
165
|
+
- **Spectrum Analyzer** - Real-time frequency display
|
|
166
|
+
- **VU Meter** - Level metering with peak hold
|
|
167
|
+
- **Transport Controls** - Play/pause/stop/record buttons
|
|
168
|
+
- **Timeline Ruler** - Time/beat markers
|
|
169
|
+
|
|
170
|
+
### 🔧 Audio Services
|
|
171
|
+
|
|
172
|
+
- `AudioContextService` - Web Audio API management
|
|
173
|
+
- `MidiService` - MIDI device integration
|
|
174
|
+
- `MobileSupportService` - Touch device optimization
|
|
175
|
+
- `AccessibilityService` - Screen reader support for audio controls
|
|
176
|
+
|
|
177
|
+
## [0.1.2] - 2025-12-21
|
|
178
|
+
|
|
179
|
+
### 🛠 Packaging & Reliability
|
|
180
|
+
|
|
181
|
+
- Copied `README.md` into the published `/dist/ngx-tailwindcss` output so npmjs can render the project documentation even when the tarball is built from the compiled library.
|
|
182
|
+
- Added a `publish:dist` script that runs the production build and publishes directly from `dist/ngx-tailwindcss` with `--access public`, keeping the published artifact aligned with the compiled bundle.
|
|
183
|
+
- Raised the Vitest hook and test timeouts to 60 s so the longer-running directive specs no longer abort the Husky pre-push step.
|
|
184
|
+
|
|
185
|
+
## [0.1.1] - 2025-12-19
|
|
186
|
+
|
|
187
|
+
### 🛠 Packaging & Reliability
|
|
188
|
+
|
|
189
|
+
- Ensured the npm release is produced from the compiled `/dist/ngx-tailwindcss` output so the published tarball includes the FESM bundle, typings, and theme CSS instead of just docs/config files.
|
|
190
|
+
- Replaced the deprecated `husky install` step with a runtime `node -e "import('husky')..."` bootstrap and added dedicated pre-commit/pre-push/commit-msg scripts so lint/test/commitlint hooks run reliably without invoking the removed shim.
|
|
191
|
+
|
|
192
|
+
## [0.1.0] - 2025-12-19
|
|
193
|
+
|
|
194
|
+
### ✨ Features
|
|
195
|
+
|
|
196
|
+
- Introduced a configurable theming system based on CSS custom properties, the `TwThemeService`, and `provideTwTheme()` so apps can swap palettes, override individual components, and keep `dark:` styles optional.
|
|
197
|
+
- Added a default `theme.css` bundle with semantic light/dark values and exposed the CSS variables through `ng-packagr` assets, letting downstream consumers tweak every shade without touching the library source.
|
|
198
|
+
- Delivered `TwDatatablesComponent`, a ready-to-go dashboard table with headers, toolbar slots, filters, pagination, and selection wired to the existing `tw-table` data layer.
|
|
199
|
+
|
|
200
|
+
### 📝 Content & polish
|
|
201
|
+
|
|
202
|
+
- Documented how to configure themes and added the DataTables docs page, ensuring the sidebar, nav, and theming routes all reach the new experiences.
|
|
203
|
+
- Rebalanced the docs palette so dark mode text, containers, stack/grid/spacer demos, sticky/scroll-area/columns/bleed examples, and tabs are legible, spacing works, and the navbar no longer looks cramped.
|
|
204
|
+
- Fixed the horizontal spacer sample to honor `size="auto"` by giving it `flex-1` and updated copy snippets throughout the docs to reflect the new UX.
|
|
205
|
+
|
|
206
|
+
### 🛠 Tooling & quality
|
|
207
|
+
|
|
208
|
+
- Added comprehensive `.npmignore`, removed single-use scripts, and wired Husky with linting pre-commit, test pre-push, and commitlint hooks.
|
|
209
|
+
- Documented the new changelog entry, ensured dark-mode demos showcase `dark:text-slate-300`, and kept existing Tailwind `dark:` utilities as safe defaults while giving users CSS variable overrides for Tw components.
|
|
210
|
+
|
|
211
|
+
## [0.1.0-beta.1] - 2025-12-15
|
|
212
|
+
|
|
213
|
+
### 🎉 Initial Release
|
|
214
|
+
|
|
215
|
+
First public release of `@pegasus-heavy/ngx-tailwindcss` - A highly customizable Angular component library for Tailwind CSS 4+.
|
|
216
|
+
|
|
217
|
+
### ✨ Features
|
|
218
|
+
|
|
219
|
+
#### Core
|
|
220
|
+
- **TwClassService** - Intelligent Tailwind class merging with conflict resolution
|
|
221
|
+
- **Global Configuration** - `provideTwConfig()` for app-wide default styling
|
|
222
|
+
- **Class Override System** - `classOverride` and `classReplace` inputs on all components
|
|
223
|
+
|
|
224
|
+
#### Form Components
|
|
225
|
+
- **Button** - Multiple variants (primary, secondary, outline, ghost, link, danger), sizes, icons, loading states
|
|
226
|
+
- **Input** - Text, password, email, number inputs with validation, prefixes, suffixes
|
|
227
|
+
- **Checkbox** - Single and group checkboxes with indeterminate state
|
|
228
|
+
- **Radio** - Radio buttons with group support
|
|
229
|
+
- **Switch** - Toggle switches with labels
|
|
230
|
+
- **Select** - Dropdown select with search, multi-select, custom templates
|
|
231
|
+
- **Slider** - Range sliders with single/dual handles, steps, marks
|
|
232
|
+
- **Rating** - Star rating with half-star support
|
|
233
|
+
|
|
234
|
+
#### Layout Components
|
|
235
|
+
- **Card** - Flexible card layouts with header, body, footer directives
|
|
236
|
+
- **Accordion** - Collapsible panels with single/multiple open modes
|
|
237
|
+
- **Tabs** - Tab navigation with lazy loading support
|
|
238
|
+
- **Divider** - Horizontal/vertical dividers with labels
|
|
239
|
+
|
|
240
|
+
#### Data Display Components
|
|
241
|
+
- **Badge** - Status indicators with variants and sizes
|
|
242
|
+
- **Avatar** - User avatars with images, initials, status indicators, groups
|
|
243
|
+
- **Chip** - Removable chips/tags
|
|
244
|
+
- **Table** - Data tables with sorting, pagination, row selection
|
|
245
|
+
- **Tree** - Hierarchical tree view with expand/collapse
|
|
246
|
+
- **Timeline** - Vertical timeline for events
|
|
247
|
+
|
|
248
|
+
#### Navigation Components
|
|
249
|
+
- **Breadcrumb** - Navigation breadcrumbs with custom separators
|
|
250
|
+
- **Pagination** - Page navigation with customizable display
|
|
251
|
+
- **Steps** - Step indicators for multi-step processes
|
|
252
|
+
- **Menu** - Context menus and menu bars
|
|
253
|
+
|
|
254
|
+
#### Feedback Components
|
|
255
|
+
- **Alert** - Dismissible alerts with variants (info, success, warning, error)
|
|
256
|
+
- **Toast** - Toast notifications with positioning and auto-dismiss
|
|
257
|
+
- **Progress** - Linear and circular progress bars
|
|
258
|
+
- **Spinner** - Loading spinners (border, dots, pulse, bars)
|
|
259
|
+
- **Skeleton** - Loading placeholders (text, cards, tables)
|
|
260
|
+
|
|
261
|
+
#### Overlay Components
|
|
262
|
+
- **Modal** - Dialog modals with sizes and animations
|
|
263
|
+
- **Dropdown** - Dropdown menus with portal rendering
|
|
264
|
+
- **Sidebar** - Slide-out sidebar panels
|
|
265
|
+
- **Popover** - Floating popovers with positioning
|
|
266
|
+
|
|
267
|
+
#### Media Components
|
|
268
|
+
- **Image** - Responsive images with lazy loading, preview mode
|
|
269
|
+
|
|
270
|
+
#### Utility Components
|
|
271
|
+
- **ScrollTop** - Scroll-to-top button
|
|
272
|
+
|
|
273
|
+
### 🎯 Directives
|
|
274
|
+
|
|
275
|
+
#### Core Directives
|
|
276
|
+
- **TwRippleDirective** - Material-style ripple effects
|
|
277
|
+
- **TwTooltipDirective** - Tooltip on hover
|
|
278
|
+
- **TwClickOutsideDirective** - Detect clicks outside element
|
|
279
|
+
- **TwFocusTrapDirective** - Trap focus within modals
|
|
280
|
+
|
|
281
|
+
#### DX Enhancement Directives
|
|
282
|
+
- **TwAutoFocusDirective** - Auto-focus elements on render
|
|
283
|
+
- **TwInViewDirective** - Intersection Observer for visibility
|
|
284
|
+
- **TwLongPressDirective** - Detect long press gestures
|
|
285
|
+
- **TwDebounceClickDirective** - Debounce rapid clicks
|
|
286
|
+
- **TwCopyClipboardDirective** - Copy text to clipboard
|
|
287
|
+
- **TwKeyboardShortcutDirective** - Handle keyboard shortcuts
|
|
288
|
+
- **TwSwipeDirective** - Detect swipe gestures
|
|
289
|
+
- **TwResizeObserverDirective** - Observe element resize
|
|
290
|
+
- **TwLazyImageDirective** - Lazy load images
|
|
291
|
+
- **TwScrollToDirective** - Smooth scroll navigation
|
|
292
|
+
- **TwHoverClassDirective** - Dynamic hover classes
|
|
293
|
+
- **TwTrapScrollDirective** - Prevent scroll propagation
|
|
294
|
+
|
|
295
|
+
#### ARIA Accessibility Directives
|
|
296
|
+
- **TwSrOnlyDirective** - Screen reader only content
|
|
297
|
+
- **TwAnnounceDirective** - Screen reader announcements
|
|
298
|
+
- **TwAriaExpandedDirective** - Manage expanded state
|
|
299
|
+
- **TwAriaSelectedDirective** - Manage selected state
|
|
300
|
+
- **TwAriaCheckedDirective** - Manage checked state
|
|
301
|
+
- **TwAriaPressedDirective** - Manage pressed state
|
|
302
|
+
- **TwAriaDisabledDirective** - Manage disabled state
|
|
303
|
+
- **TwAriaHiddenDirective** - Hide from assistive tech
|
|
304
|
+
- **TwAriaLiveDirective** - Live region management
|
|
305
|
+
- **TwAriaCurrentDirective** - Current navigation item
|
|
306
|
+
- **TwAriaBusyDirective** - Busy/loading state
|
|
307
|
+
- **TwAriaDescribedbyDirective** - Description relationships
|
|
308
|
+
- **TwAriaLabelledbyDirective** - Label relationships
|
|
309
|
+
- **TwAriaLabelDirective** - Accessible labels
|
|
310
|
+
- **TwAriaValueDirective** - Range widget values
|
|
311
|
+
- **TwRoleDirective** - ARIA roles
|
|
312
|
+
- **TwAriaModalDirective** - Modal dialogs
|
|
313
|
+
- **TwAriaHaspopupDirective** - Popup indicators
|
|
314
|
+
|
|
315
|
+
### ♿ Accessibility
|
|
316
|
+
- **TwAriaService** - Screen reader announcements (polite/assertive)
|
|
317
|
+
- **AriaUtils** - Helper functions for ARIA IDs and attributes
|
|
318
|
+
- All components built with WCAG 2.1 guidelines
|
|
319
|
+
- Keyboard navigation support
|
|
320
|
+
- Focus management
|
|
321
|
+
|
|
322
|
+
### 🌐 Internationalization
|
|
323
|
+
- **TwI18nService** - Translation and locale management
|
|
324
|
+
- **provideTwTranslations()** - Custom translation provider
|
|
325
|
+
- **provideTwLocale()** - Locale configuration
|
|
326
|
+
- Default English translations for all components
|
|
327
|
+
- RTL language support (Arabic, Hebrew, Persian, Urdu, etc.)
|
|
328
|
+
- String interpolation for dynamic content
|
|
329
|
+
|
|
330
|
+
### 📚 Documentation
|
|
331
|
+
- Comprehensive docs website with live examples
|
|
332
|
+
- Interactive component demos
|
|
333
|
+
- Code snippets with copy functionality
|
|
334
|
+
- SEO optimized with Open Graph and Twitter Cards
|
|
335
|
+
- AI-friendly documentation (llms.txt, structured data)
|
|
336
|
+
|
|
337
|
+
### 🛠️ Developer Experience
|
|
338
|
+
- Angular 19, 20, and 21 support
|
|
339
|
+
- Standalone components (no NgModule required)
|
|
340
|
+
- Full TypeScript support with strict types
|
|
341
|
+
- Tree-shakeable exports
|
|
342
|
+
- Zero bundled CSS - works with your Tailwind config
|
|
343
|
+
- Signals-based reactive state management
|
|
344
|
+
|
|
345
|
+
[0.4.0]: https://github.com/pegasusheavy/ngx-tailwindcss/releases/tag/v0.4.0
|
|
346
|
+
[0.3.4]: https://github.com/pegasusheavy/ngx-tailwindcss/releases/tag/v0.3.4
|
|
347
|
+
[0.3.3]: https://github.com/pegasusheavy/ngx-tailwindcss/releases/tag/v0.3.3
|
|
348
|
+
[0.3.2]: https://github.com/pegasusheavy/ngx-tailwindcss/releases/tag/v0.3.2
|
|
349
|
+
[0.3.1]: https://github.com/pegasusheavy/ngx-tailwindcss/releases/tag/v0.3.1
|
|
350
|
+
[0.3.0]: https://github.com/pegasusheavy/ngx-tailwindcss/releases/tag/v0.3.0
|
|
351
|
+
[0.2.0]: https://github.com/pegasusheavy/ngx-tailwindcss/releases/tag/v0.2.0
|
|
352
|
+
[0.1.2]: https://github.com/pegasusheavy/ngx-tailwindcss/releases/tag/v0.1.2
|
|
353
|
+
[0.1.1]: https://github.com/pegasusheavy/ngx-tailwindcss/releases/tag/v0.1.1
|
|
354
|
+
[0.1.0]: https://github.com/pegasusheavy/ngx-tailwindcss/releases/tag/v0.1.0
|
|
355
|
+
[0.1.0-beta.1]: https://github.com/pegasusheavy/ngx-tailwindcss/releases/tag/v0.1.0-beta.1
|
|
356
|
+
|
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Pegasus Heavy Industries LLC
|
|
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.
|
|
22
|
+
|
package/README.md
ADDED
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
# @pegasus-heavy/ngx-tailwindcss
|
|
2
|
+
|
|
3
|
+
A highly customizable Angular component library designed for **Tailwind CSS 4+**. This library provides beautiful, accessible UI components that leverage Tailwind's utility-first approach while giving you complete control over styling.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🎨 **Fully Customizable** - Override any styling through class props or global configuration
|
|
8
|
+
- 🌊 **Tailwind CSS 4+ Ready** - Built for the latest Tailwind with CSS-first configuration
|
|
9
|
+
- ♿ **Accessible** - WCAG compliant with proper ARIA attributes and keyboard navigation
|
|
10
|
+
- 📦 **Tree-Shakeable** - Import only what you need with secondary entry points
|
|
11
|
+
- 🔧 **No Bundled CSS** - Your Tailwind config, your rules
|
|
12
|
+
- ⚡ **Standalone Components** - No NgModule required, works with Angular 19+
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
pnpm add @pegasus-heavy/ngx-tailwindcss
|
|
18
|
+
# or
|
|
19
|
+
npm install @pegasus-heavy/ngx-tailwindcss
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Peer Dependencies
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pnpm add @angular/cdk
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Tailwind CSS Configuration
|
|
29
|
+
|
|
30
|
+
This library **does not** import Tailwind CSS directly. You must configure Tailwind in your application.
|
|
31
|
+
|
|
32
|
+
### 1. Configure Content Paths
|
|
33
|
+
|
|
34
|
+
Add the library's component templates to your Tailwind content configuration so the PostCSS parser can detect the utility classes used:
|
|
35
|
+
|
|
36
|
+
**For Tailwind CSS 4+ (CSS-based config):**
|
|
37
|
+
|
|
38
|
+
```css
|
|
39
|
+
/* app.css or styles.css */
|
|
40
|
+
@import "tailwindcss";
|
|
41
|
+
|
|
42
|
+
@source "../node_modules/@pegasus-heavy/ngx-tailwindcss/**/*.{js,mjs}";
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**For Tailwind CSS 3.x (tailwind.config.js):**
|
|
46
|
+
|
|
47
|
+
```js
|
|
48
|
+
// tailwind.config.js
|
|
49
|
+
module.exports = {
|
|
50
|
+
content: [
|
|
51
|
+
"./src/**/*.{html,ts}",
|
|
52
|
+
"./node_modules/@pegasus-heavy/ngx-tailwindcss/**/*.{js,mjs}",
|
|
53
|
+
],
|
|
54
|
+
// ... rest of your config
|
|
55
|
+
};
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 2. Import Components
|
|
59
|
+
|
|
60
|
+
Import components directly in your Angular components:
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
import { Component } from '@angular/core';
|
|
64
|
+
import {
|
|
65
|
+
TwButtonComponent,
|
|
66
|
+
TwCardComponent,
|
|
67
|
+
TwCardBodyDirective
|
|
68
|
+
} from '@pegasus-heavy/ngx-tailwindcss';
|
|
69
|
+
|
|
70
|
+
@Component({
|
|
71
|
+
selector: 'app-example',
|
|
72
|
+
standalone: true,
|
|
73
|
+
imports: [TwButtonComponent, TwCardComponent, TwCardBodyDirective],
|
|
74
|
+
template: `
|
|
75
|
+
<tw-card>
|
|
76
|
+
<tw-card-body>
|
|
77
|
+
<tw-button variant="primary">Click me!</tw-button>
|
|
78
|
+
</tw-card-body>
|
|
79
|
+
</tw-card>
|
|
80
|
+
`,
|
|
81
|
+
})
|
|
82
|
+
export class ExampleComponent {}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Or import everything at once:
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
import { TW_ALL } from '@pegasus-heavy/ngx-tailwindcss';
|
|
89
|
+
|
|
90
|
+
@Component({
|
|
91
|
+
imports: [...TW_ALL],
|
|
92
|
+
})
|
|
93
|
+
export class ExampleComponent {}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Global Configuration
|
|
97
|
+
|
|
98
|
+
Customize default styles and behavior globally:
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
// app.config.ts
|
|
102
|
+
import { ApplicationConfig } from '@angular/core';
|
|
103
|
+
import { provideTwConfig } from '@pegasus-heavy/ngx-tailwindcss';
|
|
104
|
+
|
|
105
|
+
export const appConfig: ApplicationConfig = {
|
|
106
|
+
providers: [
|
|
107
|
+
provideTwConfig({
|
|
108
|
+
theme: {
|
|
109
|
+
primary: 'bg-indigo-600 hover:bg-indigo-700 text-white',
|
|
110
|
+
secondary: 'bg-purple-600 hover:bg-purple-700 text-white',
|
|
111
|
+
// ... customize other variants
|
|
112
|
+
},
|
|
113
|
+
animationDuration: 300,
|
|
114
|
+
}),
|
|
115
|
+
],
|
|
116
|
+
};
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Components
|
|
120
|
+
|
|
121
|
+
### Button
|
|
122
|
+
|
|
123
|
+
```html
|
|
124
|
+
<tw-button>Default</tw-button>
|
|
125
|
+
<tw-button variant="primary">Primary</tw-button>
|
|
126
|
+
<tw-button variant="danger" size="lg">Large Danger</tw-button>
|
|
127
|
+
<tw-button variant="outline" [loading]="isLoading">Submit</tw-button>
|
|
128
|
+
<tw-button variant="ghost" [iconOnly]="true">
|
|
129
|
+
<svg twButtonIcon>...</svg>
|
|
130
|
+
</tw-button>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Props:**
|
|
134
|
+
- `variant`: `'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info' | 'ghost' | 'outline' | 'link'`
|
|
135
|
+
- `size`: `'xs' | 'sm' | 'md' | 'lg' | 'xl'`
|
|
136
|
+
- `disabled`, `loading`, `fullWidth`, `iconOnly`: `boolean`
|
|
137
|
+
- `classOverride`: Additional classes to merge
|
|
138
|
+
- `classReplace`: Complete class replacement
|
|
139
|
+
|
|
140
|
+
### Card
|
|
141
|
+
|
|
142
|
+
```html
|
|
143
|
+
<tw-card variant="elevated">
|
|
144
|
+
<tw-card-header>
|
|
145
|
+
<tw-card-title>Card Title</tw-card-title>
|
|
146
|
+
<tw-card-subtitle>Subtitle</tw-card-subtitle>
|
|
147
|
+
</tw-card-header>
|
|
148
|
+
<tw-card-body>
|
|
149
|
+
Content goes here
|
|
150
|
+
</tw-card-body>
|
|
151
|
+
<tw-card-footer>
|
|
152
|
+
<tw-button variant="primary">Action</tw-button>
|
|
153
|
+
</tw-card-footer>
|
|
154
|
+
</tw-card>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Input
|
|
158
|
+
|
|
159
|
+
```html
|
|
160
|
+
<tw-input
|
|
161
|
+
[(ngModel)]="email"
|
|
162
|
+
type="email"
|
|
163
|
+
label="Email"
|
|
164
|
+
placeholder="you@example.com"
|
|
165
|
+
hint="We'll never share your email"
|
|
166
|
+
[error]="emailError"
|
|
167
|
+
[clearable]="true">
|
|
168
|
+
</tw-input>
|
|
169
|
+
|
|
170
|
+
<tw-textarea
|
|
171
|
+
[(ngModel)]="bio"
|
|
172
|
+
label="Bio"
|
|
173
|
+
[rows]="4"
|
|
174
|
+
[maxlength]="500"
|
|
175
|
+
[showCount]="true"
|
|
176
|
+
[autoResize]="true">
|
|
177
|
+
</tw-textarea>
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Badge
|
|
181
|
+
|
|
182
|
+
```html
|
|
183
|
+
<tw-badge variant="success">Active</tw-badge>
|
|
184
|
+
<tw-badge variant="warning" badgeStyle="soft">Pending</tw-badge>
|
|
185
|
+
<tw-badge variant="danger" badgeStyle="dot">Offline</tw-badge>
|
|
186
|
+
<tw-badge variant="info" [pill]="true" [removable]="true" [remove]="onRemove">
|
|
187
|
+
Tag
|
|
188
|
+
</tw-badge>
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Alert
|
|
192
|
+
|
|
193
|
+
```html
|
|
194
|
+
<tw-alert variant="success" alertStyle="soft" [dismissible]="true">
|
|
195
|
+
<tw-alert-title>Success!</tw-alert-title>
|
|
196
|
+
<tw-alert-description>Your changes have been saved.</tw-alert-description>
|
|
197
|
+
</tw-alert>
|
|
198
|
+
|
|
199
|
+
<tw-alert variant="danger" alertStyle="accent">
|
|
200
|
+
An error occurred while processing your request.
|
|
201
|
+
</tw-alert>
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Modal
|
|
205
|
+
|
|
206
|
+
```html
|
|
207
|
+
<tw-button (click)="isOpen = true">Open Modal</tw-button>
|
|
208
|
+
|
|
209
|
+
<tw-modal [(open)]="isOpen" size="md">
|
|
210
|
+
<tw-modal-header>
|
|
211
|
+
<tw-modal-title>Confirm Action</tw-modal-title>
|
|
212
|
+
</tw-modal-header>
|
|
213
|
+
<tw-modal-body>
|
|
214
|
+
Are you sure you want to continue?
|
|
215
|
+
</tw-modal-body>
|
|
216
|
+
<tw-modal-footer>
|
|
217
|
+
<tw-button variant="ghost" (click)="isOpen = false">Cancel</tw-button>
|
|
218
|
+
<tw-button variant="primary" (click)="confirm()">Confirm</tw-button>
|
|
219
|
+
</tw-modal-footer>
|
|
220
|
+
</tw-modal>
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Dropdown
|
|
224
|
+
|
|
225
|
+
```html
|
|
226
|
+
<tw-dropdown>
|
|
227
|
+
<button twDropdownTrigger class="px-4 py-2 bg-white border rounded-lg">
|
|
228
|
+
Options
|
|
229
|
+
</button>
|
|
230
|
+
<tw-dropdown-menu>
|
|
231
|
+
<tw-dropdown-header>Actions</tw-dropdown-header>
|
|
232
|
+
<button twDropdownItem (click)="edit()">Edit</button>
|
|
233
|
+
<button twDropdownItem (click)="duplicate()">Duplicate</button>
|
|
234
|
+
<tw-dropdown-divider></tw-dropdown-divider>
|
|
235
|
+
<button twDropdownItem class="text-rose-600">Delete</button>
|
|
236
|
+
</tw-dropdown-menu>
|
|
237
|
+
</tw-dropdown>
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Tabs
|
|
241
|
+
|
|
242
|
+
```html
|
|
243
|
+
<tw-tabs [(value)]="activeTab" variant="line">
|
|
244
|
+
<tw-tab-panel value="overview" label="Overview">
|
|
245
|
+
Overview content
|
|
246
|
+
</tw-tab-panel>
|
|
247
|
+
<tw-tab-panel value="settings" label="Settings">
|
|
248
|
+
Settings content
|
|
249
|
+
</tw-tab-panel>
|
|
250
|
+
<tw-tab-panel value="billing" label="Billing" [disabled]="!isPremium">
|
|
251
|
+
Billing content
|
|
252
|
+
</tw-tab-panel>
|
|
253
|
+
</tw-tabs>
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Directives
|
|
257
|
+
|
|
258
|
+
### Ripple Effect
|
|
259
|
+
|
|
260
|
+
```html
|
|
261
|
+
<button twRipple class="px-4 py-2 bg-blue-600 text-white rounded">
|
|
262
|
+
Click me
|
|
263
|
+
</button>
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Tooltip
|
|
267
|
+
|
|
268
|
+
```html
|
|
269
|
+
<button twTooltip="Save changes" tooltipPosition="top">
|
|
270
|
+
Save
|
|
271
|
+
</button>
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Click Outside
|
|
275
|
+
|
|
276
|
+
```html
|
|
277
|
+
<div (twClickOutside)="closeMenu()" [clickOutsideEnabled]="isMenuOpen">
|
|
278
|
+
Menu content
|
|
279
|
+
</div>
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### Focus Trap
|
|
283
|
+
|
|
284
|
+
```html
|
|
285
|
+
<div twFocusTrap [focusTrapAutoFocus]="true">
|
|
286
|
+
<input type="text">
|
|
287
|
+
<button>Submit</button>
|
|
288
|
+
</div>
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### Class Merge
|
|
292
|
+
|
|
293
|
+
```html
|
|
294
|
+
<!-- Intelligently merges Tailwind classes, resolving conflicts -->
|
|
295
|
+
<div [twClass]="'px-4 py-2 bg-blue-500'" [twClassMerge]="'px-8 bg-red-500'">
|
|
296
|
+
Will have px-8 py-2 bg-red-500
|
|
297
|
+
</div>
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Customization Examples
|
|
301
|
+
|
|
302
|
+
### Per-Component Override
|
|
303
|
+
|
|
304
|
+
```html
|
|
305
|
+
<tw-button
|
|
306
|
+
variant="primary"
|
|
307
|
+
classOverride="bg-gradient-to-r from-purple-500 to-pink-500 hover:from-purple-600 hover:to-pink-600">
|
|
308
|
+
Gradient Button
|
|
309
|
+
</tw-button>
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### Complete Class Replacement
|
|
313
|
+
|
|
314
|
+
```html
|
|
315
|
+
<tw-button classReplace="your-completely-custom-classes">
|
|
316
|
+
Custom Styled
|
|
317
|
+
</tw-button>
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### Using the Class Service
|
|
321
|
+
|
|
322
|
+
```typescript
|
|
323
|
+
import { TwClassService } from '@pegasus-heavy/ngx-tailwindcss';
|
|
324
|
+
|
|
325
|
+
@Component({...})
|
|
326
|
+
export class MyComponent {
|
|
327
|
+
private twClass = inject(TwClassService);
|
|
328
|
+
|
|
329
|
+
get buttonClasses() {
|
|
330
|
+
return this.twClass.merge(
|
|
331
|
+
'px-4 py-2 rounded',
|
|
332
|
+
this.isPrimary ? 'bg-blue-600 text-white' : 'bg-gray-100',
|
|
333
|
+
this.isDisabled && 'opacity-50 cursor-not-allowed'
|
|
334
|
+
);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## License
|
|
340
|
+
|
|
341
|
+
MIT © Pegasus Heavy Industries LLC
|
|
342
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
package/package.json
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@quinnjr/ngx-tailwindcss",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "A highly customizable Angular component library for Tailwind CSS 4+. Build beautiful, accessible UI components with full theming support, intelligent class merging, and zero bundled CSS. Features 30+ components including buttons, cards, modals, forms, tables, and more.",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "Pegasus Heavy Industries LLC",
|
|
9
|
+
"url": "https://pegasusheavy.github.io/ngx-tailwindcss"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://pegasusheavy.github.io/ngx-tailwindcss",
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "git+https://github.com/pegasusheavy/ngx-tailwindcss.git"
|
|
15
|
+
},
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/pegasusheavy/ngx-tailwindcss/issues"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"angular",
|
|
21
|
+
"tailwindcss",
|
|
22
|
+
"tailwind",
|
|
23
|
+
"tailwind-css-4",
|
|
24
|
+
"components",
|
|
25
|
+
"ui",
|
|
26
|
+
"ui-library",
|
|
27
|
+
"ui-components",
|
|
28
|
+
"component-library",
|
|
29
|
+
"angular-components",
|
|
30
|
+
"angular-library",
|
|
31
|
+
"angular-ui",
|
|
32
|
+
"design-system",
|
|
33
|
+
"typescript",
|
|
34
|
+
"standalone-components",
|
|
35
|
+
"signals",
|
|
36
|
+
"accessible",
|
|
37
|
+
"accessibility",
|
|
38
|
+
"a11y",
|
|
39
|
+
"aria",
|
|
40
|
+
"wcag",
|
|
41
|
+
"screen-reader",
|
|
42
|
+
"i18n",
|
|
43
|
+
"internationalization",
|
|
44
|
+
"localization",
|
|
45
|
+
"l10n",
|
|
46
|
+
"rtl",
|
|
47
|
+
"translations",
|
|
48
|
+
"responsive",
|
|
49
|
+
"customizable",
|
|
50
|
+
"theming",
|
|
51
|
+
"forms",
|
|
52
|
+
"buttons",
|
|
53
|
+
"modals",
|
|
54
|
+
"cards",
|
|
55
|
+
"tables",
|
|
56
|
+
"dropdown",
|
|
57
|
+
"toast",
|
|
58
|
+
"accordion",
|
|
59
|
+
"tabs",
|
|
60
|
+
"pagination",
|
|
61
|
+
"avatar",
|
|
62
|
+
"badge",
|
|
63
|
+
"spinner",
|
|
64
|
+
"skeleton",
|
|
65
|
+
"progress",
|
|
66
|
+
"tree",
|
|
67
|
+
"timeline",
|
|
68
|
+
"stepper"
|
|
69
|
+
],
|
|
70
|
+
"peerDependencies": {
|
|
71
|
+
"@angular/animations": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
72
|
+
"@angular/cdk": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
73
|
+
"@angular/common": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
74
|
+
"@angular/core": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
75
|
+
"@angular/forms": "^19.0.0 || ^20.0.0 || ^21.0.0"
|
|
76
|
+
},
|
|
77
|
+
"devDependencies": {
|
|
78
|
+
"@analogjs/vite-plugin-angular": "^2.2.0",
|
|
79
|
+
"@angular-devkit/build-angular": "^21.0.4",
|
|
80
|
+
"@angular/animations": "^21.0.6",
|
|
81
|
+
"@angular/build": "^21.0.4",
|
|
82
|
+
"@angular/cdk": "^21.0.5",
|
|
83
|
+
"@angular/cli": "^21.0.4",
|
|
84
|
+
"@angular/common": "^21.0.6",
|
|
85
|
+
"@angular/compiler": "^21.0.6",
|
|
86
|
+
"@angular/compiler-cli": "^21.0.6",
|
|
87
|
+
"@angular/core": "^21.0.6",
|
|
88
|
+
"@angular/forms": "^21.0.6",
|
|
89
|
+
"@angular/platform-browser": "^21.0.6",
|
|
90
|
+
"@angular/platform-browser-dynamic": "^21.0.6",
|
|
91
|
+
"@commitlint/cli": "^20.2.0",
|
|
92
|
+
"@commitlint/config-conventional": "^20.2.0",
|
|
93
|
+
"@eslint/js": "^9.39.2",
|
|
94
|
+
"@pegasusheavy/eslint-typescript-access": "^1.0.0",
|
|
95
|
+
"@testing-library/angular": "^18.1.1",
|
|
96
|
+
"@testing-library/dom": "^10.4.1",
|
|
97
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
98
|
+
"@testing-library/user-event": "^14.6.1",
|
|
99
|
+
"@typescript-eslint/eslint-plugin": "^8.50.0",
|
|
100
|
+
"@typescript-eslint/parser": "^8.50.0",
|
|
101
|
+
"@typescript-eslint/utils": "^8.50.0",
|
|
102
|
+
"@vitest/coverage-v8": "^4.0.16",
|
|
103
|
+
"angular-eslint": "^21.1.0",
|
|
104
|
+
"concurrently": "^9.2.1",
|
|
105
|
+
"eslint": "^9.39.2",
|
|
106
|
+
"eslint-config-prettier": "^10.1.8",
|
|
107
|
+
"eslint-plugin-jsdoc": "^61.5.0",
|
|
108
|
+
"eslint-plugin-unicorn": "^62.0.0",
|
|
109
|
+
"husky": "^9.1.7",
|
|
110
|
+
"jsdom": "^27.3.0",
|
|
111
|
+
"ng-packagr": "^21.0.1",
|
|
112
|
+
"prettier": "^3.7.4",
|
|
113
|
+
"rxjs": "~7.8.2",
|
|
114
|
+
"tslib": "^2.8.1",
|
|
115
|
+
"typescript": "~5.9.3",
|
|
116
|
+
"typescript-eslint": "^8.50.0",
|
|
117
|
+
"vitest": "^4.0.16",
|
|
118
|
+
"zone.js": "~0.16.0"
|
|
119
|
+
},
|
|
120
|
+
"exports": {
|
|
121
|
+
".": {
|
|
122
|
+
"types": "./index.d.ts",
|
|
123
|
+
"default": "./fesm2022/pegasus-heavy-ngx-tailwindcss.mjs"
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"sideEffects": false,
|
|
127
|
+
"publishConfig": {
|
|
128
|
+
"access": "public"
|
|
129
|
+
},
|
|
130
|
+
"scripts": {
|
|
131
|
+
"ng": "ng",
|
|
132
|
+
"build": "ng build ngx-tailwindcss --configuration production",
|
|
133
|
+
"build:watch": "ng build ngx-tailwindcss --watch",
|
|
134
|
+
"publish:dist": "pnpm run build && pnpm publish dist/ngx-tailwindcss --no-git-checks --access public",
|
|
135
|
+
"postbuild": "cp README.md dist/ngx-tailwindcss/README.md",
|
|
136
|
+
"dev": "concurrently -n lib,docs -c cyan,green \"pnpm run build:watch\" \"pnpm run docs:dev\"",
|
|
137
|
+
"docs:dev": "cd docs && pnpm run dev",
|
|
138
|
+
"docs:start": "cd docs && pnpm run start",
|
|
139
|
+
"test": "vitest",
|
|
140
|
+
"test:run": "vitest run --testTimeout 60000 --hookTimeout 60000",
|
|
141
|
+
"test:coverage": "vitest run --coverage",
|
|
142
|
+
"test:ui": "vitest --ui",
|
|
143
|
+
"lint": "eslint projects/",
|
|
144
|
+
"lint:fix": "eslint projects/ --fix",
|
|
145
|
+
"format": "prettier --write \"projects/**/*.{ts,html,scss,css,json}\"",
|
|
146
|
+
"format:check": "prettier --check \"projects/**/*.{ts,html,scss,css,json}\"",
|
|
147
|
+
"commitlint": "commitlint"
|
|
148
|
+
}
|
|
149
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
packages:
|
|
2
|
+
- docs
|
|
3
|
+
|
|
4
|
+
allowBuilds:
|
|
5
|
+
'@parcel/watcher': true
|
|
6
|
+
esbuild: true
|
|
7
|
+
less: true
|
|
8
|
+
lmdb: true
|
|
9
|
+
msgpackr-extract: true
|
|
10
|
+
|
|
11
|
+
onlyBuiltDependencies:
|
|
12
|
+
- '@parcel/watcher'
|
|
13
|
+
- electron
|
|
14
|
+
- esbuild
|
|
15
|
+
- less
|
|
16
|
+
- lmdb
|
|
17
|
+
- msgpackr-extract
|