kenikool-ui 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/README.md +144 -0
- package/dist/cdn-auto-register.js +188 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types/components/advanced/datepicker.d.ts +86 -0
- package/dist/types/components/advanced/datepicker.d.ts.map +1 -0
- package/dist/types/components/advanced/datepicker.stories.d.ts +48 -0
- package/dist/types/components/advanced/datepicker.stories.d.ts.map +1 -0
- package/dist/types/components/advanced/fileupload.d.ts +75 -0
- package/dist/types/components/advanced/fileupload.d.ts.map +1 -0
- package/dist/types/components/advanced/fileupload.stories.d.ts +46 -0
- package/dist/types/components/advanced/fileupload.stories.d.ts.map +1 -0
- package/dist/types/components/advanced/index.d.ts +4 -0
- package/dist/types/components/advanced/index.d.ts.map +1 -0
- package/dist/types/components/data/avatar.d.ts +94 -0
- package/dist/types/components/data/avatar.d.ts.map +1 -0
- package/dist/types/components/data/avatar.stories.d.ts +51 -0
- package/dist/types/components/data/avatar.stories.d.ts.map +1 -0
- package/dist/types/components/data/badge.d.ts +69 -0
- package/dist/types/components/data/badge.d.ts.map +1 -0
- package/dist/types/components/data/badge.stories.d.ts +48 -0
- package/dist/types/components/data/badge.stories.d.ts.map +1 -0
- package/dist/types/components/data/index.d.ts +5 -0
- package/dist/types/components/data/index.d.ts.map +1 -0
- package/dist/types/components/data/list.d.ts +66 -0
- package/dist/types/components/data/list.d.ts.map +1 -0
- package/dist/types/components/data/list.stories.d.ts +38 -0
- package/dist/types/components/data/list.stories.d.ts.map +1 -0
- package/dist/types/components/data/table.d.ts +70 -0
- package/dist/types/components/data/table.d.ts.map +1 -0
- package/dist/types/components/data/table.stories.d.ts +42 -0
- package/dist/types/components/data/table.stories.d.ts.map +1 -0
- package/dist/types/components/feedback/alert.d.ts +78 -0
- package/dist/types/components/feedback/alert.d.ts.map +1 -0
- package/dist/types/components/feedback/alert.stories.d.ts +35 -0
- package/dist/types/components/feedback/alert.stories.d.ts.map +1 -0
- package/dist/types/components/feedback/index.d.ts +5 -0
- package/dist/types/components/feedback/index.d.ts.map +1 -0
- package/dist/types/components/feedback/loading.d.ts +87 -0
- package/dist/types/components/feedback/loading.d.ts.map +1 -0
- package/dist/types/components/feedback/loading.stories.d.ts +48 -0
- package/dist/types/components/feedback/loading.stories.d.ts.map +1 -0
- package/dist/types/components/feedback/modal.d.ts +93 -0
- package/dist/types/components/feedback/modal.d.ts.map +1 -0
- package/dist/types/components/feedback/modal.stories.d.ts +37 -0
- package/dist/types/components/feedback/modal.stories.d.ts.map +1 -0
- package/dist/types/components/feedback/toast.d.ts +102 -0
- package/dist/types/components/feedback/toast.d.ts.map +1 -0
- package/dist/types/components/feedback/toast.stories.d.ts +51 -0
- package/dist/types/components/feedback/toast.stories.d.ts.map +1 -0
- package/dist/types/components/forms/button.d.ts +64 -0
- package/dist/types/components/forms/button.d.ts.map +1 -0
- package/dist/types/components/forms/button.stories.d.ts +52 -0
- package/dist/types/components/forms/button.stories.d.ts.map +1 -0
- package/dist/types/components/forms/checkbox.d.ts +51 -0
- package/dist/types/components/forms/checkbox.d.ts.map +1 -0
- package/dist/types/components/forms/checkbox.stories.d.ts +31 -0
- package/dist/types/components/forms/checkbox.stories.d.ts.map +1 -0
- package/dist/types/components/forms/index.d.ts +6 -0
- package/dist/types/components/forms/index.d.ts.map +1 -0
- package/dist/types/components/forms/input.d.ts +66 -0
- package/dist/types/components/forms/input.d.ts.map +1 -0
- package/dist/types/components/forms/input.stories.d.ts +49 -0
- package/dist/types/components/forms/input.stories.d.ts.map +1 -0
- package/dist/types/components/forms/radio.d.ts +51 -0
- package/dist/types/components/forms/radio.d.ts.map +1 -0
- package/dist/types/components/forms/radio.stories.d.ts +41 -0
- package/dist/types/components/forms/radio.stories.d.ts.map +1 -0
- package/dist/types/components/forms/select.d.ts +67 -0
- package/dist/types/components/forms/select.d.ts.map +1 -0
- package/dist/types/components/forms/select.stories.d.ts +42 -0
- package/dist/types/components/forms/select.stories.d.ts.map +1 -0
- package/dist/types/components/layout/card.d.ts +66 -0
- package/dist/types/components/layout/card.d.ts.map +1 -0
- package/dist/types/components/layout/card.example.d.ts +5 -0
- package/dist/types/components/layout/card.example.d.ts.map +1 -0
- package/dist/types/components/layout/card.stories.d.ts +40 -0
- package/dist/types/components/layout/card.stories.d.ts.map +1 -0
- package/dist/types/components/layout/container.d.ts +84 -0
- package/dist/types/components/layout/container.d.ts.map +1 -0
- package/dist/types/components/layout/container.stories.d.ts +40 -0
- package/dist/types/components/layout/container.stories.d.ts.map +1 -0
- package/dist/types/components/layout/grid.d.ts +76 -0
- package/dist/types/components/layout/grid.d.ts.map +1 -0
- package/dist/types/components/layout/grid.example.d.ts +11 -0
- package/dist/types/components/layout/grid.example.d.ts.map +1 -0
- package/dist/types/components/layout/grid.stories.d.ts +38 -0
- package/dist/types/components/layout/grid.stories.d.ts.map +1 -0
- package/dist/types/components/layout/index.d.ts +5 -0
- package/dist/types/components/layout/index.d.ts.map +1 -0
- package/dist/types/components/layout/stack.d.ts +82 -0
- package/dist/types/components/layout/stack.d.ts.map +1 -0
- package/dist/types/components/layout/stack.stories.d.ts +44 -0
- package/dist/types/components/layout/stack.stories.d.ts.map +1 -0
- package/dist/types/components/navigation/breadcrumbs.d.ts +62 -0
- package/dist/types/components/navigation/breadcrumbs.d.ts.map +1 -0
- package/dist/types/components/navigation/breadcrumbs.stories.d.ts +32 -0
- package/dist/types/components/navigation/breadcrumbs.stories.d.ts.map +1 -0
- package/dist/types/components/navigation/index.d.ts +4 -0
- package/dist/types/components/navigation/index.d.ts.map +1 -0
- package/dist/types/components/navigation/navbar.d.ts +66 -0
- package/dist/types/components/navigation/navbar.d.ts.map +1 -0
- package/dist/types/components/navigation/navbar.stories.d.ts +37 -0
- package/dist/types/components/navigation/navbar.stories.d.ts.map +1 -0
- package/dist/types/components/navigation/sidebar.d.ts +72 -0
- package/dist/types/components/navigation/sidebar.d.ts.map +1 -0
- package/dist/types/components/navigation/sidebar.stories.d.ts +43 -0
- package/dist/types/components/navigation/sidebar.stories.d.ts.map +1 -0
- package/dist/types/components/typography/index.d.ts +3 -0
- package/dist/types/components/typography/index.d.ts.map +1 -0
- package/dist/types/components/typography/text.d.ts +111 -0
- package/dist/types/components/typography/text.d.ts.map +1 -0
- package/dist/types/components/typography/text.stories.d.ts +48 -0
- package/dist/types/components/typography/text.stories.d.ts.map +1 -0
- package/dist/types/core/base-component.d.ts +178 -0
- package/dist/types/core/base-component.d.ts.map +1 -0
- package/dist/types/core/base-component.example.d.ts +24 -0
- package/dist/types/core/base-component.example.d.ts.map +1 -0
- package/dist/types/core/registry.d.ts +88 -0
- package/dist/types/core/registry.d.ts.map +1 -0
- package/dist/types/core/registry.example.d.ts +42 -0
- package/dist/types/core/registry.example.d.ts.map +1 -0
- package/dist/types/core/smart-defaults.d.ts +45 -0
- package/dist/types/core/smart-defaults.d.ts.map +1 -0
- package/dist/types/core/smart-defaults.example.d.ts +20 -0
- package/dist/types/core/smart-defaults.example.d.ts.map +1 -0
- package/dist/types/core/styles-parser.d.ts +107 -0
- package/dist/types/core/styles-parser.d.ts.map +1 -0
- package/dist/types/core/styles-parser.example.d.ts +10 -0
- package/dist/types/core/styles-parser.example.d.ts.map +1 -0
- package/dist/types/core/theme-system.d.ts +91 -0
- package/dist/types/core/theme-system.d.ts.map +1 -0
- package/dist/types/index.d.ts +24 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/themes/built-in-themes.d.ts +32 -0
- package/dist/types/themes/built-in-themes.d.ts.map +1 -0
- package/dist/types/themes/index.d.ts +5 -0
- package/dist/types/themes/index.d.ts.map +1 -0
- package/dist/types/types/components.d.ts +549 -0
- package/dist/types/types/components.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +379 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/theme-config.d.ts +674 -0
- package/dist/types/types/theme-config.d.ts.map +1 -0
- package/dist/types/types/themes.d.ts +325 -0
- package/dist/types/types/themes.d.ts.map +1 -0
- package/dist/types/types/utils.d.ts +293 -0
- package/dist/types/types/utils.d.ts.map +1 -0
- package/dist/types/types/wrappers.d.ts +335 -0
- package/dist/types/types/wrappers.d.ts.map +1 -0
- package/dist/types/utils/accessibility.d.ts +345 -0
- package/dist/types/utils/accessibility.d.ts.map +1 -0
- package/dist/types/utils/accessibility.example.d.ts +50 -0
- package/dist/types/utils/accessibility.example.d.ts.map +1 -0
- package/dist/types/utils/css-variables.d.ts +278 -0
- package/dist/types/utils/css-variables.d.ts.map +1 -0
- package/dist/types/utils/icon-system.d.ts +79 -0
- package/dist/types/utils/icon-system.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +9 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/performance.d.ts +141 -0
- package/dist/types/utils/performance.d.ts.map +1 -0
- package/dist/types/utils/security.d.ts +109 -0
- package/dist/types/utils/security.d.ts.map +1 -0
- package/dist/types/utils/validation.d.ts +84 -0
- package/dist/types/utils/validation.d.ts.map +1 -0
- package/dist/types/wrappers/angular/components.d.ts +2 -0
- package/dist/types/wrappers/angular/components.d.ts.map +1 -0
- package/dist/types/wrappers/angular/index.d.ts +6 -0
- package/dist/types/wrappers/angular/index.d.ts.map +1 -0
- package/dist/types/wrappers/angular/module.d.ts +2 -0
- package/dist/types/wrappers/angular/module.d.ts.map +1 -0
- package/dist/types/wrappers/angular/services.d.ts +2 -0
- package/dist/types/wrappers/angular/services.d.ts.map +1 -0
- package/dist/types/wrappers/angular/types.d.ts +44 -0
- package/dist/types/wrappers/angular/types.d.ts.map +1 -0
- package/dist/types/wrappers/react/components.d.ts +2 -0
- package/dist/types/wrappers/react/components.d.ts.map +1 -0
- package/dist/types/wrappers/react/hooks.d.ts +2 -0
- package/dist/types/wrappers/react/hooks.d.ts.map +1 -0
- package/dist/types/wrappers/react/index.d.ts +6 -0
- package/dist/types/wrappers/react/index.d.ts.map +1 -0
- package/dist/types/wrappers/react/provider.d.ts +2 -0
- package/dist/types/wrappers/react/provider.d.ts.map +1 -0
- package/dist/types/wrappers/react/types.d.ts +31 -0
- package/dist/types/wrappers/react/types.d.ts.map +1 -0
- package/dist/types/wrappers/vue/components.d.ts +2 -0
- package/dist/types/wrappers/vue/components.d.ts.map +1 -0
- package/dist/types/wrappers/vue/composables.d.ts +2 -0
- package/dist/types/wrappers/vue/composables.d.ts.map +1 -0
- package/dist/types/wrappers/vue/index.d.ts +6 -0
- package/dist/types/wrappers/vue/index.d.ts.map +1 -0
- package/dist/types/wrappers/vue/plugin.d.ts +2 -0
- package/dist/types/wrappers/vue/plugin.d.ts.map +1 -0
- package/dist/types/wrappers/vue/types.d.ts +38 -0
- package/dist/types/wrappers/vue/types.d.ts.map +1 -0
- package/package.json +138 -0
package/README.md
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Kenikool UI
|
|
2
|
+
|
|
3
|
+
A modern, zero-configuration Web Components library with TypeScript development, built-in themes, and comprehensive accessibility features.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🎨 **Five Built-in Themes** - Modern, Classic, Bold, Soft, and Dark themes
|
|
8
|
+
- 🚀 **Zero Configuration** - Components work perfectly out of the box
|
|
9
|
+
- ♿ **Accessibility First** - Built-in ARIA attributes and keyboard navigation
|
|
10
|
+
- 📱 **Responsive Design** - Mobile-first approach with responsive breakpoints
|
|
11
|
+
- 🔧 **Optional Styling** - Customize components via `styles` attribute
|
|
12
|
+
- 🌐 **CDN Distribution** - Easy inclusion via CDN
|
|
13
|
+
- 🎯 **Framework Wrappers** - React, Vue, and Angular support
|
|
14
|
+
- 📦 **Tree-shakable** - Only include components you use
|
|
15
|
+
- 🏗️ **TypeScript** - Full TypeScript support with type definitions
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
### Via CDN
|
|
20
|
+
|
|
21
|
+
```html
|
|
22
|
+
<!DOCTYPE html>
|
|
23
|
+
<html>
|
|
24
|
+
<head>
|
|
25
|
+
<title>Kenikool UI Example</title>
|
|
26
|
+
</head>
|
|
27
|
+
<body>
|
|
28
|
+
<!-- Components work immediately -->
|
|
29
|
+
<k-button>Click me</k-button>
|
|
30
|
+
<k-input type="email" placeholder="Enter email"></k-input>
|
|
31
|
+
|
|
32
|
+
<!-- Load the library -->
|
|
33
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/kenikool-ui@latest/dist/kenikool-ui.es.js"></script>
|
|
34
|
+
</body>
|
|
35
|
+
</html>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Via npm
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm install kenikool-ui
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
import 'kenikool-ui';
|
|
46
|
+
|
|
47
|
+
// Components are now available in your HTML
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Components
|
|
51
|
+
|
|
52
|
+
### Layout Components
|
|
53
|
+
- `<k-card>` - Content containers with padding and shadows
|
|
54
|
+
- `<k-grid>` - Responsive grid layouts
|
|
55
|
+
- `<k-stack>` - Vertical and horizontal stacks
|
|
56
|
+
- `<k-container>` - Page containers with max-width
|
|
57
|
+
|
|
58
|
+
### Form Components
|
|
59
|
+
- `<k-input>` - Text inputs with smart defaults
|
|
60
|
+
- `<k-button>` - Buttons with loading states
|
|
61
|
+
- `<k-select>` - Dropdown selects
|
|
62
|
+
- `<k-checkbox>` - Checkboxes with labels
|
|
63
|
+
- `<k-radio>` - Radio buttons
|
|
64
|
+
|
|
65
|
+
### Typography
|
|
66
|
+
- `<k-text>` - Headings and body text
|
|
67
|
+
|
|
68
|
+
### Feedback
|
|
69
|
+
- `<k-toast>` - Toast notifications
|
|
70
|
+
- `<k-modal>` - Modal dialogs
|
|
71
|
+
- `<k-alert>` - Alert messages
|
|
72
|
+
- `<k-loading>` - Loading indicators
|
|
73
|
+
|
|
74
|
+
### Navigation
|
|
75
|
+
- `<k-navbar>` - Navigation bars
|
|
76
|
+
- `<k-sidebar>` - Side navigation
|
|
77
|
+
- `<k-breadcrumbs>` - Breadcrumb navigation
|
|
78
|
+
|
|
79
|
+
### Data Display
|
|
80
|
+
- `<k-table>` - Data tables
|
|
81
|
+
- `<k-list>` - Lists and menus
|
|
82
|
+
- `<k-badge>` - Status badges
|
|
83
|
+
- `<k-avatar>` - User avatars
|
|
84
|
+
|
|
85
|
+
### Advanced
|
|
86
|
+
- `<k-datepicker>` - Date selection
|
|
87
|
+
- `<k-fileupload>` - File uploads
|
|
88
|
+
- `<k-datatable>` - Advanced data tables
|
|
89
|
+
|
|
90
|
+
## Themes
|
|
91
|
+
|
|
92
|
+
Switch themes by setting the `data-theme` attribute:
|
|
93
|
+
|
|
94
|
+
```html
|
|
95
|
+
<div data-theme="dark">
|
|
96
|
+
<k-button>Dark theme button</k-button>
|
|
97
|
+
</div>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Available themes:
|
|
101
|
+
- `modern` (default)
|
|
102
|
+
- `classic`
|
|
103
|
+
- `bold`
|
|
104
|
+
- `soft`
|
|
105
|
+
- `dark`
|
|
106
|
+
|
|
107
|
+
## Styling
|
|
108
|
+
|
|
109
|
+
Customize components with the `styles` attribute:
|
|
110
|
+
|
|
111
|
+
```html
|
|
112
|
+
<k-button styles="large primary rounded">Submit</k-button>
|
|
113
|
+
<k-input styles="small outline">Search</k-input>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Development
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Install dependencies
|
|
120
|
+
npm install
|
|
121
|
+
|
|
122
|
+
# Start development server
|
|
123
|
+
npm run dev
|
|
124
|
+
|
|
125
|
+
# Run tests
|
|
126
|
+
npm test
|
|
127
|
+
|
|
128
|
+
# Build for production
|
|
129
|
+
npm run build
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## License
|
|
133
|
+
|
|
134
|
+
MIT License - see [LICENSE](LICENSE) file for details.
|
|
135
|
+
|
|
136
|
+
## Contributing
|
|
137
|
+
|
|
138
|
+
Contributions are welcome! Please read our contributing guidelines and submit pull requests to our repository.
|
|
139
|
+
|
|
140
|
+
## Support
|
|
141
|
+
|
|
142
|
+
- 📖 [Documentation](https://kenikool-ui.dev)
|
|
143
|
+
- 🐛 [Issue Tracker](https://github.com/kenikool/kenikool-ui/issues)
|
|
144
|
+
- 💬 [Discussions](https://github.com/kenikool/kenikool-ui/discussions)
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kenikool UI - CDN Auto-Registration Script
|
|
3
|
+
*
|
|
4
|
+
* This script automatically registers all Kenikool UI components
|
|
5
|
+
* when included via CDN. It handles component discovery and lazy loading.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* <script src="https://cdn.jsdelivr.net/npm/kenikool-ui@latest/dist/cdn-auto-register.js"></script>
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
(function() {
|
|
12
|
+
'use strict';
|
|
13
|
+
|
|
14
|
+
// Configuration
|
|
15
|
+
const config = {
|
|
16
|
+
version: '1.0.0',
|
|
17
|
+
cdnUrl: 'https://cdn.jsdelivr.net/npm/kenikool-ui@latest/dist',
|
|
18
|
+
components: [
|
|
19
|
+
// Forms
|
|
20
|
+
'k-button', 'k-input', 'k-select', 'k-checkbox', 'k-radio',
|
|
21
|
+
// Layout
|
|
22
|
+
'k-card', 'k-grid', 'k-stack', 'k-container',
|
|
23
|
+
// Feedback
|
|
24
|
+
'k-modal', 'k-alert', 'k-toast', 'k-loading',
|
|
25
|
+
// Data
|
|
26
|
+
'k-table', 'k-list', 'k-badge', 'k-avatar',
|
|
27
|
+
// Navigation
|
|
28
|
+
'k-navbar', 'k-sidebar', 'k-breadcrumbs',
|
|
29
|
+
// Typography
|
|
30
|
+
'k-text',
|
|
31
|
+
// Advanced
|
|
32
|
+
'k-datepicker', 'k-fileupload'
|
|
33
|
+
],
|
|
34
|
+
themes: ['modern', 'classic', 'bold', 'soft', 'dark'],
|
|
35
|
+
autoLoadTheme: 'modern'
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Load a script dynamically
|
|
40
|
+
*/
|
|
41
|
+
function loadScript(src) {
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
const script = document.createElement('script');
|
|
44
|
+
script.src = src;
|
|
45
|
+
script.type = 'module';
|
|
46
|
+
script.onload = resolve;
|
|
47
|
+
script.onerror = reject;
|
|
48
|
+
document.head.appendChild(script);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Load a stylesheet dynamically
|
|
54
|
+
*/
|
|
55
|
+
function loadStylesheet(href) {
|
|
56
|
+
return new Promise((resolve, reject) => {
|
|
57
|
+
const link = document.createElement('link');
|
|
58
|
+
link.rel = 'stylesheet';
|
|
59
|
+
link.href = href;
|
|
60
|
+
link.onload = resolve;
|
|
61
|
+
link.onerror = reject;
|
|
62
|
+
document.head.appendChild(link);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Check if a component is used in the DOM
|
|
68
|
+
*/
|
|
69
|
+
function isComponentUsed(componentName) {
|
|
70
|
+
return document.querySelector(componentName) !== null;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Get all used components
|
|
75
|
+
*/
|
|
76
|
+
function getUsedComponents() {
|
|
77
|
+
return config.components.filter(isComponentUsed);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Initialize Kenikool UI
|
|
82
|
+
*/
|
|
83
|
+
async function initialize() {
|
|
84
|
+
try {
|
|
85
|
+
// Log initialization
|
|
86
|
+
console.log(`[Kenikool UI] Initializing v${config.version}`);
|
|
87
|
+
|
|
88
|
+
// Load theme CSS
|
|
89
|
+
const themeUrl = `${config.cdnUrl}/themes/${config.autoLoadTheme}.css`;
|
|
90
|
+
console.log(`[Kenikool UI] Loading theme: ${config.autoLoadTheme}`);
|
|
91
|
+
await loadStylesheet(themeUrl);
|
|
92
|
+
|
|
93
|
+
// Load main library
|
|
94
|
+
const libUrl = `${config.cdnUrl}/kenikool-ui.umd.js`;
|
|
95
|
+
console.log(`[Kenikool UI] Loading library from CDN`);
|
|
96
|
+
await loadScript(libUrl);
|
|
97
|
+
|
|
98
|
+
// Get used components
|
|
99
|
+
const usedComponents = getUsedComponents();
|
|
100
|
+
console.log(`[Kenikool UI] Found ${usedComponents.length} components in use:`, usedComponents);
|
|
101
|
+
|
|
102
|
+
// Dispatch ready event
|
|
103
|
+
const event = new CustomEvent('kenikool-ui:ready', {
|
|
104
|
+
detail: {
|
|
105
|
+
version: config.version,
|
|
106
|
+
components: usedComponents,
|
|
107
|
+
theme: config.autoLoadTheme
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
document.dispatchEvent(event);
|
|
111
|
+
|
|
112
|
+
console.log(`[Kenikool UI] Ready!`);
|
|
113
|
+
} catch (error) {
|
|
114
|
+
console.error('[Kenikool UI] Initialization failed:', error);
|
|
115
|
+
const event = new CustomEvent('kenikool-ui:error', {
|
|
116
|
+
detail: { error: error.message }
|
|
117
|
+
});
|
|
118
|
+
document.dispatchEvent(event);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Public API
|
|
124
|
+
*/
|
|
125
|
+
window.KenikoolUI = {
|
|
126
|
+
version: config.version,
|
|
127
|
+
config: config,
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Load a specific theme
|
|
131
|
+
*/
|
|
132
|
+
loadTheme(themeName) {
|
|
133
|
+
if (!config.themes.includes(themeName)) {
|
|
134
|
+
console.error(`[Kenikool UI] Unknown theme: ${themeName}`);
|
|
135
|
+
return Promise.reject(new Error(`Unknown theme: ${themeName}`));
|
|
136
|
+
}
|
|
137
|
+
const themeUrl = `${config.cdnUrl}/themes/${themeName}.css`;
|
|
138
|
+
return loadStylesheet(themeUrl);
|
|
139
|
+
},
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Get all used components
|
|
143
|
+
*/
|
|
144
|
+
getUsedComponents() {
|
|
145
|
+
return getUsedComponents();
|
|
146
|
+
},
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Check if a component is available
|
|
150
|
+
*/
|
|
151
|
+
isComponentAvailable(componentName) {
|
|
152
|
+
return config.components.includes(componentName);
|
|
153
|
+
},
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Get configuration
|
|
157
|
+
*/
|
|
158
|
+
getConfig() {
|
|
159
|
+
return { ...config };
|
|
160
|
+
},
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Set CDN URL (must be called before initialization)
|
|
164
|
+
*/
|
|
165
|
+
setCdnUrl(url) {
|
|
166
|
+
config.cdnUrl = url;
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Set auto-load theme
|
|
171
|
+
*/
|
|
172
|
+
setAutoLoadTheme(themeName) {
|
|
173
|
+
if (!config.themes.includes(themeName)) {
|
|
174
|
+
console.error(`[Kenikool UI] Unknown theme: ${themeName}`);
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
config.autoLoadTheme = themeName;
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
// Initialize when DOM is ready
|
|
183
|
+
if (document.readyState === 'loading') {
|
|
184
|
+
document.addEventListener('DOMContentLoaded', initialize);
|
|
185
|
+
} else {
|
|
186
|
+
initialize();
|
|
187
|
+
}
|
|
188
|
+
})();
|