button.css 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896
  1. /* mixins & extensions */
  2. @keyframes in {
  3. 0% {
  4. opacity: 0;
  5. }
  6. 100% {
  7. opacity: 1;
  8. }
  9. }
  10. @keyframes in-down {
  11. 0% {
  12. opacity: 0;
  13. transform: translate3D(0, -5px, 0);
  14. }
  15. 100% {
  16. opacity: 1;
  17. transform: translate3D(0, 0, 0);
  18. }
  19. }
  20. @keyframes in-up {
  21. 0% {
  22. opacity: 0;
  23. transform: translate3D(0, 5px, 0);
  24. }
  25. 100% {
  26. opacity: 1;
  27. transform: translate3D(0, 0, 0);
  28. }
  29. }
  30. @keyframes in-scale {
  31. 0% {
  32. opacity: 0;
  33. transform: scale3D(0.95, 0.95, 1);
  34. }
  35. 100% {
  36. opacity: 1;
  37. transform: scale3D(1, 1, 1);
  38. }
  39. }
  40. :root {
  41. --calcite-animation-timing: calc(150ms * var(--calcite-internal-duration-factor));
  42. --calcite-internal-duration-factor: var(--calcite-duration-factor, 1);
  43. --calcite-internal-animation-timing-fast: calc(100ms * var(--calcite-internal-duration-factor));
  44. --calcite-internal-animation-timing-medium: calc(200ms * var(--calcite-internal-duration-factor));
  45. --calcite-internal-animation-timing-slow: calc(300ms * var(--calcite-internal-duration-factor));
  46. }
  47. .calcite-animate {
  48. opacity: 0;
  49. animation-fill-mode: both;
  50. animation-duration: var(--calcite-animation-timing);
  51. }
  52. .calcite-animate__in {
  53. animation-name: in;
  54. }
  55. .calcite-animate__in-down {
  56. animation-name: in-down;
  57. }
  58. .calcite-animate__in-up {
  59. animation-name: in-up;
  60. }
  61. .calcite-animate__in-scale {
  62. animation-name: in-scale;
  63. }
  64. @media (prefers-reduced-motion: reduce) {
  65. :root {
  66. --calcite-internal-duration-factor: 0.01;
  67. }
  68. }
  69. /**
  70. * Currently only used in Checkbox.
  71. */
  72. :root {
  73. --calcite-floating-ui-transition: var(--calcite-animation-timing);
  74. }
  75. :host([hidden]) {
  76. display: none;
  77. }
  78. :host([disabled]) {
  79. pointer-events: none;
  80. cursor: default;
  81. -webkit-user-select: none;
  82. user-select: none;
  83. opacity: var(--calcite-ui-opacity-disabled);
  84. }
  85. :host {
  86. display: inline-block;
  87. inline-size: auto;
  88. vertical-align: middle;
  89. }
  90. :host([round]) {
  91. border-radius: 50px;
  92. }
  93. :host([round]) a, :host([round]) button {
  94. border-radius: 50px;
  95. }
  96. :host button,
  97. :host a {
  98. outline-color: transparent;
  99. }
  100. :host button:focus,
  101. :host a:focus {
  102. outline: 2px solid var(--calcite-ui-brand);
  103. outline-offset: 2px;
  104. }
  105. :host button,
  106. :host a {
  107. --calcite-button-content-margin: 0.5rem;
  108. --calcite-button-padding-x: 7px;
  109. --calcite-button-padding-y: 3px;
  110. padding-block: var(--calcite-button-padding-y);
  111. padding-inline: var(--calcite-button-padding-x);
  112. position: relative;
  113. box-sizing: border-box;
  114. display: flex;
  115. block-size: 100%;
  116. inline-size: 100%;
  117. cursor: pointer;
  118. -webkit-user-select: none;
  119. user-select: none;
  120. -webkit-appearance: none;
  121. appearance: none;
  122. align-items: center;
  123. justify-content: center;
  124. border-radius: 0px;
  125. border-style: none;
  126. text-align: center;
  127. font-family: inherit;
  128. font-weight: var(--calcite-font-weight-normal);
  129. text-decoration-line: none;
  130. transition: color var(--calcite-animation-timing) ease-in-out, background-color var(--calcite-animation-timing) ease-in-out, box-shadow var(--calcite-animation-timing) ease-in-out, outline-color var(--calcite-internal-animation-timing-fast) ease-in-out;
  131. }
  132. :host button:hover,
  133. :host a:hover {
  134. text-decoration-line: none;
  135. }
  136. .content {
  137. display: flex;
  138. flex-basis: auto;
  139. margin-inline: var(--calcite-button-content-margin);
  140. }
  141. .icon-start-empty .content {
  142. margin-inline-start: unset;
  143. }
  144. .icon-end-empty .content {
  145. margin-inline-end: unset;
  146. }
  147. :host([scale=m]) button,
  148. :host([scale=m]) a {
  149. --calcite-button-content-margin: 0.75rem;
  150. }
  151. :host([scale=l]) button,
  152. :host([scale=l]) a {
  153. --calcite-button-content-margin: 1rem;
  154. }
  155. :host([width=auto]) {
  156. inline-size: auto;
  157. }
  158. :host([width=half]) {
  159. inline-size: 50%;
  160. }
  161. :host([width=full]) {
  162. inline-size: 100%;
  163. }
  164. :host([alignment=center]:not([width=auto])) a,
  165. :host([alignment=center]:not([width=auto])) button {
  166. justify-content: center;
  167. }
  168. :host([alignment=start]:not([width=auto])) a,
  169. :host([alignment=start]:not([width=auto])) button {
  170. justify-content: flex-start;
  171. }
  172. :host([alignment=end]:not([width=auto])) a,
  173. :host([alignment=end]:not([width=auto])) button {
  174. justify-content: flex-end;
  175. }
  176. :host([alignment*=space-between]:not([width=auto])) a,
  177. :host([alignment*=space-between]:not([width=auto])) button {
  178. justify-content: space-between;
  179. }
  180. :host([alignment=icon-start-space-between]:not([width=auto])) .icon--start {
  181. margin-inline-end: auto;
  182. }
  183. :host([alignment=icon-start-space-between]:not([width=auto])) a,
  184. :host([alignment=icon-start-space-between]:not([width=auto])) button {
  185. text-align: unset;
  186. }
  187. :host([alignment=icon-end-space-between]:not([width=auto])) .icon--end {
  188. margin-inline-start: auto;
  189. }
  190. :host([alignment=icon-end-space-between]:not([width=auto])) a,
  191. :host([alignment=icon-end-space-between]:not([width=auto])) button {
  192. text-align: unset;
  193. }
  194. :host([alignment=center]) a:not(.content--slotted) .icon--start + .icon--end,
  195. :host([alignment=center]) button:not(.content--slotted) .icon--start + .icon--end {
  196. margin-inline-start: var(--calcite-button-content-margin);
  197. }
  198. .icon {
  199. position: relative;
  200. margin: 0px;
  201. display: inline-flex;
  202. font-weight: var(--calcite-font-weight-normal);
  203. line-height: inherit;
  204. }
  205. :host([disabled]) ::slotted([calcite-hydrated][disabled]),
  206. :host([disabled]) [calcite-hydrated][disabled] {
  207. /* prevent opacity stacking */
  208. opacity: 1;
  209. }
  210. :host([loading]) {
  211. pointer-events: none;
  212. }
  213. :host([loading]) button,
  214. :host([loading]) a {
  215. pointer-events: none;
  216. opacity: var(--calcite-ui-opacity-disabled);
  217. }
  218. @keyframes loader-in {
  219. 0% {
  220. inline-size: 0;
  221. opacity: 0;
  222. transform: scale(0.5);
  223. }
  224. 100% {
  225. inline-size: 1em;
  226. opacity: 1;
  227. transform: scale(1);
  228. }
  229. }
  230. @keyframes loader-out {
  231. 0% {
  232. inline-size: 1em;
  233. opacity: 1;
  234. transform: scale(1);
  235. }
  236. 100% {
  237. inline-size: 0;
  238. opacity: 0;
  239. transform: scale(0.5);
  240. }
  241. }
  242. .calcite-button--loader {
  243. display: flex;
  244. }
  245. .calcite-button--loader calcite-loader {
  246. margin: 0px;
  247. transition: inline-size var(--calcite-internal-animation-timing-slow) ease-in-out, opacity var(--calcite-internal-animation-timing-slow) ease-in-out, transform var(--calcite-internal-animation-timing-slow) ease-in-out;
  248. }
  249. .calcite-button--loader calcite-loader.loading-in {
  250. animation-name: loader-in;
  251. animation-duration: var(--calcite-internal-animation-timing-slow);
  252. }
  253. .calcite-button--loader calcite-loader.loading-out {
  254. animation-name: loader-out;
  255. animation-duration: var(--calcite-internal-animation-timing-slow);
  256. }
  257. :host([loading]) button.content--slotted .calcite-button--loader calcite-loader,
  258. :host([loading]) a.content--slotted .calcite-button--loader calcite-loader {
  259. margin-inline-end: var(--calcite-button-content-margin);
  260. }
  261. :host([loading]) button:not(.content--slotted) .icon--start,
  262. :host([loading]) button:not(.content--slotted) .icon--end,
  263. :host([loading]) a:not(.content--slotted) .icon--start,
  264. :host([loading]) a:not(.content--slotted) .icon--end {
  265. display: none;
  266. }
  267. :host([appearance=solid]) button,
  268. :host([appearance=solid]) a {
  269. border-width: 1px;
  270. border-style: solid;
  271. border-color: transparent;
  272. }
  273. :host([color=blue]) button,
  274. :host([color=blue]) a {
  275. background-color: var(--calcite-ui-brand);
  276. color: var(--calcite-ui-text-inverse);
  277. }
  278. :host([color=blue]) button:hover, :host([color=blue]) button:focus,
  279. :host([color=blue]) a:hover,
  280. :host([color=blue]) a:focus {
  281. background-color: var(--calcite-ui-brand-hover);
  282. }
  283. :host([color=blue]) button:active,
  284. :host([color=blue]) a:active {
  285. background-color: var(--calcite-ui-brand-press);
  286. }
  287. :host([color=blue]) button calcite-loader,
  288. :host([color=blue]) a calcite-loader {
  289. color: var(--calcite-ui-text-inverse);
  290. }
  291. :host([color=red]) button,
  292. :host([color=red]) a {
  293. background-color: var(--calcite-ui-danger);
  294. color: var(--calcite-ui-text-inverse);
  295. }
  296. :host([color=red]) button:hover, :host([color=red]) button:focus,
  297. :host([color=red]) a:hover,
  298. :host([color=red]) a:focus {
  299. background-color: var(--calcite-ui-danger-hover);
  300. }
  301. :host([color=red]) button:active,
  302. :host([color=red]) a:active {
  303. background-color: var(--calcite-ui-danger-press);
  304. }
  305. :host([color=red]) button calcite-loader,
  306. :host([color=red]) a calcite-loader {
  307. color: var(--calcite-ui-text-inverse);
  308. }
  309. :host([color=neutral]) button,
  310. :host([color=neutral]) a {
  311. background-color: var(--calcite-ui-foreground-3);
  312. color: var(--calcite-ui-text-1);
  313. }
  314. :host([color=neutral]) button:hover, :host([color=neutral]) button:focus,
  315. :host([color=neutral]) a:hover,
  316. :host([color=neutral]) a:focus {
  317. background-color: var(--calcite-ui-foreground-2);
  318. }
  319. :host([color=neutral]) button:active,
  320. :host([color=neutral]) a:active {
  321. background-color: var(--calcite-ui-foreground-1);
  322. }
  323. :host([color=neutral]) button calcite-loader,
  324. :host([color=neutral]) a calcite-loader {
  325. color: var(--calcite-ui-text-1);
  326. }
  327. :host([color=inverse]) button,
  328. :host([color=inverse]) a {
  329. color: var(--calcite-ui-text-inverse);
  330. background-color: var(--calcite-ui-inverse);
  331. }
  332. :host([color=inverse]) button:hover, :host([color=inverse]) button:focus,
  333. :host([color=inverse]) a:hover,
  334. :host([color=inverse]) a:focus {
  335. background-color: var(--calcite-ui-inverse-hover);
  336. }
  337. :host([color=inverse]) button:active,
  338. :host([color=inverse]) a:active {
  339. background-color: var(--calcite-ui-inverse-press);
  340. }
  341. :host([color=inverse]) button calcite-loader,
  342. :host([color=inverse]) a calcite-loader {
  343. color: var(--calcite-ui-text-inverse);
  344. }
  345. :host([appearance=outline]) button,
  346. :host([appearance=outline]) a {
  347. border-width: 1px;
  348. border-style: solid;
  349. background-color: var(--calcite-ui-foreground-1);
  350. box-shadow: inset 0 0 0 1px transparent;
  351. }
  352. :host([appearance=outline][color=blue]) button,
  353. :host([appearance=outline][color=blue]) a {
  354. border-color: var(--calcite-ui-brand);
  355. background-color: var(--calcite-ui-foreground-1);
  356. color: var(--calcite-ui-brand);
  357. }
  358. :host([appearance=outline][color=blue]) button:hover,
  359. :host([appearance=outline][color=blue]) a:hover {
  360. border-color: var(--calcite-ui-brand-hover);
  361. color: var(--calcite-ui-brand-hover);
  362. box-shadow: inset 0 0 0 1px var(--calcite-ui-brand-hover);
  363. }
  364. :host([appearance=outline][color=blue]) button:focus,
  365. :host([appearance=outline][color=blue]) a:focus {
  366. border-color: var(--calcite-ui-brand);
  367. color: var(--calcite-ui-brand);
  368. box-shadow: inset 0 0 0 2px var(--calcite-ui-brand);
  369. }
  370. :host([appearance=outline][color=blue]) button:active,
  371. :host([appearance=outline][color=blue]) a:active {
  372. border-color: var(--calcite-ui-brand-press);
  373. color: var(--calcite-ui-brand-press);
  374. box-shadow: inset 0 0 0 2px var(--calcite-ui-brand-press);
  375. }
  376. :host([appearance=outline][color=blue]) button calcite-loader,
  377. :host([appearance=outline][color=blue]) a calcite-loader {
  378. color: var(--calcite-ui-brand);
  379. }
  380. :host([appearance=outline][color=red]) button,
  381. :host([appearance=outline][color=red]) a {
  382. border-color: var(--calcite-ui-danger);
  383. background-color: var(--calcite-ui-foreground-1);
  384. color: var(--calcite-ui-danger);
  385. }
  386. :host([appearance=outline][color=red]) button:hover,
  387. :host([appearance=outline][color=red]) a:hover {
  388. border-color: var(--calcite-ui-danger-hover);
  389. color: var(--calcite-ui-danger-hover);
  390. box-shadow: inset 0 0 0 1px var(--calcite-ui-danger-hover);
  391. }
  392. :host([appearance=outline][color=red]) button:focus,
  393. :host([appearance=outline][color=red]) a:focus {
  394. border-color: var(--calcite-ui-danger);
  395. color: var(--calcite-ui-danger);
  396. box-shadow: inset 0 0 0 2px var(--calcite-ui-danger);
  397. }
  398. :host([appearance=outline][color=red]) button:active,
  399. :host([appearance=outline][color=red]) a:active {
  400. border-color: var(--calcite-ui-danger-press);
  401. color: var(--calcite-ui-danger-press);
  402. box-shadow: inset 0 0 0 2px var(--calcite-ui-danger-press);
  403. }
  404. :host([appearance=outline][color=red]) button calcite-loader,
  405. :host([appearance=outline][color=red]) a calcite-loader {
  406. color: var(--calcite-ui-danger);
  407. }
  408. :host([appearance=outline][color=neutral]) button,
  409. :host([appearance=outline][color=neutral]) a {
  410. background-color: var(--calcite-ui-foreground-1);
  411. color: var(--calcite-ui-text-1);
  412. border-color: var(--calcite-ui-foreground-3);
  413. }
  414. :host([appearance=outline][color=neutral]) button:hover,
  415. :host([appearance=outline][color=neutral]) a:hover {
  416. box-shadow: inset 0 0 0 1px var(--calcite-ui-foreground-3);
  417. }
  418. :host([appearance=outline][color=neutral]) button:focus,
  419. :host([appearance=outline][color=neutral]) a:focus {
  420. box-shadow: inset 0 0 0 2px var(--calcite-ui-foreground-3);
  421. }
  422. :host([appearance=outline][color=neutral]) button:active,
  423. :host([appearance=outline][color=neutral]) a:active {
  424. box-shadow: inset 0 0 0 2px var(--calcite-ui-foreground-3);
  425. }
  426. :host([appearance=outline][color=neutral]) button calcite-loader,
  427. :host([appearance=outline][color=neutral]) a calcite-loader {
  428. color: var(--calcite-ui-text-1);
  429. }
  430. :host([appearance=outline][color=inverse]) button,
  431. :host([appearance=outline][color=inverse]) a {
  432. background-color: var(--calcite-ui-foreground-1);
  433. color: var(--calcite-ui-text-1);
  434. border-color: var(--calcite-ui-inverse);
  435. }
  436. :host([appearance=outline][color=inverse]) button:hover,
  437. :host([appearance=outline][color=inverse]) a:hover {
  438. border-color: var(--calcite-ui-inverse-hover);
  439. box-shadow: inset 0 0 0 1px var(--calcite-ui-inverse-hover);
  440. }
  441. :host([appearance=outline][color=inverse]) button:focus,
  442. :host([appearance=outline][color=inverse]) a:focus {
  443. border-color: var(--calcite-ui-inverse);
  444. box-shadow: inset 0 0 0 2px var(--calcite-ui-inverse);
  445. }
  446. :host([appearance=outline][color=inverse]) button:active,
  447. :host([appearance=outline][color=inverse]) a:active {
  448. border-color: var(--calcite-ui-inverse-press);
  449. box-shadow: inset 0 0 0 2px var(--calcite-ui-inverse-press);
  450. }
  451. :host([appearance=outline][color=inverse]) button calcite-loader,
  452. :host([appearance=outline][color=inverse]) a calcite-loader {
  453. color: var(--calcite-ui-text-1);
  454. }
  455. :host([appearance=clear]) button,
  456. :host([appearance=clear]) a,
  457. :host([appearance=minimal]) button,
  458. :host([appearance=minimal]) a {
  459. border-width: 1px;
  460. border-style: solid;
  461. background-color: transparent;
  462. box-shadow: inset 0 0 0 1px transparent;
  463. }
  464. :host([appearance=clear][color=blue]) button,
  465. :host([appearance=clear][color=blue]) a,
  466. :host([appearance=minimal][color=blue]) button,
  467. :host([appearance=minimal][color=blue]) a {
  468. border-color: var(--calcite-ui-brand);
  469. background-color: transparent;
  470. color: var(--calcite-ui-brand);
  471. }
  472. :host([appearance=clear][color=blue]) button:hover,
  473. :host([appearance=clear][color=blue]) a:hover,
  474. :host([appearance=minimal][color=blue]) button:hover,
  475. :host([appearance=minimal][color=blue]) a:hover {
  476. border-color: var(--calcite-ui-brand-hover);
  477. color: var(--calcite-ui-brand-hover);
  478. box-shadow: inset 0 0 0 1px var(--calcite-ui-brand-hover);
  479. }
  480. :host([appearance=clear][color=blue]) button:focus,
  481. :host([appearance=clear][color=blue]) a:focus,
  482. :host([appearance=minimal][color=blue]) button:focus,
  483. :host([appearance=minimal][color=blue]) a:focus {
  484. border-color: var(--calcite-ui-brand);
  485. color: var(--calcite-ui-brand);
  486. box-shadow: inset 0 0 0 2px var(--calcite-ui-brand);
  487. }
  488. :host([appearance=clear][color=blue]) button:active,
  489. :host([appearance=clear][color=blue]) a:active,
  490. :host([appearance=minimal][color=blue]) button:active,
  491. :host([appearance=minimal][color=blue]) a:active {
  492. border-color: var(--calcite-ui-brand-press);
  493. color: var(--calcite-ui-brand-press);
  494. box-shadow: inset 0 0 0 2px var(--calcite-ui-brand-press);
  495. }
  496. :host([appearance=clear][color=blue]) button calcite-loader,
  497. :host([appearance=clear][color=blue]) a calcite-loader,
  498. :host([appearance=minimal][color=blue]) button calcite-loader,
  499. :host([appearance=minimal][color=blue]) a calcite-loader {
  500. color: var(--calcite-ui-brand);
  501. }
  502. :host([appearance=clear][color=red]) button,
  503. :host([appearance=clear][color=red]) a,
  504. :host([appearance=minimal][color=red]) button,
  505. :host([appearance=minimal][color=red]) a {
  506. border-color: var(--calcite-ui-danger);
  507. background-color: transparent;
  508. color: var(--calcite-ui-danger);
  509. }
  510. :host([appearance=clear][color=red]) button:hover,
  511. :host([appearance=clear][color=red]) a:hover,
  512. :host([appearance=minimal][color=red]) button:hover,
  513. :host([appearance=minimal][color=red]) a:hover {
  514. border-color: var(--calcite-ui-danger-hover);
  515. color: var(--calcite-ui-danger-hover);
  516. box-shadow: inset 0 0 0 1px var(--calcite-ui-danger-hover);
  517. }
  518. :host([appearance=clear][color=red]) button:focus,
  519. :host([appearance=clear][color=red]) a:focus,
  520. :host([appearance=minimal][color=red]) button:focus,
  521. :host([appearance=minimal][color=red]) a:focus {
  522. border-color: var(--calcite-ui-danger);
  523. color: var(--calcite-ui-danger);
  524. box-shadow: inset 0 0 0 2px var(--calcite-ui-danger);
  525. }
  526. :host([appearance=clear][color=red]) button:active,
  527. :host([appearance=clear][color=red]) a:active,
  528. :host([appearance=minimal][color=red]) button:active,
  529. :host([appearance=minimal][color=red]) a:active {
  530. border-color: var(--calcite-ui-danger-press);
  531. color: var(--calcite-ui-danger-press);
  532. box-shadow: inset 0 0 0 2px var(--calcite-ui-danger-press);
  533. }
  534. :host([appearance=clear][color=red]) button calcite-loader,
  535. :host([appearance=clear][color=red]) a calcite-loader,
  536. :host([appearance=minimal][color=red]) button calcite-loader,
  537. :host([appearance=minimal][color=red]) a calcite-loader {
  538. color: var(--calcite-ui-danger);
  539. }
  540. :host([appearance=clear][color=neutral]) button,
  541. :host([appearance=clear][color=neutral]) a,
  542. :host([appearance=minimal][color=neutral]) button,
  543. :host([appearance=minimal][color=neutral]) a {
  544. background-color: transparent;
  545. color: var(--calcite-ui-text-1);
  546. border-color: var(--calcite-ui-foreground-3);
  547. }
  548. :host([appearance=clear][color=neutral]) button:hover,
  549. :host([appearance=clear][color=neutral]) a:hover,
  550. :host([appearance=minimal][color=neutral]) button:hover,
  551. :host([appearance=minimal][color=neutral]) a:hover {
  552. box-shadow: inset 0 0 0 1px var(--calcite-ui-foreground-3);
  553. }
  554. :host([appearance=clear][color=neutral]) button:focus,
  555. :host([appearance=clear][color=neutral]) a:focus,
  556. :host([appearance=minimal][color=neutral]) button:focus,
  557. :host([appearance=minimal][color=neutral]) a:focus {
  558. box-shadow: inset 0 0 0 2px var(--calcite-ui-foreground-3);
  559. }
  560. :host([appearance=clear][color=neutral]) button:active,
  561. :host([appearance=clear][color=neutral]) a:active,
  562. :host([appearance=minimal][color=neutral]) button:active,
  563. :host([appearance=minimal][color=neutral]) a:active {
  564. box-shadow: inset 0 0 0 2px var(--calcite-ui-foreground-3);
  565. }
  566. :host([appearance=clear][color=neutral]) button calcite-loader,
  567. :host([appearance=clear][color=neutral]) a calcite-loader,
  568. :host([appearance=minimal][color=neutral]) button calcite-loader,
  569. :host([appearance=minimal][color=neutral]) a calcite-loader {
  570. color: var(--calcite-ui-text-1);
  571. }
  572. :host([appearance=clear][color=inverse]) button,
  573. :host([appearance=clear][color=inverse]) a,
  574. :host([appearance=minimal][color=inverse]) button,
  575. :host([appearance=minimal][color=inverse]) a {
  576. background-color: transparent;
  577. color: var(--calcite-ui-text-1);
  578. border-color: var(--calcite-ui-inverse);
  579. }
  580. :host([appearance=clear][color=inverse]) button:hover,
  581. :host([appearance=clear][color=inverse]) a:hover,
  582. :host([appearance=minimal][color=inverse]) button:hover,
  583. :host([appearance=minimal][color=inverse]) a:hover {
  584. border-color: var(--calcite-ui-inverse-hover);
  585. box-shadow: inset 0 0 0 1px var(--calcite-ui-inverse-hover);
  586. }
  587. :host([appearance=clear][color=inverse]) button:focus,
  588. :host([appearance=clear][color=inverse]) a:focus,
  589. :host([appearance=minimal][color=inverse]) button:focus,
  590. :host([appearance=minimal][color=inverse]) a:focus {
  591. border-color: var(--calcite-ui-inverse);
  592. box-shadow: inset 0 0 0 2px var(--calcite-ui-inverse);
  593. }
  594. :host([appearance=clear][color=inverse]) button:active,
  595. :host([appearance=clear][color=inverse]) a:active,
  596. :host([appearance=minimal][color=inverse]) button:active,
  597. :host([appearance=minimal][color=inverse]) a:active {
  598. border-color: var(--calcite-ui-inverse-press);
  599. box-shadow: inset 0 0 0 2px var(--calcite-ui-inverse-press);
  600. }
  601. :host([appearance=clear][color=inverse]) button calcite-loader,
  602. :host([appearance=clear][color=inverse]) a calcite-loader,
  603. :host([appearance=minimal][color=inverse]) button calcite-loader,
  604. :host([appearance=minimal][color=inverse]) a calcite-loader {
  605. color: var(--calcite-ui-text-1);
  606. }
  607. :host([appearance=outline][split-child=primary]) button,
  608. :host([appearance=clear][split-child=primary]) button,
  609. :host([appearance=minimal][split-child=primary]) button {
  610. border-inline-end-width: 0;
  611. border-inline-start-width: 1px;
  612. }
  613. :host([appearance=outline][split-child=secondary]) button,
  614. :host([appearance=clear][split-child=secondary]) button,
  615. :host([appearance=minimal][split-child=secondary]) button {
  616. border-inline-start-width: 0;
  617. border-inline-end-width: 1px;
  618. }
  619. :host([appearance=transparent]:not(.enable-editing-button)) button,
  620. :host([appearance=transparent]:not(.enable-editing-button)) a {
  621. background-color: transparent;
  622. }
  623. :host([appearance=transparent]:not(.enable-editing-button)) button:hover, :host([appearance=transparent]:not(.enable-editing-button)) button:focus,
  624. :host([appearance=transparent]:not(.enable-editing-button)) a:hover,
  625. :host([appearance=transparent]:not(.enable-editing-button)) a:focus {
  626. background-color: var(--calcite-button-transparent-hover);
  627. }
  628. :host([appearance=transparent]:not(.enable-editing-button)) button:active,
  629. :host([appearance=transparent]:not(.enable-editing-button)) a:active {
  630. background-color: var(--calcite-button-transparent-press);
  631. }
  632. :host([appearance=transparent][color=blue]) button,
  633. :host([appearance=transparent][color=blue]) a {
  634. color: var(--calcite-ui-brand);
  635. }
  636. :host([appearance=transparent][color=blue]) button:hover,
  637. :host([appearance=transparent][color=blue]) a:hover {
  638. color: var(--calcite-ui-brand-hover);
  639. }
  640. :host([appearance=transparent][color=blue]) button:focus,
  641. :host([appearance=transparent][color=blue]) a:focus {
  642. color: var(--calcite-ui-brand);
  643. }
  644. :host([appearance=transparent][color=blue]) button:active,
  645. :host([appearance=transparent][color=blue]) a:active {
  646. color: var(--calcite-ui-brand-press);
  647. }
  648. :host([appearance=transparent][color=blue]) button calcite-loader,
  649. :host([appearance=transparent][color=blue]) a calcite-loader {
  650. color: var(--calcite-ui-brand);
  651. }
  652. :host([appearance=transparent][color=red]) button,
  653. :host([appearance=transparent][color=red]) a {
  654. color: var(--calcite-ui-danger);
  655. }
  656. :host([appearance=transparent][color=red]) button:hover,
  657. :host([appearance=transparent][color=red]) a:hover {
  658. color: var(--calcite-ui-danger-hover);
  659. }
  660. :host([appearance=transparent][color=red]) button:focus,
  661. :host([appearance=transparent][color=red]) a:focus {
  662. color: var(--calcite-ui-danger);
  663. }
  664. :host([appearance=transparent][color=red]) button:active,
  665. :host([appearance=transparent][color=red]) a:active {
  666. color: var(--calcite-ui-danger-press);
  667. }
  668. :host([appearance=transparent][color=red]) button calcite-loader,
  669. :host([appearance=transparent][color=red]) a calcite-loader {
  670. color: var(--calcite-ui-danger);
  671. }
  672. :host([appearance=transparent][color=neutral]:not(.cancel-editing-button)) button,
  673. :host([appearance=transparent][color=neutral]:not(.cancel-editing-button)) a,
  674. :host([appearance=transparent][color=neutral]:not(.cancel-editing-button)) calcite-loader {
  675. color: var(--calcite-ui-text-1);
  676. }
  677. :host([appearance=transparent][color=neutral].cancel-editing-button) button {
  678. border-block-start-width: 1px;
  679. border-block-end-width: 1px;
  680. color: var(--calcite-ui-text-3);
  681. border-block-start-color: var(--calcite-ui-border-input);
  682. border-block-end-color: var(--calcite-ui-border-input);
  683. border-block-style: solid;
  684. }
  685. :host([appearance=transparent][color=neutral].cancel-editing-button) button:not(.content--slotted) {
  686. --calcite-button-padding-y: 0;
  687. }
  688. :host([appearance=transparent][color=neutral].cancel-editing-button) button:hover {
  689. color: var(--calcite-ui-text-1);
  690. }
  691. :host([appearance=transparent][color=neutral].enable-editing-button) button {
  692. background-color: transparent;
  693. }
  694. :host(.confirm-changes-button) button:focus,
  695. :host(.cancel-editing-button) button:focus,
  696. :host(.enable-editing-button) button:focus {
  697. outline-offset: -2px;
  698. }
  699. :host([appearance=transparent][color=inverse]) button,
  700. :host([appearance=transparent][color=inverse]) a,
  701. :host([appearance=transparent][color=inverse]) calcite-loader {
  702. color: var(--calcite-ui-text-inverse);
  703. }
  704. :host([scale=s]) button.content--slotted,
  705. :host([scale=s]) a.content--slotted {
  706. font-size: var(--calcite-font-size--2);
  707. line-height: 1rem;
  708. }
  709. :host([scale=s][appearance=transparent]) button.content--slotted,
  710. :host([scale=s][appearance=transparent]) a.content--slotted {
  711. --calcite-button-padding-x: 0.5rem;
  712. --calcite-button-padding-y: 0.25rem;
  713. }
  714. :host([scale=m]) button.content--slotted,
  715. :host([scale=m]) a.content--slotted {
  716. --calcite-button-padding-x: 11px;
  717. font-size: var(--calcite-font-size--1);
  718. line-height: 1rem;
  719. }
  720. :host([scale=m]:not([appearance=transparent])) button.content--slotted,
  721. :host([scale=m]:not([appearance=transparent])) a.content--slotted {
  722. --calcite-button-padding-y: 7px;
  723. }
  724. :host([scale=m][appearance=transparent]) button.content--slotted,
  725. :host([scale=m][appearance=transparent]) a.content--slotted {
  726. --calcite-button-padding-x: 0.75rem;
  727. --calcite-button-padding-y: 0.5rem;
  728. }
  729. :host([scale=l]) button.content--slotted,
  730. :host([scale=l]) a.content--slotted {
  731. --calcite-button-padding-x: 15px;
  732. font-size: var(--calcite-font-size-0);
  733. line-height: 1.25rem;
  734. }
  735. :host([scale=l]:not([appearance=transparent])) button.content--slotted,
  736. :host([scale=l]:not([appearance=transparent])) a.content--slotted {
  737. --calcite-button-padding-y: 11px;
  738. }
  739. :host([scale=l][appearance=transparent]) button.content--slotted,
  740. :host([scale=l][appearance=transparent]) a.content--slotted {
  741. --calcite-button-padding-x: 1rem;
  742. --calcite-button-padding-y: 0.75rem;
  743. }
  744. :host([scale=s]) button:not(.content--slotted),
  745. :host([scale=s]) a:not(.content--slotted) {
  746. --calcite-button-padding-x: 0.125rem;
  747. --calcite-button-padding-y: 3px;
  748. inline-size: 1.5rem;
  749. font-size: var(--calcite-font-size-0);
  750. line-height: 1.25rem;
  751. min-block-size: 1.5rem;
  752. }
  753. :host([scale=s][appearance=transparent]) button:not(.content--slotted),
  754. :host([scale=s][appearance=transparent]) a:not(.content--slotted) {
  755. --calcite-button-padding-y: 0.25rem;
  756. }
  757. :host([scale=m]) button:not(.content--slotted),
  758. :host([scale=m]) a:not(.content--slotted) {
  759. --calcite-button-padding-x: 0.125rem;
  760. --calcite-button-padding-y: 7px;
  761. inline-size: 2rem;
  762. font-size: var(--calcite-font-size-0);
  763. line-height: 1.25rem;
  764. min-block-size: 2rem;
  765. }
  766. :host([scale=m][appearance=transparent]) button:not(.content--slotted),
  767. :host([scale=m][appearance=transparent]) a:not(.content--slotted) {
  768. --calcite-button-padding-y: 0.5rem;
  769. }
  770. :host([scale=l]) button:not(.content--slotted),
  771. :host([scale=l]) a:not(.content--slotted) {
  772. --calcite-button-padding-x: 0.125rem;
  773. --calcite-button-padding-y: 9px;
  774. inline-size: 2.75rem;
  775. font-size: var(--calcite-font-size-0);
  776. line-height: 1.25rem;
  777. min-block-size: 2.75rem;
  778. }
  779. :host([scale=l][appearance=transparent]) button:not(.content--slotted),
  780. :host([scale=l][appearance=transparent]) a:not(.content--slotted) {
  781. --calcite-button-padding-y: 0.625rem;
  782. }
  783. :host([scale=s][icon-start][icon-end]) button:not(.content--slotted),
  784. :host([scale=s][icon-start][icon-end]) a:not(.content--slotted) {
  785. --calcite-button-padding-x: 23px;
  786. block-size: 1.5rem;
  787. font-size: var(--calcite-font-size-0);
  788. line-height: 1.25rem;
  789. }
  790. :host([scale=s][icon-start][icon-end][appearance=transparent]) button:not(.content--slotted),
  791. :host([scale=s][icon-start][icon-end][appearance=transparent]) a:not(.content--slotted) {
  792. --calcite-button-padding-x: 1.5rem;
  793. }
  794. :host([scale=m][icon-start][icon-end]) button:not(.content--slotted),
  795. :host([scale=m][icon-start][icon-end]) a:not(.content--slotted) {
  796. --calcite-button-padding-x: 2rem;
  797. block-size: 2rem;
  798. font-size: var(--calcite-font-size-0);
  799. line-height: 1.25rem;
  800. }
  801. :host([scale=m][icon-start][icon-end][appearance=transparent]) button:not(.content--slotted),
  802. :host([scale=m][icon-start][icon-end][appearance=transparent]) a:not(.content--slotted) {
  803. --calcite-button-padding-x: 33px;
  804. }
  805. :host([scale=l][icon-start][icon-end]) button:not(.content--slotted),
  806. :host([scale=l][icon-start][icon-end]) a:not(.content--slotted) {
  807. --calcite-button-padding-x: 43px;
  808. block-size: 2.75rem;
  809. font-size: var(--calcite-font-size-0);
  810. line-height: 1.25rem;
  811. }
  812. :host([scale=l][icon-start][icon-end]) button:not(.content--slotted) .icon--start + .icon--end,
  813. :host([scale=l][icon-start][icon-end]) a:not(.content--slotted) .icon--start + .icon--end {
  814. margin-inline-start: 1rem;
  815. }
  816. :host([scale=l][icon-start][icon-end][appearance=transparent]) button:not(.content--slotted),
  817. :host([scale=l][icon-start][icon-end][appearance=transparent]) a:not(.content--slotted) {
  818. --calcite-button-padding-x: 2.75rem;
  819. }