@lancar/lxui 1.0.0 → 1.0.2

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 (90) hide show
  1. package/CHANGELOG.md +222 -55
  2. package/LICENSE +1 -1
  3. package/README.md +224 -68
  4. package/fonts/accessibility/accessibility.css +34 -0
  5. package/fonts/accessibility/accessibility.min.css +2 -0
  6. package/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-400.woff2 +0 -0
  7. package/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-400Italic.woff2 +0 -0
  8. package/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-700.woff2 +0 -0
  9. package/fonts/accessibility/atkinson-hyperlegible/atkinson-hyperlegible.css +30 -0
  10. package/fonts/accessibility/atkinson-hyperlegible/atkinson-hyperlegible.min.css +2 -0
  11. package/fonts/fonts.css +357 -0
  12. package/fonts/fonts.min.css +2 -0
  13. package/fonts/mono/fira-code/FiraCode-400.woff2 +0 -0
  14. package/fonts/mono/fira-code/FiraCode-500.woff2 +0 -0
  15. package/fonts/mono/fira-code/FiraCode-700.woff2 +0 -0
  16. package/fonts/mono/fira-code/fira-code.css +30 -0
  17. package/fonts/mono/fira-code/fira-code.min.css +2 -0
  18. package/fonts/mono/jetbrains-mono/JetBrainsMono-400.woff2 +0 -0
  19. package/fonts/mono/jetbrains-mono/JetBrainsMono-500.woff2 +0 -0
  20. package/fonts/mono/jetbrains-mono/JetBrainsMono-700.woff2 +0 -0
  21. package/fonts/mono/jetbrains-mono/jetbrains-mono.css +30 -0
  22. package/fonts/mono/jetbrains-mono/jetbrains-mono.min.css +2 -0
  23. package/fonts/mono/mono.css +61 -0
  24. package/fonts/mono/mono.min.css +2 -0
  25. package/fonts/sans/ibm-plex-sans/IBMPlexSans-400.woff2 +0 -0
  26. package/fonts/sans/ibm-plex-sans/IBMPlexSans-400Italic.woff2 +0 -0
  27. package/fonts/sans/ibm-plex-sans/IBMPlexSans-500.woff2 +0 -0
  28. package/fonts/sans/ibm-plex-sans/IBMPlexSans-600.woff2 +0 -0
  29. package/fonts/sans/ibm-plex-sans/IBMPlexSans-700.woff2 +0 -0
  30. package/fonts/sans/ibm-plex-sans/ibm-plex-sans.css +48 -0
  31. package/fonts/sans/ibm-plex-sans/ibm-plex-sans.min.css +2 -0
  32. package/fonts/sans/inter/Inter-400.woff2 +0 -0
  33. package/fonts/sans/inter/Inter-500.woff2 +0 -0
  34. package/fonts/sans/inter/Inter-600.woff2 +0 -0
  35. package/fonts/sans/inter/Inter-700.woff2 +0 -0
  36. package/fonts/sans/inter/inter.css +39 -0
  37. package/fonts/sans/inter/inter.min.css +2 -0
  38. package/fonts/sans/manrope/Manrope-400.woff2 +0 -0
  39. package/fonts/sans/manrope/Manrope-500.woff2 +0 -0
  40. package/fonts/sans/manrope/Manrope-600.woff2 +0 -0
  41. package/fonts/sans/manrope/Manrope-700.woff2 +0 -0
  42. package/fonts/sans/manrope/manrope.css +39 -0
  43. package/fonts/sans/manrope/manrope.min.css +2 -0
  44. package/fonts/sans/plus-jakarta-sans/PlusJakartaSans-400.woff2 +0 -0
  45. package/fonts/sans/plus-jakarta-sans/PlusJakartaSans-400Italic.woff2 +0 -0
  46. package/fonts/sans/plus-jakarta-sans/PlusJakartaSans-500.woff2 +0 -0
  47. package/fonts/sans/plus-jakarta-sans/PlusJakartaSans-600.woff2 +0 -0
  48. package/fonts/sans/plus-jakarta-sans/PlusJakartaSans-700.woff2 +0 -0
  49. package/fonts/sans/plus-jakarta-sans/plus-jakarta-sans.css +48 -0
  50. package/fonts/sans/plus-jakarta-sans/plus-jakarta-sans.min.css +2 -0
  51. package/fonts/sans/sans.css +169 -0
  52. package/fonts/sans/sans.min.css +2 -0
  53. package/fonts/serif/literata/Literata-400.woff2 +0 -0
  54. package/fonts/serif/literata/Literata-400Italic.woff2 +0 -0
  55. package/fonts/serif/literata/Literata-600.woff2 +0 -0
  56. package/fonts/serif/literata/Literata-700.woff2 +0 -0
  57. package/fonts/serif/literata/literata.css +39 -0
  58. package/fonts/serif/literata/literata.min.css +2 -0
  59. package/fonts/serif/merriweather/Merriweather-400.woff2 +0 -0
  60. package/fonts/serif/merriweather/Merriweather-400Italic.woff2 +0 -0
  61. package/fonts/serif/merriweather/Merriweather-700.woff2 +0 -0
  62. package/fonts/serif/merriweather/merriweather.css +30 -0
  63. package/fonts/serif/merriweather/merriweather.min.css +2 -0
  64. package/fonts/serif/serif.css +106 -0
  65. package/fonts/serif/serif.min.css +2 -0
  66. package/fonts/serif/source-serif-4/SourceSerif4-400.woff2 +0 -0
  67. package/fonts/serif/source-serif-4/SourceSerif4-400Italic.woff2 +0 -0
  68. package/fonts/serif/source-serif-4/SourceSerif4-600.woff2 +0 -0
  69. package/fonts/serif/source-serif-4/SourceSerif4-700.woff2 +0 -0
  70. package/fonts/serif/source-serif-4/source-serif-4.css +39 -0
  71. package/fonts/serif/source-serif-4/source-serif-4.min.css +2 -0
  72. package/lx-grid.min.css +2 -2
  73. package/lx-utilities.min.css +2 -2
  74. package/lxeditor.min.css +2 -2
  75. package/lxfonts.min.css +2 -2
  76. package/lxicons.min.css +2 -2
  77. package/lxthemes.min.css +2 -2
  78. package/lxui.bundle.min.js +5 -5
  79. package/lxui.esm.min.js +3 -3
  80. package/lxui.js +3 -3
  81. package/lxui.min.css +1 -1
  82. package/lxui.min.js +3 -3
  83. package/lxui.rtl.min.css +1 -1
  84. package/package.json +4 -9
  85. package/types/index.d.ts +1 -1
  86. package/lxui.bundle.js +0 -540
  87. package/lxui.css +0 -2163
  88. package/lxui.esm.js +0 -669
  89. package/lxui.rtl.css +0 -2466
  90. package/marked.min.js +0 -69
package/README.md CHANGED
@@ -7,15 +7,15 @@
7
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](LICENSE)
8
8
  [![Zero Dependencies](https://img.shields.io/badge/dependencies-0-brightgreen.svg?style=flat-square)](package.json)
9
9
 
10
- **Version:** 1.0.0 · **License:** MIT · **Zero Dependencies**
10
+ \*\*Version:\*\* 1.0.1 · **License:** MIT · **Zero Dependencies**
11
11
 
12
12
  | | |
13
13
  |---|---|
14
14
  | 🏠 Homepage | https://ui.lancar.id |
15
15
  | 📖 Docs | https://ui.lancar.id/docs |
16
16
  | 📦 npm | https://www.npmjs.com/package/@lancar/lxui |
17
- | 🌐 CDN CSS | `https://cdn.lancar.id/ui/lxui.min.css` |
18
- | 🌐 CDN JS | `https://cdn.lancar.id/ui/lxui.min.js` |
17
+ | 🚀 jsDelivr | https://www.jsdelivr.com/package/npm/@lancar/lxui |
18
+ | 📦 Release | https://github.com/lancar-id/lxui/releases/tag/v1.0.0 |
19
19
 
20
20
  ---
21
21
 
@@ -29,14 +29,110 @@ yarn add @lancar/lxui
29
29
  pnpm add @lancar/lxui
30
30
  ```
31
31
 
32
- ### CDN (browser)
32
+ ### CDN via jsDelivr (Recommended)
33
+
34
+ Gunakan jsDelivr CDN dengan **SRI integrity hash** untuk keamanan maksimal.
35
+
36
+ #### Quick Start (CSS + JS Bundle)
33
37
 
34
38
  ```html
35
39
  <!-- CSS -->
36
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxui.min.css">
40
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.css"
41
+ rel="stylesheet"
42
+ integrity="sha384-Vzif+wDuE90qTTy1G5up0ueqPdC6vUOP6NecH8QpFIJhfHOoMB93jVkyxiv1vlnM"
43
+ crossorigin="anonymous">
44
+
45
+ <!-- JS Bundle (semua komponen interaktif) -->
46
+ <script src="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.bundle.min.js"
47
+ integrity="sha384-7QH/Btek+SMRJjgwUj76BLTCXnoDWJk9Qv6t0vOVZE8G0BrV1/iWEKfhuiqHCRU8"
48
+ crossorigin="anonymous"></script>
49
+ ```
50
+
51
+ #### File Reference (semua file + SRI hash)
52
+
53
+ | File | Link & Integrity |
54
+ |---|---|
55
+ | **lxui.min.css** | [jsDelivr](https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.css) · `sha384-Vzif+wDuE90qTTy1G5up0ueqPdC6vUOP6NecH8QpFIJhfHOoMB93jVkyxiv1vlnM` |
56
+ | **lxui.min.js** | [jsDelivr](https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.js) · `sha384-D+ge+vXYWwFL+gTJSDc0ipylsiNn8JupyzsmH3SPiqZx8K7et+yig9SoiVhYRzZp` |
57
+ | **lxui.bundle.min.js** | [jsDelivr](https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.bundle.min.js) · `sha384-7QH/Btek+SMRJjgwUj76BLTCXnoDWJk9Qv6t0vOVZE8G0BrV1/iWEKfhuiqHCRU8` |
58
+ | **lxui.esm.min.js** | [jsDelivr](https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.esm.min.js) · `sha384-4uwfs5UigfLMnj2BUvkkUu3bnKMBAvCfZEedJAvLfNZ2N0VIZ6xjTub5uuJkpQE7` |
59
+ | **lxui.rtl.min.css** | [jsDelivr](https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.rtl.min.css) · `sha384-plKaGJovfJnBS7MMlAxezdUpmgDJC/k4rVDpfCn8NR9T8NLo6x45uGGtp+v2xWyy` |
60
+ | **lxthemes.min.css** | [jsDelivr](https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxthemes.min.css) · `sha384-ReH/S5ERyCGxqDyyrDbK2Laon9kK2jbHOjWbSVn+xDtl8jM2tyiJf+kIYE9WkuJ1` |
61
+ | **lxfonts.min.css** | [jsDelivr](https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxfonts.min.css) · `sha384-q/+4TIfVl2NGD8abj5nLW2FVcJQf+JV5Kzw5xvuTepbNCDX4nBtgD4gorSiTsf9o` |
62
+ | **lxicons.min.css** | [jsDelivr](https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxicons.min.css) · `sha384-oygDeMMbXY9AksdFbSdGWwjSDpAaZCxIDIEoJ1O3hEPSKf+VlmSLw7D4ZwGj35k+` |
63
+ | **lxeditor.min.css** | [jsDelivr](https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxeditor.min.css) · `sha384-7MQ36JMdVn8IBcrOO1zV2srOxLrEM/ZyTDP/BJjNM6ith6xM+QLHkSc3LbasM6X6` |
64
+ | **lx-grid.min.css** | [jsDelivr](https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lx-grid.min.css) · `sha384-jjOu6Zuc28mqZQF9G2ugUl35cRYvCydP3kPVhgSqvHCWJHath2LPZd0HjcOn9CT0` |
65
+ | **lx-utilities.min.css** | [jsDelivr](https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lx-utilities.min.css) · `sha384-uFJC/gi86M43+UspUd8HAOnOiv6ftVMPwGl9LZEXFyTAWvxv9WjRpXI90BZC5wM0` |
66
+ | **lxmarked.min.js** | [jsDelivr](https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxmarked.min.js) · `sha384-ZKkPR/5Ojl6LJ/38kdNa7yLA7vzzdVk9ubqkCUasgDFeG+keMEHQliMj51pr7kU7` |
67
+
68
+ #### HTML Snippets Lengkap
37
69
 
38
- <!-- JS (optional, for interactive components) -->
39
- <script src="https://cdn.lancar.id/ui/lxui.min.js"></script>
70
+ ```html
71
+ <!-- ═══ CSS ═══════════════════════════════════════════════════ -->
72
+
73
+ <!-- Main CSS (wajib) -->
74
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.css"
75
+ rel="stylesheet"
76
+ integrity="sha384-Vzif+wDuE90qTTy1G5up0ueqPdC6vUOP6NecH8QpFIJhfHOoMB93jVkyxiv1vlnM"
77
+ crossorigin="anonymous">
78
+
79
+ <!-- RTL Support (opsional) -->
80
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.rtl.min.css"
81
+ rel="stylesheet"
82
+ integrity="sha384-plKaGJovfJnBS7MMlAxezdUpmgDJC/k4rVDpfCn8NR9T8NLo6x45uGGtp+v2xWyy"
83
+ crossorigin="anonymous">
84
+
85
+ <!-- UI Themes (opsional) -->
86
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxthemes.min.css"
87
+ rel="stylesheet"
88
+ integrity="sha384-ReH/S5ERyCGxqDyyrDbK2Laon9kK2jbHOjWbSVn+xDtl8jM2tyiJf+kIYE9WkuJ1"
89
+ crossorigin="anonymous">
90
+
91
+ <!-- Icons 500+ (opsional) -->
92
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxicons.min.css"
93
+ rel="stylesheet"
94
+ integrity="sha384-oygDeMMbXY9AksdFbSdGWwjSDpAaZCxIDIEoJ1O3hEPSKf+VlmSLw7D4ZwGj35k+"
95
+ crossorigin="anonymous">
96
+
97
+ <!-- Editor Themes (opsional) -->
98
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxeditor.min.css"
99
+ rel="stylesheet"
100
+ integrity="sha384-7MQ36JMdVn8IBcrOO1zV2srOxLrEM/ZyTDP/BJjNM6ith6xM+QLHkSc3LbasM6X6"
101
+ crossorigin="anonymous">
102
+
103
+ <!-- Grid only (opsional) -->
104
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lx-grid.min.css"
105
+ rel="stylesheet"
106
+ integrity="sha384-jjOu6Zuc28mqZQF9G2ugUl35cRYvCydP3kPVhgSqvHCWJHath2LPZd0HjcOn9CT0"
107
+ crossorigin="anonymous">
108
+
109
+ <!-- Utilities only (opsional) -->
110
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lx-utilities.min.css"
111
+ rel="stylesheet"
112
+ integrity="sha384-uFJC/gi86M43+UspUd8HAOnOiv6ftVMPwGl9LZEXFyTAWvxv9WjRpXI90BZC5wM0"
113
+ crossorigin="anonymous">
114
+
115
+ <!-- ═══ JS ════════════════════════════════════════════════════ -->
116
+
117
+ <!-- UMD (browser <script>) -->
118
+ <script src="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.js"
119
+ integrity="sha384-D+ge+vXYWwFL+gTJSDc0ipylsiNn8JupyzsmH3SPiqZx8K7et+yig9SoiVhYRzZp"
120
+ crossorigin="anonymous"></script>
121
+
122
+ <!-- Bundle (semua komponen) -->
123
+ <script src="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.bundle.min.js"
124
+ integrity="sha384-7QH/Btek+SMRJjgwUj76BLTCXnoDWJk9Qv6t0vOVZE8G0BrV1/iWEKfhuiqHCRU8"
125
+ crossorigin="anonymous"></script>
126
+
127
+ <!-- ESM (via import) -->
128
+ <script src="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.esm.min.js"
129
+ integrity="sha384-4uwfs5UigfLMnj2BUvkkUu3bnKMBAvCfZEedJAvLfNZ2N0VIZ6xjTub5uuJkpQE7"
130
+ crossorigin="anonymous"></script>
131
+
132
+ <!-- LxMarked — Markdown renderer (opsional) -->
133
+ <script src="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxmarked.min.js"
134
+ integrity="sha384-ZKkPR/5Ojl6LJ/38kdNa7yLA7vzzdVk9ubqkCUasgDFeG+keMEHQliMj51pr7kU7"
135
+ crossorigin="anonymous"></script>
40
136
  ```
41
137
 
42
138
  ### ES Module
@@ -74,10 +170,10 @@ import '@lancar/lxui/css/base/tokens' // design tokens only
74
170
  import '@lancar/lxui/css/layout/grid' // grid only
75
171
 
76
172
  // JS — per komponen
77
- import { Modal } from 'lxui/js/modal'
78
- import { Toast } from 'lxui/js/toast'
79
- import { Carousel } from 'lxui/js/carousel'
80
- import { theme } from 'lxui/js/theme'
173
+ import { Modal } from '@lancar/lxui/js/modal'
174
+ import { Toast } from '@lancar/lxui/js/toast'
175
+ import { Carousel } from '@lancar/lxui/js/carousel'
176
+ import { theme } from '@lancar/lxui/js/theme'
81
177
  ```
82
178
 
83
179
  ---
@@ -85,11 +181,24 @@ import { theme } from 'lxui/js/theme'
85
181
  ## Modular Structure
86
182
 
87
183
  ```
88
- lxui/
89
- ├── css/
90
- ├── base/ reset · tokens · tokens-extended · typography · utils
91
- ├── layout/ grid · utilities
92
- │ └── components/ 44 individual component files
184
+ @lancar/lxui/
185
+ ├── lxui.css / lxui.min.css Full CSS bundle
186
+ ├── lxui.js / lxui.min.js UMD (browser <script> + CommonJS)
187
+ ├── lxui.esm.js / lxui.esm.min.js ES Module (import/export)
188
+ ├── lxui.bundle.js / .min.js Bundle lengkap
189
+ ├── lxui.rtl.min.css RTL support
190
+ ├── lxthemes.min.css 7 UI themes
191
+ ├── lxfonts.min.css Font stack CSS variables
192
+ ├── lxicons.min.css 500+ SVG icons
193
+ ├── lxeditor.min.css 12 editor/terminal themes
194
+ ├── lxmarked.js Markdown renderer
195
+ ├── lx-grid.min.css Grid only
196
+ ├── lx-utilities.min.css Utilities only
197
+
198
+ ├── css/ Per-komponen CSS
199
+ │ ├── base/ reset · tokens · tokens-extended · typography · utils
200
+ │ ├── layout/ grid · utilities
201
+ │ └── components/ 44 file individual
93
202
  │ accordion · alert · animations · avatar · back-top · badge
94
203
  │ breadcrumb · button · callout · card · carousel · chip
95
204
  │ code-block · collapse · compat · dark-mode · divider · dropdown
@@ -98,39 +207,70 @@ lxui/
98
207
  │ progress · rating · section · skeleton · spinner · stat · steps
99
208
  │ table · tag · timeline · toast · toggler · tooltip
100
209
 
101
- ├── js/ 19 individual ES modules
210
+ ├── js/ 19 ES modules individual
102
211
  │ utils · modal · toast · collapse · dropdown · offcanvas · tooltip
103
212
  │ popover · tab · carousel · scrollspy · clipboard · counter
104
213
  │ number-input · rating · theme · breakpoint · init · index
105
214
 
106
- └── types/index.d.ts TypeScript declarations
215
+ └── types/index.d.ts TypeScript declarations
216
+ ```
217
+
218
+ ### Self-hosted Fonts (terpisah — tidak ikut versi)
219
+
220
+ ```
221
+ fonts/ Shared font assets (zero CDN dependency)
222
+ ├── fonts.css Semua @font-face + CSS vars
223
+ ├── fonts.min.css Minified
224
+ ├── sans/ Sans-serif fonts
225
+ │ ├── sans.css / sans.min.css
226
+ │ ├── plus-jakarta-sans/ *.woff2 + plus-jakarta-sans.css
227
+ │ ├── inter/ *.woff2 + inter.css
228
+ │ ├── manrope/ *.woff2 + manrope.css
229
+ │ └── ibm-plex-sans/ *.woff2 + ibm-plex-sans.css
230
+ ├── serif/ Serif fonts
231
+ │ ├── literata/ *.woff2 + literata.css
232
+ │ ├── source-serif-4/ *.woff2 + source-serif-4.css
233
+ │ └── merriweather/ *.woff2 + merriweather.css
234
+ ├── accessibility/
235
+ │ └── atkinson-hyperlegible/ *.woff2 + atkinson-hyperlegible.css
236
+ └── mono/ Monospace fonts
237
+ ├── jetbrains-mono/ *.woff2 + jetbrains-mono.css
238
+ └── fira-code/ *.woff2 + fira-code.css
239
+ ```
240
+
241
+ ```html
242
+ <!-- Semua font self-hosted (via jsDelivr) -->
243
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/fonts/fonts.min.css"
244
+ rel="stylesheet">
245
+
246
+ <!-- Hanya sans-serif -->
247
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/fonts/sans/sans.min.css"
248
+ rel="stylesheet">
249
+
250
+ <!-- Hanya Inter -->
251
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/fonts/sans/inter/inter.min.css"
252
+ rel="stylesheet">
107
253
  ```
108
254
 
109
255
  ---
110
256
 
111
257
  ## Optional Tooling
112
258
 
113
- Pre-configured, opt-in only — install what you need:
259
+ Sudah termasuk dalam repo, opt-in — install hanya yang diperlukan:
114
260
 
115
261
  ```bash
116
- # ESLint
117
- npm i -D eslint
118
- npx eslint js/
262
+ # ESLint — JavaScript linting
263
+ npm i -D eslint && npx eslint js/
119
264
 
120
- # Stylelint
265
+ # Stylelint — CSS linting
121
266
  npm i -D stylelint stylelint-config-standard
122
267
  npx stylelint "css/**/*.css"
123
268
 
124
- # Prettier
125
- npm i -D prettier
126
- npx prettier --write .
127
-
128
- # Jest (unit tests)
129
- npm i -D jest jest-environment-jsdom
130
- npx jest
269
+ # Prettier — code formatting
270
+ npm i -D prettier && npx prettier --write .
131
271
  ```
132
272
 
133
- Config files included: `.eslintrc.json` · `.stylelintrc.json` · `.prettierrc` · `jest.config.js`
273
+ Config files: `.eslintrc.json` · `.stylelintrc.json` · `.prettierrc`
134
274
 
135
275
  ---
136
276
 
@@ -142,13 +282,13 @@ Config files included: `.eslintrc.json` · `.stylelintrc.json` · `.prettierrc`
142
282
  <head>
143
283
  <meta charset="UTF-8">
144
284
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
145
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxui.min.css">
285
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.css" rel="stylesheet" integrity="sha384-Vzif+wDuE90qTTy1G5up0ueqPdC6vUOP6NecH8QpFIJhfHOoMB93jVkyxiv1vlnM" crossorigin="anonymous">
146
286
  </head>
147
287
  <body>
148
288
  <div class="lx-container">
149
289
  <button class="lx-btn lx-btn-primary">Hello LxUI</button>
150
290
  </div>
151
- <script src="https://cdn.lancar.id/ui/lxui.min.js"></script>
291
+ <script src="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.js" integrity="sha384-D+ge+vXYWwFL+gTJSDc0ipylsiNn8JupyzsmH3SPiqZx8K7et+yig9SoiVhYRzZp" crossorigin="anonymous"></script>
152
292
  </body>
153
293
  </html>
154
294
  ```
@@ -157,22 +297,38 @@ Config files included: `.eslintrc.json` · `.stylelintrc.json` · `.prettierrc`
157
297
 
158
298
  ## File Distribution
159
299
 
160
- | File | Size | Description |
300
+ ### CSS
301
+
302
+ | File | Size | Keterangan |
161
303
  |---|---|---|
162
- | `lxui.css` | 115 KB | Full source CSS |
163
- | `lxui.min.css` | **97 KB** | Minified CSS (recommended) |
164
- | `lxui.js` | 38 KB | UMD browser `<script>` & CommonJS |
165
- | `lxui.min.js` | **23 KB** | UMD minified |
166
- | `lxui.esm.js` | 30 KB | ES Module (import/export) |
167
- | `lxui.esm.min.js` | **22 KB** | ESM minified |
168
- | `lxui.rtl.min.css` | 75 KB | RTL support |
169
- | `lxthemes.min.css` | 16 KB | 7 UI themes |
170
- | `lxfonts.min.css` | 4 KB | Font stacks (zero CDN) |
171
- | `lxicons.min.css` | 32 KB | 500+ SVG icons via CSS mask |
304
+ | `lxui.min.css` | **97 KB** | Full CSS minified — recommended |
305
+ | `lxui.rtl.min.css` | 75 KB | RTL (right-to-left) support |
306
+ | `lxthemes.min.css` | 16 KB | 7 UI themes (lumen, terra, verdant…) |
307
+ | `lxfonts.min.css` | 4 KB | Font stack CSS variables |
308
+ | `lxicons.min.css` | 32 KB | 500+ SVG icons via CSS mask-image |
172
309
  | `lxeditor.min.css` | 8 KB | 12 editor/terminal color themes |
173
310
  | `lx-grid.min.css` | 6 KB | Grid system only |
174
311
  | `lx-utilities.min.css` | 19 KB | Utility classes only |
175
- | `types/index.d.ts` | | TypeScript declarations |
312
+ | `css/components/*.css` | 1–9 KB | 44 component files individual |
313
+ | `fonts/fonts.min.css` | — | Self-hosted @font-face (10 families) |
314
+
315
+ ### JavaScript
316
+
317
+ | File | Size | Keterangan |
318
+ |---|---|---|
319
+ | `lxui.min.js` | **23 KB** | UMD — browser `<script>` & CommonJS |
320
+ | `lxui.esm.min.js` | **22 KB** | ES Module (named exports) |
321
+ | `lxui.bundle.min.js` | **16 KB** | Bundle semua komponen |
322
+ | `lxmarked.js` | 10 KB | Markdown renderer |
323
+ | `js/*.js` | 0.5–5 KB | 19 modul individual |
324
+
325
+ ### Lainnya
326
+
327
+ | File | Keterangan |
328
+ |---|---|
329
+ | `types/index.d.ts` | TypeScript declarations |
330
+ | `lxui.css` | Full source CSS (unminified) |
331
+ | `lxui.rtl.css` | RTL source (unminified) |
176
332
 
177
333
  ---
178
334
 
@@ -373,16 +529,16 @@ Tidak perlu install apapun. Tambahkan di `<head>`:
373
529
 
374
530
  ```html
375
531
  <!-- CSS -->
376
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxui.min.css">
532
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.css" rel="stylesheet" integrity="sha384-Vzif+wDuE90qTTy1G5up0ueqPdC6vUOP6NecH8QpFIJhfHOoMB93jVkyxiv1vlnM" crossorigin="anonymous">
377
533
 
378
534
  <!-- JS Bundle (semua plugins) -->
379
- <script src="https://cdn.lancar.id/ui/lxui.bundle.min.js" defer></script>
535
+ <script src="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.bundle.min.js" integrity="sha384-7QH/Btek+SMRJjgwUj76BLTCXnoDWJk9Qv6t0vOVZE8G0BrV1/iWEKfhuiqHCRU8" crossorigin="anonymous"></script>
380
536
  ```
381
537
 
382
538
  Hanya JS tanpa bundled dependencies:
383
539
 
384
540
  ```html
385
- <script src="https://cdn.lancar.id/ui/lxui.min.js" defer></script>
541
+ <script src="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.js" integrity="sha384-D+ge+vXYWwFL+gTJSDc0ipylsiNn8JupyzsmH3SPiqZx8K7et+yig9SoiVhYRzZp" crossorigin="anonymous"></script>
386
542
  ```
387
543
 
388
544
  ### npm
@@ -414,7 +570,7 @@ Download rilis: https://ui.lancar.id/releases
414
570
  <meta charset="UTF-8">
415
571
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
416
572
  <title>LxUI Starter</title>
417
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxui.min.css">
573
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.css" rel="stylesheet" integrity="sha384-Vzif+wDuE90qTTy1G5up0ueqPdC6vUOP6NecH8QpFIJhfHOoMB93jVkyxiv1vlnM" crossorigin="anonymous">
418
574
  </head>
419
575
  <body>
420
576
 
@@ -424,7 +580,7 @@ Download rilis: https://ui.lancar.id/releases
424
580
  <button class="lx-btn lx-btn-primary">Get Started</button>
425
581
  </div>
426
582
 
427
- <script src="https://cdn.lancar.id/ui/lxui.bundle.min.js" defer></script>
583
+ <script src="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.bundle.min.js" integrity="sha384-7QH/Btek+SMRJjgwUj76BLTCXnoDWJk9Qv6t0vOVZE8G0BrV1/iWEKfhuiqHCRU8" crossorigin="anonymous"></script>
428
584
  </body>
429
585
  </html>
430
586
  ```
@@ -607,7 +763,7 @@ module.exports = {
607
763
  ```javascript
608
764
  // src/index.js
609
765
  import '@lancar/lxui/dist/lxui.min.css';
610
- import LxUI from 'lxui/dist/lxui.esm.min.js';
766
+ import LxUI from '@lancar/lxui/lxui.esm.min.js';
611
767
  LxUI.init();
612
768
  ```
613
769
 
@@ -770,7 +926,7 @@ Untuk menonaktifkan, override dengan nilai literal:
770
926
 
771
927
  ```html
772
928
  <html lang="ar" dir="rtl" data-theme="lumen">
773
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxui.rtl.min.css">
929
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.rtl.min.css" rel="stylesheet" integrity="sha384-plKaGJovfJnBS7MMlAxezdUpmgDJC/k4rVDpfCn8NR9T8NLo6x45uGGtp+v2xWyy" crossorigin="anonymous">
774
930
  ```
775
931
 
776
932
  ### CSS Logical Properties
@@ -3654,7 +3810,7 @@ LxUI berintegrasi dengan **LxIcons** — icon library SVG dari lancar.id.
3654
3810
  ### LxIcons CDN
3655
3811
 
3656
3812
  ```html
3657
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxicons.min.css">
3813
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxicons.min.css" rel="stylesheet" integrity="sha384-oygDeMMbXY9AksdFbSdGWwjSDpAaZCxIDIEoJ1O3hEPSKf+VlmSLw7D4ZwGj35k+" crossorigin="anonymous">
3658
3814
  ```
3659
3815
 
3660
3816
  ### npm
@@ -3756,7 +3912,7 @@ LxUI tidak bergantung pada icon library mana pun — `lxicons.min.css` adalah si
3756
3912
  | Lisensi | MIT |
3757
3913
  | Homepage | https://ui.lancar.id |
3758
3914
  | Dokumentasi | https://ui.lancar.id/docs |
3759
- | CDN | https://cdn.lancar.id/ui/ |
3915
+ | CDN | https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/ |
3760
3916
  | NPM | `npmjs.com/package/lxui` |
3761
3917
  | Repository | `github.com/lancar-id/lxui` |
3762
3918
  | Ukuran CSS | ~45 KB minified |
@@ -4132,7 +4288,7 @@ node migrate-to-lxui.js
4132
4288
 
4133
4289
  **Homepage:** https://ui.lancar.id
4134
4290
  **Docs:** https://ui.lancar.id/docs
4135
- **CDN:** https://cdn.lancar.id/ui/lxui.min.css
4291
+ **CDN:** https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.css
4136
4292
  **GitHub:** https://github.com/lancar-id/lxui
4137
4293
  **NPM:** https://npmjs.com/package/lxui
4138
4294
 
@@ -4607,7 +4763,7 @@ var(--accent-fg) /* text on accent bg */
4607
4763
  **CDN (terpisah dari CSS utama):**
4608
4764
 
4609
4765
  ```html
4610
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxeditor.min.css">
4766
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxeditor.min.css" rel="stylesheet" integrity="sha384-7MQ36JMdVn8IBcrOO1zV2srOxLrEM/ZyTDP/BJjNM6ith6xM+QLHkSc3LbasM6X6" crossorigin="anonymous">
4611
4767
  ```
4612
4768
 
4613
4769
  **Aktivasi:**
@@ -4859,7 +5015,7 @@ export default defineConfig({
4859
5015
  ```javascript
4860
5016
  // src/main.js
4861
5017
  import '@lancar/lxui/dist/lxui.min.css';
4862
- import LxUI from 'lxui/dist/lxui.esm.min.js';
5018
+ import LxUI from '@lancar/lxui/lxui.esm.min.js';
4863
5019
 
4864
5020
  LxUI.init();
4865
5021
  ```
@@ -4971,11 +5127,11 @@ LxUI menggunakan **system font stack** secara default — tidak memerlukan konek
4971
5127
 
4972
5128
  ```html
4973
5129
  <!-- Tanpa CDN — gunakan system fonts (offline-safe, direkomendasikan) -->
4974
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxui.min.css">
5130
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.css" rel="stylesheet" integrity="sha384-Vzif+wDuE90qTTy1G5up0ueqPdC6vUOP6NecH8QpFIJhfHOoMB93jVkyxiv1vlnM" crossorigin="anonymous">
4975
5131
 
4976
5132
  <!-- Dengan Google Fonts (opsional, membutuhkan koneksi internet) -->
4977
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxui.min.css">
4978
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxfonts.min.css">
5133
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.css" rel="stylesheet" integrity="sha384-Vzif+wDuE90qTTy1G5up0ueqPdC6vUOP6NecH8QpFIJhfHOoMB93jVkyxiv1vlnM" crossorigin="anonymous">
5134
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxfonts.min.css" rel="stylesheet" integrity="sha384-q/+4TIfVl2NGD8abj5nLW2FVcJQf+JV5Kzw5xvuTepbNCDX4nBtgD4gorSiTsf9o" crossorigin="anonymous">
4979
5135
  ```
4980
5136
 
4981
5137
  ### Font Variables
@@ -5024,7 +5180,7 @@ LxUI menggunakan **system font stack** secara default — tidak memerlukan konek
5024
5180
 
5025
5181
  ## Quick Reference CDN
5026
5182
 
5027
- Semua file yang tersedia di `https://cdn.lancar.id/ui/`:
5183
+ Semua file yang tersedia di `https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/`:
5028
5184
 
5029
5185
  | File | Deskripsi |
5030
5186
  |------|-----------|
@@ -5048,25 +5204,25 @@ Semua file yang tersedia di `https://cdn.lancar.id/ui/`:
5048
5204
 
5049
5205
  ```html
5050
5206
  <!-- CSS saja (tanpa JS) -->
5051
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxui.min.css">
5207
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.css" rel="stylesheet" integrity="sha384-Vzif+wDuE90qTTy1G5up0ueqPdC6vUOP6NecH8QpFIJhfHOoMB93jVkyxiv1vlnM" crossorigin="anonymous">
5052
5208
  ```
5053
5209
 
5054
5210
  ### Starter lengkap
5055
5211
 
5056
5212
  ```html
5057
5213
  <!-- CSS -->
5058
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxui.min.css">
5059
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxicons.min.css">
5214
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.css" rel="stylesheet" integrity="sha384-Vzif+wDuE90qTTy1G5up0ueqPdC6vUOP6NecH8QpFIJhfHOoMB93jVkyxiv1vlnM" crossorigin="anonymous">
5215
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxicons.min.css" rel="stylesheet" integrity="sha384-oygDeMMbXY9AksdFbSdGWwjSDpAaZCxIDIEoJ1O3hEPSKf+VlmSLw7D4ZwGj35k+" crossorigin="anonymous">
5060
5216
 
5061
5217
  <!-- JS -->
5062
- <script src="https://cdn.lancar.id/ui/lxui.bundle.min.js" defer></script>
5218
+ <script src="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.bundle.min.js" integrity="sha384-7QH/Btek+SMRJjgwUj76BLTCXnoDWJk9Qv6t0vOVZE8G0BrV1/iWEKfhuiqHCRU8" crossorigin="anonymous"></script>
5063
5219
  ```
5064
5220
 
5065
5221
  ### Starter dengan editor themes
5066
5222
 
5067
5223
  ```html
5068
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxui.min.css">
5069
- <link rel="stylesheet" href="https://cdn.lancar.id/ui/lxeditor.min.css">
5070
- <script src="https://cdn.lancar.id/ui/lxui.bundle.min.js" defer></script>
5224
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.min.css" rel="stylesheet" integrity="sha384-Vzif+wDuE90qTTy1G5up0ueqPdC6vUOP6NecH8QpFIJhfHOoMB93jVkyxiv1vlnM" crossorigin="anonymous">
5225
+ <link href="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxeditor.min.css" rel="stylesheet" integrity="sha384-7MQ36JMdVn8IBcrOO1zV2srOxLrEM/ZyTDP/BJjNM6ith6xM+QLHkSc3LbasM6X6" crossorigin="anonymous">
5226
+ <script src="https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.2/lxui.bundle.min.js" integrity="sha384-7QH/Btek+SMRJjgwUj76BLTCXnoDWJk9Qv6t0vOVZE8G0BrV1/iWEKfhuiqHCRU8" crossorigin="anonymous"></script>
5071
5227
  ```
5072
5228
 
@@ -0,0 +1,34 @@
1
+ /*! LxUI Fonts v1.0.1 | MIT | https://ui.lancar.id */
2
+ /* ── ACCESSIBILITY fonts ── */
3
+
4
+ @font-face {
5
+ font-family: 'Atkinson Hyperlegible';
6
+ font-style: italic;
7
+ font-weight: 400;
8
+ font-display: swap;
9
+ src: local('Atkinson Hyperlegible'),
10
+ url('https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.1/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-400Italic.woff2') format('woff2');
11
+ }
12
+
13
+ @font-face {
14
+ font-family: 'Atkinson Hyperlegible';
15
+ font-style: normal;
16
+ font-weight: 400;
17
+ font-display: swap;
18
+ src: local('Atkinson Hyperlegible'),
19
+ url('https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.1/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-400.woff2') format('woff2');
20
+ }
21
+
22
+ @font-face {
23
+ font-family: 'Atkinson Hyperlegible';
24
+ font-style: normal;
25
+ font-weight: 700;
26
+ font-display: swap;
27
+ src: local('Atkinson Hyperlegible'),
28
+ url('https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.1/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-700.woff2') format('woff2');
29
+ }
30
+
31
+
32
+ /* ── CSS Variables (accessibility) ── */
33
+ :root {
34
+ }
@@ -0,0 +1,2 @@
1
+ /*! LxUI Fonts v1.0.1 | MIT | https://ui.lancar.id */
2
+ @font-face{font-family:'Atkinson Hyperlegible';font-style:italic;font-weight:400;font-display:swap;src:local('Atkinson Hyperlegible'),url('https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.1/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-400Italic.woff2') format('woff2')}@font-face{font-family:'Atkinson Hyperlegible';font-style:normal;font-weight:400;font-display:swap;src:local('Atkinson Hyperlegible'),url('https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.1/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-400.woff2') format('woff2')}@font-face{font-family:'Atkinson Hyperlegible';font-style:normal;font-weight:700;font-display:swap;src:local('Atkinson Hyperlegible'),url('https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.1/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-700.woff2') format('woff2')}:root{}
@@ -0,0 +1,30 @@
1
+ /*! LxUI Fonts v1.0.1 | MIT | https://ui.lancar.id */
2
+ /* Atkinson Hyperlegible */
3
+
4
+ @font-face {
5
+ font-family: 'Atkinson Hyperlegible';
6
+ font-style: italic;
7
+ font-weight: 400;
8
+ font-display: swap;
9
+ src: local('Atkinson Hyperlegible'),
10
+ url('https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.1/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-400Italic.woff2') format('woff2');
11
+ }
12
+
13
+ @font-face {
14
+ font-family: 'Atkinson Hyperlegible';
15
+ font-style: normal;
16
+ font-weight: 400;
17
+ font-display: swap;
18
+ src: local('Atkinson Hyperlegible'),
19
+ url('https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.1/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-400.woff2') format('woff2');
20
+ }
21
+
22
+ @font-face {
23
+ font-family: 'Atkinson Hyperlegible';
24
+ font-style: normal;
25
+ font-weight: 700;
26
+ font-display: swap;
27
+ src: local('Atkinson Hyperlegible'),
28
+ url('https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.1/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-700.woff2') format('woff2');
29
+ }
30
+
@@ -0,0 +1,2 @@
1
+ /*! LxUI Fonts v1.0.1 | MIT | https://ui.lancar.id */
2
+ @font-face{font-family:'Atkinson Hyperlegible';font-style:italic;font-weight:400;font-display:swap;src:local('Atkinson Hyperlegible'),url('https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.1/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-400Italic.woff2') format('woff2')}@font-face{font-family:'Atkinson Hyperlegible';font-style:normal;font-weight:400;font-display:swap;src:local('Atkinson Hyperlegible'),url('https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.1/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-400.woff2') format('woff2')}@font-face{font-family:'Atkinson Hyperlegible';font-style:normal;font-weight:700;font-display:swap;src:local('Atkinson Hyperlegible'),url('https://cdn.jsdelivr.net/npm/@lancar/lxui@1.0.1/fonts/accessibility/atkinson-hyperlegible/AtkinsonHyperlegible-700.woff2') format('woff2')}