ngxsmk-datepicker 2.2.15 → 2.3.0-beta.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/CHANGELOG.md +4 -4
- package/MIGRATION.md +5 -5
- package/README.md +81 -57
- package/fesm2022/ngxsmk-datepicker.mjs +568 -109
- package/package.json +1 -1
- package/types/ngxsmk-datepicker.d.ts +59 -5
package/CHANGELOG.md
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
-
**Last updated:** May 19, 2026 - **Current stable:** v2.
|
|
5
|
+
**Last updated:** May 19, 2026 - **Current stable:** v2.3.0
|
|
6
6
|
|
|
7
7
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
8
8
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
-
## [2.
|
|
12
|
+
## [2.3.0] - 2026-05-19
|
|
13
13
|
|
|
14
14
|
### Added
|
|
15
15
|
|
|
@@ -25,7 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
25
25
|
- **Unnecessary Type Assertions Cleanup**: Cleaned up dozens of redundant type assertions (e.g. `as keyof DatepickerTranslations`, `as HTMLElement`, `as DatepickerValue`, `as EventListenerOptions`) to fully align with standard Angular strict compiler guidelines and eliminate all IDE compiler warnings.
|
|
26
26
|
- **Spec Styling Overhaul**: Refactored the test suite to move the `createMockEvent` helper to the top-level outer scope and transitioned elements cleanup to the modern `insideNode.remove()` native DOM standard.
|
|
27
27
|
|
|
28
|
-
## [2.
|
|
28
|
+
## [2.3.0] - 2026-05-06
|
|
29
29
|
|
|
30
30
|
### Fixed
|
|
31
31
|
|
|
@@ -51,7 +51,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
51
51
|
|
|
52
52
|
### Fixed
|
|
53
53
|
|
|
54
|
-
- **npm package**: The `2.2.12` tarball on the registry omitted `fesm2022/` and `types/` (only docs, styles, and package metadata). **Use `ngxsmk-datepicker@2.2.11` until `2.
|
|
54
|
+
- **npm package**: The `2.2.12` tarball on the registry omitted `fesm2022/` and `types/` (only docs, styles, and package metadata). **Use `ngxsmk-datepicker@2.2.11` until `2.3.0` or later** with a full ng-packagr build ([#230](https://github.com/NGXSMK/ngxsmk-datepicker/issues/230)).
|
|
55
55
|
|
|
56
56
|
## [2.2.11] - 2026-03-24
|
|
57
57
|
|
package/MIGRATION.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This document provides migration instructions for upgrading between major versions of ngxsmk-datepicker.
|
|
4
4
|
|
|
5
|
-
**Last updated:** May 19, 2026 - **Current stable:** v2.
|
|
5
|
+
**Last updated:** May 19, 2026 - **Current stable:** v2.3.0
|
|
6
6
|
|
|
7
7
|
## Table of Contents
|
|
8
8
|
|
|
@@ -60,10 +60,10 @@ This document provides migration instructions for upgrading between major versio
|
|
|
60
60
|
|
|
61
61
|
## npm: skip v2.2.12
|
|
62
62
|
|
|
63
|
-
The **`2.2.12`** package on the registry is missing **`fesm2022/`** and **`types/`**. Stay on **`2.2.11`** or upgrade to **`2.
|
|
63
|
+
The **`2.2.12`** package on the registry is missing **`fesm2022/`** and **`types/`**. Stay on **`2.2.11`** or upgrade to **`2.3.0`** (or newer) once published ([#230](https://github.com/NGXSMK/ngxsmk-datepicker/issues/230)).
|
|
64
64
|
|
|
65
65
|
```bash
|
|
66
|
-
npm install ngxsmk-datepicker@2.
|
|
66
|
+
npm install ngxsmk-datepicker@2.3.0
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
## v2.2.7 → v2.2.11
|
|
@@ -77,7 +77,7 @@ npm install ngxsmk-datepicker@2.2.13
|
|
|
77
77
|
No breaking changes.
|
|
78
78
|
|
|
79
79
|
```bash
|
|
80
|
-
npm install ngxsmk-datepicker@2.
|
|
80
|
+
npm install ngxsmk-datepicker@2.3.0
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
## v2.2.6 → v2.2.7
|
|
@@ -92,7 +92,7 @@ npm install ngxsmk-datepicker@2.2.13
|
|
|
92
92
|
No breaking changes. Use **2.2.11** on npm (the `2.2.7` npm package was incomplete; 2.2.11 matches the intended 2.2.7 release).
|
|
93
93
|
|
|
94
94
|
```bash
|
|
95
|
-
npm install ngxsmk-datepicker@2.
|
|
95
|
+
npm install ngxsmk-datepicker@2.3.0
|
|
96
96
|
```
|
|
97
97
|
|
|
98
98
|
## v2.2.3 → v2.2.6
|
package/README.md
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
### _The Gold Standard for Premium Angular Calendar Selection_
|
|
12
12
|
|
|
13
13
|
[](https://www.npmjs.com/package/ngxsmk-datepicker)
|
|
14
|
+
[](https://github.com/NGXSMK/ngxsmk-datepicker/actions/workflows/ci.yml)
|
|
14
15
|
[](https://angular.io/)
|
|
15
16
|
[](https://github.com/NGXSMK/ngxsmk-datepicker/blob/main/LICENSE)
|
|
16
17
|
[](https://buymeacoffee.com/toozuuu)
|
|
@@ -19,21 +20,23 @@
|
|
|
19
20
|
|
|
20
21
|
**`npm i ngxsmk-datepicker`**
|
|
21
22
|
|
|
22
|
-
[
|
|
23
|
+
[Live demo](https://ngxsmk.github.io/ngxsmk-datepicker/) • [StackBlitz (repo)](https://stackblitz.com/github/NGXSMK/ngxsmk-datepicker) • [API docs](https://github.com/NGXSMK/ngxsmk-datepicker/blob/main/projects/ngxsmk-datepicker/docs/API.md) • [Issues](https://github.com/NGXSMK/ngxsmk-datepicker/issues) • [Buy me a coffee](https://buymeacoffee.com/toozuuu)
|
|
24
|
+
|
|
25
|
+
*StackBlitz:* after it boots, run `npm install` then `npm start` in the terminal to serve the demo app (`demo-app`).
|
|
23
26
|
|
|
24
27
|
</div>
|
|
25
28
|
|
|
26
29
|
---
|
|
27
30
|
|
|
28
|
-
**Last updated:** May 19, 2026 - **Current stable:** v2.
|
|
31
|
+
**Last updated:** May 19, 2026 - **Current stable:** v2.3.0
|
|
29
32
|
|
|
30
33
|
### **Overview**
|
|
31
34
|
|
|
32
35
|
**ngxsmk-datepicker** is a high-performance, enterprise-ready date and range picker engineered for the modern Angular ecosystem (v17+). Built from the ground up with **Angular Signals**, it delivers a seamless, zoneless-ready experience for both desktop and mobile (Ionic) applications.
|
|
33
36
|
|
|
34
|
-
> **Stable Release**: `v2.
|
|
37
|
+
> **Stable Release**: `v2.3.0` is the current stable release with compiled `fesm2022` output and type declarations.
|
|
35
38
|
>
|
|
36
|
-
> **Stable line**: v2.2.x includes **`allowSameDay`**, **IANA timezone** support, validation fixes, and strict TypeScript improvements. Versions **2.0.10** and **2.0.11** were **unpublished**; use **v2.1.1+** or **v2.
|
|
39
|
+
> **Stable line**: v2.2.x includes range-mode **`allowSameDay`**, **IANA timezone** support, validation fixes, and strict TypeScript improvements. Versions **2.0.10** and **2.0.11** were broken and have been **unpublished**; use **v2.1.1+** or current **v2.3.0** on npm.
|
|
37
40
|
|
|
38
41
|
---
|
|
39
42
|
|
|
@@ -41,14 +44,16 @@
|
|
|
41
44
|
|
|
42
45
|
1. [📷 Screenshots](#-screenshots)
|
|
43
46
|
2. [✨ Features](#-features)
|
|
44
|
-
3. [
|
|
45
|
-
4. [
|
|
46
|
-
5. [
|
|
47
|
-
6. [
|
|
48
|
-
7. [
|
|
49
|
-
8. [
|
|
50
|
-
9. [
|
|
51
|
-
10. [
|
|
47
|
+
3. [🤔 Why this library?](#why-this-library)
|
|
48
|
+
4. [🌐 Discoverability](#-discoverability)
|
|
49
|
+
5. [📋 Compatibility](#-compatibility)
|
|
50
|
+
6. [🌍 Localization (i18n)](#-localization-i18n)
|
|
51
|
+
7. [📦 Installation](#-installation)
|
|
52
|
+
8. [🚀 Quick start / usage](#usage)
|
|
53
|
+
9. [🔌 Framework Integration](#-framework-integration)
|
|
54
|
+
10. [⚙️ API Reference](#-api-reference)
|
|
55
|
+
11. [🎨 Theming](#-theming)
|
|
56
|
+
12. [⌨️ Keyboard Navigation](#-keyboard-navigation)
|
|
52
57
|
|
|
53
58
|
---
|
|
54
59
|
|
|
@@ -67,7 +72,7 @@
|
|
|
67
72
|
- 💎 **Signal-Driven Engine**: Hyper-reactive state management using Angular Signals.
|
|
68
73
|
- 🌓 **Native Dark Mode**: Beautifully crafted themes for light and dark environments.
|
|
69
74
|
- 📱 **Mobile-First UX**: Native mobile picker integration with touch gestures and haptic feedback.
|
|
70
|
-
- 🧩 **
|
|
75
|
+
- 🧩 **Minimal footprint**: Standalone component; **Luxon** is the only date peer beyond Angular (no full UI suite required).
|
|
71
76
|
- ⚡ **Performance++**: Lazy-loaded calendar months, memoized calculations, and tree-shakable architecture.
|
|
72
77
|
|
|
73
78
|
### **Advanced Functionality**
|
|
@@ -79,6 +84,27 @@
|
|
|
79
84
|
- 🚀 **Zoneless Ready**: Optimized for the future of Angular—works perfectly without zone.js.
|
|
80
85
|
- ♿ **Full Accessibility**: WAI-ARIA compliant with extensive keyboard navigation support.
|
|
81
86
|
|
|
87
|
+
## Why this library?
|
|
88
|
+
|
|
89
|
+
Use **ngxsmk-datepicker** when you want a focused **date / range picker** with strong **mobile**, **i18n**, **timezone**, and **SSR** story on **Angular 17+**, without adopting a full Material UI stack. It is a **standalone** component with **Luxon** as the single date peer (plus Angular).
|
|
90
|
+
|
|
91
|
+
| | ngxsmk-datepicker | Angular Material datepicker |
|
|
92
|
+
| --- | --- | --- |
|
|
93
|
+
| **Fit** | Picker-first; optional Material/CDK peers for overlays only | Part of Material; best when you already use Material forms & CDK |
|
|
94
|
+
| **Peer deps** | Angular + **Luxon** | **@angular/material** + **@angular/cdk** |
|
|
95
|
+
| **Forms** | Template-driven, Reactive Forms, Signals; **Signal Forms** (`[field]`) on Angular 21+ | Reactive + template-driven; integrates with Material form field |
|
|
96
|
+
| **Stack** | Tree-shakable package aimed at picker scenarios | Broader design system and bundle footprint |
|
|
97
|
+
|
|
98
|
+
This is **not** a drop-in replacement for every Material datepicker API; choose based on whether you need **Material’s form-field ecosystem** or a **standalone picker** you can theme and ship with **zoneless** / **SSR** setups. See the [live demo](https://ngxsmk.github.io/ngxsmk-datepicker/) and [COMPATIBILITY](https://github.com/NGXSMK/ngxsmk-datepicker/blob/main/projects/ngxsmk-datepicker/docs/COMPATIBILITY.md) for details.
|
|
99
|
+
|
|
100
|
+
## **🌐 Discoverability**
|
|
101
|
+
|
|
102
|
+
**Maintainers (GitHub):** consider repository **Topics** such as: `angular`, `datepicker`, `date-range-picker`, `luxon`, `standalone-components`, `i18n`, `angular-universal`, `ionic`, `accessibility`.
|
|
103
|
+
|
|
104
|
+
**Community:** if this project helped you, stars and accurate comparisons in blog posts or issue threads help others find it. Curated lists (for example **awesome-angular**-style repos) usually accept small PRs that add a one-line link and follow their contribution rules—check each list’s guidelines before opening a PR.
|
|
105
|
+
|
|
106
|
+
**Security:** report sensitive issues per [SECURITY.md](https://github.com/NGXSMK/ngxsmk-datepicker/blob/main/SECURITY.md), not via public issues.
|
|
107
|
+
|
|
82
108
|
## **📋 Compatibility**
|
|
83
109
|
|
|
84
110
|
For detailed compatibility information, see [COMPATIBILITY.md](https://github.com/NGXSMK/ngxsmk-datepicker/blob/main/projects/ngxsmk-datepicker/docs/COMPATIBILITY.md).
|
|
@@ -137,21 +163,30 @@ Features marked as experimental may change:
|
|
|
137
163
|
|
|
138
164
|
For details, see [CONTRIBUTING.md](https://github.com/NGXSMK/ngxsmk-datepicker/blob/main/CONTRIBUTING.md#deprecation-policy).
|
|
139
165
|
|
|
140
|
-
##
|
|
141
|
-
|
|
142
|
-
Install the package using npm:
|
|
166
|
+
## **📦 Installation**
|
|
143
167
|
|
|
144
168
|
```bash
|
|
145
|
-
npm install ngxsmk-datepicker@
|
|
169
|
+
npm install ngxsmk-datepicker@2.3.0
|
|
146
170
|
```
|
|
147
171
|
|
|
148
172
|
### Alternative installation
|
|
149
173
|
|
|
150
|
-
You can install without npm using
|
|
174
|
+
You can install without npm using any of these methods (peer dependencies must still be installed in your app):
|
|
175
|
+
|
|
176
|
+
| Method | Command |
|
|
177
|
+
|--------|--------|
|
|
178
|
+
| **Yarn** | `yarn add ngxsmk-datepicker@2.3.0` |
|
|
179
|
+
| **pnpm** | `pnpm add ngxsmk-datepicker@2.3.0` |
|
|
180
|
+
| **Bun** | `bun add ngxsmk-datepicker@2.3.0` |
|
|
181
|
+
| **From Git** | `npm install github:NGXSMK/ngxsmk-datepicker#v2.3.0` (requires the repo to have built output or you build from source) |
|
|
182
|
+
| **Local path** | Build the library in the repo (`npx ng build ngxsmk-datepicker`), then `npm install /path/to/ngxsmk-datepicker/dist/ngxsmk-datepicker` |
|
|
183
|
+
| **CDN (ESM)** | Use [unpkg](https://unpkg.com/ngxsmk-datepicker@2.3.0/) or [jsDelivr](https://cdn.jsdelivr.net/npm/ngxsmk-datepicker@2.3.0/) in your bundler or import map; peer dependencies (Angular, etc.) must be installed in your app. |
|
|
184
|
+
|
|
185
|
+
For all options and caveats, see [docs/INSTALLATION.md](docs/INSTALLATION.md).
|
|
151
186
|
|
|
152
187
|
## **Usage**
|
|
153
188
|
|
|
154
|
-
ngxsmk-datepicker is a standalone component, so you can import it directly into your component or module.
|
|
189
|
+
ngxsmk-datepicker is a standalone component, so you can import it directly into your component or module.
|
|
155
190
|
|
|
156
191
|
### Signal Forms (Angular 21)
|
|
157
192
|
|
|
@@ -221,7 +256,7 @@ For detailed Signal Forms integration including dirty state tracking, see the [S
|
|
|
221
256
|
|
|
222
257
|
#### **1. Import the Component**
|
|
223
258
|
|
|
224
|
-
In your component file (e.g., app.component.ts), import
|
|
259
|
+
All public exports (component, utilities, types, services) come from the main package entry: `'ngxsmk-datepicker'` (there is no separate `/utils` subpath). In your component file (e.g., app.component.ts), import the component (or the module—see troubleshooting below).
|
|
225
260
|
|
|
226
261
|
import { Component } from '@angular/core';
|
|
227
262
|
import { NgxsmkDatepickerComponent, DateRange, HolidayProvider } from 'ngxsmk-datepicker';
|
|
@@ -251,6 +286,8 @@ In your component file (e.g., app.component.ts), import NgxsmkDatepickerComponen
|
|
|
251
286
|
}
|
|
252
287
|
}
|
|
253
288
|
|
|
289
|
+
**If you see NG1010** (`'imports' must be an array... Value could not be determined statically`) when using the Angular compiler plugin or in strict AOT builds, use the wrapper module instead: `import { NgxsmkDatepickerModule } from 'ngxsmk-datepicker'` and set `imports: [NgxsmkDatepickerModule]`. The template stays the same (`<ngxsmk-datepicker>`).
|
|
290
|
+
|
|
254
291
|
#### **2. Add it to Your Template**
|
|
255
292
|
|
|
256
293
|
Use the `<ngxsmk-datepicker>` selector in your HTML template.
|
|
@@ -331,7 +368,7 @@ export class MaterialFormComponent {
|
|
|
331
368
|
}
|
|
332
369
|
```
|
|
333
370
|
|
|
334
|
-
**Non-Standalone (NgModules):** Add the directive file from [INTEGRATION.md § Angular Material](docs/INTEGRATION.md#angular-material), then add it to your module `imports` (with `NgxsmkDatepickerComponent`, `MatFormFieldModule`, etc.) and use `ngxsmkMatFormFieldControl` on the datepicker in templates.
|
|
371
|
+
**Non-Standalone (NgModules):** Add the directive file from [INTEGRATION.md § Angular Material](projects/ngxsmk-datepicker/docs/INTEGRATION.md#angular-material), then add it to your module `imports` (with `NgxsmkDatepickerComponent`, `MatFormFieldModule`, etc.) and use `ngxsmkMatFormFieldControl` on the datepicker in templates.
|
|
335
372
|
|
|
336
373
|
**With Date Range:**
|
|
337
374
|
|
|
@@ -350,6 +387,9 @@ For best integration with Ionic, import the integration styles in your global CS
|
|
|
350
387
|
@import "ngxsmk-datepicker/styles/ionic-integration.css";
|
|
351
388
|
```
|
|
352
389
|
|
|
390
|
+
**Automatic Theming:**
|
|
391
|
+
The datepicker automatically detects and uses Ionic CSS variables (e.g., `--ion-color-primary`, `--ion-background-color`) so it matches your app's theme out of the box without extra configuration.
|
|
392
|
+
|
|
353
393
|
Works seamlessly with Ionic form components and follows Ionic design patterns:
|
|
354
394
|
|
|
355
395
|
```typescript
|
|
@@ -593,14 +633,14 @@ The `locale` input controls all internationalization. It automatically formats m
|
|
|
593
633
|
|
|
594
634
|
ngxsmk-datepicker v2.2.x now features **full localization synchronization** for:
|
|
595
635
|
|
|
596
|
-
-
|
|
597
|
-
-
|
|
598
|
-
-
|
|
599
|
-
-
|
|
636
|
+
- �� English (`en`)
|
|
637
|
+
- �� German (`de`)
|
|
638
|
+
- �� French (`fr`)
|
|
639
|
+
- �� Spanish (`es`)
|
|
600
640
|
- 🇸🇪 Swedish (`sv`)
|
|
601
|
-
-
|
|
602
|
-
-
|
|
603
|
-
-
|
|
641
|
+
- �� Korean (`ko`)
|
|
642
|
+
- �� Chinese (`zh`)
|
|
643
|
+
- �� Japanese (`ja`)
|
|
604
644
|
|
|
605
645
|
### **Usage Example**
|
|
606
646
|
|
|
@@ -665,7 +705,7 @@ const myHooks: DatepickerHooks = {
|
|
|
665
705
|
<ngxsmk-datepicker [hooks]="myHooks" [customShortcuts]="shortcuts" mode="single"> </ngxsmk-datepicker>
|
|
666
706
|
```
|
|
667
707
|
|
|
668
|
-
All date cells are keyboard accessible with proper ARIA attributes for screen readers.
|
|
708
|
+
All date cells are keyboard accessible with proper ARIA attributes for screen readers. The component is built with **accessibility in mind**: keyboard navigation, ARIA roles and labels, and live regions for announcements. For details see [API.md – Keyboard Support](projects/ngxsmk-datepicker/docs/API.md#keyboard-support) and the ARIA-related inputs (e.g. `closeAriaLabel`, `clearAriaLabel`) in the API reference.
|
|
669
709
|
|
|
670
710
|
See [Extension Points Guide](./projects/ngxsmk-datepicker/docs/extension-points.md) for detailed customization options.
|
|
671
711
|
|
|
@@ -690,11 +730,14 @@ This library has been optimized for maximum performance:
|
|
|
690
730
|
- ✅ **Date Validation**: Fixed "Today" unselectable bug by normalizing `minDate` boundary checks.
|
|
691
731
|
- ✅ **Keyboard Shortcuts**: Updated "Today" selection shortcut to use timezone-aware calculation.
|
|
692
732
|
- ✅ **Validation messages**: User-facing i18n strings for invalid date, min/max; `validationError` output and on-screen error display
|
|
693
|
-
- ✅ **
|
|
694
|
-
- ✅ **
|
|
695
|
-
- ✅ **
|
|
696
|
-
- ✅ **
|
|
697
|
-
- ✅ **
|
|
733
|
+
- ✅ **Change Detection**: Fixed OnPush change detection issues with proper `markForCheck()` triggers
|
|
734
|
+
- ✅ **Date Comparison**: Fixed null safety issues in date range comparisons
|
|
735
|
+
- ✅ **Memory Leaks**: Added cache size limits to prevent memory leaks
|
|
736
|
+
- ✅ **Type Safety**: Improved TypeScript types and null safety checks
|
|
737
|
+
- ✅ **Mobile UX**: Enhanced mobile interactions and touch feedback
|
|
738
|
+
- ✅ **Performance**: Optimized template bindings with memoized functions
|
|
739
|
+
- ✅ **Accessibility**: Better focus states and keyboard navigation
|
|
740
|
+
- ✅ **Build System**: Improved build configuration and optimization
|
|
698
741
|
|
|
699
742
|
### **Performance Enhancements:**
|
|
700
743
|
|
|
@@ -848,13 +891,9 @@ We welcome and appreciate contributions from the community! Whether it's reporti
|
|
|
848
891
|
|
|
849
892
|
## **📄 Changelog**
|
|
850
893
|
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
### **v2.2.15** (Current Stable)`r`n`r`n- **npm**: Published tarballs include compiled `fesm2022/` output and type declarations.
|
|
894
|
+
**Recent:** Use **v2.3.0** on npm. The v2.2.x line adds `allowSameDay` range mode, IANA timezone support, TypeScript strictness, appendToBody/popover fixes, and CSS cleanup. Versions 2.0.10 and 2.0.11 are unpublished; use v2.1.1+ or **v2.3.0**.
|
|
854
895
|
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
For older version details, please refer to the [full CHANGELOG.md](https://github.com/NGXSMK/ngxsmk-datepicker/blob/main/CHANGELOG.md).
|
|
896
|
+
For the full list of changes, see [CHANGELOG.md](https://github.com/NGXSMK/ngxsmk-datepicker/blob/main/CHANGELOG.md).
|
|
858
897
|
|
|
859
898
|
## **🎨 Theming with TokiForge**
|
|
860
899
|
|
|
@@ -862,11 +901,6 @@ Looking for a powerful theming solution for your Angular application? Check out
|
|
|
862
901
|
|
|
863
902
|
### Why TokiForge?
|
|
864
903
|
|
|
865
|
-
- ✅ **Framework-agnostic** — Works with Angular, React, Vue, Svelte, and vanilla JS
|
|
866
|
-
- ✅ **Runtime theme switching** — Change themes dynamically without rebuilds
|
|
867
|
-
- ✅ **Type-safe** — Full TypeScript support for design tokens
|
|
868
|
-
- ✅ **Lightweight** — <3 KB gzipped runtime footprint
|
|
869
|
-
- ✅ **CSS custom properties** — Zero JS overhead in static mode
|
|
870
904
|
- ✅ **SSR compatible** — Works seamlessly with Angular Universal
|
|
871
905
|
|
|
872
906
|
Perfect for managing design tokens, creating theme systems, and implementing dark mode in your Angular applications!
|
|
@@ -879,19 +913,9 @@ Perfect for managing design tokens, creating theme systems, and implementing dar
|
|
|
879
913
|
|
|
880
914
|
MIT License - see [LICENSE](https://github.com/NGXSMK/ngxsmk-datepicker/blob/main/LICENSE) file for details.
|
|
881
915
|
|
|
882
|
-
## **🔍 SEO
|
|
883
|
-
|
|
884
|
-
This library is optimized for search engine visibility, especially for European markets:
|
|
916
|
+
## **🔍 SEO (demo site)**
|
|
885
917
|
|
|
886
|
-
|
|
887
|
-
- **European SEO**: Optimized for Germany, France, Spain, Italy, Netherlands, Poland, Portugal, Sweden, Norway, Finland, Denmark, Belgium, Switzerland, Austria, and United Kingdom
|
|
888
|
-
- **Multi-language Support**: hreflang tags for 15+ European languages and locales
|
|
889
|
-
- **European Geo-targeting**: Geo tags and structured data optimized for European Union countries
|
|
890
|
-
- **Meta Tags**: Comprehensive Open Graph and Twitter Card support with European locale alternates
|
|
891
|
-
- **Structured Data**: JSON-LD schema markup with European audience targeting and area served information
|
|
892
|
-
- **Documentation**: Complete API documentation with examples
|
|
893
|
-
- **Performance**: Optimized bundle size (~127KB) for fast loading
|
|
894
|
-
- **European Localization**: Full i18n support for European date formats, week start days, and regional preferences
|
|
918
|
+
The hosted **[live demo](https://ngxsmk.github.io/ngxsmk-datepicker/)** build ships with meta tags (Open Graph, Twitter cards, `hreflang`, structured data) and locale-aware content for broader discovery. For **GitHub/npm** visibility—topics, awesome lists, StackBlitz, and security reporting—see [**Discoverability**](#-discoverability) near the top of this README.
|
|
895
919
|
|
|
896
920
|
## **👨💻 Author**
|
|
897
921
|
|