Нема описа
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

_utilities.scss 27KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246
  1. // Utilities
  2. // ******************************************************************************
  3. // stylelint-disable indentation
  4. // stylelint-disable @stylistic/number-leading-zero
  5. // Utilities
  6. $utilities: () !default;
  7. // stylelint-disable-next-line scss/dollar-variable-default
  8. $utilities: map-merge(
  9. (
  10. // scss-docs-start utils-vertical-align
  11. "align":
  12. (
  13. property: vertical-align,
  14. class: align,
  15. values: baseline top middle bottom text-bottom text-top
  16. ),
  17. // scss-docs-end utils-vertical-align
  18. // scss-docs-start utils-float
  19. "float": (
  20. responsive: true,
  21. property: float,
  22. values: (
  23. start: inline-start,
  24. end: inline-end,
  25. none: none,
  26. )
  27. ),
  28. // scss-docs-end utils-float
  29. // Object Fit utilities
  30. // scss-docs-start utils-object-fit
  31. "object-fit":
  32. (
  33. responsive: true,
  34. property: object-fit,
  35. values: (
  36. contain: contain,
  37. cover: cover,
  38. fill: fill,
  39. scale: scale-down,
  40. none: none
  41. )
  42. ),
  43. // scss-docs-end utils-object-fit
  44. // Opacity utilities
  45. // scss-docs-start utils-opacity
  46. "opacity": (
  47. property: opacity,
  48. values: (
  49. 0: 0,
  50. 25: 0.25,
  51. 50: 0.5,
  52. 75: 0.75,
  53. 100: 1
  54. )
  55. ),
  56. // scss-docs-end utils-opacity
  57. // scss-docs-start utils-overflow
  58. "overflow": (
  59. property: overflow,
  60. values: auto hidden visible scroll
  61. ),
  62. "overflow-x": (
  63. property: overflow-x,
  64. values: auto hidden visible scroll,
  65. ),
  66. "overflow-y": (
  67. property: overflow-y,
  68. values: auto hidden visible scroll,
  69. ),
  70. // scss-docs-end utils-overflow
  71. // scss-docs-start utils-display
  72. "display": (
  73. responsive: true,
  74. print: true,
  75. property: display,
  76. class: d,
  77. values: inline inline-block block grid table table-row table-cell flex inline-flex none
  78. ),
  79. // scss-docs-end utils-display
  80. // scss-docs-start utils-shadow
  81. "shadow": (
  82. property: box-shadow,
  83. class: shadow,
  84. values: (
  85. null: var(--#{$prefix}box-shadow),
  86. sm: var(--#{$prefix}box-shadow-sm),
  87. lg: var(--#{$prefix}box-shadow-lg),
  88. xl: var(--#{$prefix}box-shadow-xl),
  89. none: none
  90. )
  91. ),
  92. // scss-docs-end utils-shadow
  93. // scss-docs-start utils-position
  94. "position": (
  95. property: position,
  96. values: static relative absolute fixed sticky
  97. ),
  98. "top": (
  99. property: inset-block-start,
  100. class: top,
  101. values: $position-values
  102. ),
  103. "bottom": (
  104. property: inset-block-end,
  105. class: bottom,
  106. values: $position-values
  107. ),
  108. "start": (
  109. property: inset-inline-start,
  110. class: start,
  111. values: $position-values
  112. ),
  113. "end": (
  114. property: inset-inline-end,
  115. class: end,
  116. values: $position-values
  117. ),
  118. "translate-middle": (
  119. property: transform,
  120. class: translate-middle,
  121. values: (
  122. null: translate(-50%, -50%),
  123. x: translateX(-50%),
  124. y: translateY(-50%),
  125. )
  126. ),
  127. // scss-docs-end utils-position
  128. // scss-docs-start utils-borders
  129. "border": (
  130. property: border,
  131. values: (
  132. null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
  133. 0: 0
  134. )
  135. ),
  136. "border-style": (
  137. property: border-style,
  138. class: border,
  139. responsive: true,
  140. values: (
  141. solid: solid,
  142. dashed: dashed,
  143. none: none
  144. )
  145. ),
  146. "border-top": (
  147. property: border-block-start,
  148. class: border-top,
  149. values: (
  150. null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
  151. 0: 0,
  152. )
  153. ),
  154. "border-end": (
  155. property: border-inline-end,
  156. class: border-end,
  157. values: (
  158. null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
  159. 0: 0,
  160. )
  161. ),
  162. "border-bottom": (
  163. property: border-block-end,
  164. class: border-bottom,
  165. values: (
  166. null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
  167. 0: 0,
  168. )
  169. ),
  170. "border-start": (
  171. property: border-inline-start,
  172. class: border-start,
  173. values: (
  174. null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
  175. 0: 0,
  176. )
  177. ),
  178. "border-color": (
  179. property: border-color,
  180. class: border,
  181. local-vars: (
  182. "border-opacity": 1
  183. ),
  184. values: map-merge($utilities-border-colors, ("transparent": transparent )) // (C)
  185. ),
  186. //? class for this utility is border-color-subtle
  187. "subtle-border-color": (
  188. property: border-color,
  189. class: border,
  190. values: $utilities-border-subtle
  191. ),
  192. "border-width": (
  193. property: border-width,
  194. class: border,
  195. values: $border-widths
  196. ),
  197. "border-opacity": (
  198. css-var: true,
  199. class: border-opacity,
  200. values: (
  201. 10: 0.1,
  202. 25: 0.25,
  203. 50: 0.5,
  204. 75: 0.75,
  205. 100: 1
  206. )
  207. ),
  208. // scss-docs-end utils-borders
  209. // Sizing utilities
  210. // scss-docs-start utils-sizing
  211. "width": (
  212. property: width,
  213. class: w,
  214. values: map-merge(
  215. $sizes-px,
  216. (
  217. 20: 20%,
  218. 25: 25%,
  219. 50: 50%,
  220. 60: 60%,
  221. 75: 75%,
  222. 100: 100%,
  223. auto: auto
  224. )
  225. )
  226. ),
  227. "max-width": (
  228. property: max-width,
  229. class: mw,
  230. values: (
  231. 100: 100%
  232. )
  233. ),
  234. "viewport-width": (
  235. property: width,
  236. class: vw,
  237. values: (
  238. 100: 100vw
  239. )
  240. ),
  241. "min-viewport-width": (
  242. property: min-width,
  243. class: min-vw,
  244. values: (
  245. 100: 100vw
  246. )
  247. ),
  248. "height": (
  249. property: height,
  250. class: h,
  251. values: map-merge(
  252. $sizes-px,
  253. (
  254. 25: 25%,
  255. 50: 50%,
  256. 75: 75%,
  257. 100: 100%,
  258. auto: auto
  259. )
  260. )
  261. ),
  262. "max-height": (
  263. property: max-height,
  264. class: mh,
  265. values: (
  266. 100: 100%
  267. )
  268. ),
  269. "viewport-height": (
  270. property: height,
  271. class: vh,
  272. values: (
  273. 100: 100vh
  274. )
  275. ),
  276. "min-viewport-height": (
  277. property: min-height,
  278. class: min-vh,
  279. values: (
  280. 100: 100vh
  281. )
  282. ),
  283. // scss-docs-end utils-sizing
  284. // Flex utilities
  285. // scss-docs-start utils-flex
  286. "flex": (
  287. responsive: true,
  288. property: flex,
  289. values: (
  290. fill: 1 1 auto
  291. )
  292. ),
  293. "flex-direction": (
  294. responsive: true,
  295. property: flex-direction,
  296. class: flex,
  297. values: row column row-reverse column-reverse
  298. ),
  299. "flex-grow": (
  300. responsive: true,
  301. property: flex-grow,
  302. class: flex,
  303. values: (
  304. grow-0: 0,
  305. grow-1: 1
  306. )
  307. ),
  308. "flex-shrink": (
  309. responsive: true,
  310. property: flex-shrink,
  311. class: flex,
  312. values: (
  313. shrink-0: 0,
  314. shrink-1: 1
  315. )
  316. ),
  317. "flex-wrap": (
  318. responsive: true,
  319. property: flex-wrap,
  320. class: flex,
  321. values: wrap nowrap wrap-reverse
  322. ),
  323. "justify-content": (
  324. responsive: true,
  325. property: justify-content,
  326. values: (
  327. start: flex-start,
  328. end: flex-end,
  329. center: center,
  330. between: space-between,
  331. around: space-around,
  332. evenly: space-evenly
  333. )
  334. ),
  335. "align-items": (
  336. responsive: true,
  337. property: align-items,
  338. values: (
  339. start: flex-start,
  340. end: flex-end,
  341. center: center,
  342. baseline: baseline,
  343. stretch: stretch
  344. )
  345. ),
  346. "align-content": (
  347. responsive: true,
  348. property: align-content,
  349. values: (
  350. start: flex-start,
  351. end: flex-end,
  352. center: center,
  353. between: space-between,
  354. around: space-around,
  355. stretch: stretch
  356. )
  357. ),
  358. "align-self": (
  359. responsive: true,
  360. property: align-self,
  361. values: (
  362. auto: auto,
  363. start: flex-start,
  364. end: flex-end,
  365. center: center,
  366. baseline: baseline,
  367. stretch: stretch
  368. )
  369. ),
  370. "order": (
  371. responsive: true,
  372. property: order,
  373. values: (
  374. first: -1,
  375. 0: 0,
  376. 1: 1,
  377. 2: 2,
  378. 3: 3,
  379. 4: 4,
  380. 5: 5,
  381. last: 6
  382. )
  383. ),
  384. // scss-docs-end utils-flex
  385. // Margin utilities
  386. // scss-docs-start utils-spacing
  387. "margin": (
  388. responsive: true,
  389. property: margin,
  390. class: m,
  391. values: map-merge(
  392. $spacers,
  393. (
  394. auto: auto
  395. )
  396. )
  397. ),
  398. "margin-x": (
  399. responsive: true,
  400. property: margin-inline-end margin-inline-start,
  401. class: mx,
  402. values: map-merge(
  403. $spacers,
  404. (
  405. auto: auto
  406. )
  407. )
  408. ),
  409. "margin-y": (
  410. responsive: true,
  411. property: margin-block-start margin-block-end,
  412. class: my,
  413. values: map-merge(
  414. $spacers,
  415. (
  416. auto: auto
  417. )
  418. )
  419. ),
  420. "margin-top": (
  421. responsive: true,
  422. property: margin-block-start,
  423. class: mt,
  424. values: map-merge(
  425. $spacers,
  426. (
  427. auto: auto
  428. )
  429. )
  430. ),
  431. "margin-end": (
  432. responsive: true,
  433. property: margin-inline-end,
  434. class: me,
  435. values: map-merge($spacers, (auto: auto))
  436. ),
  437. "margin-bottom": (
  438. responsive: true,
  439. property: margin-block-end,
  440. class: mb,
  441. values: map-merge(
  442. $spacers,
  443. (
  444. auto: auto
  445. )
  446. )
  447. ),
  448. "margin-start": (
  449. responsive: true,
  450. property: margin-inline-start,
  451. class: ms,
  452. values: map-merge($spacers, (auto: auto))
  453. ),
  454. // Negative margin utilities
  455. "negative-margin": (
  456. responsive: true,
  457. property: margin,
  458. class: m,
  459. values: $negative-spacers
  460. ),
  461. "negative-margin-x": (
  462. responsive: true,
  463. property: margin-inline-end margin-inline-start,
  464. class: mx,
  465. values: $negative-spacers
  466. ),
  467. "negative-margin-y": (
  468. responsive: true,
  469. property: margin-block-start margin-block-end,
  470. class: my,
  471. values: $negative-spacers
  472. ),
  473. "negative-margin-top": (
  474. responsive: true,
  475. property: margin-block-start,
  476. class: mt,
  477. values: $negative-spacers
  478. ),
  479. "negative-margin-end": (
  480. responsive: true,
  481. property: margin-inline-end,
  482. class: me,
  483. values: $negative-spacers
  484. ),
  485. "negative-margin-bottom": (
  486. responsive: true,
  487. property: margin-block-end,
  488. class: mb,
  489. values: $negative-spacers
  490. ),
  491. "negative-margin-start": (
  492. responsive: true,
  493. property: margin-inline-start,
  494. class: ms,
  495. values: $negative-spacers
  496. ),
  497. // Padding utilities
  498. "padding": (
  499. responsive: true,
  500. property: padding,
  501. class: p,
  502. values: $spacers
  503. ),
  504. "padding-x": (
  505. responsive: true,
  506. property: padding-inline-end padding-inline-start,
  507. class: px,
  508. values: $spacers
  509. ),
  510. "padding-y": (
  511. responsive: true,
  512. property: padding-block-start padding-block-end,
  513. class: py,
  514. values: $spacers
  515. ),
  516. "padding-top": (
  517. responsive: true,
  518. property: padding-block-start,
  519. class: pt,
  520. values: $spacers
  521. ),
  522. "padding-end": (
  523. responsive: true,
  524. property: padding-inline-end,
  525. class: pe,
  526. values: $spacers
  527. ),
  528. "padding-bottom": (
  529. responsive: true,
  530. property: padding-block-end,
  531. class: pb,
  532. values: $spacers
  533. ),
  534. "padding-start": (
  535. responsive: true,
  536. property: padding-inline-start,
  537. class: ps,
  538. values: $spacers
  539. ),
  540. "gap": (
  541. responsive: true,
  542. property: gap,
  543. class: gap,
  544. values: $spacers
  545. ),
  546. "row-gap": (
  547. responsive: true,
  548. property: row-gap,
  549. class: row-gap,
  550. values: $spacers
  551. ),
  552. "column-gap": (
  553. responsive: true,
  554. property: column-gap,
  555. class: column-gap,
  556. values: $spacers
  557. ),
  558. // scss-docs-end utils-spacing
  559. // Text
  560. // scss-docs-start utils-text
  561. "font-family": (
  562. property: font-family,
  563. class: font,
  564. values: (monospace: var(--#{$prefix}font-monospace))
  565. ),
  566. "font-size": (
  567. rfs: true,
  568. property: font-size,
  569. class: fs,
  570. values: map-merge(
  571. $font-sizes,
  572. (
  573. tiny: $tiny-font-size, // (C)
  574. big: $big-font-size, // (C)
  575. large: $large-font-size, // (C)
  576. xlarge: $xlarge-font-size, // (C)
  577. xxlarge: $xxlarge-font-size // (C)
  578. )
  579. )
  580. ),
  581. "font-style": (
  582. property: font-style,
  583. class: fst,
  584. values: italic normal
  585. ),
  586. "font-weight": (
  587. property: font-weight,
  588. class: fw,
  589. values: (
  590. lighter: $font-weight-lighter,
  591. light: $font-weight-light,
  592. normal: $font-weight-normal,
  593. medium: $font-weight-medium,
  594. semibold: $font-weight-semibold,
  595. bold: $font-weight-bold,
  596. extrabold: $font-weight-extrabold,
  597. bolder: $font-weight-bolder
  598. )
  599. ),
  600. "line-height": (
  601. property: line-height,
  602. class: lh,
  603. values: (
  604. 1: 1,
  605. inherit: inherit, // (C)
  606. sm: $line-height-sm,
  607. base: $line-height-base,
  608. lg: $line-height-lg
  609. )
  610. ),
  611. "text-align": (
  612. responsive: true,
  613. property: text-align,
  614. class: text,
  615. values: (
  616. start: start,
  617. end: end,
  618. center: center,
  619. )
  620. ),
  621. "text-decoration": (
  622. property: text-decoration,
  623. values: none underline line-through
  624. ),
  625. "text-transform": (
  626. property: text-transform,
  627. class: text,
  628. values: none lowercase uppercase capitalize
  629. ),
  630. "white-space": (
  631. property: white-space,
  632. class: text,
  633. values: (
  634. wrap: normal,
  635. nowrap: nowrap
  636. )
  637. ),
  638. "word-wrap": (
  639. property: word-wrap word-break,
  640. class: text,
  641. values: (
  642. break: break-word
  643. ),
  644. rtl: false
  645. ),
  646. // scss-docs-end utils-text
  647. // scss-docs-start utils-color
  648. "color": (
  649. property: color,
  650. class: text,
  651. local-vars: (
  652. "text-opacity": 1
  653. ),
  654. values: map-merge(
  655. $utilities-text-colors,
  656. (
  657. "white": var(--#{$prefix}white),
  658. "body": var(--#{$prefix}body-color),
  659. "body-secondary": var(--#{$prefix}secondary-color),
  660. "body-tertiary": var(--#{$prefix}tertiary-color),
  661. "body-emphasis": var(--#{$prefix}emphasis-color),
  662. "light": $text-light, // (c)
  663. "lighter": $text-lighter, // (c)
  664. "lightest": $text-lightest, // (c)
  665. "heading": var(--#{$prefix}heading-color), // (c)
  666. "reset": inherit
  667. )
  668. )
  669. ),
  670. "text-opacity": (
  671. css-var: true,
  672. class: text-opacity,
  673. values: (
  674. 25: 0.25,
  675. 50: 0.5,
  676. 75: 0.75,
  677. 100: 1
  678. )
  679. ),
  680. "text-color": (
  681. property: color,
  682. class: text,
  683. values: $utilities-text-emphasis-colors
  684. ),
  685. // scss-docs-end utils-color
  686. // scss-docs-start utils-links
  687. "link-opacity": (
  688. css-var: true,
  689. class: link-opacity,
  690. state: hover,
  691. values: (
  692. 10: 0.1,
  693. 25: 0.25,
  694. 50: 0.5,
  695. 75: 0.75,
  696. 100: 1
  697. )
  698. ),
  699. "link-offset": (
  700. property: text-underline-offset,
  701. class: link-offset,
  702. state: hover,
  703. values: (
  704. 1: 0.125em,
  705. 2: 0.25em,
  706. 3: 0.375em
  707. )
  708. ),
  709. "link-underline": (
  710. property: text-decoration-color,
  711. class: link-underline,
  712. local-vars: (
  713. "link-underline-opacity": 1
  714. ),
  715. values: map-merge(
  716. $utilities-links-underline,
  717. (
  718. null: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-underline-opacity, 1))
  719. )
  720. )
  721. ),
  722. "link-underline-opacity": (
  723. css-var: true,
  724. class: link-underline-opacity,
  725. state: hover,
  726. values: (
  727. 0: 0,
  728. 10: 0.1,
  729. 25: 0.25,
  730. 50: 0.5,
  731. 75: 0.75,
  732. 100: 1
  733. )
  734. ),
  735. // scss-docs-end utils-links
  736. // scss-docs-start utils-bg-color
  737. "background-color": (
  738. property: background-color,
  739. class: bg,
  740. local-vars: (
  741. "bg-opacity": 1
  742. ),
  743. values: map-merge(
  744. $utilities-bg-colors,
  745. (
  746. "body": var(--#{$prefix}body-bg),
  747. "white": var(--#{$prefix}white),
  748. "transparent": transparent,
  749. "body-secondary": rgba(var(--#{$prefix}secondary-bg-rgb), var(--#{$prefix}bg-opacity)),
  750. "body-tertiary": rgba(var(--#{$prefix}tertiary-bg-rgb), var(--#{$prefix}bg-opacity)),
  751. "lighter": color-mix(in sRGB, var(--#{$prefix}base-color) 6%, var(--#{$prefix}paper-bg)), // (C)
  752. "lightest": color-mix(in sRGB, var(--#{$prefix}base-color) 2.5%, var(--#{$prefix}paper-bg)), // (C)
  753. )
  754. )
  755. ),
  756. "bg-opacity": (
  757. css-var: true,
  758. class: bg-opacity,
  759. values: (
  760. 10: 0.1,
  761. 25: 0.25,
  762. 50: 0.5,
  763. 75: 0.75,
  764. 100: 1
  765. )
  766. ),
  767. "subtle-background-color": (
  768. property: background-color,
  769. class: bg,
  770. values: $utilities-bg-subtle
  771. ),
  772. // scss-docs-end utils-bg-color
  773. "gradient": (
  774. property: background-image,
  775. class: bg,
  776. values: (
  777. gradient: var(--#{$prefix}gradient)
  778. )
  779. ),
  780. // scss-docs-start utils-interaction
  781. "user-select": (
  782. property: user-select,
  783. values: all auto none
  784. ),
  785. "pointer-events": (
  786. property: pointer-events,
  787. class: pe,
  788. values: none auto
  789. ),
  790. // scss-docs-end utils-interaction
  791. // scss-docs-start utils-border-radius
  792. "rounded": (
  793. property: border-radius,
  794. class: rounded,
  795. values: (
  796. null: var(--#{$prefix}border-radius),
  797. 0: 0,
  798. 1: var(--#{$prefix}border-radius-sm),
  799. 2: var(--#{$prefix}border-radius),
  800. 3: var(--#{$prefix}border-radius-lg),
  801. 4: var(--#{$prefix}border-radius-xl),
  802. 5: var(--#{$prefix}border-radius-xxl),
  803. circle: 50%,
  804. pill: var(--#{$prefix}border-radius-pill)
  805. )
  806. ),
  807. "rounded-top": (
  808. property: border-start-start-radius border-start-end-radius,
  809. class: rounded-top,
  810. values: (
  811. null: var(--#{$prefix}border-radius),
  812. 0: 0,
  813. 1: var(--#{$prefix}border-radius-sm),
  814. 2: var(--#{$prefix}border-radius),
  815. 3: var(--#{$prefix}border-radius-lg),
  816. 4: var(--#{$prefix}border-radius-xl),
  817. 5: var(--#{$prefix}border-radius-xxl),
  818. circle: 50%,
  819. pill: var(--#{$prefix}border-radius-pill)
  820. )
  821. ),
  822. "rounded-end": (
  823. property: border-start-end-radius border-end-end-radius,
  824. class: rounded-end,
  825. values: (
  826. null: var(--#{$prefix}border-radius),
  827. 0: 0,
  828. 1: var(--#{$prefix}border-radius-sm),
  829. 2: var(--#{$prefix}border-radius),
  830. 3: var(--#{$prefix}border-radius-lg),
  831. 4: var(--#{$prefix}border-radius-xl),
  832. 5: var(--#{$prefix}border-radius-xxl),
  833. circle: 50%,
  834. pill: var(--#{$prefix}border-radius-pill)
  835. )
  836. ),
  837. "rounded-bottom": (
  838. property: border-end-end-radius border-end-start-radius,
  839. class: rounded-bottom,
  840. values: (
  841. null: var(--#{$prefix}border-radius),
  842. 0: 0,
  843. 1: var(--#{$prefix}border-radius-sm),
  844. 2: var(--#{$prefix}border-radius),
  845. 3: var(--#{$prefix}border-radius-lg),
  846. 4: var(--#{$prefix}border-radius-xl),
  847. 5: var(--#{$prefix}border-radius-xxl),
  848. circle: 50%,
  849. pill: var(--#{$prefix}border-radius-pill)
  850. )
  851. ),
  852. "rounded-start": (
  853. property: border-end-start-radius border-start-start-radius,
  854. class: rounded-start,
  855. values: (
  856. null: var(--#{$prefix}border-radius),
  857. 0: 0,
  858. 1: var(--#{$prefix}border-radius-sm),
  859. 2: var(--#{$prefix}border-radius),
  860. 3: var(--#{$prefix}border-radius-lg),
  861. 4: var(--#{$prefix}border-radius-xl),
  862. 5: var(--#{$prefix}border-radius-xxl),
  863. circle: 50%,
  864. pill: var(--#{$prefix}border-radius-pill)
  865. )
  866. ),
  867. "rounded-start-top": (
  868. property: border-start-start-radius,
  869. class: rounded-start-top,
  870. values: (
  871. null: $border-radius
  872. )
  873. ),
  874. "rounded-start-bottom": (
  875. property: border-end-start-radius,
  876. class: rounded-start-bottom,
  877. values: (
  878. null: $border-radius
  879. )
  880. ),
  881. "rounded-end-top": (
  882. property: border-start-end-radius,
  883. class: rounded-end-top,
  884. values: (
  885. null: $border-radius
  886. )
  887. ),
  888. "rounded-end-bottom": (
  889. property: border-end-end-radius,
  890. class: rounded-end-bottom,
  891. values: (
  892. null: $border-radius
  893. )
  894. ),
  895. // scss-docs-end utils-border-radius
  896. // scss-docs-start utils-visibility
  897. "visibility": (
  898. property: visibility,
  899. class: null,
  900. values: (
  901. visible: visible,
  902. invisible: hidden
  903. )
  904. ),
  905. // scss-docs-end utils-visibility
  906. // scss-docs-start utils-zindex
  907. "z-index": (
  908. property: z-index,
  909. class: z,
  910. values: $zindex-levels
  911. ),
  912. // scss-docs-end utils-zindex
  913. // Custom Utilities
  914. // *******************************************************************************
  915. // scss-docs-start utils-rotate
  916. "rotate": (
  917. property: transform,
  918. class: rotate,
  919. values: (
  920. 0: var(--#{$prefix}rotate-0, rotate(0deg)),
  921. 90: var(--#{$prefix}rotate-90, rotate(90deg)),
  922. 180: var(--#{$prefix}rotate-180, rotate(180deg)),
  923. 270: var(--#{$prefix}rotate-270, rotate(270deg)),
  924. n90: var(--#{$prefix}rotate-n90, rotate(-90deg)),
  925. n180: var(--#{$prefix}rotate-n180, rotate(-180deg)),
  926. n270: var(--#{$prefix}rotate-n270, rotate(-270deg))
  927. )
  928. ),
  929. // scss-docs-end utils-rotate
  930. // scss-docs-start utils-flex-basis
  931. "cursor": (
  932. property: cursor,
  933. class: cursor,
  934. values: pointer move grab
  935. ),
  936. // scss-docs-end utils-flex-basis
  937. ),
  938. $utilities
  939. );
  940. // stylelint-enable @stylistic/number-leading-zero
  941. // Borders
  942. // *******************************************************************************
  943. // Bordered rows
  944. .row-bordered {
  945. overflow: hidden;
  946. > .col,
  947. > [class^="col-"],
  948. > [class*=" col-"],
  949. > [class^="col "],
  950. > [class*=" col "],
  951. > [class$=" col"],
  952. > [class="col"] {
  953. position: relative;
  954. padding-block-start: 1px;
  955. &::before {
  956. position: absolute;
  957. display: block;
  958. block-size: 0;
  959. border-block-start: 1px solid $bordered-row-border-color;
  960. content: "";
  961. inset-block-end: -1px;
  962. inset-inline: 0;
  963. }
  964. &::after {
  965. position: absolute;
  966. display: block;
  967. border-inline-start: 1px solid $bordered-row-border-color;
  968. content: "";
  969. inline-size: 0;
  970. inset-block: 0;
  971. inset-inline-start: -1px;
  972. }
  973. }
  974. &.row-border-light {
  975. > .col,
  976. > [class^="col-"],
  977. > [class*=" col-"],
  978. > [class^="col "],
  979. > [class*=" col "],
  980. > [class$=" col"],
  981. > [class="col"] {
  982. &::before,
  983. &::after {
  984. border-color: $gray-100;
  985. }
  986. }
  987. }
  988. }
  989. .text-body-secondary[href] {
  990. &:hover,
  991. &:focus {
  992. color: $body-secondary-color-hover !important;
  993. }
  994. }
  995. a.bg-dark {
  996. &:hover,
  997. &:focus {
  998. background-color: $gray-900 !important;
  999. }
  1000. }
  1001. a.bg-light {
  1002. &:hover,
  1003. &:focus {
  1004. background-color: $gray-200 !important;
  1005. }
  1006. }
  1007. a.bg-lighter {
  1008. &:hover,
  1009. &:focus {
  1010. background-color: $gray-100 !important;
  1011. }
  1012. }
  1013. a.bg-lightest {
  1014. &:hover,
  1015. &:focus {
  1016. background-color: $gray-60 !important;
  1017. }
  1018. }
  1019. .text-light {
  1020. &[href] {
  1021. &:hover,
  1022. &:focus {
  1023. color: $body-secondary-color-hover !important;
  1024. }
  1025. }
  1026. }
  1027. .text-lighter {
  1028. &[href] {
  1029. &:hover,
  1030. &:focus {
  1031. color: $body-secondary-color-hover !important;
  1032. }
  1033. }
  1034. }
  1035. .text-lightest {
  1036. &[href] {
  1037. &:hover,
  1038. &:focus {
  1039. color: $body-secondary-color-hover !important;
  1040. }
  1041. }
  1042. }
  1043. .text-paper {
  1044. color: var(--#{$prefix}paper-bg) !important;
  1045. &[href] {
  1046. &:hover,
  1047. &:focus {
  1048. color: var(--#{$prefix}primary) !important;
  1049. }
  1050. }
  1051. }
  1052. // text-body hover color
  1053. .text-body,
  1054. .text-heading {
  1055. &[href]:hover {
  1056. color: var(--#{$prefix}primary) !important;
  1057. }
  1058. }
  1059. // Invertible colors
  1060. .invert-text-white {
  1061. color: light-dark(var(--#{$prefix}white), $body-bg) !important;
  1062. }
  1063. .invert-text-white[href]:hover {
  1064. &:hover,
  1065. &:focus {
  1066. color: light-dark(var(--#{$prefix}white), $body-bg) !important;
  1067. }
  1068. }
  1069. .invert-text-dark {
  1070. color: light-dark($black, var(--#{$prefix}white)) !important;
  1071. }
  1072. .invert-text-dark[href]:hover {
  1073. &:hover,
  1074. &:focus {
  1075. color: light-dark($black, var(--#{$prefix}white)) !important;
  1076. }
  1077. }
  1078. .invert-bg-white {
  1079. background-color: light-dark(var(--#{$prefix}white), $body-bg) !important;
  1080. }
  1081. a.invert-bg-white {
  1082. &:hover,
  1083. &:focus {
  1084. background-color: light-dark(var(--#{$prefix}white), $body-bg) !important;
  1085. }
  1086. }
  1087. .invert-bg-dark {
  1088. background-color: light-dark(var(--#{$prefix}gray-900), var(--#{$prefix}white)) !important;
  1089. }
  1090. a.invert-bg-dark {
  1091. &:hover,
  1092. &:focus {
  1093. background-color: light-dark(var(--#{$prefix}gray-900), var(--#{$prefix}white)) !important;
  1094. }
  1095. }
  1096. .invert-border-dark {
  1097. border-color: light-dark(var(--#{$prefix}dark), var(--#{$prefix}white)) !important;
  1098. }
  1099. .invert-border-white {
  1100. border-color: light-dark(var(--#{$prefix}white), $body-bg) !important;
  1101. }
  1102. // Misc
  1103. // *******************************************************************************
  1104. // Layout containers
  1105. .container-p-x {
  1106. padding-inline: $container-padding-x-sm !important;
  1107. @include media-breakpoint-up(lg) {
  1108. padding-inline: $container-padding-x !important;
  1109. }
  1110. }
  1111. .container-m-nx {
  1112. margin-inline: -$container-padding-x-sm !important;
  1113. @include media-breakpoint-up(lg) {
  1114. margin-inline: -$container-padding-x !important;
  1115. }
  1116. }
  1117. .container-p-y {
  1118. &:not([class^="pt-"]):not([class*=" pt-"]) {
  1119. padding-block-start: $container-padding-y !important;
  1120. }
  1121. &:not([class^="pb-"]):not([class*=" pb-"]) {
  1122. padding-block-end: $container-padding-y !important;
  1123. }
  1124. }
  1125. .container-m-ny {
  1126. &:not([class^="mt-"]):not([class*=" mt-"]) {
  1127. margin-block-start: -$container-padding-y !important;
  1128. }
  1129. &:not([class^="mb-"]):not([class*=" mb-"]) {
  1130. margin-block-end: -$container-padding-y !important;
  1131. }
  1132. }
  1133. .icon-base {
  1134. @include icon-base();
  1135. line-height: 1;
  1136. vertical-align: middle;
  1137. }
  1138. // icon sizes
  1139. @each $key, $value in $icon-sizes {
  1140. .icon-#{$key} {
  1141. &,
  1142. &::before {
  1143. @include icon-base($value !important);
  1144. }
  1145. }
  1146. }
  1147. .icon-xs{
  1148. &,
  1149. &::before {
  1150. @include icon-base(var(--#{$prefix}icon-size-xs) !important);
  1151. }
  1152. }
  1153. .icon-sm{
  1154. &,
  1155. &::before {
  1156. @include icon-base(var(--#{$prefix}icon-size-sm) !important);
  1157. }
  1158. }
  1159. .icon-md{
  1160. &,
  1161. &::before {
  1162. @include icon-base(var(--#{$prefix}icon-size-md) !important);
  1163. }
  1164. }
  1165. .icon-lg{
  1166. &,
  1167. &::before {
  1168. @include icon-base(var(--#{$prefix}icon-size-lg) !important);
  1169. }
  1170. }
  1171. .icon-xl{
  1172. &,
  1173. &::before {
  1174. @include icon-base(var(--#{$prefix}icon-size-xl) !important);
  1175. }
  1176. }
  1177. // Table cell
  1178. .cell-fit {
  1179. inline-size: .1%;
  1180. white-space: nowrap;
  1181. }
  1182. :dir(rtl) {
  1183. .scaleX-n1-rtl {
  1184. transform: scaleX(-1) !important;
  1185. }
  1186. .translate-middle {
  1187. transform: translate(50%, -50%) !important;
  1188. }
  1189. .translate-middle-x {
  1190. transform: translateX(50%) !important;
  1191. }
  1192. .rotate {
  1193. --#{$prefix}rotate-90: rotate(-90deg);
  1194. --#{$prefix}rotate-270: rotate(-270deg);
  1195. --#{$prefix}rotate-n90: rotate(90deg);
  1196. --#{$prefix}rotate-n270: rotate(270deg);
  1197. }
  1198. }