├── .gitignore ├── LICENSE ├── README.md ├── css ├── cores │ ├── halfmoon.cores.css │ ├── halfmoon.elegant.css │ └── halfmoon.modern.css ├── halfmoon.css ├── halfmoon.min.css ├── halfmoon.min.css.map ├── halfmoon.rtl.css ├── halfmoon.rtl.min.css └── halfmoon.rtl.min.css.map ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | *.DS_Store 2 | 3 | # Dependency directories 4 | node_modules/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023, Tahmid Khan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [Halfmoon v2](https://www.gethalfmoon.com) 2 | 3 | ![Halfmoon cover image](https://res.cloudinary.com/halfmoon-ui/image/upload/v1691920748/open-graph/og-image_hiacw3.png) 4 | 5 | > Highly customizable, drop-in Bootstrap replacement. 6 | 7 | Halfmoon is a highly customizable, drop-in Bootstrap replacement. It comes with three built-in core themes, with dark mode support for all themes and components. Build beautiful and responsive websites and applications. 8 | 9 | To learn more, please read [the documentation](https://www.gethalfmoon.com/docs/introduction/). 10 | 11 | ## JavaScript 12 | 13 | We implement no JavaScript on our own, therefore, there is no `halfmoon.js` (or anything similar). Instead we rely entirely on `bootstrap.bundle.js`, which you can [download from Bootstrap's website](https://getbootstrap.com/docs/5.3/getting-started/download/). This means that you can replace `bootstrap.css` with `halfmoon.css` on your website, and everything should work exactly as expected. 14 | 15 | This also means that you can use any of the Bootstrap component libraries for popular JS frameworks such as React, Vue, Angular, Svelte, etc. 16 | 17 | ## Starter template 18 | 19 | Here's a starter template to help you quickly get started with Halfmoon. 20 | 21 | ```html 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | Starter template - Halfmoon 30 | 31 | 32 | 33 | 34 | 35 |

Hello, world!

36 | 37 | 38 | 39 | 40 | 41 | ``` 42 | 43 | ## Using npm 44 | 45 | ``` 46 | npm install halfmoon 47 | ``` 48 | 49 | Once the package has been installed, you can simply import the CSS file: 50 | 51 | ```javascript 52 | // Import Halfmoon CSS 53 | import "halfmoon/css/halfmoon.min.css"; 54 | ``` 55 | 56 | ## License 57 | 58 | Halfmoon is [licensed under MIT](https://www.gethalfmoon.com/license/). 59 | 60 | ## Copyright 61 | 62 | © Copyright 2023, Tahmid Khan 63 | -------------------------------------------------------------------------------- /css/cores/halfmoon.cores.css: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * ---------------------------------------------------------------------------- 4 | * Halfmoon CSS - Modern theme 5 | * Copyright (c) 2023, Tahmid Khan | MIT License | https://www.gethalfmoon.com 6 | * ---------------------------------------------------------------------------- 7 | * The above notice must be included in its entirety when this file is used. 8 | */ 9 | 10 | /* Color palette */ 11 | 12 | [data-bs-core=modern] { 13 | /* Gray */ 14 | 15 | --bs-slate-hue: 216; 16 | --bs-slate-saturation: 20%; 17 | 18 | /* Light gray */ 19 | 20 | --bs-lightgray-hue: var(--bs-slate-hue); 21 | --bs-lightgray-saturation: var(--bs-slate-saturation); 22 | 23 | /* Sable (almost black) */ 24 | 25 | --bs-sable-hue: var(--bs-darkgray-hue); 26 | --bs-sable-saturation: var(--bs-darkgray-saturation); 27 | --bs-sable-100-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 31%; 28 | --bs-sable-200-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 29%; 29 | --bs-sable-300-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 27%; 30 | --bs-sable-400-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 25%; 31 | --bs-sable-500-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 23%; 32 | --bs-sable-600-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 21%; 33 | --bs-sable-700-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 19%; 34 | --bs-sable-800-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 17%; 35 | --bs-sable-900-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 15%; 36 | --bs-sable-100: hsl(var(--bs-sable-100-hsl)); 37 | --bs-sable-200: hsl(var(--bs-sable-200-hsl)); 38 | --bs-sable-300: hsl(var(--bs-sable-300-hsl)); 39 | --bs-sable-400: hsl(var(--bs-sable-400-hsl)); 40 | --bs-sable-500: hsl(var(--bs-sable-500-hsl)); 41 | --bs-sable-600: hsl(var(--bs-sable-600-hsl)); 42 | --bs-sable-700: hsl(var(--bs-sable-700-hsl)); 43 | --bs-sable-800: hsl(var(--bs-sable-800-hsl)); 44 | --bs-sable-900: hsl(var(--bs-sable-900-hsl)); 45 | --bs-sable-hsl: var(--bs-sable-500-hsl); 46 | --bs-sable: hsl(var(--bs-sable-hsl)); 47 | --bs-sable-foreground-hsl: var(--bs-white-hsl); 48 | --bs-sable-foreground: hsl(var(--bs-sable-foreground-hsl)); 49 | --bs-sable-text-emphasis-hsl: var(--bs-sable-600-hsl); 50 | --bs-sable-text-emphasis: hsl(var(--bs-sable-text-emphasis-hsl)); 51 | --bs-sable-hover-bg: var(--bs-sable-600); 52 | --bs-sable-active-bg: var(--bs-sable-700); 53 | --bs-sable-bg-subtle: hsl(var(--bs-sable-hue), var(--bs-sable-saturation), 70%); 54 | --bs-sable-border-subtle: var(--bs-sable-400); 55 | --bs-sable-checkbox-svg: var(--bs-checkbox-svg-light); 56 | --bs-sable-dash-svg: var(--bs-dash-svg-light); 57 | --bs-sable-radio-svg: var(--bs-radio-svg-light); 58 | --bs-sable-switch-svg: var(--bs-switch-svg-light); 59 | 60 | /* Primary */ 61 | 62 | --bs-primary-hue: var(--bs-navy-hue); 63 | --bs-primary-saturation: var(--bs-navy-saturation); 64 | --bs-primary-100-hsl: var(--bs-navy-100-hsl); 65 | --bs-primary-200-hsl: var(--bs-navy-200-hsl); 66 | --bs-primary-300-hsl: var(--bs-navy-300-hsl); 67 | --bs-primary-400-hsl: var(--bs-navy-400-hsl); 68 | --bs-primary-500-hsl: var(--bs-navy-500-hsl); 69 | --bs-primary-600-hsl: var(--bs-navy-600-hsl); 70 | --bs-primary-700-hsl: var(--bs-navy-700-hsl); 71 | --bs-primary-800-hsl: var(--bs-navy-800-hsl); 72 | --bs-primary-900-hsl: var(--bs-navy-900-hsl); 73 | --bs-primary-100: var(--bs-navy-100); 74 | --bs-primary-200: var(--bs-navy-200); 75 | --bs-primary-300: var(--bs-navy-300); 76 | --bs-primary-400: var(--bs-navy-400); 77 | --bs-primary-500: var(--bs-navy-500); 78 | --bs-primary-600: var(--bs-navy-600); 79 | --bs-primary-700: var(--bs-navy-700); 80 | --bs-primary-800: var(--bs-navy-800); 81 | --bs-primary-900: var(--bs-navy-900); 82 | --bs-primary-hsl: var(--bs-navy-hsl); 83 | --bs-primary: var(--bs-navy); 84 | --bs-primary-foreground-hsl: var(--bs-navy-foreground-hsl); 85 | --bs-primary-foreground: var(--bs-navy-foreground); 86 | --bs-primary-text-emphasis-hsl: var(--bs-navy-text-emphasis-hsl); 87 | --bs-primary-text-emphasis: var(--bs-navy-text-emphasis); 88 | --bs-primary-hover-bg: var(--bs-navy-hover-bg); 89 | --bs-primary-active-bg: var(--bs-navy-active-bg); 90 | --bs-primary-bg-subtle: var(--bs-navy-bg-subtle); 91 | --bs-primary-border-subtle: var(--bs-navy-border-subtle); 92 | --bs-primary-checkbox-svg: var(--bs-navy-checkbox-svg); 93 | --bs-primary-dash-svg: var(--bs-navy-dash-svg); 94 | --bs-primary-radio-svg: var(--bs-navy-radio-svg); 95 | --bs-primary-switch-svg: var(--bs-navy-switch-svg); 96 | 97 | /* Info */ 98 | 99 | --bs-info-hue: var(--bs-blue-hue); 100 | --bs-info-saturation: var(--bs-blue-saturation); 101 | --bs-info-100-hsl: var(--bs-blue-100-hsl); 102 | --bs-info-200-hsl: var(--bs-blue-200-hsl); 103 | --bs-info-300-hsl: var(--bs-blue-300-hsl); 104 | --bs-info-400-hsl: var(--bs-blue-400-hsl); 105 | --bs-info-500-hsl: var(--bs-blue-500-hsl); 106 | --bs-info-600-hsl: var(--bs-blue-600-hsl); 107 | --bs-info-700-hsl: var(--bs-blue-700-hsl); 108 | --bs-info-800-hsl: var(--bs-blue-800-hsl); 109 | --bs-info-900-hsl: var(--bs-blue-900-hsl); 110 | --bs-info-100: var(--bs-blue-100); 111 | --bs-info-200: var(--bs-blue-200); 112 | --bs-info-300: var(--bs-blue-300); 113 | --bs-info-400: var(--bs-blue-400); 114 | --bs-info-500: var(--bs-blue-500); 115 | --bs-info-600: var(--bs-blue-600); 116 | --bs-info-700: var(--bs-blue-700); 117 | --bs-info-800: var(--bs-blue-800); 118 | --bs-info-900: var(--bs-blue-900); 119 | --bs-info-hsl: var(--bs-blue-hsl); 120 | --bs-info: var(--bs-blue); 121 | --bs-info-foreground-hsl: var(--bs-blue-foreground-hsl); 122 | --bs-info-foreground: var(--bs-blue-foreground); 123 | --bs-info-text-emphasis-hsl: var(--bs-blue-text-emphasis-hsl); 124 | --bs-info-text-emphasis: var(--bs-blue-text-emphasis); 125 | --bs-info-hover-bg: var(--bs-blue-hover-bg); 126 | --bs-info-active-bg: var(--bs-blue-active-bg); 127 | --bs-info-bg-subtle: var(--bs-blue-bg-subtle); 128 | --bs-info-border-subtle: var(--bs-blue-border-subtle); 129 | --bs-info-checkbox-svg: var(--bs-blue-checkbox-svg); 130 | --bs-info-dash-svg: var(--bs-blue-dash-svg); 131 | --bs-info-radio-svg: var(--bs-blue-radio-svg); 132 | --bs-info-switch-svg: var(--bs-blue-switch-svg); 133 | } 134 | 135 | [data-bs-core=modern][data-bs-theme=dark] { 136 | /* Dark gray */ 137 | 138 | --bs-darkgray-text-emphasis-hsl: var(--bs-darkgray-200-hsl); 139 | --bs-darkgray-text-emphasis: hsl(var(--bs-darkgray-text-emphasis-hsl)); 140 | 141 | /* Sable (black) */ 142 | 143 | --bs-sable-text-emphasis-hsl: var(--bs-sable-400-hsl); 144 | --bs-sable-text-emphasis: hsl(var(--bs-sable-text-emphasis-hsl)); 145 | --bs-sable-bg-subtle: hsl(var(--bs-sable-hue), var(--bs-sable-saturation), 14%); 146 | --bs-sable-border-subtle: var(--bs-sable-600); 147 | 148 | /* Blue */ 149 | 150 | --bs-blue-text-emphasis-hsl: var(--bs-blue-300-hsl); 151 | --bs-blue-text-emphasis: hsl(var(--bs-blue-text-emphasis-hsl)); 152 | 153 | /* Primary */ 154 | 155 | --bs-primary-hue: var(--bs-sky-hue); 156 | --bs-primary-saturation: var(--bs-sky-saturation); 157 | --bs-primary-100-hsl: var(--bs-sky-100-hsl); 158 | --bs-primary-200-hsl: var(--bs-sky-200-hsl); 159 | --bs-primary-300-hsl: var(--bs-sky-300-hsl); 160 | --bs-primary-400-hsl: var(--bs-sky-400-hsl); 161 | --bs-primary-500-hsl: var(--bs-sky-500-hsl); 162 | --bs-primary-600-hsl: var(--bs-sky-600-hsl); 163 | --bs-primary-700-hsl: var(--bs-sky-700-hsl); 164 | --bs-primary-800-hsl: var(--bs-sky-800-hsl); 165 | --bs-primary-900-hsl: var(--bs-sky-900-hsl); 166 | --bs-primary-100: var(--bs-sky-100); 167 | --bs-primary-200: var(--bs-sky-200); 168 | --bs-primary-300: var(--bs-sky-300); 169 | --bs-primary-400: var(--bs-sky-400); 170 | --bs-primary-500: var(--bs-sky-500); 171 | --bs-primary-600: var(--bs-sky-600); 172 | --bs-primary-700: var(--bs-sky-700); 173 | --bs-primary-800: var(--bs-sky-800); 174 | --bs-primary-900: var(--bs-sky-900); 175 | --bs-primary-hsl: var(--bs-sky-hsl); 176 | --bs-primary: var(--bs-sky); 177 | --bs-primary-foreground-hsl: var(--bs-sky-foreground-hsl); 178 | --bs-primary-foreground: var(--bs-sky-foreground); 179 | --bs-primary-text-emphasis-hsl: var(--bs-sky-text-emphasis-hsl); 180 | --bs-primary-text-emphasis: var(--bs-sky-text-emphasis); 181 | --bs-primary-hover-bg: var(--bs-sky-hover-bg); 182 | --bs-primary-active-bg: var(--bs-sky-active-bg); 183 | --bs-primary-bg-subtle: var(--bs-sky-bg-subtle); 184 | --bs-primary-border-subtle: var(--bs-sky-border-subtle); 185 | --bs-primary-checkbox-svg: var(--bs-sky-checkbox-svg); 186 | --bs-primary-dash-svg: var(--bs-sky-dash-svg); 187 | --bs-primary-radio-svg: var(--bs-sky-radio-svg); 188 | --bs-primary-switch-svg: var(--bs-sky-switch-svg); 189 | 190 | /* Info */ 191 | 192 | --bs-info-text-emphasis-hsl: var(--bs-blue-text-emphasis-hsl); 193 | --bs-info-text-emphasis: var(--bs-blue-text-emphasis); 194 | --bs-info-bg-subtle: var(--bs-blue-bg-subtle); 195 | --bs-info-border-subtle: var(--bs-blue-border-subtle); 196 | } 197 | 198 | /* Variables */ 199 | 200 | [data-bs-core=modern] { 201 | /* Link */ 202 | 203 | --bs-link-color-hsl: var(--bs-info-text-emphasis-hsl); 204 | --bs-link-hover-color-hsl: var(--bs-info-hsl); 205 | 206 | /* Content (used as needed in cards, panels, menus, etc.) */ 207 | 208 | --bs-content-bg-hsl: var(--bs-body-bg-hsl); 209 | --bs-content-border-color: var(--bs-border-color); 210 | 211 | /* Form */ 212 | 213 | --bs-form-focus-border-color: var(--bs-info-border-subtle); 214 | --bs-form-focus-shadow-hsl: var(--bs-info-hsl); 215 | --bs-form-check-focus-border-color: var(--bs-info-border-subtle); 216 | } 217 | 218 | [data-bs-core=modern]:not([data-bs-theme=dark]) { 219 | /* Background */ 220 | 221 | --bs-body-bg-hsl: var(--bs-white-hsl); 222 | --bs-secondary-bg-hsl: var(--bs-lightgray-hue), var(--bs-lightgray-saturation), 98.75%; 223 | --bs-tertiary-bg-hsl: var(--bs-lightgray-hue), var(--bs-lightgray-saturation), 97.5%; 224 | 225 | /* Border */ 226 | 227 | --bs-border-color: var(--bs-lightgray-700); 228 | --bs-border-color-light: var(--bs-lightgray-500); 229 | } 230 | 231 | [data-bs-core=modern][data-bs-theme=dark] { 232 | /* Background */ 233 | 234 | --bs-body-bg-hsl: var(--bs-sable-900-hsl); 235 | --bs-secondary-bg-hsl: var(--bs-sable-800-hsl); 236 | --bs-tertiary-bg-hsl: var(--bs-sable-700-hsl); 237 | 238 | /* Border */ 239 | 240 | --bs-border-color: var(--bs-gray-900); 241 | 242 | /* Content (used as needed in cards, panels, menus, etc.) */ 243 | 244 | --bs-content-floating-bg-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 16.5%; 245 | 246 | /* Action (used as needed in buttons, inputs, menu items, page links, etc.) */ 247 | 248 | --bs-action-border-color: var(--bs-border-color); 249 | 250 | /* Contextual buttons */ 251 | 252 | --bs-ctx-btn-border-color: transparent; 253 | --bs-ctx-btn-bg-clip: border-box; 254 | 255 | /* Action bar (used as needed in range, progress, etc.) */ 256 | 257 | --bs-actionbar-border-color: hsla(var(--bs-white-hsl), 0.075); 258 | --bs-progresstrack-border-width: 0; 259 | --bs-progresstrack-box-shadow: inset 0 0 0 var(--bs-border-width) var(--bs-actionbar-border-color); 260 | --bs-progresstrack-bg-clip: border-box; 261 | } 262 | 263 | /* Sidebar */ 264 | 265 | [data-bs-core=modern] .sidebar { 266 | --bs-sidebar-item-padding-x: 1rem; 267 | --bs-sidebar-item-padding-y: 0.25rem; 268 | --bs-sidebar-header-font-weight: var(--bs-font-weight-bold); 269 | --bs-sidebar-divider-bg: var(--bs-sidebar-bg); 270 | } 271 | 272 | [data-bs-core=modern] .sidebar-nav .nav-link { 273 | border-left: var(--bs-border-width) solid var(--bs-border-color-light); 274 | } 275 | 276 | [data-bs-core=modern] .sidebar-nav .nav-link.active, 277 | [data-bs-core=modern] .sidebar-nav .nav-link.show { 278 | font-weight: var(--bs-font-weight-bold); 279 | border-color: currentColor; 280 | -webkit-font-smoothing: antialiased; 281 | -moz-osx-font-smoothing: grayscale; 282 | } 283 | 284 | /*! 285 | * ---------------------------------------------------------------------------- 286 | * Halfmoon CSS - Elegant theme 287 | * Copyright (c) 2023, Tahmid Khan | MIT License | https://www.gethalfmoon.com 288 | * ---------------------------------------------------------------------------- 289 | * The above notice must be included in its entirety when this file is used. 290 | */ 291 | 292 | /* Color palette */ 293 | 294 | [data-bs-core=elegant] { 295 | /* Light gray */ 296 | 297 | --bs-lightgray-hue: var(--bs-stone-hue); 298 | --bs-lightgray-saturation: var(--bs-stone-saturation); 299 | 300 | /* Dark gray */ 301 | 302 | --bs-darkgray-hue: var(--bs-stone-hue); 303 | --bs-darkgray-saturation: var(--bs-stone-saturation); 304 | 305 | /* Primary */ 306 | 307 | --bs-primary-hue: var(--bs-sable-hue); 308 | --bs-primary-saturation: var(--bs-sable-saturation); 309 | --bs-primary-100-hsl: var(--bs-sable-100-hsl); 310 | --bs-primary-200-hsl: var(--bs-sable-200-hsl); 311 | --bs-primary-300-hsl: var(--bs-sable-300-hsl); 312 | --bs-primary-400-hsl: var(--bs-sable-400-hsl); 313 | --bs-primary-500-hsl: var(--bs-sable-500-hsl); 314 | --bs-primary-600-hsl: var(--bs-sable-600-hsl); 315 | --bs-primary-700-hsl: var(--bs-sable-700-hsl); 316 | --bs-primary-800-hsl: var(--bs-sable-800-hsl); 317 | --bs-primary-900-hsl: var(--bs-sable-900-hsl); 318 | --bs-primary-100: var(--bs-sable-100); 319 | --bs-primary-200: var(--bs-sable-200); 320 | --bs-primary-300: var(--bs-sable-300); 321 | --bs-primary-400: var(--bs-sable-400); 322 | --bs-primary-500: var(--bs-sable-500); 323 | --bs-primary-600: var(--bs-sable-600); 324 | --bs-primary-700: var(--bs-sable-700); 325 | --bs-primary-800: var(--bs-sable-800); 326 | --bs-primary-900: var(--bs-sable-900); 327 | --bs-primary-hsl: var(--bs-sable-hsl); 328 | --bs-primary: var(--bs-sable); 329 | --bs-primary-foreground-hsl: var(--bs-sable-foreground-hsl); 330 | --bs-primary-foreground: var(--bs-sable-foreground); 331 | --bs-primary-text-emphasis-hsl: var(--bs-sable-text-emphasis-hsl); 332 | --bs-primary-text-emphasis: var(--bs-sable-text-emphasis); 333 | --bs-primary-hover-bg: var(--bs-sable-hover-bg); 334 | --bs-primary-active-bg: var(--bs-sable-active-bg); 335 | --bs-primary-bg-subtle: var(--bs-sable-bg-subtle); 336 | --bs-primary-border-subtle: var(--bs-sable-border-subtle); 337 | --bs-primary-checkbox-svg: var(--bs-sable-checkbox-svg); 338 | --bs-primary-dash-svg: var(--bs-sable-dash-svg); 339 | --bs-primary-radio-svg: var(--bs-sable-radio-svg); 340 | --bs-primary-switch-svg: var(--bs-sable-switch-svg); 341 | 342 | /* Info */ 343 | 344 | --bs-info-hue: var(--bs-sienna-hue); 345 | --bs-info-saturation: var(--bs-sienna-saturation); 346 | --bs-info-100-hsl: var(--bs-sienna-100-hsl); 347 | --bs-info-200-hsl: var(--bs-sienna-200-hsl); 348 | --bs-info-300-hsl: var(--bs-sienna-300-hsl); 349 | --bs-info-400-hsl: var(--bs-sienna-400-hsl); 350 | --bs-info-500-hsl: var(--bs-sienna-500-hsl); 351 | --bs-info-600-hsl: var(--bs-sienna-600-hsl); 352 | --bs-info-700-hsl: var(--bs-sienna-700-hsl); 353 | --bs-info-800-hsl: var(--bs-sienna-800-hsl); 354 | --bs-info-900-hsl: var(--bs-sienna-900-hsl); 355 | --bs-info-100: var(--bs-sienna-100); 356 | --bs-info-200: var(--bs-sienna-200); 357 | --bs-info-300: var(--bs-sienna-300); 358 | --bs-info-400: var(--bs-sienna-400); 359 | --bs-info-500: var(--bs-sienna-500); 360 | --bs-info-600: var(--bs-sienna-600); 361 | --bs-info-700: var(--bs-sienna-700); 362 | --bs-info-800: var(--bs-sienna-800); 363 | --bs-info-900: var(--bs-sienna-900); 364 | --bs-info-hsl: var(--bs-sienna-hsl); 365 | --bs-info: var(--bs-sienna); 366 | --bs-info-foreground-hsl: var(--bs-sienna-foreground-hsl); 367 | --bs-info-foreground: var(--bs-sienna-foreground); 368 | --bs-info-text-emphasis-hsl: var(--bs-sienna-text-emphasis-hsl); 369 | --bs-info-text-emphasis: var(--bs-sienna-text-emphasis); 370 | --bs-info-hover-bg: var(--bs-sienna-hover-bg); 371 | --bs-info-active-bg: var(--bs-sienna-active-bg); 372 | --bs-info-bg-subtle: var(--bs-sienna-bg-subtle); 373 | --bs-info-border-subtle: var(--bs-sienna-border-subtle); 374 | --bs-info-checkbox-svg: var(--bs-sienna-checkbox-svg); 375 | --bs-info-dash-svg: var(--bs-sienna-dash-svg); 376 | --bs-info-radio-svg: var(--bs-sienna-radio-svg); 377 | --bs-info-switch-svg: var(--bs-sienna-switch-svg); 378 | } 379 | 380 | [data-bs-core=elegant][data-bs-theme=dark] { 381 | /* Primary */ 382 | 383 | --bs-primary-hue: var(--bs-lightgray-hue); 384 | --bs-primary-saturation: var(--bs-lightgray-saturation); 385 | --bs-primary-100-hsl: var(--bs-lightgray-100-hsl); 386 | --bs-primary-200-hsl: var(--bs-lightgray-200-hsl); 387 | --bs-primary-300-hsl: var(--bs-lightgray-300-hsl); 388 | --bs-primary-400-hsl: var(--bs-lightgray-400-hsl); 389 | --bs-primary-500-hsl: var(--bs-lightgray-500-hsl); 390 | --bs-primary-600-hsl: var(--bs-lightgray-600-hsl); 391 | --bs-primary-700-hsl: var(--bs-lightgray-700-hsl); 392 | --bs-primary-800-hsl: var(--bs-lightgray-800-hsl); 393 | --bs-primary-900-hsl: var(--bs-lightgray-900-hsl); 394 | --bs-primary-100: var(--bs-lightgray-100); 395 | --bs-primary-200: var(--bs-lightgray-200); 396 | --bs-primary-300: var(--bs-lightgray-300); 397 | --bs-primary-400: var(--bs-lightgray-400); 398 | --bs-primary-500: var(--bs-lightgray-500); 399 | --bs-primary-600: var(--bs-lightgray-600); 400 | --bs-primary-700: var(--bs-lightgray-700); 401 | --bs-primary-800: var(--bs-lightgray-800); 402 | --bs-primary-900: var(--bs-lightgray-900); 403 | --bs-primary-hsl: var(--bs-lightgray-hsl); 404 | --bs-primary: var(--bs-lightgray); 405 | --bs-primary-foreground-hsl: var(--bs-lightgray-foreground-hsl); 406 | --bs-primary-foreground: var(--bs-lightgray-foreground); 407 | --bs-primary-text-emphasis-hsl: var(--bs-lightgray-text-emphasis-hsl); 408 | --bs-primary-text-emphasis: var(--bs-lightgray-text-emphasis); 409 | --bs-primary-hover-bg: var(--bs-lightgray-hover-bg); 410 | --bs-primary-active-bg: var(--bs-lightgray-active-bg); 411 | --bs-primary-bg-subtle: var(--bs-lightgray-bg-subtle); 412 | --bs-primary-border-subtle: var(--bs-lightgray-border-subtle); 413 | --bs-primary-checkbox-svg: var(--bs-lightgray-checkbox-svg); 414 | --bs-primary-dash-svg: var(--bs-lightgray-dash-svg); 415 | --bs-primary-radio-svg: var(--bs-lightgray-radio-svg); 416 | --bs-primary-switch-svg: var(--bs-lightgray-switch-svg); 417 | 418 | /* Info */ 419 | 420 | --bs-info-text-emphasis-hsl: var(--bs-sienna-text-emphasis-hsl); 421 | --bs-info-text-emphasis: var(--bs-sienna-text-emphasis); 422 | --bs-info-bg-subtle: var(--bs-sienna-bg-subtle); 423 | --bs-info-border-subtle: var(--bs-sienna-border-subtle); 424 | } 425 | 426 | /* Variables */ 427 | 428 | [data-bs-core=elegant] { 429 | /* Font family */ 430 | 431 | --bs-body-font-family: var(--bs-font-serif); 432 | 433 | /* Link */ 434 | 435 | --bs-link-color-hsl: var(--bs-primary-text-emphasis-hsl); 436 | --bs-link-hover-color-hsl: var(--bs-primary-hsl); 437 | 438 | /* Content (used as needed in cards, panels, menus, etc.) */ 439 | 440 | --bs-content-bg-hsl: var(--bs-body-bg-hsl); 441 | --bs-content-border-color: var(--bs-border-color); 442 | 443 | /* Form */ 444 | 445 | --bs-form-focus-border-color: var(--bs-info-border-subtle); 446 | --bs-form-focus-shadow-hsl: var(--bs-info-hsl); 447 | --bs-form-check-focus-border-color: var(--bs-info-border-subtle); 448 | } 449 | 450 | [data-bs-core=elegant]:not([data-bs-theme=dark]) { 451 | /* Color */ 452 | 453 | --bs-body-color-hsl: var(--bs-color-hue), var(--bs-color-saturation), 5%; 454 | --bs-secondary-color-hsl: var(--bs-color-hue), var(--bs-color-saturation), 30%; 455 | --bs-tertiary-color-hsl: var(--bs-color-hue), var(--bs-color-saturation), 55%; 456 | 457 | /* Background */ 458 | 459 | --bs-body-bg-hsl: var(--bs-info-hue), var(--bs-info-saturation), 97.5%; 460 | --bs-secondary-bg-hsl: var(--bs-info-hue), var(--bs-info-saturation), 95%; 461 | --bs-tertiary-bg-hsl: var(--bs-info-hue), var(--bs-info-saturation), 92.5%; 462 | 463 | /* Border */ 464 | 465 | --bs-border-color: var(--bs-lightgray-900); 466 | 467 | /* Action (used as needed in buttons, inputs, menu items, page links, etc.) */ 468 | 469 | --bs-action-color: hsl(var(--bs-color-hue), var(--bs-color-saturation), 10%); 470 | --bs-action-bg: hsl(var(--bs-info-hue), var(--bs-info-saturation), 99%); 471 | --bs-action-border-color: var(--bs-border-color); 472 | --bs-action-hover-bg: hsl(var(--bs-info-hue), var(--bs-info-saturation), 94%); 473 | --bs-action-active-bg: hsl(var(--bs-info-hue), var(--bs-info-saturation), 89%); 474 | --bs-action-disabled-bg: hsl(var(--bs-info-hue), var(--bs-info-saturation), 89%); 475 | } 476 | 477 | [data-bs-core=elegant][data-bs-theme=dark] { 478 | /* Color */ 479 | 480 | --bs-body-color-hsl: var(--bs-color-hue), var(--bs-color-saturation), 90%; 481 | --bs-secondary-color-hsl: var(--bs-color-hue), var(--bs-color-saturation), 65%; 482 | --bs-tertiary-color-hsl: var(--bs-color-hue), var(--bs-color-saturation), 40%; 483 | 484 | /* Action (used as needed in buttons, inputs, menu items, page links, etc.) */ 485 | 486 | --bs-action-color: hsl(var(--bs-color-hue), var(--bs-color-saturation), 85%); 487 | --bs-action-border-color: var(--bs-border-color); 488 | 489 | /* Contextual buttons */ 490 | 491 | --bs-ctx-btn-border-color: transparent; 492 | --bs-ctx-btn-bg-clip: border-box; 493 | 494 | /* Action bar (used as needed in range, progress, etc.) */ 495 | 496 | --bs-actionbar-border-color: hsla(var(--bs-white-hsl), 0.075); 497 | --bs-progresstrack-border-width: 0; 498 | --bs-progresstrack-box-shadow: inset 0 0 0 var(--bs-border-width) var(--bs-actionbar-border-color); 499 | --bs-progresstrack-bg-clip: border-box; 500 | } 501 | 502 | /* Sidebar */ 503 | 504 | [data-bs-core=elegant] .sidebar { 505 | --bs-sidebar-bg: var(--bs-secondary-bg); 506 | --bs-sidebar-border-width: 0; 507 | } 508 | 509 | [data-bs-core=elegant] .sidebar-nav .nav-link.active, 510 | [data-bs-core=elegant] .sidebar-nav .nav-link.show { 511 | padding-left: 0.75rem; 512 | background-color: hsla(var(--bs-emphasis-color-hsl), 0.05); 513 | border-left: var(--bs-border-width-2) solid var(--bs-info); 514 | } 515 | -------------------------------------------------------------------------------- /css/cores/halfmoon.elegant.css: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * ---------------------------------------------------------------------------- 4 | * Halfmoon CSS - Elegant theme 5 | * Copyright (c) 2023, Tahmid Khan | MIT License | https://www.gethalfmoon.com 6 | * ---------------------------------------------------------------------------- 7 | * The above notice must be included in its entirety when this file is used. 8 | */ 9 | 10 | /* Color palette */ 11 | 12 | [data-bs-core=elegant] { 13 | /* Light gray */ 14 | 15 | --bs-lightgray-hue: var(--bs-stone-hue); 16 | --bs-lightgray-saturation: var(--bs-stone-saturation); 17 | 18 | /* Dark gray */ 19 | 20 | --bs-darkgray-hue: var(--bs-stone-hue); 21 | --bs-darkgray-saturation: var(--bs-stone-saturation); 22 | 23 | /* Primary */ 24 | 25 | --bs-primary-hue: var(--bs-sable-hue); 26 | --bs-primary-saturation: var(--bs-sable-saturation); 27 | --bs-primary-100-hsl: var(--bs-sable-100-hsl); 28 | --bs-primary-200-hsl: var(--bs-sable-200-hsl); 29 | --bs-primary-300-hsl: var(--bs-sable-300-hsl); 30 | --bs-primary-400-hsl: var(--bs-sable-400-hsl); 31 | --bs-primary-500-hsl: var(--bs-sable-500-hsl); 32 | --bs-primary-600-hsl: var(--bs-sable-600-hsl); 33 | --bs-primary-700-hsl: var(--bs-sable-700-hsl); 34 | --bs-primary-800-hsl: var(--bs-sable-800-hsl); 35 | --bs-primary-900-hsl: var(--bs-sable-900-hsl); 36 | --bs-primary-100: var(--bs-sable-100); 37 | --bs-primary-200: var(--bs-sable-200); 38 | --bs-primary-300: var(--bs-sable-300); 39 | --bs-primary-400: var(--bs-sable-400); 40 | --bs-primary-500: var(--bs-sable-500); 41 | --bs-primary-600: var(--bs-sable-600); 42 | --bs-primary-700: var(--bs-sable-700); 43 | --bs-primary-800: var(--bs-sable-800); 44 | --bs-primary-900: var(--bs-sable-900); 45 | --bs-primary-hsl: var(--bs-sable-hsl); 46 | --bs-primary: var(--bs-sable); 47 | --bs-primary-foreground-hsl: var(--bs-sable-foreground-hsl); 48 | --bs-primary-foreground: var(--bs-sable-foreground); 49 | --bs-primary-text-emphasis-hsl: var(--bs-sable-text-emphasis-hsl); 50 | --bs-primary-text-emphasis: var(--bs-sable-text-emphasis); 51 | --bs-primary-hover-bg: var(--bs-sable-hover-bg); 52 | --bs-primary-active-bg: var(--bs-sable-active-bg); 53 | --bs-primary-bg-subtle: var(--bs-sable-bg-subtle); 54 | --bs-primary-border-subtle: var(--bs-sable-border-subtle); 55 | --bs-primary-checkbox-svg: var(--bs-sable-checkbox-svg); 56 | --bs-primary-dash-svg: var(--bs-sable-dash-svg); 57 | --bs-primary-radio-svg: var(--bs-sable-radio-svg); 58 | --bs-primary-switch-svg: var(--bs-sable-switch-svg); 59 | 60 | /* Info */ 61 | 62 | --bs-info-hue: var(--bs-sienna-hue); 63 | --bs-info-saturation: var(--bs-sienna-saturation); 64 | --bs-info-100-hsl: var(--bs-sienna-100-hsl); 65 | --bs-info-200-hsl: var(--bs-sienna-200-hsl); 66 | --bs-info-300-hsl: var(--bs-sienna-300-hsl); 67 | --bs-info-400-hsl: var(--bs-sienna-400-hsl); 68 | --bs-info-500-hsl: var(--bs-sienna-500-hsl); 69 | --bs-info-600-hsl: var(--bs-sienna-600-hsl); 70 | --bs-info-700-hsl: var(--bs-sienna-700-hsl); 71 | --bs-info-800-hsl: var(--bs-sienna-800-hsl); 72 | --bs-info-900-hsl: var(--bs-sienna-900-hsl); 73 | --bs-info-100: var(--bs-sienna-100); 74 | --bs-info-200: var(--bs-sienna-200); 75 | --bs-info-300: var(--bs-sienna-300); 76 | --bs-info-400: var(--bs-sienna-400); 77 | --bs-info-500: var(--bs-sienna-500); 78 | --bs-info-600: var(--bs-sienna-600); 79 | --bs-info-700: var(--bs-sienna-700); 80 | --bs-info-800: var(--bs-sienna-800); 81 | --bs-info-900: var(--bs-sienna-900); 82 | --bs-info-hsl: var(--bs-sienna-hsl); 83 | --bs-info: var(--bs-sienna); 84 | --bs-info-foreground-hsl: var(--bs-sienna-foreground-hsl); 85 | --bs-info-foreground: var(--bs-sienna-foreground); 86 | --bs-info-text-emphasis-hsl: var(--bs-sienna-text-emphasis-hsl); 87 | --bs-info-text-emphasis: var(--bs-sienna-text-emphasis); 88 | --bs-info-hover-bg: var(--bs-sienna-hover-bg); 89 | --bs-info-active-bg: var(--bs-sienna-active-bg); 90 | --bs-info-bg-subtle: var(--bs-sienna-bg-subtle); 91 | --bs-info-border-subtle: var(--bs-sienna-border-subtle); 92 | --bs-info-checkbox-svg: var(--bs-sienna-checkbox-svg); 93 | --bs-info-dash-svg: var(--bs-sienna-dash-svg); 94 | --bs-info-radio-svg: var(--bs-sienna-radio-svg); 95 | --bs-info-switch-svg: var(--bs-sienna-switch-svg); 96 | } 97 | 98 | [data-bs-core=elegant][data-bs-theme=dark] { 99 | /* Primary */ 100 | 101 | --bs-primary-hue: var(--bs-lightgray-hue); 102 | --bs-primary-saturation: var(--bs-lightgray-saturation); 103 | --bs-primary-100-hsl: var(--bs-lightgray-100-hsl); 104 | --bs-primary-200-hsl: var(--bs-lightgray-200-hsl); 105 | --bs-primary-300-hsl: var(--bs-lightgray-300-hsl); 106 | --bs-primary-400-hsl: var(--bs-lightgray-400-hsl); 107 | --bs-primary-500-hsl: var(--bs-lightgray-500-hsl); 108 | --bs-primary-600-hsl: var(--bs-lightgray-600-hsl); 109 | --bs-primary-700-hsl: var(--bs-lightgray-700-hsl); 110 | --bs-primary-800-hsl: var(--bs-lightgray-800-hsl); 111 | --bs-primary-900-hsl: var(--bs-lightgray-900-hsl); 112 | --bs-primary-100: var(--bs-lightgray-100); 113 | --bs-primary-200: var(--bs-lightgray-200); 114 | --bs-primary-300: var(--bs-lightgray-300); 115 | --bs-primary-400: var(--bs-lightgray-400); 116 | --bs-primary-500: var(--bs-lightgray-500); 117 | --bs-primary-600: var(--bs-lightgray-600); 118 | --bs-primary-700: var(--bs-lightgray-700); 119 | --bs-primary-800: var(--bs-lightgray-800); 120 | --bs-primary-900: var(--bs-lightgray-900); 121 | --bs-primary-hsl: var(--bs-lightgray-hsl); 122 | --bs-primary: var(--bs-lightgray); 123 | --bs-primary-foreground-hsl: var(--bs-lightgray-foreground-hsl); 124 | --bs-primary-foreground: var(--bs-lightgray-foreground); 125 | --bs-primary-text-emphasis-hsl: var(--bs-lightgray-text-emphasis-hsl); 126 | --bs-primary-text-emphasis: var(--bs-lightgray-text-emphasis); 127 | --bs-primary-hover-bg: var(--bs-lightgray-hover-bg); 128 | --bs-primary-active-bg: var(--bs-lightgray-active-bg); 129 | --bs-primary-bg-subtle: var(--bs-lightgray-bg-subtle); 130 | --bs-primary-border-subtle: var(--bs-lightgray-border-subtle); 131 | --bs-primary-checkbox-svg: var(--bs-lightgray-checkbox-svg); 132 | --bs-primary-dash-svg: var(--bs-lightgray-dash-svg); 133 | --bs-primary-radio-svg: var(--bs-lightgray-radio-svg); 134 | --bs-primary-switch-svg: var(--bs-lightgray-switch-svg); 135 | 136 | /* Info */ 137 | 138 | --bs-info-text-emphasis-hsl: var(--bs-sienna-text-emphasis-hsl); 139 | --bs-info-text-emphasis: var(--bs-sienna-text-emphasis); 140 | --bs-info-bg-subtle: var(--bs-sienna-bg-subtle); 141 | --bs-info-border-subtle: var(--bs-sienna-border-subtle); 142 | } 143 | 144 | /* Variables */ 145 | 146 | [data-bs-core=elegant] { 147 | /* Font family */ 148 | 149 | --bs-body-font-family: var(--bs-font-serif); 150 | 151 | /* Link */ 152 | 153 | --bs-link-color-hsl: var(--bs-primary-text-emphasis-hsl); 154 | --bs-link-hover-color-hsl: var(--bs-primary-hsl); 155 | 156 | /* Content (used as needed in cards, panels, menus, etc.) */ 157 | 158 | --bs-content-bg-hsl: var(--bs-body-bg-hsl); 159 | --bs-content-border-color: var(--bs-border-color); 160 | 161 | /* Form */ 162 | 163 | --bs-form-focus-border-color: var(--bs-info-border-subtle); 164 | --bs-form-focus-shadow-hsl: var(--bs-info-hsl); 165 | --bs-form-check-focus-border-color: var(--bs-info-border-subtle); 166 | } 167 | 168 | [data-bs-core=elegant]:not([data-bs-theme=dark]) { 169 | /* Color */ 170 | 171 | --bs-body-color-hsl: var(--bs-color-hue), var(--bs-color-saturation), 5%; 172 | --bs-secondary-color-hsl: var(--bs-color-hue), var(--bs-color-saturation), 30%; 173 | --bs-tertiary-color-hsl: var(--bs-color-hue), var(--bs-color-saturation), 55%; 174 | 175 | /* Background */ 176 | 177 | --bs-body-bg-hsl: var(--bs-info-hue), var(--bs-info-saturation), 97.5%; 178 | --bs-secondary-bg-hsl: var(--bs-info-hue), var(--bs-info-saturation), 95%; 179 | --bs-tertiary-bg-hsl: var(--bs-info-hue), var(--bs-info-saturation), 92.5%; 180 | 181 | /* Border */ 182 | 183 | --bs-border-color: var(--bs-lightgray-900); 184 | 185 | /* Action (used as needed in buttons, inputs, menu items, page links, etc.) */ 186 | 187 | --bs-action-color: hsl(var(--bs-color-hue), var(--bs-color-saturation), 10%); 188 | --bs-action-bg: hsl(var(--bs-info-hue), var(--bs-info-saturation), 99%); 189 | --bs-action-border-color: var(--bs-border-color); 190 | --bs-action-hover-bg: hsl(var(--bs-info-hue), var(--bs-info-saturation), 94%); 191 | --bs-action-active-bg: hsl(var(--bs-info-hue), var(--bs-info-saturation), 89%); 192 | --bs-action-disabled-bg: hsl(var(--bs-info-hue), var(--bs-info-saturation), 89%); 193 | } 194 | 195 | [data-bs-core=elegant][data-bs-theme=dark] { 196 | /* Color */ 197 | 198 | --bs-body-color-hsl: var(--bs-color-hue), var(--bs-color-saturation), 90%; 199 | --bs-secondary-color-hsl: var(--bs-color-hue), var(--bs-color-saturation), 65%; 200 | --bs-tertiary-color-hsl: var(--bs-color-hue), var(--bs-color-saturation), 40%; 201 | 202 | /* Action (used as needed in buttons, inputs, menu items, page links, etc.) */ 203 | 204 | --bs-action-color: hsl(var(--bs-color-hue), var(--bs-color-saturation), 85%); 205 | --bs-action-border-color: var(--bs-border-color); 206 | 207 | /* Contextual buttons */ 208 | 209 | --bs-ctx-btn-border-color: transparent; 210 | --bs-ctx-btn-bg-clip: border-box; 211 | 212 | /* Action bar (used as needed in range, progress, etc.) */ 213 | 214 | --bs-actionbar-border-color: hsla(var(--bs-white-hsl), 0.075); 215 | --bs-progresstrack-border-width: 0; 216 | --bs-progresstrack-box-shadow: inset 0 0 0 var(--bs-border-width) var(--bs-actionbar-border-color); 217 | --bs-progresstrack-bg-clip: border-box; 218 | } 219 | 220 | /* Sidebar */ 221 | 222 | [data-bs-core=elegant] .sidebar { 223 | --bs-sidebar-bg: var(--bs-secondary-bg); 224 | --bs-sidebar-border-width: 0; 225 | } 226 | 227 | [data-bs-core=elegant] .sidebar-nav .nav-link.active, 228 | [data-bs-core=elegant] .sidebar-nav .nav-link.show { 229 | padding-left: 0.75rem; 230 | background-color: hsla(var(--bs-emphasis-color-hsl), 0.05); 231 | border-left: var(--bs-border-width-2) solid var(--bs-info); 232 | } 233 | -------------------------------------------------------------------------------- /css/cores/halfmoon.modern.css: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * ---------------------------------------------------------------------------- 4 | * Halfmoon CSS - Modern theme 5 | * Copyright (c) 2023, Tahmid Khan | MIT License | https://www.gethalfmoon.com 6 | * ---------------------------------------------------------------------------- 7 | * The above notice must be included in its entirety when this file is used. 8 | */ 9 | 10 | /* Color palette */ 11 | 12 | [data-bs-core=modern] { 13 | /* Gray */ 14 | 15 | --bs-slate-hue: 216; 16 | --bs-slate-saturation: 20%; 17 | 18 | /* Light gray */ 19 | 20 | --bs-lightgray-hue: var(--bs-slate-hue); 21 | --bs-lightgray-saturation: var(--bs-slate-saturation); 22 | 23 | /* Sable (almost black) */ 24 | 25 | --bs-sable-hue: var(--bs-darkgray-hue); 26 | --bs-sable-saturation: var(--bs-darkgray-saturation); 27 | --bs-sable-100-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 31%; 28 | --bs-sable-200-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 29%; 29 | --bs-sable-300-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 27%; 30 | --bs-sable-400-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 25%; 31 | --bs-sable-500-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 23%; 32 | --bs-sable-600-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 21%; 33 | --bs-sable-700-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 19%; 34 | --bs-sable-800-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 17%; 35 | --bs-sable-900-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 15%; 36 | --bs-sable-100: hsl(var(--bs-sable-100-hsl)); 37 | --bs-sable-200: hsl(var(--bs-sable-200-hsl)); 38 | --bs-sable-300: hsl(var(--bs-sable-300-hsl)); 39 | --bs-sable-400: hsl(var(--bs-sable-400-hsl)); 40 | --bs-sable-500: hsl(var(--bs-sable-500-hsl)); 41 | --bs-sable-600: hsl(var(--bs-sable-600-hsl)); 42 | --bs-sable-700: hsl(var(--bs-sable-700-hsl)); 43 | --bs-sable-800: hsl(var(--bs-sable-800-hsl)); 44 | --bs-sable-900: hsl(var(--bs-sable-900-hsl)); 45 | --bs-sable-hsl: var(--bs-sable-500-hsl); 46 | --bs-sable: hsl(var(--bs-sable-hsl)); 47 | --bs-sable-foreground-hsl: var(--bs-white-hsl); 48 | --bs-sable-foreground: hsl(var(--bs-sable-foreground-hsl)); 49 | --bs-sable-text-emphasis-hsl: var(--bs-sable-600-hsl); 50 | --bs-sable-text-emphasis: hsl(var(--bs-sable-text-emphasis-hsl)); 51 | --bs-sable-hover-bg: var(--bs-sable-600); 52 | --bs-sable-active-bg: var(--bs-sable-700); 53 | --bs-sable-bg-subtle: hsl(var(--bs-sable-hue), var(--bs-sable-saturation), 70%); 54 | --bs-sable-border-subtle: var(--bs-sable-400); 55 | --bs-sable-checkbox-svg: var(--bs-checkbox-svg-light); 56 | --bs-sable-dash-svg: var(--bs-dash-svg-light); 57 | --bs-sable-radio-svg: var(--bs-radio-svg-light); 58 | --bs-sable-switch-svg: var(--bs-switch-svg-light); 59 | 60 | /* Primary */ 61 | 62 | --bs-primary-hue: var(--bs-navy-hue); 63 | --bs-primary-saturation: var(--bs-navy-saturation); 64 | --bs-primary-100-hsl: var(--bs-navy-100-hsl); 65 | --bs-primary-200-hsl: var(--bs-navy-200-hsl); 66 | --bs-primary-300-hsl: var(--bs-navy-300-hsl); 67 | --bs-primary-400-hsl: var(--bs-navy-400-hsl); 68 | --bs-primary-500-hsl: var(--bs-navy-500-hsl); 69 | --bs-primary-600-hsl: var(--bs-navy-600-hsl); 70 | --bs-primary-700-hsl: var(--bs-navy-700-hsl); 71 | --bs-primary-800-hsl: var(--bs-navy-800-hsl); 72 | --bs-primary-900-hsl: var(--bs-navy-900-hsl); 73 | --bs-primary-100: var(--bs-navy-100); 74 | --bs-primary-200: var(--bs-navy-200); 75 | --bs-primary-300: var(--bs-navy-300); 76 | --bs-primary-400: var(--bs-navy-400); 77 | --bs-primary-500: var(--bs-navy-500); 78 | --bs-primary-600: var(--bs-navy-600); 79 | --bs-primary-700: var(--bs-navy-700); 80 | --bs-primary-800: var(--bs-navy-800); 81 | --bs-primary-900: var(--bs-navy-900); 82 | --bs-primary-hsl: var(--bs-navy-hsl); 83 | --bs-primary: var(--bs-navy); 84 | --bs-primary-foreground-hsl: var(--bs-navy-foreground-hsl); 85 | --bs-primary-foreground: var(--bs-navy-foreground); 86 | --bs-primary-text-emphasis-hsl: var(--bs-navy-text-emphasis-hsl); 87 | --bs-primary-text-emphasis: var(--bs-navy-text-emphasis); 88 | --bs-primary-hover-bg: var(--bs-navy-hover-bg); 89 | --bs-primary-active-bg: var(--bs-navy-active-bg); 90 | --bs-primary-bg-subtle: var(--bs-navy-bg-subtle); 91 | --bs-primary-border-subtle: var(--bs-navy-border-subtle); 92 | --bs-primary-checkbox-svg: var(--bs-navy-checkbox-svg); 93 | --bs-primary-dash-svg: var(--bs-navy-dash-svg); 94 | --bs-primary-radio-svg: var(--bs-navy-radio-svg); 95 | --bs-primary-switch-svg: var(--bs-navy-switch-svg); 96 | 97 | /* Info */ 98 | 99 | --bs-info-hue: var(--bs-blue-hue); 100 | --bs-info-saturation: var(--bs-blue-saturation); 101 | --bs-info-100-hsl: var(--bs-blue-100-hsl); 102 | --bs-info-200-hsl: var(--bs-blue-200-hsl); 103 | --bs-info-300-hsl: var(--bs-blue-300-hsl); 104 | --bs-info-400-hsl: var(--bs-blue-400-hsl); 105 | --bs-info-500-hsl: var(--bs-blue-500-hsl); 106 | --bs-info-600-hsl: var(--bs-blue-600-hsl); 107 | --bs-info-700-hsl: var(--bs-blue-700-hsl); 108 | --bs-info-800-hsl: var(--bs-blue-800-hsl); 109 | --bs-info-900-hsl: var(--bs-blue-900-hsl); 110 | --bs-info-100: var(--bs-blue-100); 111 | --bs-info-200: var(--bs-blue-200); 112 | --bs-info-300: var(--bs-blue-300); 113 | --bs-info-400: var(--bs-blue-400); 114 | --bs-info-500: var(--bs-blue-500); 115 | --bs-info-600: var(--bs-blue-600); 116 | --bs-info-700: var(--bs-blue-700); 117 | --bs-info-800: var(--bs-blue-800); 118 | --bs-info-900: var(--bs-blue-900); 119 | --bs-info-hsl: var(--bs-blue-hsl); 120 | --bs-info: var(--bs-blue); 121 | --bs-info-foreground-hsl: var(--bs-blue-foreground-hsl); 122 | --bs-info-foreground: var(--bs-blue-foreground); 123 | --bs-info-text-emphasis-hsl: var(--bs-blue-text-emphasis-hsl); 124 | --bs-info-text-emphasis: var(--bs-blue-text-emphasis); 125 | --bs-info-hover-bg: var(--bs-blue-hover-bg); 126 | --bs-info-active-bg: var(--bs-blue-active-bg); 127 | --bs-info-bg-subtle: var(--bs-blue-bg-subtle); 128 | --bs-info-border-subtle: var(--bs-blue-border-subtle); 129 | --bs-info-checkbox-svg: var(--bs-blue-checkbox-svg); 130 | --bs-info-dash-svg: var(--bs-blue-dash-svg); 131 | --bs-info-radio-svg: var(--bs-blue-radio-svg); 132 | --bs-info-switch-svg: var(--bs-blue-switch-svg); 133 | } 134 | 135 | [data-bs-core=modern][data-bs-theme=dark] { 136 | /* Dark gray */ 137 | 138 | --bs-darkgray-text-emphasis-hsl: var(--bs-darkgray-200-hsl); 139 | --bs-darkgray-text-emphasis: hsl(var(--bs-darkgray-text-emphasis-hsl)); 140 | 141 | /* Sable (black) */ 142 | 143 | --bs-sable-text-emphasis-hsl: var(--bs-sable-400-hsl); 144 | --bs-sable-text-emphasis: hsl(var(--bs-sable-text-emphasis-hsl)); 145 | --bs-sable-bg-subtle: hsl(var(--bs-sable-hue), var(--bs-sable-saturation), 14%); 146 | --bs-sable-border-subtle: var(--bs-sable-600); 147 | 148 | /* Blue */ 149 | 150 | --bs-blue-text-emphasis-hsl: var(--bs-blue-300-hsl); 151 | --bs-blue-text-emphasis: hsl(var(--bs-blue-text-emphasis-hsl)); 152 | 153 | /* Primary */ 154 | 155 | --bs-primary-hue: var(--bs-sky-hue); 156 | --bs-primary-saturation: var(--bs-sky-saturation); 157 | --bs-primary-100-hsl: var(--bs-sky-100-hsl); 158 | --bs-primary-200-hsl: var(--bs-sky-200-hsl); 159 | --bs-primary-300-hsl: var(--bs-sky-300-hsl); 160 | --bs-primary-400-hsl: var(--bs-sky-400-hsl); 161 | --bs-primary-500-hsl: var(--bs-sky-500-hsl); 162 | --bs-primary-600-hsl: var(--bs-sky-600-hsl); 163 | --bs-primary-700-hsl: var(--bs-sky-700-hsl); 164 | --bs-primary-800-hsl: var(--bs-sky-800-hsl); 165 | --bs-primary-900-hsl: var(--bs-sky-900-hsl); 166 | --bs-primary-100: var(--bs-sky-100); 167 | --bs-primary-200: var(--bs-sky-200); 168 | --bs-primary-300: var(--bs-sky-300); 169 | --bs-primary-400: var(--bs-sky-400); 170 | --bs-primary-500: var(--bs-sky-500); 171 | --bs-primary-600: var(--bs-sky-600); 172 | --bs-primary-700: var(--bs-sky-700); 173 | --bs-primary-800: var(--bs-sky-800); 174 | --bs-primary-900: var(--bs-sky-900); 175 | --bs-primary-hsl: var(--bs-sky-hsl); 176 | --bs-primary: var(--bs-sky); 177 | --bs-primary-foreground-hsl: var(--bs-sky-foreground-hsl); 178 | --bs-primary-foreground: var(--bs-sky-foreground); 179 | --bs-primary-text-emphasis-hsl: var(--bs-sky-text-emphasis-hsl); 180 | --bs-primary-text-emphasis: var(--bs-sky-text-emphasis); 181 | --bs-primary-hover-bg: var(--bs-sky-hover-bg); 182 | --bs-primary-active-bg: var(--bs-sky-active-bg); 183 | --bs-primary-bg-subtle: var(--bs-sky-bg-subtle); 184 | --bs-primary-border-subtle: var(--bs-sky-border-subtle); 185 | --bs-primary-checkbox-svg: var(--bs-sky-checkbox-svg); 186 | --bs-primary-dash-svg: var(--bs-sky-dash-svg); 187 | --bs-primary-radio-svg: var(--bs-sky-radio-svg); 188 | --bs-primary-switch-svg: var(--bs-sky-switch-svg); 189 | 190 | /* Info */ 191 | 192 | --bs-info-text-emphasis-hsl: var(--bs-blue-text-emphasis-hsl); 193 | --bs-info-text-emphasis: var(--bs-blue-text-emphasis); 194 | --bs-info-bg-subtle: var(--bs-blue-bg-subtle); 195 | --bs-info-border-subtle: var(--bs-blue-border-subtle); 196 | } 197 | 198 | /* Variables */ 199 | 200 | [data-bs-core=modern] { 201 | /* Link */ 202 | 203 | --bs-link-color-hsl: var(--bs-info-text-emphasis-hsl); 204 | --bs-link-hover-color-hsl: var(--bs-info-hsl); 205 | 206 | /* Content (used as needed in cards, panels, menus, etc.) */ 207 | 208 | --bs-content-bg-hsl: var(--bs-body-bg-hsl); 209 | --bs-content-border-color: var(--bs-border-color); 210 | 211 | /* Form */ 212 | 213 | --bs-form-focus-border-color: var(--bs-info-border-subtle); 214 | --bs-form-focus-shadow-hsl: var(--bs-info-hsl); 215 | --bs-form-check-focus-border-color: var(--bs-info-border-subtle); 216 | } 217 | 218 | [data-bs-core=modern]:not([data-bs-theme=dark]) { 219 | /* Background */ 220 | 221 | --bs-body-bg-hsl: var(--bs-white-hsl); 222 | --bs-secondary-bg-hsl: var(--bs-lightgray-hue), var(--bs-lightgray-saturation), 98.75%; 223 | --bs-tertiary-bg-hsl: var(--bs-lightgray-hue), var(--bs-lightgray-saturation), 97.5%; 224 | 225 | /* Border */ 226 | 227 | --bs-border-color: var(--bs-lightgray-700); 228 | --bs-border-color-light: var(--bs-lightgray-500); 229 | } 230 | 231 | [data-bs-core=modern][data-bs-theme=dark] { 232 | /* Background */ 233 | 234 | --bs-body-bg-hsl: var(--bs-sable-900-hsl); 235 | --bs-secondary-bg-hsl: var(--bs-sable-800-hsl); 236 | --bs-tertiary-bg-hsl: var(--bs-sable-700-hsl); 237 | 238 | /* Border */ 239 | 240 | --bs-border-color: var(--bs-gray-900); 241 | 242 | /* Content (used as needed in cards, panels, menus, etc.) */ 243 | 244 | --bs-content-floating-bg-hsl: var(--bs-sable-hue), var(--bs-sable-saturation), 16.5%; 245 | 246 | /* Action (used as needed in buttons, inputs, menu items, page links, etc.) */ 247 | 248 | --bs-action-border-color: var(--bs-border-color); 249 | 250 | /* Contextual buttons */ 251 | 252 | --bs-ctx-btn-border-color: transparent; 253 | --bs-ctx-btn-bg-clip: border-box; 254 | 255 | /* Action bar (used as needed in range, progress, etc.) */ 256 | 257 | --bs-actionbar-border-color: hsla(var(--bs-white-hsl), 0.075); 258 | --bs-progresstrack-border-width: 0; 259 | --bs-progresstrack-box-shadow: inset 0 0 0 var(--bs-border-width) var(--bs-actionbar-border-color); 260 | --bs-progresstrack-bg-clip: border-box; 261 | } 262 | 263 | /* Sidebar */ 264 | 265 | [data-bs-core=modern] .sidebar { 266 | --bs-sidebar-item-padding-x: 1rem; 267 | --bs-sidebar-item-padding-y: 0.25rem; 268 | --bs-sidebar-header-font-weight: var(--bs-font-weight-bold); 269 | --bs-sidebar-divider-bg: var(--bs-sidebar-bg); 270 | } 271 | 272 | [data-bs-core=modern] .sidebar-nav .nav-link { 273 | border-left: var(--bs-border-width) solid var(--bs-border-color-light); 274 | } 275 | 276 | [data-bs-core=modern] .sidebar-nav .nav-link.active, 277 | [data-bs-core=modern] .sidebar-nav .nav-link.show { 278 | font-weight: var(--bs-font-weight-bold); 279 | border-color: currentColor; 280 | -webkit-font-smoothing: antialiased; 281 | -moz-osx-font-smoothing: grayscale; 282 | } 283 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "halfmoon", 3 | "version": "2.0.2", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "halfmoon", 9 | "version": "2.0.2", 10 | "license": "MIT", 11 | "dependencies": { 12 | "csso-cli": "^4.0.2", 13 | "rtlcss": "^4.3.0" 14 | } 15 | }, 16 | "node_modules/ansi-colors": { 17 | "version": "4.1.3", 18 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", 19 | "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", 20 | "engines": { 21 | "node": ">=6" 22 | } 23 | }, 24 | "node_modules/anymatch": { 25 | "version": "3.1.3", 26 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 27 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 28 | "dependencies": { 29 | "normalize-path": "^3.0.0", 30 | "picomatch": "^2.0.4" 31 | }, 32 | "engines": { 33 | "node": ">= 8" 34 | } 35 | }, 36 | "node_modules/binary-extensions": { 37 | "version": "2.3.0", 38 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 39 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 40 | "engines": { 41 | "node": ">=8" 42 | }, 43 | "funding": { 44 | "url": "https://github.com/sponsors/sindresorhus" 45 | } 46 | }, 47 | "node_modules/braces": { 48 | "version": "3.0.3", 49 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 50 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 51 | "dependencies": { 52 | "fill-range": "^7.1.1" 53 | }, 54 | "engines": { 55 | "node": ">=8" 56 | } 57 | }, 58 | "node_modules/chokidar": { 59 | "version": "3.6.0", 60 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 61 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 62 | "dependencies": { 63 | "anymatch": "~3.1.2", 64 | "braces": "~3.0.2", 65 | "glob-parent": "~5.1.2", 66 | "is-binary-path": "~2.1.0", 67 | "is-glob": "~4.0.1", 68 | "normalize-path": "~3.0.0", 69 | "readdirp": "~3.6.0" 70 | }, 71 | "engines": { 72 | "node": ">= 8.10.0" 73 | }, 74 | "funding": { 75 | "url": "https://paulmillr.com/funding/" 76 | }, 77 | "optionalDependencies": { 78 | "fsevents": "~2.3.2" 79 | } 80 | }, 81 | "node_modules/clap": { 82 | "version": "3.1.1", 83 | "resolved": "https://registry.npmjs.org/clap/-/clap-3.1.1.tgz", 84 | "integrity": "sha512-vp42956Ax06WwaaheYEqEOgXZ3VKJxgccZ0gJL0HpyiupkIS9RVJFo5eDU1BPeQAOqz+cclndZg4DCqG1sJReQ==", 85 | "dependencies": { 86 | "ansi-colors": "^4.1.1" 87 | }, 88 | "engines": { 89 | "node": "^12.20.0 || ^14.13.0 || >=15.0.0", 90 | "npm": ">=7.0.0" 91 | } 92 | }, 93 | "node_modules/css-tree": { 94 | "version": "2.2.1", 95 | "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", 96 | "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", 97 | "dependencies": { 98 | "mdn-data": "2.0.28", 99 | "source-map-js": "^1.0.1" 100 | }, 101 | "engines": { 102 | "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", 103 | "npm": ">=7.0.0" 104 | } 105 | }, 106 | "node_modules/csso": { 107 | "version": "5.0.5", 108 | "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", 109 | "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", 110 | "dependencies": { 111 | "css-tree": "~2.2.0" 112 | }, 113 | "engines": { 114 | "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", 115 | "npm": ">=7.0.0" 116 | } 117 | }, 118 | "node_modules/csso-cli": { 119 | "version": "4.0.2", 120 | "resolved": "https://registry.npmjs.org/csso-cli/-/csso-cli-4.0.2.tgz", 121 | "integrity": "sha512-p/VipA45w8EmS8Lv6wGtE+UdsbFlqUBGhL9FCTGKxd5dC07mtg3BbZaMzMh0X+oIl2JUGR/mPx5YzuNnTM2a3w==", 122 | "dependencies": { 123 | "chokidar": "^3.5.3", 124 | "clap": "^3.1.1", 125 | "csso": "^5.0.4", 126 | "source-map-js": "^1.0.2" 127 | }, 128 | "bin": { 129 | "csso": "bin/csso" 130 | }, 131 | "engines": { 132 | "node": ">=12.20.0" 133 | } 134 | }, 135 | "node_modules/escalade": { 136 | "version": "3.2.0", 137 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 138 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 139 | "engines": { 140 | "node": ">=6" 141 | } 142 | }, 143 | "node_modules/fill-range": { 144 | "version": "7.1.1", 145 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 146 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 147 | "dependencies": { 148 | "to-regex-range": "^5.0.1" 149 | }, 150 | "engines": { 151 | "node": ">=8" 152 | } 153 | }, 154 | "node_modules/fsevents": { 155 | "version": "2.3.3", 156 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 157 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 158 | "hasInstallScript": true, 159 | "optional": true, 160 | "os": [ 161 | "darwin" 162 | ], 163 | "engines": { 164 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 165 | } 166 | }, 167 | "node_modules/glob-parent": { 168 | "version": "5.1.2", 169 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 170 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 171 | "dependencies": { 172 | "is-glob": "^4.0.1" 173 | }, 174 | "engines": { 175 | "node": ">= 6" 176 | } 177 | }, 178 | "node_modules/is-binary-path": { 179 | "version": "2.1.0", 180 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 181 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 182 | "dependencies": { 183 | "binary-extensions": "^2.0.0" 184 | }, 185 | "engines": { 186 | "node": ">=8" 187 | } 188 | }, 189 | "node_modules/is-extglob": { 190 | "version": "2.1.1", 191 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 192 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 193 | "engines": { 194 | "node": ">=0.10.0" 195 | } 196 | }, 197 | "node_modules/is-glob": { 198 | "version": "4.0.3", 199 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 200 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 201 | "dependencies": { 202 | "is-extglob": "^2.1.1" 203 | }, 204 | "engines": { 205 | "node": ">=0.10.0" 206 | } 207 | }, 208 | "node_modules/is-number": { 209 | "version": "7.0.0", 210 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 211 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 212 | "engines": { 213 | "node": ">=0.12.0" 214 | } 215 | }, 216 | "node_modules/mdn-data": { 217 | "version": "2.0.28", 218 | "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", 219 | "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" 220 | }, 221 | "node_modules/nanoid": { 222 | "version": "3.3.7", 223 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 224 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 225 | "funding": [ 226 | { 227 | "type": "github", 228 | "url": "https://github.com/sponsors/ai" 229 | } 230 | ], 231 | "bin": { 232 | "nanoid": "bin/nanoid.cjs" 233 | }, 234 | "engines": { 235 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 236 | } 237 | }, 238 | "node_modules/normalize-path": { 239 | "version": "3.0.0", 240 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 241 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 242 | "engines": { 243 | "node": ">=0.10.0" 244 | } 245 | }, 246 | "node_modules/picocolors": { 247 | "version": "1.1.0", 248 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", 249 | "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" 250 | }, 251 | "node_modules/picomatch": { 252 | "version": "2.3.1", 253 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 254 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 255 | "engines": { 256 | "node": ">=8.6" 257 | }, 258 | "funding": { 259 | "url": "https://github.com/sponsors/jonschlinkert" 260 | } 261 | }, 262 | "node_modules/postcss": { 263 | "version": "8.4.44", 264 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.44.tgz", 265 | "integrity": "sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==", 266 | "funding": [ 267 | { 268 | "type": "opencollective", 269 | "url": "https://opencollective.com/postcss/" 270 | }, 271 | { 272 | "type": "tidelift", 273 | "url": "https://tidelift.com/funding/github/npm/postcss" 274 | }, 275 | { 276 | "type": "github", 277 | "url": "https://github.com/sponsors/ai" 278 | } 279 | ], 280 | "dependencies": { 281 | "nanoid": "^3.3.7", 282 | "picocolors": "^1.0.1", 283 | "source-map-js": "^1.2.0" 284 | }, 285 | "engines": { 286 | "node": "^10 || ^12 || >=14" 287 | } 288 | }, 289 | "node_modules/readdirp": { 290 | "version": "3.6.0", 291 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 292 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 293 | "dependencies": { 294 | "picomatch": "^2.2.1" 295 | }, 296 | "engines": { 297 | "node": ">=8.10.0" 298 | } 299 | }, 300 | "node_modules/rtlcss": { 301 | "version": "4.3.0", 302 | "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", 303 | "integrity": "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==", 304 | "dependencies": { 305 | "escalade": "^3.1.1", 306 | "picocolors": "^1.0.0", 307 | "postcss": "^8.4.21", 308 | "strip-json-comments": "^3.1.1" 309 | }, 310 | "bin": { 311 | "rtlcss": "bin/rtlcss.js" 312 | }, 313 | "engines": { 314 | "node": ">=12.0.0" 315 | } 316 | }, 317 | "node_modules/source-map-js": { 318 | "version": "1.2.0", 319 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", 320 | "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", 321 | "engines": { 322 | "node": ">=0.10.0" 323 | } 324 | }, 325 | "node_modules/strip-json-comments": { 326 | "version": "3.1.1", 327 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 328 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 329 | "engines": { 330 | "node": ">=8" 331 | }, 332 | "funding": { 333 | "url": "https://github.com/sponsors/sindresorhus" 334 | } 335 | }, 336 | "node_modules/to-regex-range": { 337 | "version": "5.0.1", 338 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 339 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 340 | "dependencies": { 341 | "is-number": "^7.0.0" 342 | }, 343 | "engines": { 344 | "node": ">=8.0" 345 | } 346 | } 347 | } 348 | } 349 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "halfmoon", 3 | "version": "2.0.2", 4 | "description": "Drop-in Bootstrap replacement, fully customizable with CSS variables.", 5 | "main": "css/halfmoon.min.css", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "build": "rtlcss css/halfmoon.css css/halfmoon.rtl.css && csso css/halfmoon.css --output css/halfmoon.min.css --source-map file && csso css/halfmoon.rtl.css --output css/halfmoon.rtl.min.css --source-map file && cat css/cores/halfmoon.modern.css css/cores/halfmoon.elegant.css > css/cores/halfmoon.cores.css" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/halfmoonui/halfmoon.git" 13 | }, 14 | "keywords": [ 15 | "halfmoon", 16 | "css", 17 | "bootstrap", 18 | "dark-theme", 19 | "dark-mode", 20 | "dashboard", 21 | "web-framework", 22 | "css-framework", 23 | "css-variables", 24 | "css-custom-properties" 25 | ], 26 | "author": "Tahmid Khan", 27 | "license": "MIT", 28 | "bugs": { 29 | "url": "https://github.com/halfmoonui/halfmoon/issues" 30 | }, 31 | "homepage": "https://www.gethalfmoon.com", 32 | "dependencies": { 33 | "csso-cli": "^4.0.2", 34 | "rtlcss": "^4.3.0" 35 | } 36 | } 37 | --------------------------------------------------------------------------------