fokus-styles 2.0.0 → 2.3.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 (131) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +4 -3
  3. package/dist/css/components.css +510 -2
  4. package/dist/css/components.css.map +1 -1
  5. package/dist/css/components.min.css +1 -1
  6. package/dist/css/components.min.css.map +1 -1
  7. package/dist/css/fokus-components.css +4050 -0
  8. package/dist/css/fokus-components.css.map +1 -0
  9. package/dist/css/fokus-components.min.css +2 -0
  10. package/dist/css/fokus-components.min.css.map +1 -0
  11. package/dist/css/fokus-core.css +1563 -0
  12. package/dist/css/fokus-core.css.map +1 -0
  13. package/dist/css/fokus-core.min.css +2 -0
  14. package/dist/css/fokus-core.min.css.map +1 -0
  15. package/dist/css/fokus-dark.css +304 -0
  16. package/dist/css/fokus-dark.css.map +1 -0
  17. package/dist/css/fokus-dark.min.css +2 -0
  18. package/dist/css/fokus-dark.min.css.map +1 -0
  19. package/dist/css/fokus-utilities.css +4176 -0
  20. package/dist/css/fokus-utilities.css.map +1 -0
  21. package/dist/css/fokus-utilities.min.css +2 -0
  22. package/dist/css/fokus-utilities.min.css.map +1 -0
  23. package/dist/css/fokus.css +1339 -53
  24. package/dist/css/fokus.css.map +1 -1
  25. package/dist/css/fokus.min.css +1 -1
  26. package/dist/css/fokus.min.css.map +1 -1
  27. package/dist/css/forms.css +115 -2
  28. package/dist/css/forms.css.map +1 -1
  29. package/dist/css/forms.min.css +1 -1
  30. package/dist/css/forms.min.css.map +1 -1
  31. package/dist/css/helpers.css +376 -2
  32. package/dist/css/helpers.css.map +1 -1
  33. package/dist/css/helpers.min.css +1 -1
  34. package/dist/css/helpers.min.css.map +1 -1
  35. package/dist/css/layout.css +560 -2
  36. package/dist/css/layout.css.map +1 -1
  37. package/dist/css/layout.min.css +1 -1
  38. package/dist/css/layout.min.css.map +1 -1
  39. package/dist/js/fokus.js +347 -12
  40. package/dist/js/fokus.js.map +4 -4
  41. package/dist/js/fokus.min.js +17 -17
  42. package/dist/js/fokus.min.js.map +4 -4
  43. package/docs/components/accordion.md +3 -0
  44. package/docs/components/avatar.md +13 -0
  45. package/docs/components/button-group.md +13 -0
  46. package/docs/components/close-button.md +13 -0
  47. package/docs/components/code.md +13 -0
  48. package/docs/components/icon-link.md +13 -0
  49. package/docs/components/list-group.md +13 -0
  50. package/docs/components/modal.md +3 -0
  51. package/docs/components/navbar.md +3 -0
  52. package/docs/components/pagination.md +3 -0
  53. package/docs/components/placeholder.md +13 -0
  54. package/docs/components/ratio.md +13 -0
  55. package/docs/components/scrollspy.md +13 -0
  56. package/docs/components/skeleton.md +3 -0
  57. package/docs/components/table.md +3 -0
  58. package/docs/guides/javascript-api.md +9 -0
  59. package/docs/guides/utility-api.md +9 -0
  60. package/docs/reference/size-baseline.json +13 -13
  61. package/mockup/assets/example-theme.css +3 -1
  62. package/mockup/assets/example-theme.js +2 -0
  63. package/mockup/assets/showcase-contracts.js +2 -2
  64. package/mockup/assets/showcase.css +4 -2
  65. package/mockup/assets/showcase.js +2 -0
  66. package/mockup/examples/js-foundation.html +25 -0
  67. package/mockup/examples/tables-navbar.html +12 -8
  68. package/mockup/examples/theming.html +2 -1
  69. package/mockup/foundations.html +2 -2
  70. package/package.json +14 -1
  71. package/packages/fokus-cli/bin/fokus.mjs +18 -1
  72. package/packages/fokus-cli/lib/build.mjs +12 -2
  73. package/packages/fokus-components/scss/components/_accordion.scss +19 -0
  74. package/packages/fokus-components/scss/components/_avatar.scss +22 -0
  75. package/packages/fokus-components/scss/components/_button-group.scss +14 -0
  76. package/packages/fokus-components/scss/components/_close-button.scss +22 -0
  77. package/packages/fokus-components/scss/components/_code.scss +19 -0
  78. package/packages/fokus-components/scss/components/_icon-link.scss +8 -0
  79. package/packages/fokus-components/scss/components/_index.scss +10 -0
  80. package/packages/fokus-components/scss/components/_list-group.scss +26 -0
  81. package/packages/fokus-components/scss/components/_modal.scss +36 -0
  82. package/packages/fokus-components/scss/components/_navbar.scss +48 -0
  83. package/packages/fokus-components/scss/components/_offcanvas.scss +19 -0
  84. package/packages/fokus-components/scss/components/_pagination.scss +10 -0
  85. package/packages/fokus-components/scss/components/_placeholder.scss +13 -0
  86. package/packages/fokus-components/scss/components/_progress.scss +8 -0
  87. package/packages/fokus-components/scss/components/_ratio.scss +10 -0
  88. package/packages/fokus-components/scss/components/_scrollspy.scss +5 -0
  89. package/packages/fokus-components/scss/components/_skeleton.scss +19 -0
  90. package/packages/fokus-components/scss/components/_spinner.scss +9 -53
  91. package/packages/fokus-components/scss/components/_tables.scss +20 -0
  92. package/packages/fokus-components/scss/forms/_forms.scss +29 -0
  93. package/packages/fokus-core/scss/base/_accessibility.scss +45 -0
  94. package/packages/fokus-core/scss/base/_index.scss +1 -0
  95. package/packages/fokus-core/scss/layout/_grid.scss +18 -0
  96. package/packages/fokus-core/scss/settings/_config.scss +43 -0
  97. package/packages/fokus-core/scss/settings/_index.scss +1 -0
  98. package/packages/fokus-core/scss/themes/_dark.scss +38 -2
  99. package/packages/fokus-core/scss/tokens/_root.scss +14 -0
  100. package/packages/fokus-core/scss/tools/_mixins.scss +8 -0
  101. package/packages/fokus-js/js/accordion.js +7 -1
  102. package/packages/fokus-js/js/core/focus.js +20 -0
  103. package/packages/fokus-js/js/core/overlay.d.ts +2 -0
  104. package/packages/fokus-js/js/core/overlay.js +10 -0
  105. package/packages/fokus-js/js/core/register.js +4 -2
  106. package/packages/fokus-js/js/focus-trap.d.ts +3 -0
  107. package/packages/fokus-js/js/focus-trap.js +1 -0
  108. package/packages/fokus-js/js/fokus.d.ts +7 -0
  109. package/packages/fokus-js/js/fokus.js +7 -0
  110. package/packages/fokus-js/js/form-validation.d.ts +7 -0
  111. package/packages/fokus-js/js/form-validation.js +20 -0
  112. package/packages/fokus-js/js/modal.js +16 -2
  113. package/packages/fokus-js/js/navbar.d.ts +10 -0
  114. package/packages/fokus-js/js/navbar.js +27 -0
  115. package/packages/fokus-js/js/offcanvas.d.ts +4 -0
  116. package/packages/fokus-js/js/offcanvas.js +16 -2
  117. package/packages/fokus-js/js/pagination.d.ts +7 -0
  118. package/packages/fokus-js/js/pagination.js +38 -0
  119. package/packages/fokus-js/js/scrollspy.d.ts +7 -0
  120. package/packages/fokus-js/js/scrollspy.js +26 -0
  121. package/packages/fokus-js/js/spinner.d.ts +9 -0
  122. package/packages/fokus-js/js/spinner.js +18 -0
  123. package/packages/fokus-js/js/theme.d.ts +9 -0
  124. package/packages/fokus-js/js/theme.js +19 -0
  125. package/packages/fokus-js/js/toast.js +4 -0
  126. package/packages/fokus-utilities/scss/utilities/_api.scss +48 -0
  127. package/packages/fokus-utilities/scss/utilities/_index.scss +2 -0
  128. package/packages/fokus-utilities/scss/utilities/_states.scss +19 -0
  129. package/packages/fokus-utilities/scss/utilities/_visibility.scss +24 -0
  130. package/scss/entries/core-entry.scss +5 -0
  131. package/scss/entries/dark-entry.scss +3 -0
@@ -47,12 +47,26 @@
47
47
  --fs-control-padding-x-lg: 16px;
48
48
  --fs-focus-width: 2px;
49
49
  --fs-focus-offset: 2px;
50
+ --fs-focus-color: var(--fs-color-primary);
51
+ --fs-focus-ring-size: 3px;
52
+ --fs-focus-ring-color: color-mix(in srgb, var(--fs-focus-color) 22%, transparent);
50
53
  --fs-focus-ring-alpha: 22%;
51
54
  --fs-transition-fast: 150ms;
52
55
  --fs-transition-normal: 220ms;
56
+ --fs-motion-duration-fast: var(--fs-transition-fast);
57
+ --fs-motion-duration-normal: var(--fs-transition-normal);
58
+ --fs-motion-ease-standard: var(--fs-ease-standard);
53
59
  --fs-ease-standard: cubic-bezier(0.2, 0, 0, 1);
54
60
  --fs-border-width: 1px;
55
61
  --fs-disabled-opacity: 0.5;
62
+ --fs-safe-area-top: env(safe-area-inset-top, 0px);
63
+ --fs-safe-area-right: env(safe-area-inset-right, 0px);
64
+ --fs-safe-area-bottom: env(safe-area-inset-bottom, 0px);
65
+ --fs-safe-area-left: env(safe-area-inset-left, 0px);
66
+ --fs-component-control-height: var(--fs-control-height);
67
+ --fs-component-overlay-backdrop: rgb(0 0 0 / 55%);
68
+ --fs-component-panel-radius: var(--fs-radius-md);
69
+ --fs-component-panel-shadow: var(--fs-shadow-lg);
56
70
  --fs-cq-sm: 320px;
57
71
  --fs-cq-md: 480px;
58
72
  --fs-cq-lg: 640px;
@@ -242,6 +256,47 @@
242
256
  }
243
257
  }
244
258
  }
259
+ /* stylelint-disable property-no-deprecated, selector-not-notation */
260
+ @layer reset {
261
+ :focus-visible {
262
+ outline: var(--fs-focus-width) solid var(--fs-focus-color);
263
+ outline-offset: var(--fs-focus-offset);
264
+ }
265
+ @media (forced-colors: active) {
266
+ :focus-visible {
267
+ outline: 2px solid CanvasText;
268
+ outline-offset: 2px;
269
+ }
270
+ }
271
+ }
272
+ @layer utilities {
273
+ .fs-u-visually-hidden:not(:focus):not(:focus-within),
274
+ .fs-u-visually-hidden-focusable:not(:focus):not(:focus-within) {
275
+ position: absolute !important;
276
+ width: 1px !important;
277
+ height: 1px !important;
278
+ padding: 0 !important;
279
+ margin: -1px !important;
280
+ overflow: hidden !important;
281
+ clip-path: inset(50%) !important;
282
+ white-space: nowrap !important;
283
+ border: 0 !important;
284
+ }
285
+ .fs-skip-link {
286
+ position: fixed;
287
+ z-index: 1000;
288
+ inset-block-start: var(--fs-space-2);
289
+ inset-inline-start: var(--fs-space-2);
290
+ transform: translateY(-200%);
291
+ padding: var(--fs-space-2) var(--fs-space-3);
292
+ color: var(--fs-color-on-primary);
293
+ background: var(--fs-color-primary);
294
+ border-radius: var(--fs-radius-sm);
295
+ }
296
+ .fs-skip-link:focus {
297
+ transform: translateY(0);
298
+ }
299
+ }
245
300
  @layer components {
246
301
  .fs-form-row {
247
302
  display: flex;
@@ -335,6 +390,30 @@
335
390
  background-color: var(--fs-color-subtle);
336
391
  cursor: default;
337
392
  }
393
+ .fs-floating-label {
394
+ position: relative;
395
+ }
396
+ .fs-floating-label > .fs-form-control {
397
+ height: 56px;
398
+ padding-top: 20px;
399
+ }
400
+ .fs-floating-label > .fs-form-label {
401
+ position: absolute;
402
+ z-index: 1;
403
+ top: 8px;
404
+ left: 8px;
405
+ color: var(--fs-color-muted);
406
+ font-size: 0.6875rem;
407
+ pointer-events: none;
408
+ }
409
+ .fs-form-control[aria-invalid=true],
410
+ .fs-was-validated .fs-form-control:invalid {
411
+ border-color: var(--fs-color-danger);
412
+ }
413
+ .fs-form-control[aria-invalid=false],
414
+ .fs-was-validated .fs-form-control:valid {
415
+ border-color: var(--fs-color-success);
416
+ }
338
417
  .fs-form-control-sm {
339
418
  height: var(--fs-control-height-sm);
340
419
  font-size: 0.6875rem;
@@ -1072,7 +1151,8 @@
1072
1151
  }
1073
1152
  }
1074
1153
  @layer tokens {
1075
- [data-theme=dark] {
1154
+ [data-theme=dark],
1155
+ [data-fs-theme=dark] {
1076
1156
  --fs-color-text: #f1f3f4;
1077
1157
  --fs-color-muted: #bdc1c6;
1078
1158
  --fs-color-border: #3c4043;
@@ -1119,7 +1199,8 @@
1119
1199
  --fs-feedback-info-bg: rgb(35.0058091619, 49.6887857769, 78.5757788254);
1120
1200
  }
1121
1201
  @supports (color: oklch(0% 0 0deg)) {
1122
- [data-theme=dark] {
1202
+ [data-theme=dark],
1203
+ [data-fs-theme=dark] {
1123
1204
  --fs-color-text: oklch(96.2913383165% 0.002529697 228.7848682695deg);
1124
1205
  --fs-color-muted: oklch(80.9268110646% 0.0083071608 253.8653061211deg);
1125
1206
  --fs-color-border: oklch(36.8827622528% 0.0074489239 240.018838067deg);
@@ -1163,5 +1244,37 @@
1163
1244
  --fs-feedback-info-bg: oklch(31.7574919059% 0.0556228738 263.0598185246deg);
1164
1245
  }
1165
1246
  }
1247
+ @media (prefers-color-scheme: dark) {
1248
+ [data-fs-theme=auto] {
1249
+ --fs-color-text: #f1f3f4;
1250
+ --fs-color-muted: #bdc1c6;
1251
+ --fs-color-border: #3c4043;
1252
+ --fs-color-surface: #202124;
1253
+ --fs-color-subtle: #2b2c2f;
1254
+ --fs-color-bg-surface: var(--fs-color-surface);
1255
+ --fs-color-bg-subtle: var(--fs-color-subtle);
1256
+ --fs-color-surface-raised: var(--fs-color-surface);
1257
+ --fs-color-surface-interactive: var(--fs-color-subtle);
1258
+ --fs-color-text-primary: var(--fs-color-text);
1259
+ --fs-color-text-muted: var(--fs-color-muted);
1260
+ --fs-color-border-default: var(--fs-color-border);
1261
+ --fs-color-focus: var(--fs-color-primary);
1262
+ --fs-tooltip-bg: #f8fafc;
1263
+ --fs-tooltip-text: #1e293b;
1264
+ }
1265
+ }
1266
+ @media (forced-colors: active) {
1267
+ :root,
1268
+ [data-theme=dark],
1269
+ [data-fs-theme=light],
1270
+ [data-fs-theme=dark],
1271
+ [data-fs-theme=auto] {
1272
+ --fs-color-border: CanvasText;
1273
+ --fs-color-text: CanvasText;
1274
+ --fs-color-surface: Canvas;
1275
+ --fs-color-subtle: Canvas;
1276
+ --fs-focus-color: Highlight;
1277
+ }
1278
+ }
1166
1279
  }
1167
1280
  /*# sourceMappingURL=forms.css.map */