@ivds/core 0.1.1

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 (154) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +215 -0
  3. package/lib/all.css +6802 -0
  4. package/lib/all.min.css +1 -0
  5. package/lib/base/base.css +215 -0
  6. package/lib/base/base.min.css +1 -0
  7. package/lib/components/_breadcrumb-mixins.scss +173 -0
  8. package/lib/components/_button-mixin.scss +120 -0
  9. package/lib/components/_card-mixin.scss +196 -0
  10. package/lib/components/_checkbox-mixin.scss +208 -0
  11. package/lib/components/_footer-mixin.scss +385 -0
  12. package/lib/components/_header-mixin.scss +275 -0
  13. package/lib/components/_navigation-mixins.scss +270 -0
  14. package/lib/components/_notification-mixin.scss +239 -0
  15. package/lib/components/_pagination-mixins.scss +280 -0
  16. package/lib/components/_radio-button-mixin.scss +207 -0
  17. package/lib/components/_tag-mixin.scss +261 -0
  18. package/lib/components/_text-input-mixin.scss +203 -0
  19. package/lib/components/all.css +3005 -0
  20. package/lib/components/all.min.css +1 -0
  21. package/lib/components/breadcrumb/breadcrumb.css +141 -0
  22. package/lib/components/breadcrumb/breadcrumb.min.css +1 -0
  23. package/lib/components/button/button.css +221 -0
  24. package/lib/components/button/button.min.css +1 -0
  25. package/lib/components/card/card.css +236 -0
  26. package/lib/components/card/card.min.css +1 -0
  27. package/lib/components/checkbox/checkbox.css +305 -0
  28. package/lib/components/checkbox/checkbox.min.css +1 -0
  29. package/lib/components/footer/footer.css +466 -0
  30. package/lib/components/footer/footer.min.css +1 -0
  31. package/lib/components/header/header.css +274 -0
  32. package/lib/components/header/header.min.css +1 -0
  33. package/lib/components/navigation/navigation.css +214 -0
  34. package/lib/components/navigation/navigation.min.css +1 -0
  35. package/lib/components/notification/notification.css +253 -0
  36. package/lib/components/notification/notification.min.css +1 -0
  37. package/lib/components/pagination/pagination.css +221 -0
  38. package/lib/components/pagination/pagination.min.css +1 -0
  39. package/lib/components/radio-button/radio-button.css +326 -0
  40. package/lib/components/radio-button/radio-button.min.css +1 -0
  41. package/lib/components/tag/tag.css +367 -0
  42. package/lib/components/tag/tag.min.css +1 -0
  43. package/lib/components/text-input/text-input.css +243 -0
  44. package/lib/components/text-input/text-input.min.css +1 -0
  45. package/lib/icons/icon-arrow-left.css +139 -0
  46. package/lib/icons/icon-arrow-left.min.css +1 -0
  47. package/lib/icons/icon-arrow-right.css +139 -0
  48. package/lib/icons/icon-arrow-right.min.css +1 -0
  49. package/lib/icons/icon-check.css +139 -0
  50. package/lib/icons/icon-check.min.css +1 -0
  51. package/lib/icons/icon-close.css +140 -0
  52. package/lib/icons/icon-close.min.css +1 -0
  53. package/lib/icons/icon-error.css +140 -0
  54. package/lib/icons/icon-error.min.css +1 -0
  55. package/lib/icons/icon-info.css +140 -0
  56. package/lib/icons/icon-info.min.css +1 -0
  57. package/lib/icons/icon-success.css +139 -0
  58. package/lib/icons/icon-success.min.css +1 -0
  59. package/lib/icons/icon-warning.css +139 -0
  60. package/lib/icons/icon-warning.min.css +1 -0
  61. package/lib/icons/icons.css +1158 -0
  62. package/lib/icons/icons.min.css +1 -0
  63. package/lib/utils/_flex.scss +200 -0
  64. package/lib/utils/_grid.scss +211 -0
  65. package/lib/utils/_layout.scss +253 -0
  66. package/lib/utils/_spacing.scss +260 -0
  67. package/lib/utils/_typography.scss +111 -0
  68. package/lib/utils/utils.css +2434 -0
  69. package/lib/utils/utils.min.css +1 -0
  70. package/lib/utils-only.css +2801 -0
  71. package/lib/utils-only.min.css +1 -0
  72. package/lib/variables/variables.css +2 -0
  73. package/lib/variables/variables.min.css +0 -0
  74. package/package.json +194 -0
  75. package/src/__tests__/example.test.scss +12 -0
  76. package/src/accessibility.stories.js +416 -0
  77. package/src/all.scss +9 -0
  78. package/src/base/_layout.scss +97 -0
  79. package/src/base/_reset.scss +85 -0
  80. package/src/base/_typography.scss +105 -0
  81. package/src/base/base.scss +6 -0
  82. package/src/components/all.scss +22 -0
  83. package/src/components/breadcrumb/_breadcrumb-mixins.scss +173 -0
  84. package/src/components/breadcrumb/breadcrumb.scss +68 -0
  85. package/src/components/breadcrumb/breadcrumb.stories.js +483 -0
  86. package/src/components/button/__tests__/button-mixins.test.scss +35 -0
  87. package/src/components/button/_button-mixin.scss +120 -0
  88. package/src/components/button/button.scss +126 -0
  89. package/src/components/button/button.stories.js +364 -0
  90. package/src/components/card/__tests__/card-mixins.test.scss +36 -0
  91. package/src/components/card/_card-mixin.scss +196 -0
  92. package/src/components/card/card.scss +193 -0
  93. package/src/components/card/card.stories.js +635 -0
  94. package/src/components/checkbox/_checkbox-mixin.scss +208 -0
  95. package/src/components/checkbox/checkbox.scss +141 -0
  96. package/src/components/checkbox/checkbox.stories.js +303 -0
  97. package/src/components/footer/_footer-mixin.scss +385 -0
  98. package/src/components/footer/footer.scss +86 -0
  99. package/src/components/footer/footer.stories.js +740 -0
  100. package/src/components/header/_header-mixin.scss +275 -0
  101. package/src/components/header/header.scss +84 -0
  102. package/src/components/header/header.stories.js +450 -0
  103. package/src/components/navigation/_navigation-mixins.scss +270 -0
  104. package/src/components/navigation/navigation.scss +64 -0
  105. package/src/components/navigation/navigation.stories.js +410 -0
  106. package/src/components/notification/_notification-mixin.scss +239 -0
  107. package/src/components/notification/notification.scss +118 -0
  108. package/src/components/notification/notification.stories.js +378 -0
  109. package/src/components/overview.stories.js +473 -0
  110. package/src/components/pagination/_pagination-mixins.scss +280 -0
  111. package/src/components/pagination/pagination.scss +76 -0
  112. package/src/components/pagination/pagination.stories.js +729 -0
  113. package/src/components/radio-button/_radio-button-mixin.scss +207 -0
  114. package/src/components/radio-button/radio-button.scss +178 -0
  115. package/src/components/radio-button/radio-button.stories.js +379 -0
  116. package/src/components/tag/_tag-mixin.scss +261 -0
  117. package/src/components/tag/tag.scss +244 -0
  118. package/src/components/tag/tag.stories.js +482 -0
  119. package/src/components/text-input/_text-input-mixin.scss +203 -0
  120. package/src/components/text-input/text-input.scss +150 -0
  121. package/src/components/text-input/text-input.stories.js +723 -0
  122. package/src/icons/_icon.scss +121 -0
  123. package/src/icons/icon-arrow-left.scss +23 -0
  124. package/src/icons/icon-arrow-right.scss +23 -0
  125. package/src/icons/icon-check.scss +23 -0
  126. package/src/icons/icon-close.scss +24 -0
  127. package/src/icons/icon-error.scss +24 -0
  128. package/src/icons/icon-info.scss +24 -0
  129. package/src/icons/icon-success.scss +23 -0
  130. package/src/icons/icon-warning.scss +23 -0
  131. package/src/icons/icons.scss +12 -0
  132. package/src/icons/icons.stories.js +249 -0
  133. package/src/icons/svg/arrow-left.svg +3 -0
  134. package/src/icons/svg/arrow-right.svg +3 -0
  135. package/src/icons/svg/check.svg +3 -0
  136. package/src/icons/svg/close.svg +4 -0
  137. package/src/icons/svg/error.svg +5 -0
  138. package/src/icons/svg/info.svg +5 -0
  139. package/src/icons/svg/success.svg +4 -0
  140. package/src/icons/svg/warning.svg +5 -0
  141. package/src/utils/__tests__/utilities.test.scss +37 -0
  142. package/src/utils/_flex.scss +200 -0
  143. package/src/utils/_grid.scss +211 -0
  144. package/src/utils/_layout.scss +253 -0
  145. package/src/utils/_spacing.scss +260 -0
  146. package/src/utils/_typography.scss +111 -0
  147. package/src/utils/utils.scss +8 -0
  148. package/src/variables/_borders.scss +15 -0
  149. package/src/variables/_breakpoints.scss +11 -0
  150. package/src/variables/_colors.scss +97 -0
  151. package/src/variables/_shadows.scss +14 -0
  152. package/src/variables/_spacing.scss +24 -0
  153. package/src/variables/_typography.scss +47 -0
  154. package/src/variables/variables.scss +9 -0
@@ -0,0 +1 @@
1
+ @charset "UTF-8";.ivds-icon--arrow-left{align-items:center;display:inline-flex;fill:currentcolor;flex-shrink:0;height:1em;justify-content:center;vertical-align:middle;width:1em}.ivds-icon--arrow-left svg{display:block;fill:inherit;height:100%;width:100%}.ivds-icon--arrow-left:before{font-feature-settings:normal;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.ivds-icon--arrow-left{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentcolor' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:contain}.ivds-icon--arrow-left:before{content:"←";font-size:inherit}.ivds-icon--arrow-left:not(.ivds-icon--no-svg):before{display:none}.ivds-icon--arrow-right{align-items:center;display:inline-flex;fill:currentcolor;flex-shrink:0;height:1em;justify-content:center;vertical-align:middle;width:1em}.ivds-icon--arrow-right svg{display:block;fill:inherit;height:100%;width:100%}.ivds-icon--arrow-right:before{font-feature-settings:normal;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.ivds-icon--arrow-right{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentcolor' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:contain}.ivds-icon--arrow-right:before{content:"→";font-size:inherit}.ivds-icon--arrow-right:not(.ivds-icon--no-svg):before{display:none}.ivds-icon--check{align-items:center;display:inline-flex;fill:currentcolor;flex-shrink:0;height:1em;justify-content:center;vertical-align:middle;width:1em}.ivds-icon--check svg{display:block;fill:inherit;height:100%;width:100%}.ivds-icon--check:before{font-feature-settings:normal;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.ivds-icon--check{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentcolor' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:contain}.ivds-icon--check:before{content:"✓";font-size:inherit}.ivds-icon--check:not(.ivds-icon--no-svg):before{display:none}.ivds-icon--close{align-items:center;display:inline-flex;fill:currentcolor;flex-shrink:0;height:1em;justify-content:center;vertical-align:middle;width:1em}.ivds-icon--close svg{display:block;fill:inherit;height:100%;width:100%}.ivds-icon--close:before{font-feature-settings:normal;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.ivds-icon--close{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentcolor' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:contain}.ivds-icon--close:before{content:"×";font-size:inherit;font-weight:700}.ivds-icon--close:not(.ivds-icon--no-svg):before{display:none}.ivds-icon--info{align-items:center;display:inline-flex;fill:currentcolor;flex-shrink:0;height:1em;justify-content:center;vertical-align:middle;width:1em}.ivds-icon--info svg{display:block;fill:inherit;height:100%;width:100%}.ivds-icon--info:before{font-feature-settings:normal;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.ivds-icon--info{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentcolor' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4M12 8h.01'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:contain}.ivds-icon--info:before{content:"ℹ";font-size:inherit;font-weight:700}.ivds-icon--info:not(.ivds-icon--no-svg):before{display:none}.ivds-icon--warning{align-items:center;display:inline-flex;fill:currentcolor;flex-shrink:0;height:1em;justify-content:center;vertical-align:middle;width:1em}.ivds-icon--warning svg{display:block;fill:inherit;height:100%;width:100%}.ivds-icon--warning:before{font-feature-settings:normal;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.ivds-icon--warning{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentcolor' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3M12 9v4M12 17h.01'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:contain}.ivds-icon--warning:before{content:"⚠";font-size:inherit}.ivds-icon--warning:not(.ivds-icon--no-svg):before{display:none}.ivds-icon--error{align-items:center;display:inline-flex;fill:currentcolor;flex-shrink:0;height:1em;justify-content:center;vertical-align:middle;width:1em}.ivds-icon--error svg{display:block;fill:inherit;height:100%;width:100%}.ivds-icon--error:before{font-feature-settings:normal;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.ivds-icon--error{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentcolor' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m15 9-6 6M9 9l6 6'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:contain}.ivds-icon--error:before{content:"✕";font-size:inherit;font-weight:700}.ivds-icon--error:not(.ivds-icon--no-svg):before{display:none}.ivds-icon{align-items:center;display:inline-flex;fill:currentcolor;flex-shrink:0;height:1em;justify-content:center;vertical-align:middle;width:1em}.ivds-icon svg{display:block;fill:inherit;height:100%;width:100%}.ivds-icon:before{font-feature-settings:normal;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.ivds-icon{font-size:var(--fontSize-base,1rem);height:var(--fontSize-base,1rem);width:var(--fontSize-base,1rem)}.ivds-icon--xs{font-size:var(--fontSize-xs,.75rem);height:var(--fontSize-xs,.75rem);width:var(--fontSize-xs,.75rem)}.ivds-icon--sm{font-size:var(--fontSize-sm,.875rem);height:var(--fontSize-sm,.875rem);width:var(--fontSize-sm,.875rem)}.ivds-icon--md{font-size:var(--fontSize-base,1rem);height:var(--fontSize-base,1rem);width:var(--fontSize-base,1rem)}.ivds-icon--lg{font-size:var(--fontSize-lg,1.125rem);height:var(--fontSize-lg,1.125rem);width:var(--fontSize-lg,1.125rem)}.ivds-icon--xl{font-size:var(--fontSize-xl,1.25rem);height:var(--fontSize-xl,1.25rem);width:var(--fontSize-xl,1.25rem)}.ivds-icon--2xl{font-size:var(--fontSize-2xl,1.5rem);height:var(--fontSize-2xl,1.5rem);width:var(--fontSize-2xl,1.5rem)}.ivds-icon--3xl{font-size:var(--fontSize-3xl,1.875rem);height:var(--fontSize-3xl,1.875rem);width:var(--fontSize-3xl,1.875rem)}.ivds-icon--primary{color:var(--color-brand-primary-500,#0ea5e9)}.ivds-icon--secondary{color:var(--color-semantic-neutral-600,#6b7280)}.ivds-icon--success{color:var(--color-semantic-success-500,#10b981)}.ivds-icon--warning{color:var(--color-semantic-warning-500,#f59e0b)}.ivds-icon--error{color:var(--color-semantic-error-500,#ef4444)}.ivds-icon--info{color:var(--color-brand-primary-500,#0ea5e9)}.ivds-icon--interactive{cursor:pointer;transition:color .15s ease-in-out,transform .15s ease-in-out}.ivds-icon--interactive:hover{transform:scale(1.1)}.ivds-icon--interactive:active{transform:scale(.95)}.ivds-icon--disabled{cursor:not-allowed;opacity:.5;pointer-events:none}.ivds-icon--success{align-items:center;display:inline-flex;fill:currentcolor;flex-shrink:0;height:1em;justify-content:center;vertical-align:middle;width:1em}.ivds-icon--success svg{display:block;fill:inherit;height:100%;width:100%}.ivds-icon--success:before{font-feature-settings:normal;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.ivds-icon--success{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentcolor' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:contain}.ivds-icon--success:before{content:"✓";font-size:inherit}.ivds-icon--success:not(.ivds-icon--no-svg):before{display:none}
@@ -0,0 +1,200 @@
1
+ // Flexbox utility classes
2
+ // Provides comprehensive flexbox utilities with responsive support
3
+
4
+ @use '../variables/variables' as vars;
5
+
6
+ .ivds-flex {
7
+ display: flex !important;
8
+
9
+ // Direction
10
+ &--row { flex-direction: row !important; }
11
+ &--column { flex-direction: column !important; }
12
+ &--row-reverse { flex-direction: row-reverse !important; }
13
+ &--column-reverse { flex-direction: column-reverse !important; }
14
+
15
+ // Wrap
16
+ &--wrap { flex-wrap: wrap !important; }
17
+ &--wrap-reverse { flex-wrap: wrap-reverse !important; }
18
+ &--nowrap { flex-wrap: nowrap !important; }
19
+
20
+ // Justify content (main axis)
21
+ &--justify-normal { justify-content: normal !important; }
22
+ &--justify-start { justify-content: flex-start !important; }
23
+ &--justify-center { justify-content: center !important; }
24
+ &--justify-end { justify-content: flex-end !important; }
25
+ &--justify-between { justify-content: space-between !important; }
26
+ &--justify-around { justify-content: space-around !important; }
27
+ &--justify-evenly { justify-content: space-evenly !important; }
28
+ &--justify-stretch { justify-content: stretch !important; }
29
+
30
+ // Align items (cross axis)
31
+ &--items-start { align-items: flex-start !important; }
32
+ &--items-center { align-items: center !important; }
33
+ &--items-end { align-items: flex-end !important; }
34
+ &--items-stretch { align-items: stretch !important; }
35
+ &--items-baseline { align-items: baseline !important; }
36
+
37
+ // Align content (for wrapped lines)
38
+ &--content-normal { align-content: normal !important; }
39
+ &--content-center { align-content: center !important; }
40
+ &--content-start { align-content: flex-start !important; }
41
+ &--content-end { align-content: flex-end !important; }
42
+ &--content-between { align-content: space-between !important; }
43
+ &--content-around { align-content: space-around !important; }
44
+ &--content-evenly { align-content: space-evenly !important; }
45
+ &--content-stretch { align-content: stretch !important; }
46
+
47
+ // Gap
48
+ &--gap-0 { gap: 0 !important; }
49
+ &--gap-1 { gap: var(--spacing-1, 0.25rem) !important; }
50
+ &--gap-2 { gap: var(--spacing-2, 0.5rem) !important; }
51
+ &--gap-3 { gap: var(--spacing-3, 0.75rem) !important; }
52
+ &--gap-4 { gap: var(--spacing-4, 1rem) !important; }
53
+ &--gap-5 { gap: var(--spacing-5, 1.25rem) !important; }
54
+ &--gap-6 { gap: var(--spacing-6, 1.5rem) !important; }
55
+ &--gap-8 { gap: var(--spacing-8, 2rem) !important; }
56
+ &--gap-10 { gap: var(--spacing-10, 2.5rem) !important; }
57
+ &--gap-12 { gap: var(--spacing-12, 3rem) !important; }
58
+ &--gap-16 { gap: var(--spacing-16, 4rem) !important; }
59
+
60
+ // Column gap
61
+ &--gap-x-0 { column-gap: 0 !important; }
62
+ &--gap-x-1 { column-gap: var(--spacing-1, 0.25rem) !important; }
63
+ &--gap-x-2 { column-gap: var(--spacing-2, 0.5rem) !important; }
64
+ &--gap-x-3 { column-gap: var(--spacing-3, 0.75rem) !important; }
65
+ &--gap-x-4 { column-gap: var(--spacing-4, 1rem) !important; }
66
+ &--gap-x-6 { column-gap: var(--spacing-6, 1.5rem) !important; }
67
+ &--gap-x-8 { column-gap: var(--spacing-8, 2rem) !important; }
68
+
69
+ // Row gap
70
+ &--gap-y-0 { row-gap: 0 !important; }
71
+ &--gap-y-1 { row-gap: var(--spacing-1, 0.25rem) !important; }
72
+ &--gap-y-2 { row-gap: var(--spacing-2, 0.5rem) !important; }
73
+ &--gap-y-3 { row-gap: var(--spacing-3, 0.75rem) !important; }
74
+ &--gap-y-4 { row-gap: var(--spacing-4, 1rem) !important; }
75
+ &--gap-y-6 { row-gap: var(--spacing-6, 1.5rem) !important; }
76
+ &--gap-y-8 { row-gap: var(--spacing-8, 2rem) !important; }
77
+ }
78
+
79
+ // Flex item utilities
80
+ .ivds-flex-item {
81
+ // Flex grow
82
+ &--grow-0 { flex-grow: 0 !important; }
83
+ &--grow { flex-grow: 1 !important; }
84
+
85
+ // Flex shrink
86
+ &--shrink-0 { flex-shrink: 0 !important; }
87
+ &--shrink { flex-shrink: 1 !important; }
88
+
89
+ // Flex basis
90
+ &--basis-0 { flex-basis: 0% !important; }
91
+ &--basis-1 { flex-basis: var(--spacing-1, 0.25rem) !important; }
92
+ &--basis-2 { flex-basis: var(--spacing-2, 0.5rem) !important; }
93
+ &--basis-3 { flex-basis: var(--spacing-3, 0.75rem) !important; }
94
+ &--basis-4 { flex-basis: var(--spacing-4, 1rem) !important; }
95
+ &--basis-6 { flex-basis: var(--spacing-6, 1.5rem) !important; }
96
+ &--basis-8 { flex-basis: var(--spacing-8, 2rem) !important; }
97
+ &--basis-auto { flex-basis: auto !important; }
98
+ &--basis-full { flex-basis: 100% !important; }
99
+
100
+ // Flex shorthand
101
+ &--flex-1 { flex: 1 1 0% !important; }
102
+ &--flex-auto { flex: 1 1 auto !important; }
103
+ &--flex-initial { flex: 0 1 auto !important; }
104
+ &--flex-none { flex: none !important; }
105
+
106
+ // Align self
107
+ &--self-auto { align-self: auto !important; }
108
+ &--self-start { align-self: flex-start !important; }
109
+ &--self-center { align-self: center !important; }
110
+ &--self-end { align-self: flex-end !important; }
111
+ &--self-stretch { align-self: stretch !important; }
112
+ &--self-baseline { align-self: baseline !important; }
113
+
114
+ // Order
115
+ &--order-1 { order: 1 !important; }
116
+ &--order-2 { order: 2 !important; }
117
+ &--order-3 { order: 3 !important; }
118
+ &--order-4 { order: 4 !important; }
119
+ &--order-5 { order: 5 !important; }
120
+ &--order-6 { order: 6 !important; }
121
+ &--order-7 { order: 7 !important; }
122
+ &--order-8 { order: 8 !important; }
123
+ &--order-9 { order: 9 !important; }
124
+ &--order-10 { order: 10 !important; }
125
+ &--order-11 { order: 11 !important; }
126
+ &--order-12 { order: 12 !important; }
127
+ &--order-first { order: -9999 !important; }
128
+ &--order-last { order: 9999 !important; }
129
+ &--order-none { order: 0 !important; }
130
+ }
131
+
132
+ // Responsive flexbox utilities
133
+ @media (min-width: 640px) {
134
+ .ivds-sm-flex--row { flex-direction: row !important; }
135
+ .ivds-sm-flex--column { flex-direction: column !important; }
136
+ .ivds-sm-flex--row-reverse { flex-direction: row-reverse !important; }
137
+ .ivds-sm-flex--column-reverse { flex-direction: column-reverse !important; }
138
+
139
+ .ivds-sm-flex--wrap { flex-wrap: wrap !important; }
140
+ .ivds-sm-flex--nowrap { flex-wrap: nowrap !important; }
141
+
142
+ .ivds-sm-flex--justify-start { justify-content: flex-start !important; }
143
+ .ivds-sm-flex--justify-center { justify-content: center !important; }
144
+ .ivds-sm-flex--justify-end { justify-content: flex-end !important; }
145
+ .ivds-sm-flex--justify-between { justify-content: space-between !important; }
146
+ .ivds-sm-flex--justify-around { justify-content: space-around !important; }
147
+ .ivds-sm-flex--justify-evenly { justify-content: space-evenly !important; }
148
+
149
+ .ivds-sm-flex--items-start { align-items: flex-start !important; }
150
+ .ivds-sm-flex--items-center { align-items: center !important; }
151
+ .ivds-sm-flex--items-end { align-items: flex-end !important; }
152
+ .ivds-sm-flex--items-stretch { align-items: stretch !important; }
153
+ .ivds-sm-flex--items-baseline { align-items: baseline !important; }
154
+ }
155
+
156
+ @media (min-width: 768px) {
157
+ .ivds-md-flex--row { flex-direction: row !important; }
158
+ .ivds-md-flex--column { flex-direction: column !important; }
159
+ .ivds-md-flex--row-reverse { flex-direction: row-reverse !important; }
160
+ .ivds-md-flex--column-reverse { flex-direction: column-reverse !important; }
161
+
162
+ .ivds-md-flex--wrap { flex-wrap: wrap !important; }
163
+ .ivds-md-flex--nowrap { flex-wrap: nowrap !important; }
164
+
165
+ .ivds-md-flex--justify-start { justify-content: flex-start !important; }
166
+ .ivds-md-flex--justify-center { justify-content: center !important; }
167
+ .ivds-md-flex--justify-end { justify-content: flex-end !important; }
168
+ .ivds-md-flex--justify-between { justify-content: space-between !important; }
169
+ .ivds-md-flex--justify-around { justify-content: space-around !important; }
170
+ .ivds-md-flex--justify-evenly { justify-content: space-evenly !important; }
171
+
172
+ .ivds-md-flex--items-start { align-items: flex-start !important; }
173
+ .ivds-md-flex--items-center { align-items: center !important; }
174
+ .ivds-md-flex--items-end { align-items: flex-end !important; }
175
+ .ivds-md-flex--items-stretch { align-items: stretch !important; }
176
+ .ivds-md-flex--items-baseline { align-items: baseline !important; }
177
+ }
178
+
179
+ @media (min-width: 1024px) {
180
+ .ivds-lg-flex--row { flex-direction: row !important; }
181
+ .ivds-lg-flex--column { flex-direction: column !important; }
182
+ .ivds-lg-flex--row-reverse { flex-direction: row-reverse !important; }
183
+ .ivds-lg-flex--column-reverse { flex-direction: column-reverse !important; }
184
+
185
+ .ivds-lg-flex--wrap { flex-wrap: wrap !important; }
186
+ .ivds-lg-flex--nowrap { flex-wrap: nowrap !important; }
187
+
188
+ .ivds-lg-flex--justify-start { justify-content: flex-start !important; }
189
+ .ivds-lg-flex--justify-center { justify-content: center !important; }
190
+ .ivds-lg-flex--justify-end { justify-content: flex-end !important; }
191
+ .ivds-lg-flex--justify-between { justify-content: space-between !important; }
192
+ .ivds-lg-flex--justify-around { justify-content: space-around !important; }
193
+ .ivds-lg-flex--justify-evenly { justify-content: space-evenly !important; }
194
+
195
+ .ivds-lg-flex--items-start { align-items: flex-start !important; }
196
+ .ivds-lg-flex--items-center { align-items: center !important; }
197
+ .ivds-lg-flex--items-end { align-items: flex-end !important; }
198
+ .ivds-lg-flex--items-stretch { align-items: stretch !important; }
199
+ .ivds-lg-flex--items-baseline { align-items: baseline !important; }
200
+ }
@@ -0,0 +1,211 @@
1
+ // CSS Grid utility classes
2
+ // Provides comprehensive grid system utilities with responsive support
3
+
4
+ @use '../variables/variables' as vars;
5
+
6
+ .ivds-grid {
7
+ display: grid !important;
8
+ gap: var(--spacing-4, 1rem);
9
+
10
+ // Column variations
11
+ &--cols-1 { grid-template-columns: repeat(1, 1fr) !important; }
12
+ &--cols-2 { grid-template-columns: repeat(2, 1fr) !important; }
13
+ &--cols-3 { grid-template-columns: repeat(3, 1fr) !important; }
14
+ &--cols-4 { grid-template-columns: repeat(4, 1fr) !important; }
15
+ &--cols-5 { grid-template-columns: repeat(5, 1fr) !important; }
16
+ &--cols-6 { grid-template-columns: repeat(6, 1fr) !important; }
17
+ &--cols-7 { grid-template-columns: repeat(7, 1fr) !important; }
18
+ &--cols-8 { grid-template-columns: repeat(8, 1fr) !important; }
19
+ &--cols-9 { grid-template-columns: repeat(9, 1fr) !important; }
20
+ &--cols-10 { grid-template-columns: repeat(10, 1fr) !important; }
21
+ &--cols-11 { grid-template-columns: repeat(11, 1fr) !important; }
22
+ &--cols-12 { grid-template-columns: repeat(12, 1fr) !important; }
23
+ &--cols-none { grid-template-columns: none !important; }
24
+
25
+ // Row variations
26
+ &--rows-1 { grid-template-rows: repeat(1, 1fr) !important; }
27
+ &--rows-2 { grid-template-rows: repeat(2, 1fr) !important; }
28
+ &--rows-3 { grid-template-rows: repeat(3, 1fr) !important; }
29
+ &--rows-4 { grid-template-rows: repeat(4, 1fr) !important; }
30
+ &--rows-5 { grid-template-rows: repeat(5, 1fr) !important; }
31
+ &--rows-6 { grid-template-rows: repeat(6, 1fr) !important; }
32
+ &--rows-none { grid-template-rows: none !important; }
33
+
34
+ // Gap variations
35
+ &--gap-0 { gap: 0 !important; }
36
+ &--gap-1 { gap: var(--spacing-1, 0.25rem) !important; }
37
+ &--gap-2 { gap: var(--spacing-2, 0.5rem) !important; }
38
+ &--gap-3 { gap: var(--spacing-3, 0.75rem) !important; }
39
+ &--gap-4 { gap: var(--spacing-4, 1rem) !important; }
40
+ &--gap-5 { gap: var(--spacing-5, 1.25rem) !important; }
41
+ &--gap-6 { gap: var(--spacing-6, 1.5rem) !important; }
42
+ &--gap-8 { gap: var(--spacing-8, 2rem) !important; }
43
+ &--gap-10 { gap: var(--spacing-10, 2.5rem) !important; }
44
+ &--gap-12 { gap: var(--spacing-12, 3rem) !important; }
45
+ &--gap-16 { gap: var(--spacing-16, 4rem) !important; }
46
+
47
+ // Column gap variations
48
+ &--gap-x-0 { column-gap: 0 !important; }
49
+ &--gap-x-1 { column-gap: var(--spacing-1, 0.25rem) !important; }
50
+ &--gap-x-2 { column-gap: var(--spacing-2, 0.5rem) !important; }
51
+ &--gap-x-3 { column-gap: var(--spacing-3, 0.75rem) !important; }
52
+ &--gap-x-4 { column-gap: var(--spacing-4, 1rem) !important; }
53
+ &--gap-x-6 { column-gap: var(--spacing-6, 1.5rem) !important; }
54
+ &--gap-x-8 { column-gap: var(--spacing-8, 2rem) !important; }
55
+
56
+ // Row gap variations
57
+ &--gap-y-0 { row-gap: 0 !important; }
58
+ &--gap-y-1 { row-gap: var(--spacing-1, 0.25rem) !important; }
59
+ &--gap-y-2 { row-gap: var(--spacing-2, 0.5rem) !important; }
60
+ &--gap-y-3 { row-gap: var(--spacing-3, 0.75rem) !important; }
61
+ &--gap-y-4 { row-gap: var(--spacing-4, 1rem) !important; }
62
+ &--gap-y-6 { row-gap: var(--spacing-6, 1.5rem) !important; }
63
+ &--gap-y-8 { row-gap: var(--spacing-8, 2rem) !important; }
64
+ }
65
+
66
+ // Grid item utilities
67
+ .ivds-grid-item {
68
+ // Column span
69
+ &--col-span-1 { grid-column: span 1 / span 1 !important; }
70
+ &--col-span-2 { grid-column: span 2 / span 2 !important; }
71
+ &--col-span-3 { grid-column: span 3 / span 3 !important; }
72
+ &--col-span-4 { grid-column: span 4 / span 4 !important; }
73
+ &--col-span-5 { grid-column: span 5 / span 5 !important; }
74
+ &--col-span-6 { grid-column: span 6 / span 6 !important; }
75
+ &--col-span-7 { grid-column: span 7 / span 7 !important; }
76
+ &--col-span-8 { grid-column: span 8 / span 8 !important; }
77
+ &--col-span-9 { grid-column: span 9 / span 9 !important; }
78
+ &--col-span-10 { grid-column: span 10 / span 10 !important; }
79
+ &--col-span-11 { grid-column: span 11 / span 11 !important; }
80
+ &--col-span-12 { grid-column: span 12 / span 12 !important; }
81
+ &--col-span-full { grid-column: 1 / -1 !important; }
82
+
83
+ // Column start
84
+ &--col-start-1 { grid-column-start: 1 !important; }
85
+ &--col-start-2 { grid-column-start: 2 !important; }
86
+ &--col-start-3 { grid-column-start: 3 !important; }
87
+ &--col-start-4 { grid-column-start: 4 !important; }
88
+ &--col-start-5 { grid-column-start: 5 !important; }
89
+ &--col-start-6 { grid-column-start: 6 !important; }
90
+ &--col-start-7 { grid-column-start: 7 !important; }
91
+ &--col-start-8 { grid-column-start: 8 !important; }
92
+ &--col-start-9 { grid-column-start: 9 !important; }
93
+ &--col-start-10 { grid-column-start: 10 !important; }
94
+ &--col-start-11 { grid-column-start: 11 !important; }
95
+ &--col-start-12 { grid-column-start: 12 !important; }
96
+ &--col-start-13 { grid-column-start: 13 !important; }
97
+ &--col-start-auto { grid-column-start: auto !important; }
98
+
99
+ // Column end
100
+ &--col-end-1 { grid-column-end: 1 !important; }
101
+ &--col-end-2 { grid-column-end: 2 !important; }
102
+ &--col-end-3 { grid-column-end: 3 !important; }
103
+ &--col-end-4 { grid-column-end: 4 !important; }
104
+ &--col-end-5 { grid-column-end: 5 !important; }
105
+ &--col-end-6 { grid-column-end: 6 !important; }
106
+ &--col-end-7 { grid-column-end: 7 !important; }
107
+ &--col-end-8 { grid-column-end: 8 !important; }
108
+ &--col-end-9 { grid-column-end: 9 !important; }
109
+ &--col-end-10 { grid-column-end: 10 !important; }
110
+ &--col-end-11 { grid-column-end: 11 !important; }
111
+ &--col-end-12 { grid-column-end: 12 !important; }
112
+ &--col-end-13 { grid-column-end: 13 !important; }
113
+ &--col-end-auto { grid-column-end: auto !important; }
114
+
115
+ // Row span
116
+ &--row-span-1 { grid-row: span 1 / span 1 !important; }
117
+ &--row-span-2 { grid-row: span 2 / span 2 !important; }
118
+ &--row-span-3 { grid-row: span 3 / span 3 !important; }
119
+ &--row-span-4 { grid-row: span 4 / span 4 !important; }
120
+ &--row-span-5 { grid-row: span 5 / span 5 !important; }
121
+ &--row-span-6 { grid-row: span 6 / span 6 !important; }
122
+ &--row-span-full { grid-row: 1 / -1 !important; }
123
+
124
+ // Row start
125
+ &--row-start-1 { grid-row-start: 1 !important; }
126
+ &--row-start-2 { grid-row-start: 2 !important; }
127
+ &--row-start-3 { grid-row-start: 3 !important; }
128
+ &--row-start-4 { grid-row-start: 4 !important; }
129
+ &--row-start-5 { grid-row-start: 5 !important; }
130
+ &--row-start-6 { grid-row-start: 6 !important; }
131
+ &--row-start-7 { grid-row-start: 7 !important; }
132
+ &--row-start-auto { grid-row-start: auto !important; }
133
+
134
+ // Row end
135
+ &--row-end-1 { grid-row-end: 1 !important; }
136
+ &--row-end-2 { grid-row-end: 2 !important; }
137
+ &--row-end-3 { grid-row-end: 3 !important; }
138
+ &--row-end-4 { grid-row-end: 4 !important; }
139
+ &--row-end-5 { grid-row-end: 5 !important; }
140
+ &--row-end-6 { grid-row-end: 6 !important; }
141
+ &--row-end-7 { grid-row-end: 7 !important; }
142
+ &--row-end-auto { grid-row-end: auto !important; }
143
+ }
144
+
145
+ // Grid auto flow utilities
146
+ .ivds-grid-flow-row { grid-auto-flow: row !important; }
147
+ .ivds-grid-flow-col { grid-auto-flow: column !important; }
148
+ .ivds-grid-flow-dense { grid-auto-flow: dense !important; }
149
+ .ivds-grid-flow-row-dense { grid-auto-flow: row dense !important; }
150
+ .ivds-grid-flow-col-dense { grid-auto-flow: column dense !important; }
151
+
152
+ // Grid auto columns utilities
153
+ .ivds-auto-cols-auto { grid-auto-columns: auto !important; }
154
+ .ivds-auto-cols-min { grid-auto-columns: min-content !important; }
155
+ .ivds-auto-cols-max { grid-auto-columns: max-content !important; }
156
+ .ivds-auto-cols-fr { grid-auto-columns: minmax(0, 1fr) !important; }
157
+
158
+ // Grid auto rows utilities
159
+ .ivds-auto-rows-auto { grid-auto-rows: auto !important; }
160
+ .ivds-auto-rows-min { grid-auto-rows: min-content !important; }
161
+ .ivds-auto-rows-max { grid-auto-rows: max-content !important; }
162
+ .ivds-auto-rows-fr { grid-auto-rows: minmax(0, 1fr) !important; }
163
+
164
+ // Responsive grid utilities
165
+ @media (min-width: 640px) {
166
+ .ivds-sm-grid--cols-1 { grid-template-columns: repeat(1, 1fr) !important; }
167
+ .ivds-sm-grid--cols-2 { grid-template-columns: repeat(2, 1fr) !important; }
168
+ .ivds-sm-grid--cols-3 { grid-template-columns: repeat(3, 1fr) !important; }
169
+ .ivds-sm-grid--cols-4 { grid-template-columns: repeat(4, 1fr) !important; }
170
+ .ivds-sm-grid--cols-6 { grid-template-columns: repeat(6, 1fr) !important; }
171
+ .ivds-sm-grid--cols-12 { grid-template-columns: repeat(12, 1fr) !important; }
172
+
173
+ .ivds-sm-grid-item--col-span-1 { grid-column: span 1 / span 1 !important; }
174
+ .ivds-sm-grid-item--col-span-2 { grid-column: span 2 / span 2 !important; }
175
+ .ivds-sm-grid-item--col-span-3 { grid-column: span 3 / span 3 !important; }
176
+ .ivds-sm-grid-item--col-span-4 { grid-column: span 4 / span 4 !important; }
177
+ .ivds-sm-grid-item--col-span-6 { grid-column: span 6 / span 6 !important; }
178
+ .ivds-sm-grid-item--col-span-12 { grid-column: span 12 / span 12 !important; }
179
+ }
180
+
181
+ @media (min-width: 768px) {
182
+ .ivds-md-grid--cols-1 { grid-template-columns: repeat(1, 1fr) !important; }
183
+ .ivds-md-grid--cols-2 { grid-template-columns: repeat(2, 1fr) !important; }
184
+ .ivds-md-grid--cols-3 { grid-template-columns: repeat(3, 1fr) !important; }
185
+ .ivds-md-grid--cols-4 { grid-template-columns: repeat(4, 1fr) !important; }
186
+ .ivds-md-grid--cols-6 { grid-template-columns: repeat(6, 1fr) !important; }
187
+ .ivds-md-grid--cols-12 { grid-template-columns: repeat(12, 1fr) !important; }
188
+
189
+ .ivds-md-grid-item--col-span-1 { grid-column: span 1 / span 1 !important; }
190
+ .ivds-md-grid-item--col-span-2 { grid-column: span 2 / span 2 !important; }
191
+ .ivds-md-grid-item--col-span-3 { grid-column: span 3 / span 3 !important; }
192
+ .ivds-md-grid-item--col-span-4 { grid-column: span 4 / span 4 !important; }
193
+ .ivds-md-grid-item--col-span-6 { grid-column: span 6 / span 6 !important; }
194
+ .ivds-md-grid-item--col-span-12 { grid-column: span 12 / span 12 !important; }
195
+ }
196
+
197
+ @media (min-width: 1024px) {
198
+ .ivds-lg-grid--cols-1 { grid-template-columns: repeat(1, 1fr) !important; }
199
+ .ivds-lg-grid--cols-2 { grid-template-columns: repeat(2, 1fr) !important; }
200
+ .ivds-lg-grid--cols-3 { grid-template-columns: repeat(3, 1fr) !important; }
201
+ .ivds-lg-grid--cols-4 { grid-template-columns: repeat(4, 1fr) !important; }
202
+ .ivds-lg-grid--cols-6 { grid-template-columns: repeat(6, 1fr) !important; }
203
+ .ivds-lg-grid--cols-12 { grid-template-columns: repeat(12, 1fr) !important; }
204
+
205
+ .ivds-lg-grid-item--col-span-1 { grid-column: span 1 / span 1 !important; }
206
+ .ivds-lg-grid-item--col-span-2 { grid-column: span 2 / span 2 !important; }
207
+ .ivds-lg-grid-item--col-span-3 { grid-column: span 3 / span 3 !important; }
208
+ .ivds-lg-grid-item--col-span-4 { grid-column: span 4 / span 4 !important; }
209
+ .ivds-lg-grid-item--col-span-6 { grid-column: span 6 / span 6 !important; }
210
+ .ivds-lg-grid-item--col-span-12 { grid-column: span 12 / span 12 !important; }
211
+ }