lapikit 0.0.0-insiders.3dd6cd6 → 0.0.0-insiders.3eeb669

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 (61) hide show
  1. package/dist/components/accordion/accordion.svelte +118 -0
  2. package/dist/components/alert/alert.svelte +122 -0
  3. package/dist/components/app/app.svelte +18 -0
  4. package/dist/components/appbar/appbar.svelte +45 -0
  5. package/dist/components/aspect-ratio/aspect-ratio.svelte +23 -4
  6. package/dist/components/avatar/avatar.svelte +114 -0
  7. package/dist/components/button/button.svelte +230 -0
  8. package/dist/components/card/card.svelte +108 -0
  9. package/dist/components/chip/chip.svelte +211 -0
  10. package/dist/components/dialog/dialog.svelte +144 -0
  11. package/dist/components/dropdown/dropdown.svelte +24 -0
  12. package/dist/components/icon/icon.svelte +87 -0
  13. package/dist/components/list/list.svelte +199 -0
  14. package/dist/components/list/modules/list-item.svelte +199 -0
  15. package/dist/components/modal/modal.svelte +135 -0
  16. package/dist/components/popover/popover.svelte +24 -0
  17. package/dist/components/separator/separator.svelte +48 -0
  18. package/dist/components/spacer/spacer.svelte +5 -0
  19. package/dist/components/textfield/textfield.svelte +270 -0
  20. package/dist/components/toolbar/toolbar.svelte +135 -0
  21. package/dist/components/tooltip/tooltip.svelte +127 -0
  22. package/dist/internal/config/presets.d.ts +108 -0
  23. package/dist/internal/config/presets.js +121 -0
  24. package/dist/internal/config/variables.d.ts +6 -0
  25. package/dist/internal/config/variables.js +6 -0
  26. package/dist/internal/core/formatter/component.d.ts +5 -0
  27. package/dist/internal/core/formatter/component.js +56 -0
  28. package/dist/internal/core/formatter/index.d.ts +5 -0
  29. package/dist/internal/core/formatter/index.js +27 -0
  30. package/dist/internal/core/formatter/styles.d.ts +4 -0
  31. package/dist/internal/core/formatter/styles.js +15 -0
  32. package/dist/internal/core/formatter/theme.d.ts +5 -0
  33. package/dist/internal/core/formatter/theme.js +20 -0
  34. package/dist/internal/core/formatter/typography.d.ts +5 -0
  35. package/dist/internal/core/formatter/typography.js +12 -0
  36. package/dist/internal/helpers/parser.d.ts +10 -0
  37. package/dist/internal/helpers/parser.js +92 -0
  38. package/dist/internal/plugins/vite.d.ts +8 -0
  39. package/dist/internal/plugins/vite.js +25 -0
  40. package/dist/internal/types/configuration.d.ts +40 -0
  41. package/dist/internal/types/configuration.js +1 -0
  42. package/dist/internal/types/index.d.ts +1 -0
  43. package/dist/internal/types/index.js +1 -0
  44. package/dist/labs/index.d.ts +4 -0
  45. package/dist/labs/index.js +5 -0
  46. package/dist/labs/my-component-style-global.svelte +6 -0
  47. package/dist/labs/my-component-style-global.svelte.d.ts +18 -0
  48. package/dist/labs/my-component-style-import.svelte +15 -0
  49. package/dist/labs/my-component-style-import.svelte.d.ts +18 -0
  50. package/dist/labs/my-component-style-mixed.svelte +23 -0
  51. package/dist/labs/my-component-style-mixed.svelte.d.ts +18 -0
  52. package/dist/labs/my-component.svelte +16 -0
  53. package/dist/labs/my-component.svelte.d.ts +18 -0
  54. package/dist/labs/style-mixed.css +7 -0
  55. package/dist/labs/style.css +7 -0
  56. package/dist/labs.css +25 -0
  57. package/dist/plugin/css.js +27 -14
  58. package/dist/plugin/preset-v2.d.ts +12 -0
  59. package/dist/plugin/preset-v2.js +12 -0
  60. package/dist/plugin/vitejs.js +1 -1
  61. package/package.json +9 -2
@@ -35,3 +35,121 @@
35
35
  >
36
36
  {@render children?.()}
37
37
  </svelte:element>
38
+
39
+ <style>.kit-accordion {
40
+ --accordion-color: var(--on, var(--kit-on-container));
41
+ --accordion-background: var(--base, var(--kit-container));
42
+ --accordion-radius: var(--shape, var(--kit-radius-md));
43
+
44
+ display: flex;
45
+ flex-wrap: wrap;
46
+ justify-content: center;
47
+ list-style-type: none;
48
+ padding: 0;
49
+ width: 100%;
50
+ position: relative;
51
+ z-index: 1;
52
+ }
53
+
54
+ .kit-accordion.kit-accordion--spacer .kit-accordion-item:first-child.kit-accordion-item--active {
55
+ margin-bottom: 1rem;
56
+ }
57
+
58
+ .kit-accordion.kit-accordion--spacer
59
+ .kit-accordion-item:not(:first-child):not(:last-child).kit-accordion-item--active {
60
+ margin-bottom: 1rem;
61
+ margin-top: 1rem;
62
+ }
63
+
64
+ .kit-accordion.kit-accordion--spacer .kit-accordion-item:last-child.kit-accordion-item--active {
65
+ margin-top: 1rem;
66
+ }
67
+
68
+ .kit-accordion.kit-accordion--hide-icon
69
+ .kit-accordion-item
70
+ .kit-accordion-item--title
71
+ > .kit-accordion-item--icon {
72
+ display: none !important;
73
+ }
74
+
75
+ .kit-accordion.kit-accordion--hide-icon .kit-accordion-item .kit-accordion-item--title {
76
+ cursor: default;
77
+ pointer-events: none;
78
+ user-select: none;
79
+ }
80
+
81
+ /* item */
82
+
83
+ .kit-accordion .kit-accordion-item {
84
+ flex: 1 0 100%;
85
+ max-width: 100%;
86
+ position: relative;
87
+ transition: 0.3s all cubic-bezier(0.4, 0, 0.2, 1);
88
+ transition-property: margin-top, border-radius, border, max-width;
89
+ border-radius: var(--shape, var(--accordion-radius, var(--kit-radius-md)));
90
+ color: var(--on, var(--accordion-color, var(--kit-on-container)));
91
+ background-color: var(--base, var(--accordion-background, var(--kit-container)));
92
+ /* transition:
93
+ color 0.5s,
94
+ background-color 0.5s; */
95
+ }
96
+
97
+ .kit-accordion .kit-accordion-item > button,
98
+ .kit-accordion .kit-accordion-item > [type='button'] {
99
+ font: inherit;
100
+ overflow: visible;
101
+ background-color: transparent;
102
+ border-style: none;
103
+ cursor: pointer;
104
+ color: inherit;
105
+ }
106
+
107
+ .kit-accordion .kit-accordion-item .kit-accordion-item--title {
108
+ align-items: center;
109
+ text-align: start;
110
+ border-radius: inherit;
111
+ display: flex;
112
+ font-size: 0.9375rem;
113
+ min-height: 3rem;
114
+ outline: none;
115
+ padding: 1rem 1.5rem;
116
+ position: relative;
117
+ transition: 0.3s min-height margin-bottom margin-top border-radius cubic-bezier(0.4, 0, 0.2, 1);
118
+ width: 100%;
119
+ justify-content: space-between;
120
+ }
121
+
122
+ .kit-accordion .kit-accordion-item .kit-accordion-item--text {
123
+ display: flex;
124
+ }
125
+
126
+ .kit-accordion .kit-accordion-item .kit-accordion-item--text .kit-accordion-item--text-wrapper {
127
+ padding: 0.5rem 1.5rem 1rem;
128
+ flex: 1 1 auto;
129
+ max-width: 100%;
130
+ }
131
+
132
+ .kit-accordion .kit-accordion-item .kit-accordion-item--icon {
133
+ display: inline-flex;
134
+ margin-bottom: -0.25rem;
135
+ margin-top: -0.25rem;
136
+ -webkit-user-select: none;
137
+ user-select: none;
138
+ margin-inline-start: auto;
139
+ }
140
+
141
+ /* disabled */
142
+
143
+ .kit-accordion .kit-accordion-item .kit-accordion-item--title.kit-accordion-item--disabled,
144
+ .kit-accordion .kit-accordion-item .kit-accordion-item--title[disabled],
145
+ .kit-accordion .kit-accordion-item .kit-accordion-item--title:disabled {
146
+ pointer-events: none;
147
+ user-select: none;
148
+ }
149
+
150
+ .kit-accordion .kit-accordion-item .kit-accordion-item--title.kit-accordion-item--disabled > *,
151
+ .kit-accordion .kit-accordion-item .kit-accordion-item--title[disabled] > *,
152
+ .kit-accordion .kit-accordion-item .kit-accordion-item--title:disabled > * {
153
+ opacity: 0.6;
154
+ }
155
+ </style>
@@ -87,3 +87,125 @@
87
87
  {/if}
88
88
  </svelte:element>
89
89
  {/if}
90
+
91
+ <style>/* root */
92
+ .kit-alert {
93
+ --alert-color: var(--on, var(--kit-on-container));
94
+ --alert-background: var(--base, var(--kit-container));
95
+ --alert-radius: var(--shape, var(--kit-radius-md));
96
+ }
97
+ .kit-alert {
98
+ display: grid;
99
+ flex: 1 1;
100
+ grid-template-areas:
101
+ 'prepend content append close'
102
+ '. content . .';
103
+ grid-template-columns: max-content minmax(0, 1fr) max-content max-content;
104
+ position: relative;
105
+ padding: 1rem;
106
+ overflow: hidden;
107
+ color: var(--alert-color);
108
+ background-color: var(--alert-background);
109
+ border-radius: var(--alert-radius);
110
+ line-height: 0;
111
+ }
112
+ .kit-alert .kit-alert--underlay {
113
+ grid-area: none;
114
+ position: absolute;
115
+ background-color: var(--alert-background);
116
+ border-radius: inherit;
117
+ top: 0;
118
+ right: 0;
119
+ bottom: 0;
120
+ left: 0;
121
+ z-index: -1;
122
+ }
123
+ .kit-alert.kit-alert--outline {
124
+ border: thin solid currentColor;
125
+ background-color: transparent;
126
+ }
127
+ /* density */
128
+ .kit-alert[breakpoint]kit-alert--density-default {
129
+ padding-bottom: 1rem;
130
+ padding-top: 1rem;
131
+ }
132
+ .kit-alert[breakpoint]kit-alert--density-compact {
133
+ padding-bottom: 0.5rem;
134
+ padding-top: 0.5rem;
135
+ }
136
+ .kit-alert[breakpoint]kit-alert--density-comfortable {
137
+ padding-bottom: 0.75rem;
138
+ padding-top: 0.75rem;
139
+ }
140
+ .kit-alert .kit-alert--prepend {
141
+ align-self: flex-start;
142
+ display: flex;
143
+ align-items: center;
144
+ grid-area: prepend;
145
+ margin-inline-end: 1rem;
146
+ }
147
+ .kit-alert .kit-alert--content {
148
+ align-self: flex-start;
149
+ grid-area: content;
150
+ overflow: hidden;
151
+ line-height: normal;
152
+ }
153
+ .kit-alert .kit-alert--close {
154
+ align-self: flex-start;
155
+ margin-inline-start: 1rem;
156
+ flex: 0 1 auto;
157
+ grid-area: close;
158
+ }
159
+ .kit-alert .kit-alert--append {
160
+ align-self: flex-start;
161
+ display: flex;
162
+ align-items: center;
163
+ grid-area: append;
164
+ margin-inline-start: 1rem;
165
+ }
166
+ /* state */
167
+ .kit-alert.kit-alert--info:not([class*='alert--variant-']) {
168
+ --on: var(--kit-on-info);
169
+ --base: var(--kit-info);
170
+ }
171
+ .kit-alert.kit-alert--info[class*='alert--variant-'] {
172
+ --base: var(--kit-info);
173
+ }
174
+ .kit-alert.kit-alert--success:not([class*='alert--variant-']) {
175
+ --on: var(--kit-on-success);
176
+ --base: var(--kit-success);
177
+ }
178
+ .kit-alert.kit-alert--success[class*='alert--variant-'] {
179
+ --base: var(--kit-success);
180
+ }
181
+ .kit-alert.kit-alert--warning:not([class*='alert--variant-']) {
182
+ --on: var(--kit-on-warning);
183
+ --base: var(--kit-warning);
184
+ }
185
+ .kit-alert.kit-alert--warning[class*='alert--variant-'] {
186
+ --base: var(--kit-warning);
187
+ }
188
+ .kit-alert.kit-alert--error:not([class*='alert--variant-']) {
189
+ --on: var(--kit-on-error);
190
+ --base: var(--kit-error);
191
+ }
192
+ .kit-alert.kit-alert--error[class*='alert--variant-'] {
193
+ --base: var(--kit-error);
194
+ }
195
+ /* variant */
196
+ .kit-alert[breakpoint]kit-alert--variant-outline {
197
+ --alert-color: var(--base, var(--kit-neutral));
198
+ background-color: transparent;
199
+ border: 1px solid currentColor;
200
+ }
201
+ .kit-alert[breakpoint]kit-alert--variant-text {
202
+ --alert-color: var(--base, var(--kit-neutral));
203
+ background-color: transparent;
204
+ border-color: transparent;
205
+ }
206
+ .kit-alert[breakpoint]kit-alert--variant-dash {
207
+ --alert-color: var(--base, var(--kit-neutral));
208
+ background-color: transparent;
209
+ border: 1px dashed currentColor;
210
+ }
211
+ </style>
@@ -46,3 +46,21 @@
46
46
  onclick={() => $modalOpen !== 'persistent' && setOpenModal(false)}
47
47
  ></div>
48
48
  {/if}
49
+
50
+ <style>.kit-overlay {
51
+ position: fixed;
52
+ top: 0;
53
+ left: 0;
54
+ height: 100%;
55
+ width: 100%;
56
+ background-color: color-mix(in oklab, var(--kit-shadow) 70%, transparent);
57
+ z-index: 9000;
58
+ cursor: default;
59
+ }
60
+
61
+ .kit-overlay.kit-overlay--persistent {
62
+ /* pointer-events: none; */
63
+ user-select: none;
64
+ cursor: default;
65
+ }
66
+ </style>
@@ -38,3 +38,48 @@
38
38
  {@render children?.()}
39
39
  </div>
40
40
  </svelte:element>
41
+
42
+ <style>/* root default*/
43
+ .kit-appbar {
44
+ --appbar-color: var(--on, var(--kit-on-surface));
45
+ --appbar-background: var(--base, var(--kit-surface));
46
+ --appbar-radius: var(--shape, 0);
47
+ --appbar-padding-wrapper: var(--kit-spacing) * 4;
48
+ }
49
+ .kit-appbar {
50
+ display: flex;
51
+ align-items: center;
52
+ border-style: solid;
53
+ border-width: 1px;
54
+ border-radius: var(--appbar-radius);
55
+ color: var(--appbar-color);
56
+ background-color: var(--appbar-background);
57
+ border-color: var(--appbar-background);
58
+ /* transition:
59
+ color 0.5s,
60
+ border-color 0.5s,
61
+ background-color 0.5s; */
62
+ }
63
+ /* wrapper */
64
+ .kit-appbar .kit-appbar--wrapper {
65
+ display: flex;
66
+ align-items: center;
67
+ flex-direction: row;
68
+ height: calc(100% - (var(--appbar-padding-wrapper) * 2));
69
+ width: calc(100% - (var(--appbar-padding-wrapper) * 2));
70
+ margin: 0 auto;
71
+ }
72
+ /* density */
73
+ .kit-appbar[breakpoint]kit-appbar--density-default {
74
+ height: 4rem;
75
+ padding-inline: calc(var(--kit-spacing) * 1.5);
76
+ }
77
+ .kit-appbar[breakpoint]kit-appbar--density-compact {
78
+ height: 3.5rem;
79
+ padding-inline: calc(var(--kit-spacing) * 0.75);
80
+ }
81
+ .kit-appbar[breakpoint]kit-appbar--density-comfortable {
82
+ height: 4.5rem;
83
+ padding-inline: calc(var(--kit-spacing) * 2.25);
84
+ }
85
+ </style>
@@ -24,8 +24,27 @@
24
24
  {@render children?.()}
25
25
  </div>
26
26
 
27
- <style>
28
- .kit-aspect-ratio {
27
+ <style>.kit-aspect-ratio {
28
+ display: flex;
29
+ flex: 1 0 auto;
30
+ max-height: 100%;
31
+ max-width: 100%;
32
+ overflow: hidden;
33
+ position: relative;
34
+ }
35
+
36
+ .kit-aspect-ratio--inline {
37
+ display: inline-flex;
38
+ flex: 0 0 auto;
39
+ }
40
+
41
+ .kit-aspect-ratio--sizer {
42
+ flex: 1 0 0px;
43
+ transition: padding-bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1);
44
+ pointer-events: none;
45
+ }
46
+
47
+ .kit-aspect-ratio {
29
48
  display: flex;
30
49
  flex: 1 0 auto;
31
50
  max-height: 100%;
@@ -34,12 +53,12 @@
34
53
  position: relative;
35
54
  }
36
55
 
37
- .kit-aspect-ratio--inline {
56
+ .kit-aspect-ratio--inline {
38
57
  display: inline-flex;
39
58
  flex: 0 0 auto;
40
59
  }
41
60
 
42
- .kit-aspect-ratio--sizer {
61
+ .kit-aspect-ratio--sizer {
43
62
  flex: 1 0 0px;
44
63
  transition: padding-bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1);
45
64
  pointer-events: none;
@@ -44,3 +44,117 @@
44
44
  {@render children?.()}
45
45
  {/if}
46
46
  </svelte:element>
47
+
48
+ <style>.kit-avatar {
49
+ --avatar-color: var(--on, var(--kit-on-container));
50
+ --avatar-background: var(--base, var(--kit-container));
51
+ --avatar-radius: var(--shape, var(--kit-radius-full));
52
+
53
+ display: flex;
54
+ align-items: center;
55
+ justify-content: center;
56
+ white-space: nowrap;
57
+ padding-top: var(--avatar-spacing-x);
58
+ padding-bottom: var(--avatar-spacing-x);
59
+ padding-right: var(--avatar-spacing-y);
60
+ padding-left: var(--avatar-spacing-y);
61
+
62
+ border-width: 1px;
63
+ border-style: solid;
64
+ border-radius: var(--avatar-radius);
65
+
66
+ /* theme */
67
+ color: var(--avatar-color);
68
+ background-color: var(--avatar-background);
69
+ border-color: var(--avatar-background);
70
+ }
71
+
72
+ .kit-avatar.kit-avatar--image {
73
+ position: relative;
74
+ overflow: hidden;
75
+ }
76
+
77
+ .kit-avatar.kit-avatar--image img {
78
+ position: relative;
79
+ top: 0;
80
+ left: 0;
81
+ width: 100%;
82
+ height: 100%;
83
+ object-fit: cover;
84
+ }
85
+
86
+ /* size */
87
+
88
+ .kit-avatar[breakpoint]kit-avatar--size-xs {
89
+ --avatar-height: 1.75rem;
90
+ --avatar-multiplier-y: 2;
91
+ font-size: 0.75rem;
92
+ }
93
+
94
+ .kit-avatar[breakpoint]kit-avatar--size-sm {
95
+ --avatar-height: 2rem;
96
+ --avatar-multiplier-y: 3;
97
+ font-size: 0.875rem;
98
+ }
99
+
100
+ .kit-avatar[breakpoint]kit-avatar--size-md {
101
+ --avatar-height: 2.25rem;
102
+ --avatar-multiplier-y: 4;
103
+ font-size: 0.875rem;
104
+ }
105
+
106
+ .kit-avatar[breakpoint]kit-avatar--size-lg {
107
+ --avatar-height: 2.5rem;
108
+ --avatar-multiplier-y: 5;
109
+ font-size: 1rem;
110
+ }
111
+
112
+ .kit-avatar[breakpoint]kit-avatar--size-xl {
113
+ --avatar-height: 2.75rem;
114
+ --avatar-multiplier-y: 6;
115
+ font-size: 1.125rem;
116
+ }
117
+
118
+ /* density */
119
+
120
+ .kit-avatar[breakpoint]kit-avatar--density-default {
121
+ height: calc(var(--avatar-height));
122
+ width: calc(var(--avatar-height));
123
+ --avatar-spacing-x: 0;
124
+ --avatar-spacing-y: 0;
125
+ }
126
+
127
+ .kit-avatar[breakpoint]kit-avatar--density-compact {
128
+ height: calc(var(--avatar-height) - 0.25rem);
129
+ width: calc(var(--avatar-height) - 0.25rem);
130
+ --avatar-spacing-x: 0;
131
+ --avatar-spacing-y: 0;
132
+ }
133
+
134
+ .kit-avatar[breakpoint]kit-avatar--density-comfortable {
135
+ height: calc(var(--avatar-height) + 0.25rem);
136
+ width: calc(var(--avatar-height) + 0.25rem);
137
+ --avatar-spacing-x: 0;
138
+ --avatar-spacing-y: 0;
139
+ }
140
+
141
+ /* variant */
142
+
143
+ .kit-avatar[breakpoint]kit-avatar--variant-outline {
144
+ --avatar-color: var(--base, var(--kit-container));
145
+ background-color: transparent;
146
+ border: 1px solid currentColor;
147
+ }
148
+
149
+ .kit-avatar[breakpoint]kit-avatar--variant-text {
150
+ --avatar-color: var(--base, var(--kit-container));
151
+ background-color: transparent;
152
+ border-color: transparent;
153
+ }
154
+
155
+ .kit-avatar[breakpoint]kit-avatar--variant-dash {
156
+ --avatar-color: var(--base, var(--kit-container));
157
+ background-color: transparent;
158
+ border: 1px dashed currentColor;
159
+ }
160
+ </style>
@@ -100,3 +100,233 @@
100
100
  </div>
101
101
  {/if}
102
102
  </svelte:element>
103
+
104
+ <style>/* root */
105
+ .kit-button {
106
+ --button-color: var(--on, var(--kit-on-container));
107
+ --button-background: var(--base, var(--kit-container));
108
+ --button-radius: var(--shape, var(--kit-radius-md));
109
+ }
110
+ .kit-button {
111
+ position: relative;
112
+ cursor: pointer;
113
+ border: none;
114
+ outline: none;
115
+ padding-top: var(--button-spacing-x);
116
+ padding-bottom: var(--button-spacing-x);
117
+ padding-right: var(--button-spacing-y);
118
+ padding-left: var(--button-spacing-y);
119
+ border-radius: var(--button-radius);
120
+ color: var(--button-color);
121
+ font-weight: 500;
122
+ text-decoration: none;
123
+ }
124
+ .kit-button,
125
+ .kit-button .kit-button-content,
126
+ .kit-button .kit-button-append,
127
+ .kit-button .kit-button-prepend,
128
+ .kit-button .kit-button-loading {
129
+ display: inline-flex;
130
+ align-items: center;
131
+ justify-content: center;
132
+ white-space: nowrap;
133
+ gap: calc(var(--kit-spacing) * var(--button-multiplier-gap));
134
+ font-size: calc(var(--kit-spacing) * var(--button-multiplier-font-size));
135
+ }
136
+ .kit-button::after {
137
+ content: '';
138
+ position: absolute;
139
+ inset: 0;
140
+ background-color: currentColor;
141
+ opacity: 0;
142
+ transition: opacity 150ms ease;
143
+ pointer-events: none;
144
+ border-radius: inherit;
145
+ }
146
+ .kit-button:hover::after {
147
+ opacity: 0.08;
148
+ }
149
+ .kit-button:active::after {
150
+ opacity: 0.12;
151
+ }
152
+ .kit-button:focus-visible::after {
153
+ opacity: 0.12;
154
+ }
155
+ /* size */
156
+ .kit-button[breakpoint]kit-button--size-xs {
157
+ --button-multiplier-x: 12;
158
+ --button-multiplier-y: 2;
159
+ --button-multiplier-gap: 2;
160
+ --button-multiplier-font-size: 6;
161
+ }
162
+ .kit-button[breakpoint]kit-button--size-xs .kit-icon[class*='kit-icon--size-md'] {
163
+ --icon-multiplier-parent-size: 7;
164
+ }
165
+ .kit-button[breakpoint]kit-button--size-sm {
166
+ --button-multiplier-x: 16;
167
+ --button-multiplier-y: 3;
168
+ --button-multiplier-gap: 4;
169
+ --button-multiplier-font-size: 7;
170
+ }
171
+ .kit-button[breakpoint]kit-button--size-sm .kit-icon[class*='kit-icon--size-md'] {
172
+ --icon-multiplier-parent-size: 8;
173
+ }
174
+ .kit-button[breakpoint]kit-button--size-md {
175
+ --button-multiplier-x: 20;
176
+ --button-multiplier-y: 4;
177
+ --button-multiplier-gap: 4;
178
+ --button-multiplier-font-size: 8;
179
+ }
180
+ .kit-button[breakpoint]kit-button--size-md .kit-icon[class*='kit-icon--size-md'] {
181
+ --icon-multiplier-parent-size: 9;
182
+ }
183
+ .kit-button[breakpoint]kit-button--size-lg {
184
+ --button-multiplier-x: 24;
185
+ --button-multiplier-y: 5;
186
+ --button-multiplier-gap: 4;
187
+ --button-multiplier-font-size: 9;
188
+ }
189
+ .kit-button[breakpoint]kit-button--size-lg .kit-icon[class*='kit-icon--size-md'] {
190
+ --icon-multiplier-parent-size: 10;
191
+ }
192
+ .kit-button[breakpoint]kit-button--size-xl {
193
+ --button-multiplier-x: 28;
194
+ --button-multiplier-y: 6;
195
+ --button-multiplier-gap: 5;
196
+ --button-multiplier-font-size: 10;
197
+ }
198
+ .kit-button[breakpoint]kit-button--size-xl .kit-icon[class*='kit-icon--size-md'] {
199
+ --icon-multiplier-parent-size: 11;
200
+ }
201
+ /* density */
202
+ .kit-button:not(.kit-button--icon)[breakpoint]kit-button--density-default {
203
+ height: calc(var(--kit-spacing) * var(--button-multiplier-x));
204
+ --button-spacing-x: 0;
205
+ --button-spacing-y: calc(var(--kit-spacing) * var(--button-multiplier-y));
206
+ }
207
+ .kit-button.kit-button--icon[breakpoint]kit-button--density-default {
208
+ height: calc(var(--kit-spacing) * var(--button-multiplier-x));
209
+ width: calc(var(--kit-spacing) * var(--button-multiplier-x));
210
+ --button-spacing-x: 0;
211
+ --button-spacing-y: 0;
212
+ }
213
+ .kit-button:not(.kit-button--icon)[breakpoint]kit-button--density-compact {
214
+ height: calc(var(--kit-spacing) * var(--button-multiplier-x) - 0.25rem);
215
+ --button-spacing-x: 0;
216
+ --button-spacing-y: calc(var(--kit-spacing) * var(--button-multiplier-y) - 0.25rem);
217
+ }
218
+ .kit-button.kit-button--icon[breakpoint]kit-button--density-compact {
219
+ height: calc(var(--kit-spacing) * var(--button-multiplier-x) - 0.25rem);
220
+ width: calc(var(--kit-spacing) * var(--button-multiplier-x) - 0.25rem);
221
+ --button-spacing-x: 0;
222
+ --button-spacing-y: 0;
223
+ }
224
+ .kit-button:not(.kit-button--icon)[breakpoint]kit-button--density-comfortable {
225
+ height: calc(var(--kit-spacing) * var(--button-multiplier-x) + 0.25rem);
226
+ --button-spacing-x: 0;
227
+ --button-spacing-y: calc(var(--kit-spacing) * var(--button-multiplier-y) + 0.25rem);
228
+ }
229
+ .kit-button.kit-button--icon[breakpoint]kit-button--density-comfortable {
230
+ height: calc(var(--kit-spacing) * var(--button-multiplier-x) + 0.25rem);
231
+ width: calc(var(--kit-spacing) * var(--button-multiplier-x) + 0.25rem);
232
+ --button-spacing-x: 0;
233
+ --button-spacing-y: 0;
234
+ }
235
+ /* variant */
236
+ .kit-button[breakpoint]kit-button--variant-filled {
237
+ background-color: var(--button-background);
238
+ }
239
+ .kit-button[breakpoint]kit-button--variant-outline {
240
+ --button-color: var(--on, var(--kit-on-container));
241
+ background-color: var(--button-background);
242
+ }
243
+ .kit-button[breakpoint]kit-button--variant-outline::before {
244
+ content: '';
245
+ position: absolute;
246
+ inset: 0;
247
+ border: 1px solid currentColor;
248
+ pointer-events: none;
249
+ border-radius: inherit;
250
+ }
251
+ .kit-button[breakpoint]kit-button--variant-text {
252
+ --button-color: var(--base, var(--kit-on-container));
253
+ background-color: transparent;
254
+ border: none;
255
+ }
256
+ /* state */
257
+ .kit-button.kit-button--info[class*='button--variant-filled'] {
258
+ --on: var(--kit-on-info);
259
+ --base: var(--kit-info);
260
+ }
261
+ .kit-button.kit-button--info[class*='button--variant-']:not([class*='variant-filled']) {
262
+ --base: var(--kit-info);
263
+ }
264
+ .kit-button.kit-button--success[class*='button--variant-filled'] {
265
+ --on: var(--kit-on-success);
266
+ --base: var(--kit-success);
267
+ }
268
+ .kit-button.kit-button--success[class*='button--variant-']:not([class*='variant-filled']) {
269
+ --base: var(--kit-success);
270
+ }
271
+ .kit-button.kit-button--warning[class*='button--variant-filled'] {
272
+ --on: var(--kit-on-warning);
273
+ --base: var(--kit-warning);
274
+ }
275
+ .kit-button.kit-button--warning[class*='button--variant-']:not([class*='variant-filled']) {
276
+ --base: var(--kit-warning);
277
+ }
278
+ .kit-button.kit-button--error[class*='button--variant-filled'] {
279
+ --on: var(--kit-on-error);
280
+ --base: var(--kit-error);
281
+ }
282
+ .kit-button.kit-button--error[class*='button--variant-']:not([class*='variant-filled']) {
283
+ --base: var(--kit-error);
284
+ }
285
+ /* events */
286
+ .kit-button[class*='button--variant-filled']:active,
287
+ .kit-button.kit-button--active[class*='button--variant-filled'] {
288
+ background-color: color-mix(in oklab, var(--button-background) 90%, var(--kit-scrim));
289
+ }
290
+ .kit-button.kit-button--active[class*='button--variant-']:not([class*='variant-filled']):active,
291
+ .kit-button.kit-button--active[class*='button--variant-']:not([class*='variant-filled']) {
292
+ background-color: color-mix(in oklab, currentColor 15%, transparent);
293
+ }
294
+ /* icon */
295
+ .kit-button i::before,
296
+ .kit-button .kit-icon {
297
+ --base-parent: var(--button-color);
298
+ }
299
+ /* disabled */
300
+ .kit-button.kit-button--disabled,
301
+ .kit-button[disabled],
302
+ .kit-button.kit-button--loading {
303
+ pointer-events: none;
304
+ user-select: none;
305
+ cursor: default;
306
+ }
307
+ .kit-button[class*='button--variant-filled'].kit-button--disabled {
308
+ color: color-mix(in oklab, var(--button-color) 40%, transparent) !important;
309
+ background-color: color-mix(in oklab, var(--button-background) 70%, transparent) !important;
310
+ }
311
+ .kit-button[class*='button--variant-filled'].kit-button--disabled i:before {
312
+ color: color-mix(in oklab, var(--button-color) 40%, transparent) !important;
313
+ }
314
+ .kit-button[class*='button--variant-']:not([class*='variant-filled']).kit-button--disabled,
315
+ .kit-button[class*='button--variant-']:not([class*='variant-filled']).kit-button--disabled
316
+ i::before {
317
+ color: color-mix(in oklab, var(--button-background) 40%, transparent) !important;
318
+ }
319
+ /* loading */
320
+ .kit-button.kit-button--loading > .kit-button-content,
321
+ .kit-button.kit-button--loading > .kit-button-append,
322
+ .kit-button.kit-button--loading > .kit-button-prepend {
323
+ visibility: hidden;
324
+ }
325
+ .kit-button.kit-button--loading > .kit-button-loading {
326
+ position: absolute;
327
+ min-width: fit-content;
328
+ }
329
+ .kit-button.kit-button--loading > .kit-button-loading .kit-icon-load {
330
+ animation: icon-rotate 1s ease-out infinite;
331
+ }
332
+ </style>