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.
Files changed (196) hide show
  1. package/README.md +144 -0
  2. package/dist/cdn-auto-register.js +188 -0
  3. package/dist/tsconfig.build.tsbuildinfo +1 -0
  4. package/dist/types/components/advanced/datepicker.d.ts +86 -0
  5. package/dist/types/components/advanced/datepicker.d.ts.map +1 -0
  6. package/dist/types/components/advanced/datepicker.stories.d.ts +48 -0
  7. package/dist/types/components/advanced/datepicker.stories.d.ts.map +1 -0
  8. package/dist/types/components/advanced/fileupload.d.ts +75 -0
  9. package/dist/types/components/advanced/fileupload.d.ts.map +1 -0
  10. package/dist/types/components/advanced/fileupload.stories.d.ts +46 -0
  11. package/dist/types/components/advanced/fileupload.stories.d.ts.map +1 -0
  12. package/dist/types/components/advanced/index.d.ts +4 -0
  13. package/dist/types/components/advanced/index.d.ts.map +1 -0
  14. package/dist/types/components/data/avatar.d.ts +94 -0
  15. package/dist/types/components/data/avatar.d.ts.map +1 -0
  16. package/dist/types/components/data/avatar.stories.d.ts +51 -0
  17. package/dist/types/components/data/avatar.stories.d.ts.map +1 -0
  18. package/dist/types/components/data/badge.d.ts +69 -0
  19. package/dist/types/components/data/badge.d.ts.map +1 -0
  20. package/dist/types/components/data/badge.stories.d.ts +48 -0
  21. package/dist/types/components/data/badge.stories.d.ts.map +1 -0
  22. package/dist/types/components/data/index.d.ts +5 -0
  23. package/dist/types/components/data/index.d.ts.map +1 -0
  24. package/dist/types/components/data/list.d.ts +66 -0
  25. package/dist/types/components/data/list.d.ts.map +1 -0
  26. package/dist/types/components/data/list.stories.d.ts +38 -0
  27. package/dist/types/components/data/list.stories.d.ts.map +1 -0
  28. package/dist/types/components/data/table.d.ts +70 -0
  29. package/dist/types/components/data/table.d.ts.map +1 -0
  30. package/dist/types/components/data/table.stories.d.ts +42 -0
  31. package/dist/types/components/data/table.stories.d.ts.map +1 -0
  32. package/dist/types/components/feedback/alert.d.ts +78 -0
  33. package/dist/types/components/feedback/alert.d.ts.map +1 -0
  34. package/dist/types/components/feedback/alert.stories.d.ts +35 -0
  35. package/dist/types/components/feedback/alert.stories.d.ts.map +1 -0
  36. package/dist/types/components/feedback/index.d.ts +5 -0
  37. package/dist/types/components/feedback/index.d.ts.map +1 -0
  38. package/dist/types/components/feedback/loading.d.ts +87 -0
  39. package/dist/types/components/feedback/loading.d.ts.map +1 -0
  40. package/dist/types/components/feedback/loading.stories.d.ts +48 -0
  41. package/dist/types/components/feedback/loading.stories.d.ts.map +1 -0
  42. package/dist/types/components/feedback/modal.d.ts +93 -0
  43. package/dist/types/components/feedback/modal.d.ts.map +1 -0
  44. package/dist/types/components/feedback/modal.stories.d.ts +37 -0
  45. package/dist/types/components/feedback/modal.stories.d.ts.map +1 -0
  46. package/dist/types/components/feedback/toast.d.ts +102 -0
  47. package/dist/types/components/feedback/toast.d.ts.map +1 -0
  48. package/dist/types/components/feedback/toast.stories.d.ts +51 -0
  49. package/dist/types/components/feedback/toast.stories.d.ts.map +1 -0
  50. package/dist/types/components/forms/button.d.ts +64 -0
  51. package/dist/types/components/forms/button.d.ts.map +1 -0
  52. package/dist/types/components/forms/button.stories.d.ts +52 -0
  53. package/dist/types/components/forms/button.stories.d.ts.map +1 -0
  54. package/dist/types/components/forms/checkbox.d.ts +51 -0
  55. package/dist/types/components/forms/checkbox.d.ts.map +1 -0
  56. package/dist/types/components/forms/checkbox.stories.d.ts +31 -0
  57. package/dist/types/components/forms/checkbox.stories.d.ts.map +1 -0
  58. package/dist/types/components/forms/index.d.ts +6 -0
  59. package/dist/types/components/forms/index.d.ts.map +1 -0
  60. package/dist/types/components/forms/input.d.ts +66 -0
  61. package/dist/types/components/forms/input.d.ts.map +1 -0
  62. package/dist/types/components/forms/input.stories.d.ts +49 -0
  63. package/dist/types/components/forms/input.stories.d.ts.map +1 -0
  64. package/dist/types/components/forms/radio.d.ts +51 -0
  65. package/dist/types/components/forms/radio.d.ts.map +1 -0
  66. package/dist/types/components/forms/radio.stories.d.ts +41 -0
  67. package/dist/types/components/forms/radio.stories.d.ts.map +1 -0
  68. package/dist/types/components/forms/select.d.ts +67 -0
  69. package/dist/types/components/forms/select.d.ts.map +1 -0
  70. package/dist/types/components/forms/select.stories.d.ts +42 -0
  71. package/dist/types/components/forms/select.stories.d.ts.map +1 -0
  72. package/dist/types/components/layout/card.d.ts +66 -0
  73. package/dist/types/components/layout/card.d.ts.map +1 -0
  74. package/dist/types/components/layout/card.example.d.ts +5 -0
  75. package/dist/types/components/layout/card.example.d.ts.map +1 -0
  76. package/dist/types/components/layout/card.stories.d.ts +40 -0
  77. package/dist/types/components/layout/card.stories.d.ts.map +1 -0
  78. package/dist/types/components/layout/container.d.ts +84 -0
  79. package/dist/types/components/layout/container.d.ts.map +1 -0
  80. package/dist/types/components/layout/container.stories.d.ts +40 -0
  81. package/dist/types/components/layout/container.stories.d.ts.map +1 -0
  82. package/dist/types/components/layout/grid.d.ts +76 -0
  83. package/dist/types/components/layout/grid.d.ts.map +1 -0
  84. package/dist/types/components/layout/grid.example.d.ts +11 -0
  85. package/dist/types/components/layout/grid.example.d.ts.map +1 -0
  86. package/dist/types/components/layout/grid.stories.d.ts +38 -0
  87. package/dist/types/components/layout/grid.stories.d.ts.map +1 -0
  88. package/dist/types/components/layout/index.d.ts +5 -0
  89. package/dist/types/components/layout/index.d.ts.map +1 -0
  90. package/dist/types/components/layout/stack.d.ts +82 -0
  91. package/dist/types/components/layout/stack.d.ts.map +1 -0
  92. package/dist/types/components/layout/stack.stories.d.ts +44 -0
  93. package/dist/types/components/layout/stack.stories.d.ts.map +1 -0
  94. package/dist/types/components/navigation/breadcrumbs.d.ts +62 -0
  95. package/dist/types/components/navigation/breadcrumbs.d.ts.map +1 -0
  96. package/dist/types/components/navigation/breadcrumbs.stories.d.ts +32 -0
  97. package/dist/types/components/navigation/breadcrumbs.stories.d.ts.map +1 -0
  98. package/dist/types/components/navigation/index.d.ts +4 -0
  99. package/dist/types/components/navigation/index.d.ts.map +1 -0
  100. package/dist/types/components/navigation/navbar.d.ts +66 -0
  101. package/dist/types/components/navigation/navbar.d.ts.map +1 -0
  102. package/dist/types/components/navigation/navbar.stories.d.ts +37 -0
  103. package/dist/types/components/navigation/navbar.stories.d.ts.map +1 -0
  104. package/dist/types/components/navigation/sidebar.d.ts +72 -0
  105. package/dist/types/components/navigation/sidebar.d.ts.map +1 -0
  106. package/dist/types/components/navigation/sidebar.stories.d.ts +43 -0
  107. package/dist/types/components/navigation/sidebar.stories.d.ts.map +1 -0
  108. package/dist/types/components/typography/index.d.ts +3 -0
  109. package/dist/types/components/typography/index.d.ts.map +1 -0
  110. package/dist/types/components/typography/text.d.ts +111 -0
  111. package/dist/types/components/typography/text.d.ts.map +1 -0
  112. package/dist/types/components/typography/text.stories.d.ts +48 -0
  113. package/dist/types/components/typography/text.stories.d.ts.map +1 -0
  114. package/dist/types/core/base-component.d.ts +178 -0
  115. package/dist/types/core/base-component.d.ts.map +1 -0
  116. package/dist/types/core/base-component.example.d.ts +24 -0
  117. package/dist/types/core/base-component.example.d.ts.map +1 -0
  118. package/dist/types/core/registry.d.ts +88 -0
  119. package/dist/types/core/registry.d.ts.map +1 -0
  120. package/dist/types/core/registry.example.d.ts +42 -0
  121. package/dist/types/core/registry.example.d.ts.map +1 -0
  122. package/dist/types/core/smart-defaults.d.ts +45 -0
  123. package/dist/types/core/smart-defaults.d.ts.map +1 -0
  124. package/dist/types/core/smart-defaults.example.d.ts +20 -0
  125. package/dist/types/core/smart-defaults.example.d.ts.map +1 -0
  126. package/dist/types/core/styles-parser.d.ts +107 -0
  127. package/dist/types/core/styles-parser.d.ts.map +1 -0
  128. package/dist/types/core/styles-parser.example.d.ts +10 -0
  129. package/dist/types/core/styles-parser.example.d.ts.map +1 -0
  130. package/dist/types/core/theme-system.d.ts +91 -0
  131. package/dist/types/core/theme-system.d.ts.map +1 -0
  132. package/dist/types/index.d.ts +24 -0
  133. package/dist/types/index.d.ts.map +1 -0
  134. package/dist/types/themes/built-in-themes.d.ts +32 -0
  135. package/dist/types/themes/built-in-themes.d.ts.map +1 -0
  136. package/dist/types/themes/index.d.ts +5 -0
  137. package/dist/types/themes/index.d.ts.map +1 -0
  138. package/dist/types/types/components.d.ts +549 -0
  139. package/dist/types/types/components.d.ts.map +1 -0
  140. package/dist/types/types/index.d.ts +379 -0
  141. package/dist/types/types/index.d.ts.map +1 -0
  142. package/dist/types/types/theme-config.d.ts +674 -0
  143. package/dist/types/types/theme-config.d.ts.map +1 -0
  144. package/dist/types/types/themes.d.ts +325 -0
  145. package/dist/types/types/themes.d.ts.map +1 -0
  146. package/dist/types/types/utils.d.ts +293 -0
  147. package/dist/types/types/utils.d.ts.map +1 -0
  148. package/dist/types/types/wrappers.d.ts +335 -0
  149. package/dist/types/types/wrappers.d.ts.map +1 -0
  150. package/dist/types/utils/accessibility.d.ts +345 -0
  151. package/dist/types/utils/accessibility.d.ts.map +1 -0
  152. package/dist/types/utils/accessibility.example.d.ts +50 -0
  153. package/dist/types/utils/accessibility.example.d.ts.map +1 -0
  154. package/dist/types/utils/css-variables.d.ts +278 -0
  155. package/dist/types/utils/css-variables.d.ts.map +1 -0
  156. package/dist/types/utils/icon-system.d.ts +79 -0
  157. package/dist/types/utils/icon-system.d.ts.map +1 -0
  158. package/dist/types/utils/index.d.ts +9 -0
  159. package/dist/types/utils/index.d.ts.map +1 -0
  160. package/dist/types/utils/performance.d.ts +141 -0
  161. package/dist/types/utils/performance.d.ts.map +1 -0
  162. package/dist/types/utils/security.d.ts +109 -0
  163. package/dist/types/utils/security.d.ts.map +1 -0
  164. package/dist/types/utils/validation.d.ts +84 -0
  165. package/dist/types/utils/validation.d.ts.map +1 -0
  166. package/dist/types/wrappers/angular/components.d.ts +2 -0
  167. package/dist/types/wrappers/angular/components.d.ts.map +1 -0
  168. package/dist/types/wrappers/angular/index.d.ts +6 -0
  169. package/dist/types/wrappers/angular/index.d.ts.map +1 -0
  170. package/dist/types/wrappers/angular/module.d.ts +2 -0
  171. package/dist/types/wrappers/angular/module.d.ts.map +1 -0
  172. package/dist/types/wrappers/angular/services.d.ts +2 -0
  173. package/dist/types/wrappers/angular/services.d.ts.map +1 -0
  174. package/dist/types/wrappers/angular/types.d.ts +44 -0
  175. package/dist/types/wrappers/angular/types.d.ts.map +1 -0
  176. package/dist/types/wrappers/react/components.d.ts +2 -0
  177. package/dist/types/wrappers/react/components.d.ts.map +1 -0
  178. package/dist/types/wrappers/react/hooks.d.ts +2 -0
  179. package/dist/types/wrappers/react/hooks.d.ts.map +1 -0
  180. package/dist/types/wrappers/react/index.d.ts +6 -0
  181. package/dist/types/wrappers/react/index.d.ts.map +1 -0
  182. package/dist/types/wrappers/react/provider.d.ts +2 -0
  183. package/dist/types/wrappers/react/provider.d.ts.map +1 -0
  184. package/dist/types/wrappers/react/types.d.ts +31 -0
  185. package/dist/types/wrappers/react/types.d.ts.map +1 -0
  186. package/dist/types/wrappers/vue/components.d.ts +2 -0
  187. package/dist/types/wrappers/vue/components.d.ts.map +1 -0
  188. package/dist/types/wrappers/vue/composables.d.ts +2 -0
  189. package/dist/types/wrappers/vue/composables.d.ts.map +1 -0
  190. package/dist/types/wrappers/vue/index.d.ts +6 -0
  191. package/dist/types/wrappers/vue/index.d.ts.map +1 -0
  192. package/dist/types/wrappers/vue/plugin.d.ts +2 -0
  193. package/dist/types/wrappers/vue/plugin.d.ts.map +1 -0
  194. package/dist/types/wrappers/vue/types.d.ts +38 -0
  195. package/dist/types/wrappers/vue/types.d.ts.map +1 -0
  196. 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
+ })();