@coreui/coreui 5.4.3 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +5 -3
  3. package/dist/css/coreui-grid.css +2 -2
  4. package/dist/css/coreui-grid.css.map +1 -1
  5. package/dist/css/coreui-grid.min.css +2 -2
  6. package/dist/css/coreui-grid.min.css.map +1 -1
  7. package/dist/css/coreui-grid.rtl.css +2 -2
  8. package/dist/css/coreui-grid.rtl.css.map +1 -1
  9. package/dist/css/coreui-grid.rtl.min.css +2 -2
  10. package/dist/css/coreui-grid.rtl.min.css.map +1 -1
  11. package/dist/css/coreui-reboot.css +11 -2
  12. package/dist/css/coreui-reboot.css.map +1 -1
  13. package/dist/css/coreui-reboot.min.css +3 -3
  14. package/dist/css/coreui-reboot.min.css.map +1 -1
  15. package/dist/css/coreui-reboot.rtl.css +11 -2
  16. package/dist/css/coreui-reboot.rtl.css.map +1 -1
  17. package/dist/css/coreui-reboot.rtl.min.css +3 -3
  18. package/dist/css/coreui-reboot.rtl.min.css.map +1 -1
  19. package/dist/css/coreui-utilities.css +11 -2
  20. package/dist/css/coreui-utilities.css.map +1 -1
  21. package/dist/css/coreui-utilities.min.css +3 -3
  22. package/dist/css/coreui-utilities.min.css.map +1 -1
  23. package/dist/css/coreui-utilities.rtl.css +11 -2
  24. package/dist/css/coreui-utilities.rtl.css.map +1 -1
  25. package/dist/css/coreui-utilities.rtl.min.css +3 -3
  26. package/dist/css/coreui-utilities.rtl.min.css.map +1 -1
  27. package/dist/css/coreui.css +337 -2
  28. package/dist/css/coreui.css.map +1 -1
  29. package/dist/css/coreui.min.css +3 -3
  30. package/dist/css/coreui.min.css.map +1 -1
  31. package/dist/css/coreui.rtl.css +332 -2
  32. package/dist/css/coreui.rtl.css.map +1 -1
  33. package/dist/css/coreui.rtl.min.css +3 -3
  34. package/dist/css/coreui.rtl.min.css.map +1 -1
  35. package/dist/css/themes/bootstrap/bootstrap.css +337 -2
  36. package/dist/css/themes/bootstrap/bootstrap.css.map +1 -1
  37. package/dist/css/themes/bootstrap/bootstrap.min.css +3 -3
  38. package/dist/css/themes/bootstrap/bootstrap.min.css.map +1 -1
  39. package/dist/css/themes/bootstrap/bootstrap.rtl.css +332 -2
  40. package/dist/css/themes/bootstrap/bootstrap.rtl.css.map +1 -1
  41. package/dist/css/themes/bootstrap/bootstrap.rtl.min.css +3 -3
  42. package/dist/css/themes/bootstrap/bootstrap.rtl.min.css.map +1 -1
  43. package/dist/js/bootstrap.bundle.js +874 -60
  44. package/dist/js/bootstrap.bundle.js.map +1 -1
  45. package/dist/js/bootstrap.bundle.min.js +3 -3
  46. package/dist/js/bootstrap.bundle.min.js.map +1 -1
  47. package/dist/js/bootstrap.esm.js +873 -53
  48. package/dist/js/bootstrap.esm.js.map +1 -1
  49. package/dist/js/bootstrap.esm.min.js +3 -3
  50. package/dist/js/bootstrap.esm.min.js.map +1 -1
  51. package/dist/js/bootstrap.js +874 -52
  52. package/dist/js/bootstrap.js.map +1 -1
  53. package/dist/js/bootstrap.min.js +3 -3
  54. package/dist/js/bootstrap.min.js.map +1 -1
  55. package/dist/js/coreui.bundle.js +874 -60
  56. package/dist/js/coreui.bundle.js.map +1 -1
  57. package/dist/js/coreui.bundle.min.js +3 -3
  58. package/dist/js/coreui.bundle.min.js.map +1 -1
  59. package/dist/js/coreui.esm.js +873 -53
  60. package/dist/js/coreui.esm.js.map +1 -1
  61. package/dist/js/coreui.esm.min.js +3 -3
  62. package/dist/js/coreui.esm.min.js.map +1 -1
  63. package/dist/js/coreui.js +874 -52
  64. package/dist/js/coreui.js.map +1 -1
  65. package/dist/js/coreui.min.js +3 -3
  66. package/dist/js/coreui.min.js.map +1 -1
  67. package/js/dist/alert.js +2 -2
  68. package/js/dist/base-component.js +3 -3
  69. package/js/dist/base-component.js.map +1 -1
  70. package/js/dist/button.js +2 -2
  71. package/js/dist/carousel.js +2 -2
  72. package/js/dist/chip-input.js +528 -0
  73. package/js/dist/chip-input.js.map +1 -0
  74. package/js/dist/chip.js +322 -0
  75. package/js/dist/chip.js.map +1 -0
  76. package/js/dist/collapse.js +2 -2
  77. package/js/dist/dom/data.js +2 -2
  78. package/js/dist/dom/event-handler.js +2 -2
  79. package/js/dist/dom/manipulator.js +2 -2
  80. package/js/dist/dom/selector-engine.js +2 -2
  81. package/js/dist/dropdown.js +2 -2
  82. package/js/dist/modal.js +2 -2
  83. package/js/dist/navigation.js +2 -2
  84. package/js/dist/offcanvas.js +2 -2
  85. package/js/dist/popover.js +2 -2
  86. package/js/dist/scrollspy.js +2 -2
  87. package/js/dist/sidebar.js +2 -2
  88. package/js/dist/tab.js +2 -2
  89. package/js/dist/toast.js +2 -2
  90. package/js/dist/tooltip.js +2 -2
  91. package/js/dist/util/backdrop.js +2 -2
  92. package/js/dist/util/component-functions.js +2 -2
  93. package/js/dist/util/config.js +2 -2
  94. package/js/dist/util/focustrap.js +2 -2
  95. package/js/dist/util/index.js +2 -2
  96. package/js/dist/util/sanitizer.js +2 -2
  97. package/js/dist/util/scrollbar.js +2 -2
  98. package/js/dist/util/swipe.js +2 -2
  99. package/js/dist/util/template-factory.js +2 -2
  100. package/js/index.esm.js +2 -0
  101. package/js/index.umd.js +4 -0
  102. package/js/src/base-component.js +1 -1
  103. package/js/src/chip-input.js +595 -0
  104. package/js/src/chip.js +365 -0
  105. package/package.json +34 -33
  106. package/scss/_banner.scss +2 -2
  107. package/scss/_buttons.scss +9 -5
  108. package/scss/_card.scss +2 -1
  109. package/scss/_carousel.scss +4 -2
  110. package/scss/_chip.import.scss +1 -0
  111. package/scss/_chip.scss +261 -0
  112. package/scss/_dropdown.scss +5 -3
  113. package/scss/_forms.scss +1 -0
  114. package/scss/_header.scss +3 -2
  115. package/scss/_list-group.scss +1 -1
  116. package/scss/_maps.scss +16 -1
  117. package/scss/_modal.scss +2 -1
  118. package/scss/_nav.scss +3 -2
  119. package/scss/_navbar.scss +5 -3
  120. package/scss/_pagination.scss +3 -2
  121. package/scss/_root.scss +5 -0
  122. package/scss/coreui.scss +1 -0
  123. package/scss/forms/_chip-input.import.scss +1 -0
  124. package/scss/forms/_chip-input.scss +109 -0
  125. package/scss/forms/_form-control.scss +2 -1
  126. package/scss/functions/_color.scss +5 -1
  127. package/scss/functions/_contrast-ratio.scss +3 -2
  128. package/scss/functions/_maps.scss +9 -1
  129. package/scss/functions/_math.scss +4 -3
  130. package/scss/helpers/_color-bg.scss +8 -4
  131. package/scss/helpers/_colored-links.scss +18 -9
  132. package/scss/mixins/_breakpoints.scss +9 -4
  133. package/scss/mixins/_buttons.scss +4 -4
  134. package/scss/mixins/_chip.scss +14 -0
  135. package/scss/mixins/_focus-ring.scss +9 -0
  136. package/scss/mixins/_forms.scss +3 -3
  137. package/scss/mixins/_grid.scss +4 -2
  138. package/scss/mixins/_ltr-rtl.scss +24 -12
  139. package/scss/mixins/_table-variants.scss +6 -4
  140. package/scss/mixins/_utilities.scss +22 -12
  141. package/scss/vendor/_rfs.scss +27 -19
package/js/src/chip.js ADDED
@@ -0,0 +1,365 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * CoreUI chip.js
4
+ * Licensed under MIT (https://github.com/coreui/coreui/blob/main/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ import BaseComponent from './base-component.js'
9
+ import EventHandler from './dom/event-handler.js'
10
+ import SelectorEngine from './dom/selector-engine.js'
11
+ import { defineJQueryPlugin, getNextActiveElement } from './util/index.js'
12
+
13
+ /**
14
+ * Constants
15
+ */
16
+
17
+ const NAME = 'chip'
18
+ const DATA_KEY = 'coreui.chip'
19
+ const EVENT_KEY = `.${DATA_KEY}`
20
+ const DATA_API_KEY = '.data-api'
21
+
22
+ const EVENT_REMOVE = `remove${EVENT_KEY}`
23
+ const EVENT_REMOVED = `removed${EVENT_KEY}`
24
+ const EVENT_SELECT = `select${EVENT_KEY}`
25
+ const EVENT_SELECTED = `selected${EVENT_KEY}`
26
+ const EVENT_DESELECT = `deselect${EVENT_KEY}`
27
+ const EVENT_DESELECTED = `deselected${EVENT_KEY}`
28
+
29
+ const SELECTOR_CHIP_REMOVE = '.chip-remove'
30
+ const SELECTOR_DATA_CHIP = '[data-coreui-chip]'
31
+ const SELECTOR_FOCUSABLE_ITEMS = '.chip:not(.disabled)'
32
+
33
+ const CLASS_NAME_CHIP_CLICKABLE = 'chip-clickable'
34
+ const CLASS_NAME_CHIP_REMOVE = 'chip-remove'
35
+ const CLASS_NAME_ACTIVE = 'active'
36
+ const CLASS_NAME_DISABLED = 'disabled'
37
+
38
+ const DEFAULT_REMOVE_ICON = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>'
39
+
40
+ const Default = {
41
+ ariaRemoveLabel: 'Remove',
42
+ disabled: false,
43
+ removable: false,
44
+ removeIcon: DEFAULT_REMOVE_ICON,
45
+ selectable: false,
46
+ selected: false
47
+ }
48
+
49
+ const DefaultType = {
50
+ ariaRemoveLabel: 'string',
51
+ disabled: 'boolean',
52
+ removable: 'boolean',
53
+ removeIcon: 'string',
54
+ selectable: 'boolean',
55
+ selected: 'boolean'
56
+ }
57
+
58
+ /**
59
+ * Class definition
60
+ */
61
+
62
+ class Chip extends BaseComponent {
63
+ constructor(element, config) {
64
+ super(element, config)
65
+
66
+ this._disabled = this._config.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)
67
+ this._selected = this._config.selected || this._element.classList.contains(CLASS_NAME_ACTIVE)
68
+
69
+ this._ensureRemoveButton()
70
+ this._applyState()
71
+
72
+ if (this._config.selectable || this._config.removable) {
73
+ this._makeFocusable()
74
+ }
75
+
76
+ this._addEventListeners()
77
+ }
78
+
79
+ // Getters
80
+ static get Default() {
81
+ return Default
82
+ }
83
+
84
+ static get DefaultType() {
85
+ return DefaultType
86
+ }
87
+
88
+ static get NAME() {
89
+ return NAME
90
+ }
91
+
92
+ // Public
93
+ remove() {
94
+ const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE)
95
+
96
+ if (removeEvent.defaultPrevented) {
97
+ return
98
+ }
99
+
100
+ this._destroyElement()
101
+ }
102
+
103
+ toggle() {
104
+ if (!this._config.selectable) {
105
+ return
106
+ }
107
+
108
+ if (this._selected) {
109
+ this.deselect()
110
+ return
111
+ }
112
+
113
+ this.select()
114
+ }
115
+
116
+ select() {
117
+ if (!this._config.selectable) {
118
+ return
119
+ }
120
+
121
+ if (this._selected) {
122
+ return
123
+ }
124
+
125
+ const selectEvent = EventHandler.trigger(this._element, EVENT_SELECT)
126
+ if (selectEvent.defaultPrevented) {
127
+ return
128
+ }
129
+
130
+ this._selected = true
131
+ this._applyState()
132
+
133
+ EventHandler.trigger(this._element, EVENT_SELECTED)
134
+ }
135
+
136
+ deselect() {
137
+ if (!this._config.selectable) {
138
+ return
139
+ }
140
+
141
+ if (!this._selected) {
142
+ return
143
+ }
144
+
145
+ const deselectEvent = EventHandler.trigger(this._element, EVENT_DESELECT)
146
+ if (deselectEvent.defaultPrevented) {
147
+ return
148
+ }
149
+
150
+ this._selected = false
151
+ this._applyState()
152
+
153
+ EventHandler.trigger(this._element, EVENT_DESELECTED)
154
+ }
155
+
156
+ // Private
157
+ _addEventListeners() {
158
+ EventHandler.on(this._element, 'keydown', event => this._handleKeydown(event))
159
+
160
+ EventHandler.on(this._element, 'click', event => {
161
+ if (this._disabled) {
162
+ return
163
+ }
164
+
165
+ if (event.target.closest(SELECTOR_CHIP_REMOVE)) {
166
+ return
167
+ }
168
+
169
+ this.toggle()
170
+ })
171
+
172
+ EventHandler.on(this._element, 'click', SELECTOR_CHIP_REMOVE, event => {
173
+ event.stopPropagation()
174
+ this.remove()
175
+ })
176
+ }
177
+
178
+ _applyState() {
179
+ if (!this._disabled && (this._config.clickable || this._config.selectable)) {
180
+ this._element.classList.add(CLASS_NAME_CHIP_CLICKABLE)
181
+ }
182
+
183
+ if (this._disabled) {
184
+ this._element.classList.add(CLASS_NAME_DISABLED)
185
+ this._element.setAttribute('aria-disabled', 'true')
186
+ } else {
187
+ this._element.classList.remove(CLASS_NAME_DISABLED)
188
+ if (this._element.getAttribute('aria-disabled') === 'true') {
189
+ this._element.setAttribute('aria-disabled', 'false')
190
+ }
191
+ }
192
+
193
+ if (this._config.selectable) {
194
+ this._element.classList.toggle(CLASS_NAME_ACTIVE, this._selected)
195
+ this._element.setAttribute('aria-selected', this._selected ? 'true' : 'false')
196
+ } else {
197
+ this._element.classList.remove(CLASS_NAME_ACTIVE)
198
+ if (this._element.getAttribute('aria-selected') === 'true') {
199
+ this._element.setAttribute('aria-selected', 'false')
200
+ }
201
+ }
202
+ }
203
+
204
+ _createRemoveButton() {
205
+ const button = document.createElement('button')
206
+ button.type = 'button'
207
+ button.className = CLASS_NAME_CHIP_REMOVE
208
+ button.setAttribute('aria-label', this._config.ariaRemoveLabel)
209
+ button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard
210
+ button.innerHTML = this._config.removeIcon
211
+ return button
212
+ }
213
+
214
+ _ensureRemoveButton() {
215
+ if (!this._config.removable) {
216
+ return
217
+ }
218
+
219
+ if (SelectorEngine.findOne(SELECTOR_CHIP_REMOVE, this._element)) {
220
+ return
221
+ }
222
+
223
+ this._element.append(this._createRemoveButton())
224
+ }
225
+
226
+ _makeFocusable() {
227
+ if (this._element.hasAttribute('tabindex') || this._disabled) {
228
+ return
229
+ }
230
+
231
+ this._element.setAttribute('tabindex', '0')
232
+ }
233
+
234
+ _handleKeydown(event) {
235
+ const { key } = event
236
+ if (this._disabled) {
237
+ return
238
+ }
239
+
240
+ switch (key) {
241
+ case 'Enter':
242
+ case ' ':
243
+ case 'Spacebar': {
244
+ if (!this._config.selectable) {
245
+ return
246
+ }
247
+
248
+ event.preventDefault()
249
+ this.toggle()
250
+ break
251
+ }
252
+
253
+ case 'Backspace':
254
+ case 'Delete': {
255
+ if (this._config.removable) {
256
+ event.preventDefault()
257
+ const sibling = this._getFocusableSibling(false) || this._getFocusableSibling(true)
258
+ sibling?.focus()
259
+ this.remove()
260
+ }
261
+
262
+ break
263
+ }
264
+
265
+ case 'ArrowLeft': {
266
+ event.preventDefault()
267
+ const chip = this._getFocusableSibling(false)
268
+ chip?.focus()
269
+
270
+ break
271
+ }
272
+
273
+ case 'ArrowRight': {
274
+ event.preventDefault()
275
+ const chip = this._getFocusableSibling(true)
276
+ chip?.focus()
277
+
278
+ break
279
+ }
280
+
281
+ case 'Home': {
282
+ event.preventDefault()
283
+ this._navigateToEdge(0)
284
+ break
285
+ }
286
+
287
+ case 'End': {
288
+ event.preventDefault()
289
+ this._navigateToEdge(-1)
290
+ break
291
+ }
292
+
293
+ // No default
294
+ }
295
+ }
296
+
297
+ _getFocusableSibling(shouldGetNext) {
298
+ const chips = SelectorEngine.find(SELECTOR_FOCUSABLE_ITEMS, this._element.parentElement)
299
+ const sibling = getNextActiveElement(chips, this._element, shouldGetNext, !chips.includes(this._element))
300
+ return sibling === this._element ? null : sibling
301
+ }
302
+
303
+ _navigateToEdge(targetIndex) {
304
+ const chips = SelectorEngine.find(SELECTOR_FOCUSABLE_ITEMS, this._element.parentElement)
305
+ if (chips.length === 0) {
306
+ return
307
+ }
308
+
309
+ const targetChip = chips.at(targetIndex)
310
+ targetChip?.focus()
311
+ }
312
+
313
+ _destroyElement() {
314
+ EventHandler.trigger(this._element, EVENT_REMOVED)
315
+ this._element.remove()
316
+ this.dispose()
317
+ }
318
+
319
+ // Static
320
+ static chipInterface(element, config) {
321
+ const data = Chip.getOrCreateInstance(element, config)
322
+
323
+ if (typeof config === 'string') {
324
+ if (typeof data[config] === 'undefined') {
325
+ throw new TypeError(`No method named "${config}"`)
326
+ }
327
+
328
+ data[config]()
329
+ }
330
+ }
331
+
332
+ static jQueryInterface(config) {
333
+ return this.each(function () {
334
+ const data = Chip.getOrCreateInstance(this)
335
+
336
+ if (typeof config !== 'string') {
337
+ return
338
+ }
339
+
340
+ if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
341
+ throw new TypeError(`No method named "${config}"`)
342
+ }
343
+
344
+ data[config](this)
345
+ })
346
+ }
347
+ }
348
+
349
+ /**
350
+ * Data API implementation
351
+ */
352
+
353
+ EventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {
354
+ for (const element of SelectorEngine.find(SELECTOR_DATA_CHIP)) {
355
+ Chip.chipInterface(element)
356
+ }
357
+ })
358
+
359
+ /**
360
+ * jQuery
361
+ */
362
+
363
+ defineJQueryPlugin(Chip)
364
+
365
+ export default Chip
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@coreui/coreui",
3
3
  "description": "The most popular front-end framework for developing responsive, mobile-first projects on the web rewritten and maintained by the CoreUI Team",
4
- "version": "5.4.3",
4
+ "version": "5.6.0",
5
5
  "config": {
6
- "version_short": "5.4"
6
+ "version_short": "5.6"
7
7
  },
8
8
  "keywords": [
9
9
  "css",
@@ -100,36 +100,37 @@
100
100
  "@popperjs/core": "^2.11.8"
101
101
  },
102
102
  "devDependencies": {
103
- "@babel/cli": "^7.28.3",
104
- "@babel/core": "^7.28.3",
105
- "@babel/preset-env": "^7.28.3",
106
- "@docsearch/js": "^3.9.0",
107
- "@eslint/markdown": "^7.2.0",
103
+ "@babel/cli": "^7.28.6",
104
+ "@babel/core": "^7.29.0",
105
+ "@babel/preset-env": "^7.29.0",
106
+ "@docsearch/css": "^4.6.0",
107
+ "@docsearch/js": "^4.6.0",
108
+ "@eslint/markdown": "^7.5.1",
108
109
  "@popperjs/core": "^2.11.8",
109
- "@rollup/plugin-babel": "^6.0.4",
110
- "@rollup/plugin-commonjs": "^28.0.6",
111
- "@rollup/plugin-node-resolve": "^16.0.1",
112
- "@rollup/plugin-replace": "^6.0.2",
110
+ "@rollup/plugin-babel": "^6.1.0",
111
+ "@rollup/plugin-commonjs": "^29.0.0",
112
+ "@rollup/plugin-node-resolve": "^16.0.3",
113
+ "@rollup/plugin-replace": "^6.0.3",
113
114
  "@stackblitz/sdk": "^1.11.0",
114
- "autoprefixer": "^10.4.21",
115
+ "autoprefixer": "^10.4.27",
115
116
  "bootstrap": "^5.3.8",
116
117
  "bundlewatch": "^0.4.1",
117
118
  "clean-css-cli": "^5.6.3",
118
119
  "clipboard": "^2.0.11",
119
- "cross-env": "^10.0.0",
120
- "eslint": "^9.34.0",
120
+ "cross-env": "^10.1.0",
121
+ "eslint": "^9.39.3",
121
122
  "eslint-config-xo": "0.49.0",
122
- "eslint-plugin-html": "^8.1.3",
123
+ "eslint-plugin-html": "^8.1.4",
123
124
  "eslint-plugin-import": "^2.32.0",
124
- "eslint-plugin-unicorn": "^60.0.0",
125
- "find-unused-sass-variables": "^6.1.0",
126
- "globals": "^16.3.0",
127
- "globby": "^14.1.0",
125
+ "eslint-plugin-unicorn": "^62.0.0",
126
+ "find-unused-sass-variables": "^6.1.1",
127
+ "globals": "^16.5.0",
128
+ "globby": "^16.1.1",
128
129
  "hammer-simulator": "0.0.1",
129
130
  "html-entities": "^2.6.0",
130
- "hugo-bin": "^0.146.0",
131
+ "hugo-bin": "^0.149.2",
131
132
  "ip": "^2.0.1",
132
- "jasmine": "^5.10.0",
133
+ "jasmine": "^5.13.0",
133
134
  "jquery": "^3.7.1",
134
135
  "karma": "^6.4.4",
135
136
  "karma-browserstack-launcher": "1.6.0",
@@ -138,23 +139,24 @@
138
139
  "karma-detect-browsers": "^2.3.3",
139
140
  "karma-firefox-launcher": "^2.1.3",
140
141
  "karma-jasmine": "^5.1.0",
141
- "karma-jasmine-html-reporter": "^2.1.0",
142
+ "karma-jasmine-html-reporter": "^2.2.0",
142
143
  "karma-rollup-preprocessor": "7.0.8",
143
- "lockfile-lint": "^4.14.1",
144
- "nodemon": "^3.1.10",
144
+ "lockfile-lint": "^5.0.0",
145
+ "nodemon": "^3.1.14",
145
146
  "npm-run-all": "^4.1.5",
146
- "postcss": "^8.5.6",
147
+ "postcss": "^8.5.8",
147
148
  "postcss-cli": "^11.0.1",
148
149
  "postcss-combine-duplicated-selectors": "^10.0.3",
149
- "rollup": "^4.50.0",
150
+ "rimraf": "^6.1.3",
151
+ "rollup": "^4.59.0",
150
152
  "rollup-plugin-istanbul": "^5.0.0",
151
- "sass-embedded": "^1.91.0",
152
- "sass-true": "^9.0.0",
153
+ "sass-embedded": "^1.97.3",
154
+ "sass-true": "^10.1.0",
153
155
  "shelljs": "^0.10.0",
154
- "stylelint": "^16.23.1",
156
+ "stylelint": "^16.26.1",
155
157
  "stylelint-config-twbs-bootstrap": "^16.1.0",
156
- "terser": "5.43.1",
157
- "vnu-jar": "24.10.17"
158
+ "terser": "5.46.0",
159
+ "vnu-jar": "25.12.31"
158
160
  },
159
161
  "files": [
160
162
  "dist/{css,js}/**/*.{css,js,map}",
@@ -182,7 +184,6 @@
182
184
  }
183
185
  },
184
186
  "dependencies": {
185
- "html-entities": "^2.6.0",
186
- "html-to-md": "^0.8.8"
187
+ "html-entities": "^2.6.0"
187
188
  }
188
189
  }
package/scss/_banner.scss CHANGED
@@ -1,7 +1,7 @@
1
1
  $file: "" !default;
2
2
 
3
3
  /*!
4
- * CoreUI #{$file} v5.4.3 (https://coreui.io)
5
- * Copyright (c) 2025 creativeLabs Łukasz Holeczek
4
+ * CoreUI #{$file} v5.6.0 (https://coreui.io)
5
+ * Copyright (c) 2026 creativeLabs Łukasz Holeczek
6
6
  * Licensed under MIT (https://github.com/coreui/coreui/blob/main/LICENSE)
7
7
  */
@@ -40,10 +40,11 @@
40
40
  line-height: var(--#{$prefix}btn-line-height);
41
41
  color: var(--#{$prefix}btn-color);
42
42
  text-align: center;
43
- text-decoration: if($link-decoration == none, null, none);
43
+ text-decoration: if(not sass($link-decoration == none): none);
44
44
  white-space: $btn-white-space;
45
45
  vertical-align: middle;
46
- cursor: if($enable-button-pointers, pointer, null);
46
+ // stylelint-disable-next-line scss/at-function-named-arguments
47
+ cursor: if(sass($enable-button-pointers): pointer);
47
48
  user-select: none;
48
49
  border: var(--#{$prefix}btn-border-width) solid var(--#{$prefix}btn-border-color);
49
50
  @include border-radius(var(--#{$prefix}btn-border-radius));
@@ -53,7 +54,8 @@
53
54
 
54
55
  &:hover {
55
56
  color: var(--#{$prefix}btn-hover-color);
56
- text-decoration: if($link-hover-decoration == underline, none, null);
57
+ // stylelint-disable-next-line scss/at-function-named-arguments
58
+ text-decoration: if(sass($link-hover-decoration == underline): none);
57
59
  background-color: var(--#{$prefix}btn-hover-bg);
58
60
  border-color: var(--#{$prefix}btn-hover-border-color);
59
61
  }
@@ -97,7 +99,8 @@
97
99
  color: var(--#{$prefix}btn-active-color);
98
100
  background-color: var(--#{$prefix}btn-active-bg);
99
101
  // Remove CSS gradients if they're enabled
100
- background-image: if($enable-gradients, none, null);
102
+ // stylelint-disable-next-line scss/at-function-named-arguments
103
+ background-image: if(sass($enable-gradients): none);
101
104
  border-color: var(--#{$prefix}btn-active-border-color);
102
105
  @include box-shadow(var(--#{$prefix}btn-active-shadow));
103
106
 
@@ -126,7 +129,8 @@
126
129
  color: var(--#{$prefix}btn-disabled-color);
127
130
  pointer-events: none;
128
131
  background-color: var(--#{$prefix}btn-disabled-bg);
129
- background-image: if($enable-gradients, none, null);
132
+ // stylelint-disable-next-line scss/at-function-named-arguments
133
+ background-image: if(sass($enable-gradients): none);
130
134
  border-color: var(--#{$prefix}btn-disabled-border-color);
131
135
  opacity: var(--#{$prefix}btn-disabled-opacity);
132
136
  @include box-shadow(none);
package/scss/_card.scss CHANGED
@@ -96,7 +96,8 @@
96
96
 
97
97
  .card-link {
98
98
  &:hover {
99
- text-decoration: if($link-hover-decoration == underline, none, null);
99
+ // stylelint-disable-next-line scss/at-function-named-arguments
100
+ text-decoration: if(sass($link-hover-decoration == underline): none);
100
101
  }
101
102
 
102
103
  + .card-link {
@@ -123,11 +123,13 @@
123
123
  }
124
124
  .carousel-control-prev {
125
125
  left: 0;
126
- background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null);
126
+ // stylelint-disable-next-line scss/at-function-named-arguments
127
+ background-image: if(sass($enable-gradients): linear-gradient(90deg, rgba($black, .25), rgba($black, .001)));
127
128
  }
128
129
  .carousel-control-next {
129
130
  right: 0;
130
- background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null);
131
+ // stylelint-disable-next-line scss/at-function-named-arguments
132
+ background-image: if(sass($enable-gradients): linear-gradient(270deg, rgba($black, .25), rgba($black, .001)));
131
133
  }
132
134
 
133
135
  // Icons for within
@@ -0,0 +1 @@
1
+ @forward "chip";