@stackoverflow/stacks 3.0.0-beta.3 → 3.0.0-beta.30

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 (108) hide show
  1. package/dist/controllers.d.ts +0 -2
  2. package/dist/css/stacks.css +14245 -15086
  3. package/dist/css/stacks.min.css +1 -1
  4. package/dist/js/stacks.js +0 -364
  5. package/dist/js/stacks.min.js +1 -1
  6. package/lib/atomic/backgrounds.less +67 -0
  7. package/lib/atomic/border-radius.less +38 -0
  8. package/lib/atomic/borders.less +73 -0
  9. package/lib/atomic/box-shadow.less +29 -0
  10. package/lib/atomic/box-sizing.less +3 -0
  11. package/lib/atomic/current-color.less +2 -0
  12. package/lib/atomic/cursors.less +8 -0
  13. package/lib/atomic/display.less +15 -0
  14. package/lib/atomic/flex.less +6 -34
  15. package/lib/atomic/floats.less +20 -0
  16. package/lib/atomic/gap.less +2 -0
  17. package/lib/atomic/grid.less +2 -0
  18. package/lib/atomic/height.less +22 -0
  19. package/lib/atomic/interactivity.less +45 -0
  20. package/lib/atomic/lists.less +29 -0
  21. package/lib/atomic/margin.less +48 -0
  22. package/lib/atomic/object-fit.less +9 -0
  23. package/lib/atomic/opacity.less +54 -0
  24. package/lib/atomic/outline.less +11 -0
  25. package/lib/atomic/overflow.less +17 -0
  26. package/lib/atomic/padding.less +12 -0
  27. package/lib/atomic/positioning.less +41 -0
  28. package/lib/atomic/sizing.less +51 -0
  29. package/lib/atomic/transitions.less +20 -0
  30. package/lib/atomic/truncation.less +58 -0
  31. package/lib/atomic/typography.less +71 -137
  32. package/lib/atomic/vertical-alignment.less +9 -0
  33. package/lib/atomic/visibility.less +18 -0
  34. package/lib/atomic/width.less +27 -0
  35. package/lib/atomic/z-index.less +12 -0
  36. package/lib/base/body.less +2 -4
  37. package/lib/base/configuration-static.less +3 -3
  38. package/lib/base/internal.less +3 -5
  39. package/lib/base/reset-normalize.less +3 -3
  40. package/lib/components/activity-indicator/activity-indicator.less +4 -20
  41. package/lib/components/anchor/anchor.less +28 -39
  42. package/lib/components/avatar/avatar.less +20 -19
  43. package/lib/components/badge/badge.less +227 -167
  44. package/lib/components/banner/banner.less +12 -11
  45. package/lib/components/bling/bling.less +47 -10
  46. package/lib/components/button/button.less +300 -380
  47. package/lib/components/checkbox_radio/checkbox_radio.less +195 -113
  48. package/lib/components/code-block/code-block.fixtures.ts +2 -2
  49. package/lib/components/code-block/code-block.less +2 -3
  50. package/lib/components/description/description.less +17 -2
  51. package/lib/components/empty-state/empty-state.less +17 -6
  52. package/lib/components/form-group/form-group.less +38 -0
  53. package/lib/components/input-fill/input-fill.less +3 -3
  54. package/lib/components/input-icon/input-icon.less +3 -3
  55. package/lib/components/input-message/input-message.less +1 -0
  56. package/lib/components/input_textarea/input_textarea.less +71 -58
  57. package/lib/components/label/label.less +12 -56
  58. package/lib/components/link/link.less +44 -98
  59. package/lib/components/loader/loader.less +88 -0
  60. package/lib/components/menu/menu.less +89 -19
  61. package/lib/components/modal/modal.less +10 -10
  62. package/lib/components/navigation/navigation.less +77 -42
  63. package/lib/components/notice/notice.less +90 -75
  64. package/lib/components/pagination/pagination.less +50 -42
  65. package/lib/components/popover/popover.less +9 -11
  66. package/lib/components/post-summary/post-summary.less +225 -385
  67. package/lib/components/prose/prose.less +49 -35
  68. package/lib/components/select/select.less +46 -41
  69. package/lib/components/sidebar-widget/sidebar-widget.less +26 -196
  70. package/lib/components/table/table.less +48 -22
  71. package/lib/components/tag/tag.less +25 -6
  72. package/lib/components/toast/toast.less +4 -2
  73. package/lib/components/toggle-switch/toggle-switch.less +15 -19
  74. package/lib/components/user-card/user-card.less +129 -92
  75. package/lib/components/vote/vote.less +134 -0
  76. package/lib/controllers.ts +0 -2
  77. package/lib/exports/color-sets.less +108 -81
  78. package/lib/exports/constants-helpers.less +9 -13
  79. package/lib/exports/constants-type.less +18 -36
  80. package/lib/exports/mixins.less +92 -272
  81. package/lib/index.ts +0 -4
  82. package/lib/stacks-static.less +44 -30
  83. package/lib/test/visual-test-utils.ts +42 -10
  84. package/lib/tsconfig.json +1 -1
  85. package/package.json +1 -1
  86. package/dist/components/expandable/expandable.d.ts +0 -17
  87. package/dist/components/uploader/uploader.d.ts +0 -48
  88. package/lib/atomic/border.less +0 -121
  89. package/lib/atomic/misc.less +0 -374
  90. package/lib/atomic/spacing.less +0 -98
  91. package/lib/atomic/width-height.less +0 -194
  92. package/lib/components/block-link/block-link.less +0 -82
  93. package/lib/components/breadcrumbs/breadcrumbs.less +0 -41
  94. package/lib/components/button-group/button-group.less +0 -81
  95. package/lib/components/card/card.less +0 -37
  96. package/lib/components/check-control/check-control.less +0 -17
  97. package/lib/components/check-group/check-group.less +0 -19
  98. package/lib/components/expandable/expandable.less +0 -119
  99. package/lib/components/expandable/expandable.ts +0 -238
  100. package/lib/components/link-preview/link-preview.less +0 -148
  101. package/lib/components/page-title/page-title.less +0 -51
  102. package/lib/components/progress-bar/progress-bar.less +0 -292
  103. package/lib/components/skeleton/skeleton.less +0 -73
  104. package/lib/components/spinner/spinner.less +0 -103
  105. package/lib/components/topbar/topbar.less +0 -553
  106. package/lib/components/uploader/uploader.less +0 -205
  107. package/lib/components/uploader/uploader.ts +0 -207
  108. package/lib/exports/spacing-mixins.less +0 -67
@@ -0,0 +1,73 @@
1
+ @import (reference) "../base/internal.less";
2
+
3
+ // BORDER
4
+ #stacks-internals #responsify('.ba', { .bas-solid; .baw1; });
5
+ #stacks-internals #responsify('.bt', { .bts-solid; .btw1; });
6
+ #stacks-internals #responsify('.br', { .brs-solid; .brw1; });
7
+ #stacks-internals #responsify('.bb', { .bbs-solid; .bbw1; });
8
+ #stacks-internals #responsify('.bl', { .bls-solid; .blw1; });
9
+ .bx { .bls-solid; .brs-solid; .bxw1; }
10
+ .by { .bts-solid; .bbs-solid; .byw1; }
11
+
12
+ // BORDER WIDTH
13
+ #stacks-internals #responsify('.baw0', { border-width: 0 !important; });
14
+ .baw1 { border-width: var(--su1) !important; }
15
+ .baw2 { border-width: var(--su2) !important; }
16
+ .baw3 { border-width: var(--su4) !important; }
17
+
18
+ // Top border width
19
+ #stacks-internals #responsify('.btw0', { border-top-width: 0 !important; });
20
+ .btw1 { border-top-width: var(--su1) !important; }
21
+ .btw2 { border-top-width: var(--su2) !important; }
22
+ .btw3 { border-top-width: var(--su4) !important; }
23
+
24
+ // Right border width
25
+ #stacks-internals #responsify('.brw0', { border-right-width: 0 !important; });
26
+ .brw1 { border-right-width: var(--su1) !important; }
27
+ .brw2 { border-right-width: var(--su2) !important; }
28
+ .brw3 { border-right-width: var(--su4) !important; }
29
+
30
+ // Bottom border width
31
+ #stacks-internals #responsify('.bbw0', { border-bottom-width: 0 !important; });
32
+ .bbw1 { border-bottom-width: var(--su1) !important; }
33
+ .bbw2 { border-bottom-width: var(--su2) !important; }
34
+ .bbw3 { border-bottom-width: var(--su4) !important; }
35
+
36
+ // Left border width
37
+ #stacks-internals #responsify('.blw0', { border-left-width: 0 !important; });
38
+ .blw0 { border-left-width: 0 !important; }
39
+ .blw1 { border-left-width: var(--su1) !important; }
40
+ .blw2 { border-left-width: var(--su2) !important; }
41
+ .blw3 { border-left-width: var(--su4) !important; }
42
+
43
+ // Top and bottom border width
44
+ .byw0 { .btw0; .bbw0; }
45
+ .byw1 { .btw1; .bbw1; }
46
+ .byw2 { .btw2; .bbw2; }
47
+ .byw3 { .btw3; .bbw3; }
48
+
49
+ // Left and right border width
50
+ .bxw0 { .brw0; .blw0; }
51
+ .bxw1 { .brw1; .blw1; }
52
+ .bxw2 { .brw2; .blw2; }
53
+ .bxw3 { .brw3; .blw3; }
54
+
55
+ // BORDER STYLE
56
+ .bas-solid { border-style: solid !important; }
57
+ .bas-dashed { border-style: dashed !important; }
58
+
59
+ // Top border style
60
+ .bts-solid { border-top-style: solid !important; }
61
+ .bts-dashed { border-top-style: dashed !important; }
62
+
63
+ // Right border style
64
+ .brs-solid { border-right-style: solid !important; }
65
+ .brs-dashed { border-right-style: dashed !important; }
66
+
67
+ // Bottom border style
68
+ .bbs-solid { border-bottom-style: solid !important; }
69
+ .bbs-dashed { border-bottom-style: dashed !important; }
70
+
71
+ // Left border style
72
+ .bls-solid { border-left-style: solid !important; }
73
+ .bls-dashed { border-left-style: dashed !important; }
@@ -0,0 +1,29 @@
1
+ @import (reference) "../base/internal.less";
2
+ @import (reference) "../exports/color-mixins.less";
3
+ @import (reference) "../exports/constants-helpers.less";
4
+ // @import (reference) "../exports/mixins.less";
5
+
6
+ #stacks-internals #responsify('.bs-none', {
7
+ box-shadow: none !important;
8
+ });
9
+
10
+ .bs-sm,
11
+ .h\:bs-sm:hover {
12
+ box-shadow: var(--bs-sm) !important;
13
+ }
14
+
15
+ .bs-md,
16
+ .h\:bs-md:hover { box-shadow: var(--bs-md) !important; }
17
+
18
+ .bs-lg,
19
+ .h\:bs-lg:hover { box-shadow: var(--bs-lg) !important; }
20
+
21
+ .bs-xl,
22
+ .h\:bs-xl:hover { box-shadow: var(--bs-xl) !important; }
23
+
24
+ .bs-ring,
25
+ .h\:bs-ring:hover,
26
+ .f\:bs-ring:focus,
27
+ .f\:bs-ring:focus-within {
28
+ box-shadow: 0 0 0 var(--su4) var(--focus-ring);
29
+ }
@@ -0,0 +1,3 @@
1
+ .box-content { box-sizing: content-box !important; }
2
+ .box-border { box-sizing: border-box !important; }
3
+ .box-unset { box-sizing: unset !important; }
@@ -0,0 +1,2 @@
1
+ .fill-current { fill: currentColor !important; }
2
+ .stroke-current { stroke: currentColor !important; }
@@ -0,0 +1,8 @@
1
+ .c-auto { cursor: auto !important; }
2
+ .c-default { cursor: default !important; }
3
+ .c-pointer { cursor: pointer !important; }
4
+ .c-text { cursor: text !important; }
5
+ .c-wait { cursor: wait !important; }
6
+ .c-move { cursor: move !important; }
7
+ .c-not-allowed { cursor: not-allowed !important; }
8
+ .c-help { cursor: help !important; }
@@ -0,0 +1,15 @@
1
+ @import (reference) "../exports/constants-helpers.less";
2
+ @import (reference) "../base/configuration-static.less";
3
+ @import (reference) "../base/internal.less";
4
+
5
+ #stacks-internals #responsify('.d-block', { display: block !important; });
6
+ #stacks-internals #responsify('.d-flex', { display: flex !important; });
7
+ #stacks-internals #responsify('.d-inline-flex', { display: inline-flex !important; });
8
+ #stacks-internals #responsify('.d-grid', { display: grid !important; });
9
+ #stacks-internals #responsify('.d-inline-grid', { display: inline-grid !important; });
10
+ #stacks-internals #responsify('.d-inline', { display: inline !important; });
11
+ #stacks-internals #responsify('.d-inline-block', { display: inline-block !important; });
12
+ .d-table { display: table !important; }
13
+ .d-table-cell { display: table-cell !important; }
14
+ #stacks-internals #responsify('.d-none', { display: none !important; });
15
+ .d-unset { display: unset !important; }
@@ -1,25 +1,4 @@
1
- //
2
- // STACK OVERFLOW
3
- // FLEXBOX HELPERS
4
- //
5
- // This CSS comes from Stacks, our CSS & Pattern library for rapidly building
6
- // Stack Overflow. For documentation of all these classes and how to contribute,
7
- // visit https://stackoverflow.design/
8
- //
9
- // TABLE OF CONTENTS
10
- // • VARIABLES
11
- // • MIXINS
12
- // • FLEX ELEMENTS
13
- // • FLEX SPACING
14
- // • MODIFICATIONS
15
- // • ATOMIC
16
- // • DEPRECATED
17
- //
18
- // ============================================================================
19
- // -- STACKS FLEX LAYOUT MIXINS
20
- // ============================================================================
21
- // -- FIXED COLUMN WIDTHS
22
- // ----------------------------------------------------------------------------
1
+ @import (reference) "../base/internal.less";
23
2
 
24
3
  #stacks-internals() {
25
4
  #flex-builder-settings() {
@@ -321,19 +300,15 @@
321
300
  .ac-start { align-content: flex-start !important; }
322
301
  .ac-stretch { align-content: stretch !important; }
323
302
 
324
- // -- ALIGN ITEMS
325
- // Defines the default behavior for how child items align along
326
- // the parent's cross axis. Think of it the cross-axis for
327
- // justify-content.
328
- // ----------------------------------------------------------------------------
303
+ // Align items
329
304
  #stacks-internals #build-classes(
330
- responsive,
331
305
  '.ai',
332
306
  {
333
307
  .template(@value) when (@value=start), (@value=end) { align-items: ~"flex-@{value}" !important; }
334
308
  .template(@value) when (default()) { align-items: @value !important; };
335
309
  },
336
- baseline center end start stretch
310
+ baseline center end start stretch,
311
+ true
337
312
  );
338
313
 
339
314
  // -- CENTER ITEMS
@@ -345,18 +320,15 @@
345
320
  .ai-center;
346
321
  }
347
322
 
348
- // -- ALIGN SELF
349
- // Allows child containers to re-align themselves regardless
350
- // of the parent's main axis direction.
351
- // ----------------------------------------------------------------------------
323
+ // Align self
352
324
  #stacks-internals #build-classes(
353
- responsive,
354
325
  '.as',
355
326
  {
356
327
  .template(@value) when (@value=start), (@value=end) { align-self: ~"flex-@{value}" !important; }
357
328
  .template(@value) when (default()) { align-self: @value !important; };
358
329
  },
359
330
  auto baseline center end start stretch
331
+ true
360
332
  );
361
333
 
362
334
  // -- FLEX
@@ -0,0 +1,20 @@
1
+ // FLOAT
2
+ .float-left { float: left !important; }
3
+ .float-right { float: right !important; }
4
+ .float-none { float: none !important; }
5
+
6
+ // CLEARFIX
7
+ .clearfix {
8
+ &:before,
9
+ &:after {
10
+ content: "";
11
+ display: table;
12
+ }
13
+ &:after {
14
+ clear: both;
15
+ }
16
+ }
17
+ .clear-left { clear: left !important; }
18
+ .clear-right { clear: right !important; }
19
+ .clear-both { clear: both !important; }
20
+ .clear-none { clear: none !important; }
@@ -1,3 +1,5 @@
1
+ @import (reference) "../base/internal.less";
2
+
1
3
  #stacks-internals #responsify('.g0', { --_gap-y: 0; --_gap-x: 0; });
2
4
  #stacks-internals #responsify('.g1', { --_gap-y: var(--su1); --_gap-x: var(--su1); });
3
5
  #stacks-internals #responsify('.g2', { --_gap-y: var(--su2); --_gap-x: var(--su2); });
@@ -1,3 +1,5 @@
1
+ @import (reference) "../base/internal.less";
2
+
1
3
  // ============================================================================
2
4
  // $ GRID FLOW
3
5
  // ----------------------------------------------------------------------------
@@ -0,0 +1,22 @@
1
+ @import (reference) "../base/internal.less";
2
+ @import (reference) "../exports/mixins.less";
3
+
4
+ // `height` properties
5
+ .generate-sizing('.h', height, 0 1 2 4 6 8 12 16 24 32 48 64 96 128, 'px');
6
+ .generate-su-sizing('.hs', height); // Static sizing units
7
+ #stacks-internals #responsify('.h100', { height: 100% !important; });
8
+ #stacks-internals #responsify('.h-auto', { height: auto !important; });
9
+ #stacks-internals #responsify('.h-screen', { height: 100vh !important; });
10
+
11
+ // `min-height` properties
12
+ .generate-sizing('.hmn', min-height, 0, 'px', false, true);
13
+ .generate-su-sizing('.hmn', min-height); // Static sizing units
14
+ #stacks-internals #responsify('.hmn100', { min-height: 100% !important; });
15
+ #stacks-internals #responsify('.hmn-initial', { min-height: initial !important; });
16
+ #stacks-internals #responsify('.hmn-screen', { min-height: 100vh !important; });
17
+
18
+ // `max-height` properties
19
+ .generate-su-sizing('.hmx', max-height); // Static sizing units
20
+ #stacks-internals #responsify('.hmx100', { max-height: 100% !important; });
21
+ #stacks-internals #responsify('.hmx-initial', { max-height: initial !important; });
22
+ #stacks-internals #responsify('.hmx-screen', { max-height: 100vh !important; });
@@ -0,0 +1,45 @@
1
+ @import (reference) "../exports/mixins.less";
2
+
3
+ // FOCUS
4
+ .focus,
5
+ .f\:focus:focus,
6
+ .f\:focus:focus-within {
7
+ .focus-styles();
8
+ }
9
+
10
+ .focus-inset,
11
+ .f\:focus-inset:focus,
12
+ .f\:focus-inset:focus-within {
13
+ .focus-styles(true);
14
+ }
15
+
16
+ .focus-bordered,
17
+ .f\:focus-bordered:focus,
18
+ .f\:focus-bordered:focus-within {
19
+ .focus-styles(false, true);
20
+ }
21
+
22
+ .focus-inset-bordered,
23
+ .f\:focus-inset-bordered:focus,
24
+ .f\:focus-inset-bordered:focus-within {
25
+ .focus-styles(true, true);
26
+ }
27
+
28
+ // POINTER EVENTS
29
+ .pe-auto { pointer-events: auto !important; }
30
+ .pe-none { pointer-events: none !important; }
31
+
32
+ // USER SELECT
33
+ .us-auto {
34
+ -webkit-user-select: auto !important;
35
+ -moz-user-select: auto !important;
36
+ -ms-user-select: auto !important;
37
+ user-select: auto !important;
38
+ }
39
+
40
+ .us-none {
41
+ -webkit-user-select: none !important;
42
+ -moz-user-select: none !important;
43
+ -ms-user-select: none !important;
44
+ user-select: none !important;
45
+ }
@@ -0,0 +1,29 @@
1
+ ul,
2
+ ol {
3
+ padding: 0;
4
+ margin-left: 2.8em;
5
+
6
+ ul,
7
+ ol {
8
+ margin-bottom: 0;
9
+ }
10
+ }
11
+
12
+ ul { list-style-type: disc; }
13
+ ol { list-style-type: decimal; }
14
+
15
+ .list-reset {
16
+ list-style: none;
17
+ margin: 0;
18
+ padding: 0;
19
+ }
20
+
21
+ // List Style Types
22
+ .list-ls-none { list-style: none !important; }
23
+ .list-ls-disc { list-style-type: disc !important; }
24
+ .list-ls-decimal { list-style-type: decimal !important; }
25
+ .list-ls-unset { list-style-type: unset !important; }
26
+
27
+ // List Position
28
+ .list-inside { list-style-position: inside !important; }
29
+ .list-outside { list-style-position: outside !important; }
@@ -0,0 +1,48 @@
1
+ @import (reference) "../base/internal.less";
2
+ @import (reference) "../exports/mixins.less";
3
+
4
+ @px-values: 0 1 2 4 6 8 12 16 24 32 48 64 96 128;
5
+ @px-values-negative: 1 2 4 6 8 12 16 24 32 48 64 96 128;
6
+ @percent-values: 50 100;
7
+
8
+ .m-auto { margin: auto !important; }
9
+ .generate-sizing('.m', margin, @px-values, 'px', true);
10
+ .generate-sizing('.mn', margin, @px-values-negative, 'px', true, true);
11
+ .generate-sizing('.m', margin, @percent-values, 'percent', true);
12
+ .generate-sizing('.mn', margin, @percent-values, 'percent', true, true);
13
+
14
+ // Margin top
15
+ .mt-auto { margin-top: auto !important; }
16
+ .generate-sizing('.mt', margin-top, @px-values, 'px', true);
17
+ .generate-sizing('.mtn', margin-top, @px-values-negative, 'px', true, true);
18
+ .generate-sizing('.mt', margin-top, @percent-values, 'percent', true);
19
+ .generate-sizing('.mtn', margin-top, @percent-values, 'percent', true, true);
20
+
21
+ // Margin right
22
+ .mr-auto { margin-right: auto !important; }
23
+ .generate-sizing('.mr', margin-right, @px-values, 'px', true);
24
+ .generate-sizing('.mrn', margin-right, @px-values-negative, 'px', true, true);
25
+ .generate-sizing('.mr', margin-right, @percent-values, 'percent', true);
26
+ .generate-sizing('.mrn', margin-right, @percent-values, 'percent', true, true);
27
+
28
+ // Margin bottom
29
+ .mb-auto { margin-bottom: auto !important; }
30
+ .generate-sizing('.mb', margin-bottom, @px-values, 'px', true);
31
+ .generate-sizing('.mbn', margin-bottom, @px-values-negative, 'px', true, true);
32
+ .generate-sizing('.mb', margin-bottom, @percent-values, 'percent', true);
33
+ .generate-sizing('.mbn', margin-bottom, @percent-values, 'percent', true, true);
34
+
35
+ // Margin left
36
+ .ml-auto { margin-left: auto !important; }
37
+ .generate-sizing('.ml', margin-left, @px-values, 'px', true);
38
+ .generate-sizing('.mln', margin-left, @px-values-negative, 'px', true, true);
39
+ .generate-sizing('.ml', margin-left, @percent-values, 'percent', true);
40
+ .generate-sizing('.mln', margin-left, @percent-values, 'percent', true, true);
41
+
42
+ // Margin x-axis, y-axis
43
+ .mx-auto { margin-left: auto !important; margin-right: auto !important; }
44
+ .my-auto { margin-top: auto !important; margin-bottom: auto !important; }
45
+ .generate-sizing('.mx'; margin-left, margin-right; @px-values; 'px'; true);
46
+ .generate-sizing('.mxn'; margin-left, margin-right; @px-values-negative; 'px'; true; true);
47
+ .generate-sizing('.my'; margin-top, margin-bottom; @px-values; 'px'; true);
48
+ .generate-sizing('.myn'; margin-top, margin-bottom; @px-values-negative; 'px'; true; true);
@@ -0,0 +1,9 @@
1
+ // OBJECT FIT
2
+ .of-contain { object-fit: contain !important; }
3
+ .of-cover { object-fit: cover !important; }
4
+ .of-fill { object-fit: fill !important; }
5
+ .of-none { object-fit: none !important; }
6
+ .of-scale-down { object-fit: scale-down !important; }
7
+
8
+ // OBJECT POSITION
9
+ .op-center { object-position: center !important; }
@@ -0,0 +1,54 @@
1
+ .o0,
2
+ .h\:o0:hover {
3
+ opacity: 0 !important;
4
+ }
5
+
6
+ .o5,
7
+ .h\:o5:hover {
8
+ opacity: 0.05 !important;
9
+ }
10
+
11
+ .o10 {
12
+ opacity: 0.1 !important;
13
+ }
14
+
15
+ .o20 {
16
+ opacity: 0.2 !important;
17
+ }
18
+
19
+ .o30 {
20
+ opacity: 0.3 !important;
21
+ }
22
+
23
+ .o40 {
24
+ opacity: 0.4 !important;
25
+ }
26
+
27
+ .o50,
28
+ .h\:o50:hover {
29
+ opacity: 0.5 !important;
30
+ }
31
+
32
+ .o60 {
33
+ opacity: 0.6 !important;
34
+ }
35
+
36
+ .o70 {
37
+ opacity: 0.7 !important;
38
+ }
39
+
40
+ .o80,
41
+ .h\:o80:hover {
42
+ opacity: 0.8 !important;
43
+ }
44
+
45
+ .o90 {
46
+ opacity: 0.9 !important;
47
+ }
48
+
49
+ .o100,
50
+ .h\:o100:hover,
51
+ .f\:o100:focus,
52
+ .f\:o100:focus-within {
53
+ opacity: 1 !important;
54
+ }
@@ -0,0 +1,11 @@
1
+ @import (reference) "../exports/mixins.less";
2
+
3
+ .outline-none { outline: 0 !important; }
4
+ .outline-ring { .focus-styles(false, true); }
5
+
6
+ .f\:outline-ring {
7
+ &:focus,
8
+ &:focus-within {
9
+ .outline-ring;
10
+ }
11
+ }
@@ -0,0 +1,17 @@
1
+ @import (reference) "../exports/constants-helpers.less";
2
+
3
+ // OVERFLOW
4
+ .overflow-auto { overflow: auto !important; @scrollbar-styles(); }
5
+ .overflow-hidden { overflow: hidden !important; @scrollbar-styles(); }
6
+ .overflow-scroll { overflow: scroll !important; @scrollbar-styles(); }
7
+ .overflow-visible { overflow: visible !important; }
8
+
9
+ // OVERFLOW X
10
+ .overflow-x-auto { overflow-x: auto !important; @scrollbar-styles(); }
11
+ .overflow-x-hidden { overflow-x: hidden !important; @scrollbar-styles(); }
12
+ .overflow-x-scroll { overflow-x: scroll !important; @scrollbar-styles(); }
13
+
14
+ // OVERFLOW Y
15
+ .overflow-y-auto { overflow-y: auto !important; @scrollbar-styles(); }
16
+ .overflow-y-hidden { overflow-y: hidden !important; @scrollbar-styles(); }
17
+ .overflow-y-scroll { overflow-y: scroll !important; @scrollbar-styles(); }
@@ -0,0 +1,12 @@
1
+ @import (reference) "../base/internal.less";
2
+ @import (reference) "../exports/mixins.less";
3
+
4
+ @px-values: 0 1 2 4 6 8 12 16 24 32 48 64 96 128;
5
+
6
+ .generate-sizing('.p', padding, @px-values, 'px', true);
7
+ .generate-sizing('.pt', padding-top, @px-values, 'px', true);
8
+ .generate-sizing('.pr', padding-right, @px-values, 'px', true);
9
+ .generate-sizing('.pb', padding-bottom, @px-values, 'px', true);
10
+ .generate-sizing('.pl', padding-left, @px-values, 'px', true);
11
+ .generate-sizing('.px'; padding-left, padding-right; @px-values; 'px'; true);
12
+ .generate-sizing('.py'; padding-top, padding-bottom; @px-values; 'px'; true);
@@ -0,0 +1,41 @@
1
+ @import (reference) "../base/internal.less";
2
+ @import (reference) "../exports/mixins.less";
3
+
4
+ @px-values: 0 1 2 4 6 8 12 16 24 32 48 64 96 128;
5
+ @px-values-negative: 1 2 4 6 8 12 16 24 32 48 64 96 128;
6
+ @percent-values: 50 100;
7
+
8
+ // POSITIONING
9
+ #stacks-internals #responsify('.ps-absolute', { position: absolute !important; });
10
+ #stacks-internals #responsify('.ps-fixed', { position: fixed !important; });
11
+ #stacks-internals #responsify('.ps-relative', { position: relative !important; });
12
+ #stacks-internals #responsify('.ps-static', { position: static !important; });
13
+ #stacks-internals #responsify('.ps-sticky', { position: sticky !important; });
14
+ .ps-unset { position: unset !important; }
15
+
16
+ // Inset
17
+ .generate-sizing('.i', inset, @px-values, 'px');
18
+
19
+ // Top
20
+ .generate-sizing('.t', top, @px-values, 'px', true);
21
+ .generate-sizing('.tn', top, @px-values-negative, 'px', true, true);
22
+ .generate-sizing('.t', top, @percent-values, 'percent', true);
23
+ .generate-sizing('.tn', top, @percent-values, 'percent', true, true);
24
+
25
+ // Right
26
+ .generate-sizing('.r', right, @px-values, 'px', true);
27
+ .generate-sizing('.rn', right, @px-values-negative, 'px', true, true);
28
+ .generate-sizing('.r', right, @percent-values, 'percent', true);
29
+ .generate-sizing('.rn', right, @percent-values, 'percent', true, true);
30
+
31
+ // Bottom
32
+ .generate-sizing('.b', bottom, @px-values, 'px', true);
33
+ .generate-sizing('.bn', bottom, @px-values-negative, 'px', true, true);
34
+ .generate-sizing('.b', bottom, @percent-values, 'percent', true);
35
+ .generate-sizing('.bn', bottom, @percent-values, 'percent', true, true);
36
+
37
+ // Left
38
+ .generate-sizing('.l', left, @px-values, 'px', true);
39
+ .generate-sizing('.ln', left, @px-values-negative, 'px', true, true);
40
+ .generate-sizing('.l', left, @percent-values, 'percent', true);
41
+ .generate-sizing('.ln', left, @percent-values, 'percent', true, true);
@@ -0,0 +1,51 @@
1
+ @import (reference) "../base/internal.less";
2
+
3
+ // SIZING UNITS CSS CUSTOM PROPERTIES
4
+ body {
5
+ --su0: 0;
6
+ --su1: clamp(1px, 0.063rem, 0.063rem); // This ensures `--su1` never drops below 1px by setting the clamp MIN value to `--su1` (1px).
7
+ --su2: 0.125rem;
8
+ --su3: 0.1875rem;
9
+ --su4: 0.25rem;
10
+ --su6: 0.375rem;
11
+ --su8: 0.5rem;
12
+ --su12: 0.75rem;
13
+ --su16: 1rem;
14
+ --su24: 1.5rem;
15
+ --su32: 2rem;
16
+ --su48: 3rem;
17
+ --su64: 4rem;
18
+ --su96: 6rem;
19
+ --su128: 8rem;
20
+ --su256: 16rem;
21
+ --su344: 21.5rem;
22
+ --su448: 28rem;
23
+ --su512: 32rem;
24
+ --su640: 40rem;
25
+ --su768: 48rem;
26
+ --su848: 53rem;
27
+ --su960: 60rem;
28
+ --su1024: 64rem;
29
+ --su1120: 70rem;
30
+ --su1280: 80rem;
31
+ --su-max: var(--su1280);
32
+ --s-full: 79rem; // Legacy sizing units for Stacks v2
33
+ --s-step: calc(var(--s-full) / 12); // Legacy sizing units for Stacks v2
34
+
35
+ // Negative sizing
36
+ // This is a common subset sizing units for negative values
37
+ --sun1: calc(var(--su1) * -1);
38
+ --sun2: calc(var(--su2) * -1);
39
+ --sun3: calc(var(--su3) * -1);
40
+ --sun4: calc(var(--su4) * -1);
41
+ --sun6: calc(var(--su6) * -1);
42
+ --sun8: calc(var(--su8) * -1);
43
+ --sun12: calc(var(--su12) * -1);
44
+ --sun16: calc(var(--su16) * -1);
45
+ --sun24: calc(var(--su24) * -1);
46
+ --sun32: calc(var(--su32) * -1);
47
+ --sun48: calc(var(--su48) * -1);
48
+ --sun64: calc(var(--su64) * -1);
49
+ --sun96: calc(var(--su96) * -1);
50
+ --sun128: calc(var(--su128) * -1);
51
+ }
@@ -0,0 +1,20 @@
1
+ .t {
2
+ transition-duration: var(--transition-time);
3
+ transition-property: all;
4
+ transition-timing-function: var(--te-ease-in);
5
+ transition-delay: 0s;
6
+ }
7
+
8
+ // -- Durations
9
+ .t-slow { transition-duration: 0.25s !important; }
10
+ .t-fast { transition-duration: 0.05s !important; }
11
+
12
+ // -- Properties
13
+ .t-unset { transition-property: none !important; }
14
+ .t-bg { transition-property: background-color !important; }
15
+ .t-opacity { transition-property: opacity !important; }
16
+ .t-shadow { transition-property: box-shadow !important; }
17
+
18
+ // -- Delays
19
+ .t-delay { transition-delay: 0.25s !important; }
20
+ .t-delay-unset { transition-delay: 0s !important; }
@@ -0,0 +1,58 @@
1
+ @import (reference) "../exports/constants-helpers.less";
2
+ @import (reference) "../base/configuration-static.less";
3
+ @import (reference) "../base/internal.less";
4
+
5
+ .truncation(@count) {
6
+ // Despite these all being webkit-specific properties, this works across
7
+ // Safari, Chrome, Edge, and Firefox.
8
+ display: -webkit-box;
9
+ -webkit-line-clamp: @count;
10
+ -webkit-box-orient: vertical;
11
+ overflow: hidden;
12
+ }
13
+
14
+ .truncate {
15
+ overflow: hidden;
16
+ max-width: 100%;
17
+ text-overflow: ellipsis !important;
18
+ white-space: nowrap;
19
+ }
20
+
21
+ .v-truncate1 {
22
+ .truncation(1);
23
+ }
24
+
25
+ .v-truncate2 {
26
+ .truncation(2);
27
+ }
28
+
29
+ .v-truncate3 {
30
+ .truncation(3);
31
+ }
32
+
33
+ .v-truncate4 {
34
+ .truncation(4);
35
+ }
36
+
37
+ .v-truncate5 {
38
+ .truncation(5);
39
+ }
40
+
41
+ .v-truncate-fade {
42
+ overflow: hidden;
43
+ -webkit-mask-image: linear-gradient(180deg, #000 calc(var(--lh-md) * 9em), transparent);
44
+ mask-image: linear-gradient(180deg, #000 calc(var(--lh-md) * 9em), transparent);
45
+ max-height: calc(var(--lh-md) * 12em);
46
+
47
+ &.v-truncate-fade__sm {
48
+ -webkit-mask-image: linear-gradient(180deg, #000 calc(var(--lh-md) * 3em), transparent);
49
+ mask-image: linear-gradient(180deg, #000 calc(var(--lh-md) * 3em), transparent);
50
+ max-height: calc(var(--lh-md) * 6em);
51
+ }
52
+
53
+ &.v-truncate-fade__lg {
54
+ -webkit-mask-image: linear-gradient(180deg, #000 calc(var(--lh-md) * 21em), transparent);
55
+ mask-image: linear-gradient(180deg, #000 calc(var(--lh-md) * 21em), transparent);
56
+ max-height: calc(var(--lh-md) * 24em);
57
+ }
58
+ }