fokus-styles 2.0.0 → 2.4.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 (137) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +4 -3
  3. package/dist/css/components.css +532 -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 +4072 -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 +1585 -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 +314 -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-rtl.css +8552 -0
  20. package/dist/css/fokus-rtl.css.map +1 -0
  21. package/dist/css/fokus-rtl.min.css +2 -0
  22. package/dist/css/fokus-rtl.min.css.map +1 -0
  23. package/dist/css/fokus-utilities.css +4198 -0
  24. package/dist/css/fokus-utilities.css.map +1 -0
  25. package/dist/css/fokus-utilities.min.css +2 -0
  26. package/dist/css/fokus-utilities.min.css.map +1 -0
  27. package/dist/css/fokus.css +1361 -53
  28. package/dist/css/fokus.css.map +1 -1
  29. package/dist/css/fokus.min.css +1 -1
  30. package/dist/css/fokus.min.css.map +1 -1
  31. package/dist/css/forms.css +137 -2
  32. package/dist/css/forms.css.map +1 -1
  33. package/dist/css/forms.min.css +1 -1
  34. package/dist/css/forms.min.css.map +1 -1
  35. package/dist/css/helpers.css +398 -2
  36. package/dist/css/helpers.css.map +1 -1
  37. package/dist/css/helpers.min.css +1 -1
  38. package/dist/css/helpers.min.css.map +1 -1
  39. package/dist/css/layout.css +582 -2
  40. package/dist/css/layout.css.map +1 -1
  41. package/dist/css/layout.min.css +1 -1
  42. package/dist/css/layout.min.css.map +1 -1
  43. package/dist/js/fokus.js +347 -12
  44. package/dist/js/fokus.js.map +4 -4
  45. package/dist/js/fokus.min.js +17 -17
  46. package/dist/js/fokus.min.js.map +4 -4
  47. package/docs/components/accordion.md +3 -0
  48. package/docs/components/avatar.md +13 -0
  49. package/docs/components/button-group.md +13 -0
  50. package/docs/components/close-button.md +13 -0
  51. package/docs/components/code.md +13 -0
  52. package/docs/components/icon-link.md +13 -0
  53. package/docs/components/list-group.md +13 -0
  54. package/docs/components/modal.md +3 -0
  55. package/docs/components/navbar.md +3 -0
  56. package/docs/components/pagination.md +3 -0
  57. package/docs/components/placeholder.md +13 -0
  58. package/docs/components/ratio.md +13 -0
  59. package/docs/components/scrollspy.md +13 -0
  60. package/docs/components/skeleton.md +3 -0
  61. package/docs/components/table.md +3 -0
  62. package/docs/guides/javascript-api.md +9 -0
  63. package/docs/guides/rtl-and-system-preferences.md +28 -0
  64. package/docs/guides/utility-api.md +9 -0
  65. package/docs/reference/size-baseline.json +13 -13
  66. package/mockup/assets/example-theme.css +3 -1
  67. package/mockup/assets/example-theme.js +2 -0
  68. package/mockup/assets/showcase-contracts.js +2 -2
  69. package/mockup/assets/showcase.css +4 -2
  70. package/mockup/assets/showcase.js +2 -0
  71. package/mockup/examples/js-foundation.html +25 -0
  72. package/mockup/examples/tables-navbar.html +12 -8
  73. package/mockup/examples/theming.html +2 -1
  74. package/mockup/foundations.html +2 -2
  75. package/package.json +15 -1
  76. package/packages/fokus-cli/bin/fokus.mjs +18 -1
  77. package/packages/fokus-cli/lib/build.mjs +12 -2
  78. package/packages/fokus-components/scss/components/_accordion.scss +19 -0
  79. package/packages/fokus-components/scss/components/_avatar.scss +22 -0
  80. package/packages/fokus-components/scss/components/_button-group.scss +14 -0
  81. package/packages/fokus-components/scss/components/_close-button.scss +22 -0
  82. package/packages/fokus-components/scss/components/_code.scss +19 -0
  83. package/packages/fokus-components/scss/components/_icon-link.scss +8 -0
  84. package/packages/fokus-components/scss/components/_index.scss +10 -0
  85. package/packages/fokus-components/scss/components/_list-group.scss +26 -0
  86. package/packages/fokus-components/scss/components/_modal.scss +36 -0
  87. package/packages/fokus-components/scss/components/_navbar.scss +48 -0
  88. package/packages/fokus-components/scss/components/_offcanvas.scss +19 -0
  89. package/packages/fokus-components/scss/components/_pagination.scss +10 -0
  90. package/packages/fokus-components/scss/components/_placeholder.scss +13 -0
  91. package/packages/fokus-components/scss/components/_progress.scss +8 -0
  92. package/packages/fokus-components/scss/components/_ratio.scss +10 -0
  93. package/packages/fokus-components/scss/components/_scrollspy.scss +5 -0
  94. package/packages/fokus-components/scss/components/_skeleton.scss +19 -0
  95. package/packages/fokus-components/scss/components/_spinner.scss +9 -53
  96. package/packages/fokus-components/scss/components/_tables.scss +20 -0
  97. package/packages/fokus-components/scss/forms/_forms.scss +29 -0
  98. package/packages/fokus-core/scss/base/_accessibility.scss +59 -0
  99. package/packages/fokus-core/scss/base/_index.scss +1 -0
  100. package/packages/fokus-core/scss/layout/_grid.scss +18 -0
  101. package/packages/fokus-core/scss/settings/_config.scss +43 -0
  102. package/packages/fokus-core/scss/settings/_index.scss +1 -0
  103. package/packages/fokus-core/scss/themes/_dark.scss +38 -2
  104. package/packages/fokus-core/scss/tokens/_root.scss +25 -0
  105. package/packages/fokus-core/scss/tools/_mixins.scss +8 -0
  106. package/packages/fokus-js/js/accordion.js +7 -1
  107. package/packages/fokus-js/js/core/focus.js +20 -0
  108. package/packages/fokus-js/js/core/overlay.d.ts +2 -0
  109. package/packages/fokus-js/js/core/overlay.js +10 -0
  110. package/packages/fokus-js/js/core/register.js +4 -2
  111. package/packages/fokus-js/js/focus-trap.d.ts +3 -0
  112. package/packages/fokus-js/js/focus-trap.js +1 -0
  113. package/packages/fokus-js/js/fokus.d.ts +7 -0
  114. package/packages/fokus-js/js/fokus.js +7 -0
  115. package/packages/fokus-js/js/form-validation.d.ts +7 -0
  116. package/packages/fokus-js/js/form-validation.js +20 -0
  117. package/packages/fokus-js/js/modal.js +16 -2
  118. package/packages/fokus-js/js/navbar.d.ts +10 -0
  119. package/packages/fokus-js/js/navbar.js +27 -0
  120. package/packages/fokus-js/js/offcanvas.d.ts +4 -0
  121. package/packages/fokus-js/js/offcanvas.js +16 -2
  122. package/packages/fokus-js/js/pagination.d.ts +7 -0
  123. package/packages/fokus-js/js/pagination.js +38 -0
  124. package/packages/fokus-js/js/scrollspy.d.ts +7 -0
  125. package/packages/fokus-js/js/scrollspy.js +26 -0
  126. package/packages/fokus-js/js/spinner.d.ts +9 -0
  127. package/packages/fokus-js/js/spinner.js +18 -0
  128. package/packages/fokus-js/js/theme.d.ts +9 -0
  129. package/packages/fokus-js/js/theme.js +19 -0
  130. package/packages/fokus-js/js/toast.js +4 -0
  131. package/packages/fokus-utilities/scss/utilities/_api.scss +48 -0
  132. package/packages/fokus-utilities/scss/utilities/_index.scss +2 -0
  133. package/packages/fokus-utilities/scss/utilities/_states.scss +19 -0
  134. package/packages/fokus-utilities/scss/utilities/_visibility.scss +24 -0
  135. package/scss/entries/core-entry.scss +5 -0
  136. package/scss/entries/dark-entry.scss +3 -0
  137. package/scss/entries/rtl-entry.scss +11 -0
@@ -47,12 +47,28 @@
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);
70
+ --fs-contrast-border-width: var(--fs-border-width);
71
+ --fs-contrast-focus-width: var(--fs-focus-width);
56
72
  --fs-cq-sm: 320px;
57
73
  --fs-cq-md: 480px;
58
74
  --fs-cq-lg: 640px;
@@ -131,6 +147,14 @@
131
147
  --fs-feedback-info-bg: oklch(96.4918490239% 0.0173174767 286.0707018324deg);
132
148
  }
133
149
  }
150
+ @media (prefers-contrast: more) {
151
+ :root {
152
+ --fs-contrast-border-width: 2px;
153
+ --fs-contrast-focus-width: 3px;
154
+ --fs-focus-width: var(--fs-contrast-focus-width);
155
+ --fs-border-width: var(--fs-contrast-border-width);
156
+ }
157
+ }
134
158
  }
135
159
  @layer tokens {
136
160
  :root {
@@ -242,6 +266,59 @@
242
266
  }
243
267
  }
244
268
  }
269
+ /* stylelint-disable property-no-deprecated, selector-not-notation */
270
+ @layer reset {
271
+ :focus-visible {
272
+ outline: var(--fs-focus-width) solid var(--fs-focus-color);
273
+ outline-offset: var(--fs-focus-offset);
274
+ }
275
+ @media (forced-colors: active) {
276
+ :focus-visible {
277
+ outline: 2px solid CanvasText;
278
+ outline-offset: 2px;
279
+ }
280
+ button,
281
+ [role=button],
282
+ input,
283
+ select,
284
+ textarea,
285
+ .fs-btn {
286
+ border-color: ButtonText;
287
+ forced-color-adjust: auto;
288
+ }
289
+ .fs-u-focus-ring:focus-visible {
290
+ outline: 3px solid Highlight;
291
+ }
292
+ }
293
+ }
294
+ @layer utilities {
295
+ .fs-u-visually-hidden:not(:focus):not(:focus-within),
296
+ .fs-u-visually-hidden-focusable:not(:focus):not(:focus-within) {
297
+ position: absolute !important;
298
+ width: 1px !important;
299
+ height: 1px !important;
300
+ padding: 0 !important;
301
+ margin: -1px !important;
302
+ overflow: hidden !important;
303
+ clip-path: inset(50%) !important;
304
+ white-space: nowrap !important;
305
+ border: 0 !important;
306
+ }
307
+ .fs-skip-link {
308
+ position: fixed;
309
+ z-index: 1000;
310
+ inset-block-start: var(--fs-space-2);
311
+ inset-inline-start: var(--fs-space-2);
312
+ transform: translateY(-200%);
313
+ padding: var(--fs-space-2) var(--fs-space-3);
314
+ color: var(--fs-color-on-primary);
315
+ background: var(--fs-color-primary);
316
+ border-radius: var(--fs-radius-sm);
317
+ }
318
+ .fs-skip-link:focus {
319
+ transform: translateY(0);
320
+ }
321
+ }
245
322
  @layer components {
246
323
  .fs-form-row {
247
324
  display: flex;
@@ -335,6 +412,30 @@
335
412
  background-color: var(--fs-color-subtle);
336
413
  cursor: default;
337
414
  }
415
+ .fs-floating-label {
416
+ position: relative;
417
+ }
418
+ .fs-floating-label > .fs-form-control {
419
+ height: 56px;
420
+ padding-top: 20px;
421
+ }
422
+ .fs-floating-label > .fs-form-label {
423
+ position: absolute;
424
+ z-index: 1;
425
+ top: 8px;
426
+ left: 8px;
427
+ color: var(--fs-color-muted);
428
+ font-size: 0.6875rem;
429
+ pointer-events: none;
430
+ }
431
+ .fs-form-control[aria-invalid=true],
432
+ .fs-was-validated .fs-form-control:invalid {
433
+ border-color: var(--fs-color-danger);
434
+ }
435
+ .fs-form-control[aria-invalid=false],
436
+ .fs-was-validated .fs-form-control:valid {
437
+ border-color: var(--fs-color-success);
438
+ }
338
439
  .fs-form-control-sm {
339
440
  height: var(--fs-control-height-sm);
340
441
  font-size: 0.6875rem;
@@ -1072,7 +1173,8 @@
1072
1173
  }
1073
1174
  }
1074
1175
  @layer tokens {
1075
- [data-theme=dark] {
1176
+ [data-theme=dark],
1177
+ [data-fs-theme=dark] {
1076
1178
  --fs-color-text: #f1f3f4;
1077
1179
  --fs-color-muted: #bdc1c6;
1078
1180
  --fs-color-border: #3c4043;
@@ -1119,7 +1221,8 @@
1119
1221
  --fs-feedback-info-bg: rgb(35.0058091619, 49.6887857769, 78.5757788254);
1120
1222
  }
1121
1223
  @supports (color: oklch(0% 0 0deg)) {
1122
- [data-theme=dark] {
1224
+ [data-theme=dark],
1225
+ [data-fs-theme=dark] {
1123
1226
  --fs-color-text: oklch(96.2913383165% 0.002529697 228.7848682695deg);
1124
1227
  --fs-color-muted: oklch(80.9268110646% 0.0083071608 253.8653061211deg);
1125
1228
  --fs-color-border: oklch(36.8827622528% 0.0074489239 240.018838067deg);
@@ -1163,5 +1266,37 @@
1163
1266
  --fs-feedback-info-bg: oklch(31.7574919059% 0.0556228738 263.0598185246deg);
1164
1267
  }
1165
1268
  }
1269
+ @media (prefers-color-scheme: dark) {
1270
+ [data-fs-theme=auto] {
1271
+ --fs-color-text: #f1f3f4;
1272
+ --fs-color-muted: #bdc1c6;
1273
+ --fs-color-border: #3c4043;
1274
+ --fs-color-surface: #202124;
1275
+ --fs-color-subtle: #2b2c2f;
1276
+ --fs-color-bg-surface: var(--fs-color-surface);
1277
+ --fs-color-bg-subtle: var(--fs-color-subtle);
1278
+ --fs-color-surface-raised: var(--fs-color-surface);
1279
+ --fs-color-surface-interactive: var(--fs-color-subtle);
1280
+ --fs-color-text-primary: var(--fs-color-text);
1281
+ --fs-color-text-muted: var(--fs-color-muted);
1282
+ --fs-color-border-default: var(--fs-color-border);
1283
+ --fs-color-focus: var(--fs-color-primary);
1284
+ --fs-tooltip-bg: #f8fafc;
1285
+ --fs-tooltip-text: #1e293b;
1286
+ }
1287
+ }
1288
+ @media (forced-colors: active) {
1289
+ :root,
1290
+ [data-theme=dark],
1291
+ [data-fs-theme=light],
1292
+ [data-fs-theme=dark],
1293
+ [data-fs-theme=auto] {
1294
+ --fs-color-border: CanvasText;
1295
+ --fs-color-text: CanvasText;
1296
+ --fs-color-surface: Canvas;
1297
+ --fs-color-subtle: Canvas;
1298
+ --fs-focus-color: Highlight;
1299
+ }
1300
+ }
1166
1301
  }
1167
1302
  /*# sourceMappingURL=forms.css.map */