lapikit 0.0.0-insiders.d9491fb → 0.0.0-insiders.db064a9

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 (198) hide show
  1. package/README.md +117 -1
  2. package/bin/configuration.js +303 -0
  3. package/bin/helper.js +0 -15
  4. package/bin/index.js +33 -0
  5. package/bin/presets.js +26 -0
  6. package/bin/prompts.js +67 -0
  7. package/dist/actions/accordion.svelte.d.ts +9 -0
  8. package/dist/actions/index.d.ts +2 -1
  9. package/dist/actions/index.js +2 -1
  10. package/dist/actions/use-theme.d.ts +1 -0
  11. package/dist/actions/use-theme.js +18 -0
  12. package/dist/assets/icons/arrow-down.svelte +2 -0
  13. package/dist/assets/icons/arrow-down.svelte.d.ts +6 -14
  14. package/dist/assets/icons/arrow-up.svelte +2 -0
  15. package/dist/assets/icons/arrow-up.svelte.d.ts +6 -14
  16. package/dist/assets/icons/close-fill.svelte +2 -0
  17. package/dist/assets/icons/close-fill.svelte.d.ts +6 -14
  18. package/dist/assets/icons/loading-fill.svelte +2 -0
  19. package/dist/assets/icons/loading-fill.svelte.d.ts +6 -14
  20. package/dist/components/accordion/accordion.css +0 -77
  21. package/dist/components/accordion/accordion.svelte +5 -3
  22. package/dist/components/accordion/modules/accordion-item.css +68 -0
  23. package/dist/components/accordion/modules/accordion-item.svelte +4 -4
  24. package/dist/components/accordion/types.d.ts +1 -1
  25. package/dist/components/alert/alert.css +25 -22
  26. package/dist/components/alert/alert.svelte +4 -4
  27. package/dist/components/alert/types.d.ts +1 -1
  28. package/dist/components/app/app.css +12 -2
  29. package/dist/components/app/app.svelte +71 -15
  30. package/dist/components/app/app.svelte.d.ts +2 -5
  31. package/dist/components/app/types.d.ts +7 -1
  32. package/dist/components/appbar/appbar.css +8 -19
  33. package/dist/components/appbar/appbar.svelte +4 -5
  34. package/dist/components/appbar/types.d.ts +1 -1
  35. package/dist/components/aspect-ratio/aspect-ratio.svelte +0 -23
  36. package/dist/components/aspect-ratio/types.d.ts +1 -1
  37. package/dist/components/avatar/avatar.css +7 -14
  38. package/dist/components/avatar/avatar.svelte +4 -4
  39. package/dist/components/avatar/types.d.ts +1 -1
  40. package/dist/components/button/button.css +167 -203
  41. package/dist/components/button/button.svelte +43 -35
  42. package/dist/components/button/button.svelte.d.ts +2 -2
  43. package/dist/components/button/types.d.ts +8 -6
  44. package/dist/components/card/card.css +57 -61
  45. package/dist/components/card/card.svelte +22 -5
  46. package/dist/components/card/types.d.ts +4 -2
  47. package/dist/components/chip/chip.css +127 -102
  48. package/dist/components/chip/chip.svelte +25 -12
  49. package/dist/components/chip/types.d.ts +4 -2
  50. package/dist/components/dialog/dialog.css +15 -20
  51. package/dist/components/dialog/dialog.svelte +5 -5
  52. package/dist/components/dialog/types.d.ts +1 -1
  53. package/dist/components/dropdown/dropdown.css +3 -12
  54. package/dist/components/dropdown/dropdown.svelte +6 -7
  55. package/dist/components/dropdown/types.d.ts +1 -1
  56. package/dist/components/icon/icon.css +20 -18
  57. package/dist/components/icon/icon.svelte +2 -2
  58. package/dist/components/icon/types.d.ts +1 -1
  59. package/dist/components/index.d.ts +2 -1
  60. package/dist/components/index.js +2 -1
  61. package/dist/components/list/list.css +83 -129
  62. package/dist/components/list/list.svelte +5 -7
  63. package/dist/components/list/modules/list-item.css +67 -0
  64. package/dist/components/list/modules/list-item.svelte +13 -5
  65. package/dist/components/list/types.d.ts +3 -6
  66. package/dist/components/modal/modal.css +25 -28
  67. package/dist/components/modal/modal.svelte +5 -5
  68. package/dist/components/modal/types.d.ts +1 -1
  69. package/dist/components/popover/popover.css +3 -12
  70. package/dist/components/popover/popover.svelte +6 -6
  71. package/dist/components/popover/types.d.ts +1 -1
  72. package/dist/components/separator/separator.css +19 -23
  73. package/dist/components/separator/separator.svelte +6 -6
  74. package/dist/components/separator/types.d.ts +6 -2
  75. package/dist/components/spacer/types.d.ts +1 -1
  76. package/dist/components/textfield/textfield.css +298 -0
  77. package/dist/components/textfield/textfield.svelte +193 -0
  78. package/dist/components/textfield/textfield.svelte.d.ts +4 -0
  79. package/dist/components/textfield/types.d.ts +37 -0
  80. package/dist/components/toolbar/toolbar.css +11 -34
  81. package/dist/components/toolbar/toolbar.svelte +4 -4
  82. package/dist/components/toolbar/types.d.ts +1 -1
  83. package/dist/components/tooltip/tooltip.css +5 -13
  84. package/dist/components/tooltip/tooltip.svelte +5 -5
  85. package/dist/components/tooltip/types.d.ts +1 -1
  86. package/dist/index.d.ts +3 -1
  87. package/dist/index.js +23 -3
  88. package/dist/internal/config/presets.d.ts +149 -0
  89. package/dist/internal/config/presets.js +169 -0
  90. package/dist/internal/config/variables.d.ts +3 -0
  91. package/dist/internal/config/variables.js +3 -0
  92. package/dist/internal/{assets.svelte.js → core/actions/assets.svelte.js} +6 -4
  93. package/dist/internal/core/actions/dropdown.svelte.d.ts +7 -0
  94. package/dist/internal/core/actions/popover.svelte.d.ts +7 -0
  95. package/dist/internal/core/actions/tooltip.svelte.d.ts +7 -0
  96. package/dist/internal/core/animations/ripple.d.ts +12 -0
  97. package/dist/internal/core/animations/ripple.js +93 -0
  98. package/dist/internal/core/css.d.ts +1 -0
  99. package/dist/internal/core/css.js +16 -0
  100. package/dist/internal/core/formatter/component.d.ts +5 -0
  101. package/dist/internal/core/formatter/component.js +60 -0
  102. package/dist/internal/core/formatter/device.d.ts +5 -0
  103. package/dist/internal/core/formatter/device.js +66 -0
  104. package/dist/internal/core/formatter/index.d.ts +7 -0
  105. package/dist/internal/core/formatter/index.js +35 -0
  106. package/dist/internal/core/formatter/style.d.ts +4 -0
  107. package/dist/internal/core/formatter/style.js +15 -0
  108. package/dist/internal/core/formatter/theme.d.ts +5 -0
  109. package/dist/internal/core/formatter/theme.js +44 -0
  110. package/dist/internal/core/formatter/typography.d.ts +5 -0
  111. package/dist/internal/core/formatter/typography.js +12 -0
  112. package/dist/internal/core/standard-colors.d.ts +75 -0
  113. package/dist/internal/core/standard-colors.js +75 -0
  114. package/dist/internal/helpers/colors.d.ts +1 -0
  115. package/dist/internal/{colors.js → helpers/colors.js} +2 -2
  116. package/dist/internal/helpers/convert.d.ts +1 -0
  117. package/dist/internal/helpers/convert.js +17 -0
  118. package/dist/internal/helpers/deep-merge.d.ts +44 -0
  119. package/dist/internal/helpers/deep-merge.js +80 -0
  120. package/dist/internal/helpers/parser.d.ts +10 -0
  121. package/dist/internal/helpers/parser.js +93 -0
  122. package/dist/internal/{scroll.js → helpers/scroll.js} +1 -2
  123. package/dist/internal/plugins/vite.d.ts +8 -0
  124. package/dist/internal/plugins/vite.js +33 -0
  125. package/dist/internal/types/components.d.ts +14 -0
  126. package/dist/internal/types/components.js +1 -0
  127. package/dist/internal/types/configuration.d.ts +63 -0
  128. package/dist/internal/types/configuration.js +1 -0
  129. package/dist/internal/types/index.d.ts +2 -0
  130. package/dist/internal/types/index.js +2 -0
  131. package/dist/stores/breakpoints.d.ts +6 -0
  132. package/dist/stores/breakpoints.js +14 -0
  133. package/dist/stores/components.d.ts +8 -0
  134. package/dist/stores/components.js +26 -0
  135. package/dist/stores/devices.d.ts +6 -0
  136. package/dist/stores/devices.js +9 -0
  137. package/dist/stores/index.d.ts +5 -9
  138. package/dist/stores/index.js +5 -46
  139. package/dist/stores/themes.d.ts +2 -0
  140. package/dist/stores/themes.js +4 -0
  141. package/dist/stores/viewport.d.ts +7 -0
  142. package/dist/stores/viewport.js +7 -0
  143. package/dist/styles/animation.css +33 -0
  144. package/dist/{style/animation.css → styles/keyframes.css} +10 -0
  145. package/dist/{style/normalize.css → styles/reset.css} +15 -5
  146. package/dist/styles.css.d.ts +4 -0
  147. package/dist/themes.css +0 -0
  148. package/dist/themes.css.d.ts +4 -0
  149. package/package.json +128 -91
  150. package/bin/lapikit.js +0 -54
  151. package/bin/modules/adapter.js +0 -52
  152. package/bin/modules/preset.js +0 -11
  153. package/dist/app.d.ts +0 -13
  154. package/dist/app.html +0 -12
  155. package/dist/internal/colors.d.ts +0 -1
  156. package/dist/internal/index.d.ts +0 -4
  157. package/dist/internal/index.js +0 -4
  158. package/dist/internal/types.d.ts +0 -57
  159. package/dist/internal/unit.d.ts +0 -1
  160. package/dist/internal/unit.js +0 -11
  161. package/dist/plugin/modules/config.d.ts +0 -2
  162. package/dist/plugin/modules/config.js +0 -54
  163. package/dist/plugin/modules/importer.d.ts +0 -1
  164. package/dist/plugin/modules/importer.js +0 -15
  165. package/dist/plugin/vitejs.d.ts +0 -6
  166. package/dist/plugin/vitejs.js +0 -26
  167. package/dist/preset.d.ts +0 -2
  168. package/dist/preset.js +0 -92
  169. package/dist/style/css.d.ts +0 -2
  170. package/dist/style/css.js +0 -34
  171. package/dist/style/parser/color.d.ts +0 -5
  172. package/dist/style/parser/color.js +0 -88
  173. package/dist/style/parser/component.d.ts +0 -2
  174. package/dist/style/parser/component.js +0 -115
  175. package/dist/style/parser/device.d.ts +0 -2
  176. package/dist/style/parser/device.js +0 -40
  177. package/dist/style/parser/index.d.ts +0 -4
  178. package/dist/style/parser/index.js +0 -4
  179. package/dist/style/parser/variable.d.ts +0 -2
  180. package/dist/style/parser/variable.js +0 -25
  181. package/dist/style/variable.css +0 -12
  182. /package/dist/{components/accordion → actions}/accordion.svelte.js +0 -0
  183. /package/dist/{internal → components/textfield}/types.js +0 -0
  184. /package/dist/internal/{assets.svelte.d.ts → core/actions/assets.svelte.d.ts} +0 -0
  185. /package/dist/{components/dropdown → internal/core/actions}/dropdown.svelte.js +0 -0
  186. /package/dist/{components/popover → internal/core/actions}/popover.svelte.js +0 -0
  187. /package/dist/{components/tooltip → internal/core/actions}/tooltip.svelte.js +0 -0
  188. /package/dist/internal/{ansi.d.ts → core/bin/ansi.d.ts} +0 -0
  189. /package/dist/internal/{ansi.js → core/bin/ansi.js} +0 -0
  190. /package/dist/internal/{terminal.d.ts → core/bin/terminal.d.ts} +0 -0
  191. /package/dist/internal/{terminal.js → core/bin/terminal.js} +0 -0
  192. /package/dist/internal/{minify.d.ts → core/minify.d.ts} +0 -0
  193. /package/dist/internal/{minify.js → core/minify.js} +0 -0
  194. /package/dist/{utils/x11.d.ts → internal/core/x11-colors.d.ts} +0 -0
  195. /package/dist/{utils/x11.js → internal/core/x11-colors.js} +0 -0
  196. /package/dist/internal/{clickOutside.d.ts → helpers/outside.d.ts} +0 -0
  197. /package/dist/internal/{clickOutside.js → helpers/outside.js} +0 -0
  198. /package/dist/internal/{scroll.d.ts → helpers/scroll.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
- import type { BtnProps } from './types.js';
2
- declare const Button: import("svelte").Component<BtnProps, {}, "ref">;
1
+ import type { ButtonProps } from './types.js';
2
+ declare const Button: import("svelte").Component<ButtonProps, {}, "ref">;
3
3
  type Button = ReturnType<typeof Button>;
4
4
  export default Button;
@@ -1,12 +1,12 @@
1
- import type { Component } from '../../internal/types.js';
1
+ import type { Component } from '../../internal/types/index.js';
2
2
  import type { Snippet } from 'svelte';
3
- export interface BtnProps extends Component {
3
+ export interface ButtonProps extends Component {
4
4
  ref?: HTMLElement | null;
5
- is?: 'button' | 'a' | 'input';
5
+ is?: 'button' | 'a';
6
6
  dark?: boolean;
7
7
  light?: boolean;
8
8
  href?: string;
9
- variant?: 'outline' | 'text' | 'dash' | 'link';
9
+ variant?: 'outline' | 'text' | 'filled';
10
10
  density?: 'compact' | 'comfortable' | 'default';
11
11
  active?: boolean;
12
12
  loading?: boolean;
@@ -20,8 +20,10 @@ export interface BtnProps extends Component {
20
20
  size?: string | {
21
21
  [key: string]: string;
22
22
  };
23
- type?: 'button' | 'submit' | 'reset' | 'radio' | 'checkbox';
24
- label?: string;
23
+ type?: 'button' | 'submit' | 'reset';
25
24
  icon?: boolean;
26
25
  load?: Snippet;
26
+ append?: Snippet;
27
+ prepend?: Snippet;
28
+ noRipple?: boolean;
27
29
  }
@@ -1,100 +1,96 @@
1
1
  .kit-card {
2
- --card-color: var(--on, var(--kit-on-neutral));
3
- --card-background: var(--base, var(--kit-neutral));
4
- --card-radius: var(--shape, var(--kit-radius-md));
5
-
6
2
  position: relative;
7
3
  display: flex;
8
4
  flex-direction: column;
9
5
  text-align: start;
10
6
  overflow: hidden;
11
- transition:
12
- color 0.5s,
13
- background-color 0.5s;
14
-
15
7
  padding-top: var(--card-spacing-x);
16
8
  padding-bottom: var(--card-spacing-x);
17
9
  padding-right: var(--card-spacing-y);
18
10
  padding-left: var(--card-spacing-y);
11
+ border-radius: var(--card-shape, var(--system-shape-md));
12
+ font-weight: 500;
13
+ color: var(--card-color, var(--kit-label-primary));
14
+ text-decoration: none;
15
+ }
19
16
 
20
- border-width: 1px;
21
- border-style: solid;
22
- border-radius: var(--card-radius);
17
+ .kit-card.kit-card--clickable {
18
+ cursor: pointer;
19
+ }
23
20
 
24
- /* theme */
25
- color: var(--card-color);
26
- background-color: var(--card-background);
27
- border-color: var(--card-background);
21
+ .kit-card.kit-card--clickable::after {
22
+ content: '';
23
+ position: absolute;
24
+ inset: 0;
25
+ background-color: currentColor;
26
+ opacity: 0;
27
+ transition: opacity 150ms ease;
28
+ pointer-events: none;
29
+ border-radius: inherit;
30
+ }
31
+ .kit-card.kit-card--clickable:hover::after {
32
+ opacity: 0.08;
33
+ }
34
+ .kit-card.kit-card--clickable:active::after {
35
+ opacity: 0.12;
36
+ }
37
+ .kit-card.kit-card--clickable:focus-visible::after {
38
+ opacity: 0.12;
28
39
  }
29
40
 
30
41
  /* density */
31
42
  .kit-card[breakpoint]kit-card--density-default {
32
- --card-spacing-x: 0.25rem;
33
- --card-spacing-y: 0.25rem;
43
+ --card-spacing-x: calc(var(--system-spacing) * 2);
44
+ --card-spacing-y: calc(var(--system-spacing) * 2);
34
45
  }
35
-
36
46
  .kit-card[breakpoint]kit-card--density-compact {
37
47
  --card-spacing-x: 0;
38
48
  --card-spacing-y: 0;
39
49
  }
40
-
41
50
  .kit-card[breakpoint]kit-card--density-comfortable {
42
- --card-spacing-x: 0.5rem;
43
- --card-spacing-y: 0.5rem;
44
- }
45
-
46
- a.kit-card {
47
- text-decoration: none;
48
- }
49
-
50
- .kit-card:hover:not(div) {
51
- background-color: color-mix(in oklab, var(--card-background) 90%, black);
52
- }
53
-
54
- .kit-card:focus:not(div) {
55
- background-color: color-mix(in oklab, var(--card-background) 95%, black);
56
- }
57
-
58
- .kit-card:active:not(div),
59
- .kit-card.kit-card--active {
60
- background-color: color-mix(in oklab, var(--card-background) 95%, black);
51
+ --card-spacing-x: calc(var(--system-spacing) * 4);
52
+ --card-spacing-y: calc(var(--system-spacing) * 4);
61
53
  }
62
54
 
63
- .kit-card:not(div) {
64
- cursor: pointer;
55
+ /* variant */
56
+ .kit-card[breakpoint]kit-card--variant-filled {
57
+ background-color: var(--card-background, var(--kit-background-grouped-secondary));
65
58
  }
66
59
 
67
- .kit-card.kit-card--variant-outline {
68
- border-color: currentColor;
60
+ .kit-card[breakpoint]kit-card--variant-outline {
61
+ --card-color: var(--card-background, var(--kit-label-primary));
62
+ background-color: transparent;
69
63
  }
70
-
71
- .kit-card.kit-card--variant-text {
72
- border-color: transparent;
64
+ .kit-card[breakpoint]kit-card--variant-outline::before {
65
+ content: '';
66
+ position: absolute;
67
+ inset: 0;
68
+ border: 1px solid currentColor;
69
+ pointer-events: none;
70
+ border-radius: inherit;
73
71
  }
74
72
 
75
- .kit-card.kit-card--variant-outline,
76
- .kit-card.kit-card--variant-text {
77
- --card-color: var(--base, var(--kit-neutral));
73
+ .kit-card[breakpoint]kit-card--variant-text {
74
+ --card-color: var(--card-background, var(--kit-label-primary));
78
75
  background-color: transparent;
76
+ border: none;
79
77
  }
80
78
 
81
- .kit-card.kit-card--variant-outline:hover:not(div),
82
- .kit-card.kit-card--variant-text:hover:not(div) {
83
- background-color: color-mix(in oklab, currentColor 7%, transparent);
79
+ /* events */
80
+ .kit-card[class*='card--variant-filled'].kit-card--clickable:active,
81
+ .kit-card.kit-card--active[class*='card--variant-filled'].kit-card--clickable {
82
+ background-color: color-mix(in oklab, var(--card-background) 90%, var(--kit-state-shadow));
84
83
  }
85
-
86
- .kit-card.kit-card--variant-outline:focus:not(div),
87
- .kit-card.kit-card--variant-text:focus:not(div) {
84
+ .kit-card.kit-card--active[class*='card--variant-']:not(
85
+ [class*='variant-filled']
86
+ ).kit-card--clickable:active,
87
+ .kit-card.kit-card--active[class*='card--variant-']:not(
88
+ [class*='variant-filled']
89
+ ).kit-card--clickable {
88
90
  background-color: color-mix(in oklab, currentColor 15%, transparent);
89
91
  }
90
92
 
91
- .kit-card.kit-card--variant-outline:active:not(div),
92
- .kit-card.kit-card--variant-text:active:not(div),
93
- .kit-card.kit-card--variant-outline.kit-card--active,
94
- .kit-card.kit-card--variant-text.kit-card--active {
95
- background-color: color-mix(in oklab, currentColor 10%, transparent);
96
- }
97
-
93
+ /* disabled */
98
94
  .kit-card.kit-card--disabled,
99
95
  .kit-card[disabled],
100
96
  .kit-card:disabled {
@@ -1,7 +1,10 @@
1
1
  <script lang="ts">
2
- import { getAssets } from '../../internal/index.js';
2
+ import { getAssets } from '../../internal/core/actions/assets.svelte.js';
3
3
  import type { CardProps } from './types.js';
4
4
 
5
+ // external
6
+ import { ripple } from '../../internal/core/animations/ripple.js';
7
+
5
8
  let {
6
9
  children,
7
10
  ref = $bindable(),
@@ -11,18 +14,25 @@
11
14
  light,
12
15
  active,
13
16
  density = 'default',
14
- variant,
17
+ variant = 'filled',
15
18
  disabled,
16
19
  rounded,
17
20
  color,
18
21
  background,
22
+ noRipple,
23
+ width,
24
+ height,
19
25
  ...rest
20
26
  }: CardProps = $props();
21
27
 
22
28
  const assets = getAssets();
29
+ let isClickable: boolean = $state(false);
23
30
 
24
31
  $effect(() => {
32
+ const refProps = { ...rest };
25
33
  if (href) is = 'a';
34
+ if (refProps?.onclick || href || is === 'a') isClickable = true;
35
+ else isClickable = false;
26
36
  });
27
37
  </script>
28
38
 
@@ -37,14 +47,21 @@
37
47
  dark && 'dark',
38
48
  variant && assets.className('card', 'variant', variant),
39
49
  density && assets.className('card', 'density', density),
50
+ isClickable && 'kit-card--clickable',
40
51
  active && 'kit-card--active',
41
52
  disabled && 'kit-card--disabled',
42
53
  rest.class
43
54
  ]}
44
55
  disabled={href ? undefined : disabled}
45
- style:--base={assets.color(background)}
46
- style:--on={assets.color(color)}
47
- style:--shape={assets.shape(rounded)}
56
+ use:ripple={{
57
+ component: 'card',
58
+ disabled: noRipple || disabled || !isClickable
59
+ }}
60
+ style:--card-background={assets.color(background)}
61
+ style:--card-color={assets.color(color)}
62
+ style:--card-shape={assets.shape(rounded)}
63
+ style:width
64
+ style:height
48
65
  >
49
66
  {@render children?.()}
50
67
  </svelte:element>
@@ -1,11 +1,11 @@
1
- import type { Component } from '../../internal/types.js';
1
+ import type { Component } from '../../internal/types/index.js';
2
2
  type Density = 'compact' | 'comfortable' | 'default';
3
3
  export interface CardProps extends Component {
4
4
  is?: 'a' | 'button' | 'div';
5
5
  dark?: boolean;
6
6
  light?: boolean;
7
7
  href?: string;
8
- variant?: 'outline' | 'text';
8
+ variant?: 'outline' | 'text' | 'filled';
9
9
  density?: Density | {
10
10
  [key: string]: Density;
11
11
  };
@@ -14,5 +14,7 @@ export interface CardProps extends Component {
14
14
  rounded?: string;
15
15
  color?: string;
16
16
  background?: string;
17
+ width?: string | number;
18
+ height?: string | number;
17
19
  }
18
20
  export {};
@@ -1,32 +1,23 @@
1
1
  .kit-chip {
2
- --chip-color: var(--on, var(--kit-on-neutral));
3
- --chip-background: var(--base, var(--kit-neutral));
4
- --chip-radius: var(--shape, var(--kit-radius-full));
5
-
6
- display: inline-flex;
7
- align-items: center;
8
- justify-content: center;
9
- white-space: nowrap;
2
+ min-width: calc(var(--system-spacing) * var(--chip-multiplier-x));
3
+ position: relative;
4
+ border: none;
5
+ outline: none;
10
6
  padding-top: var(--chip-spacing-x);
11
7
  padding-bottom: var(--chip-spacing-x);
12
8
  padding-right: var(--chip-spacing-y);
13
9
  padding-left: var(--chip-spacing-y);
14
-
15
- border-width: 1px;
16
- border-style: solid;
17
- border-radius: var(--chip-radius);
18
-
19
- /* theme */
20
- color: var(--chip-color);
21
- background-color: var(--chip-background);
22
- border-color: var(--chip-background);
10
+ border-radius: var(--chip-shape, var(--system-shape-full));
11
+ color: var(--chip-color, var(--kit-label-primary));
12
+ font-weight: 500;
13
+ text-decoration: none;
23
14
  }
24
15
 
25
- a.kit-chip,
26
- button.kit-chip {
16
+ .kit-chip:not(div):not(span):not(.kit-chip--readonly) {
27
17
  cursor: pointer;
28
18
  }
29
19
 
20
+ .kit-chip,
30
21
  .kit-chip .kit-chip-content,
31
22
  .kit-chip .kit-chip-append,
32
23
  .kit-chip .kit-chip-prepend,
@@ -36,159 +27,193 @@ button.kit-chip {
36
27
  align-items: center;
37
28
  justify-content: center;
38
29
  white-space: nowrap;
39
- gap: var(--chip-gap);
30
+ gap: calc(var(--system-spacing) * var(--chip-multiplier-gap));
31
+ font-size: calc(var(--system-spacing) * var(--chip-multiplier-font-size));
32
+ line-height: 0;
33
+ }
34
+
35
+ .kit-chip:not(div):not(span)::after {
36
+ content: '';
37
+ position: absolute;
38
+ inset: 0;
39
+ background-color: currentColor;
40
+ opacity: 0;
41
+ transition: opacity 150ms ease;
42
+ pointer-events: none;
43
+ border-radius: inherit;
44
+ }
45
+ .kit-chip:not(div):not(span):not(.kit-chip--readonly):hover::after {
46
+ opacity: 0.08;
47
+ }
48
+ .kit-chip:not(div):not(span):not(.kit-chip--readonly):active::after {
49
+ opacity: 0.12;
50
+ }
51
+ .kit-chip:not(div):not(span):not(.kit-chip--readonly):focus-visible::after {
52
+ opacity: 0.12;
40
53
  }
41
54
 
42
55
  /* size */
43
56
  .kit-chip[breakpoint]kit-chip--size-xs {
44
- --chip-height: 1.25rem;
57
+ --chip-multiplier-x: 12;
45
58
  --chip-multiplier-y: 2;
46
- --chip-gap: 0.25rem;
47
- font-size: 0.625rem;
48
- gap: var(--chip-gap);
59
+ --chip-multiplier-gap: 2;
60
+ --chip-multiplier-font-size: 6;
61
+ }
62
+ .kit-chip[breakpoint]kit-chip--size-xs .kit-icon[class*='kit-icon--size-md'] {
63
+ --icon-multiplier-parent-size: 7;
49
64
  }
50
65
 
51
66
  .kit-chip[breakpoint]kit-chip--size-sm {
52
- --chip-height: 1.625rem;
53
- --chip-multiplier-y: 3;
54
- --chip-gap: 0.5rem;
55
- font-size: 0.75rem;
56
- gap: var(--chip-gap);
67
+ --chip-multiplier-x: 14;
68
+ --chip-multiplier-y: 2;
69
+ --chip-multiplier-gap: 2;
70
+ --chip-multiplier-font-size: 6.5;
71
+ }
72
+ .kit-chip[breakpoint]kit-chip--size-sm .kit-icon[class*='kit-icon--size-md'] {
73
+ --icon-multiplier-parent-size: 8;
57
74
  }
58
75
 
59
76
  .kit-chip[breakpoint]kit-chip--size-md {
60
- --chip-height: 2rem;
61
- --chip-multiplier-y: 4;
62
- --chip-gap: 0.5rem;
63
- font-size: 0.875rem;
64
- gap: var(--chip-gap);
77
+ --chip-multiplier-x: 16;
78
+ --chip-multiplier-y: 3;
79
+ --chip-multiplier-gap: 4;
80
+ --chip-multiplier-font-size: 7;
81
+ }
82
+ .kit-chip[breakpoint]kit-chip--size-md .kit-icon[class*='kit-icon--size-md'] {
83
+ --icon-multiplier-parent-size: 9;
65
84
  }
66
85
 
67
86
  .kit-chip[breakpoint]kit-chip--size-lg {
68
- --chip-height: 2.375rem;
69
- --chip-multiplier-y: 5;
70
- --chip-gap: 0.5rem;
71
- font-size: 1rem;
72
- gap: var(--chip-gap);
87
+ --chip-multiplier-x: 18;
88
+ --chip-multiplier-y: 3;
89
+ --chip-multiplier-gap: 4;
90
+ --chip-multiplier-font-size: 8;
91
+ }
92
+ .kit-chip[breakpoint]kit-chip--size-lg .kit-icon[class*='kit-icon--size-md'] {
93
+ --icon-multiplier-parent-size: 10;
73
94
  }
74
95
 
75
96
  .kit-chip[breakpoint]kit-chip--size-xl {
76
- --chip-height: 2.75rem;
77
- --chip-multiplier-y: 6;
78
- --chip-gap: 0.675rem;
79
- font-size: 1.125rem;
80
- gap: var(--chip-gap);
97
+ --chip-multiplier-x: 20;
98
+ --chip-multiplier-y: 4;
99
+ --chip-multiplier-gap: 4;
100
+ --chip-multiplier-font-size: 9;
101
+ }
102
+ .kit-chip[breakpoint]kit-chip--size-xl .kit-icon[class*='kit-icon--size-md'] {
103
+ --icon-multiplier-parent-size: 11;
81
104
  }
82
105
 
83
106
  /* variant */
107
+ .kit-chip[breakpoint]kit-chip--variant-filled {
108
+ background-color: var(--chip-background, var(--kit-background-grouped-primary));
109
+ }
110
+
84
111
  .kit-chip[breakpoint]kit-chip--variant-outline {
85
- --chip-color: var(--base, var(--kit-neutral));
86
- background-color: transparent;
112
+ --chip-color: var(--chip-color, var(--kit-label-primary));
113
+ background-color: var(--chip-background);
114
+ }
115
+ .kit-chip[breakpoint]kit-chip--variant-outline::before {
116
+ content: '';
117
+ position: absolute;
118
+ inset: 0;
87
119
  border: 1px solid currentColor;
120
+ pointer-events: none;
121
+ border-radius: inherit;
88
122
  }
89
123
 
90
124
  /* density */
91
125
  .kit-chip[breakpoint]kit-chip--density-default {
92
- height: calc(var(--chip-height));
93
- min-width: calc(var(--chip-height));
126
+ height: calc(var(--system-spacing) * var(--chip-multiplier-x));
94
127
  --chip-spacing-x: 0;
95
- --chip-spacing-y: calc(var(--kit-spacing) * var(--chip-multiplier-y));
128
+ --chip-spacing-y: calc(var(--system-spacing) * var(--chip-multiplier-y));
96
129
  }
97
130
 
98
131
  .kit-chip[breakpoint]kit-chip--density-compact {
99
- height: calc(var(--chip-height) - 0.25rem);
100
- min-width: calc(var(--chip-height - 0.25rem));
132
+ height: calc(var(--system-spacing) * var(--chip-multiplier-x) - 0.25rem);
101
133
  --chip-spacing-x: 0;
102
- --chip-spacing-y: calc(var(--kit-spacing) * var(--chip-multiplier-y) - 0.25rem);
134
+ --chip-spacing-y: calc(var(--system-spacing) * var(--chip-multiplier-y) - 0.25rem);
103
135
  }
104
136
 
105
137
  .kit-chip[breakpoint]kit-chip--density-comfortable {
106
- height: calc(var(--chip-height) + 0.25rem);
107
- min-width: calc(var(--chip-height) + 0.25rem);
138
+ height: calc(var(--system-spacing) * var(--chip-multiplier-x) + 0.25rem);
108
139
  --chip-spacing-x: 0;
109
- --chip-spacing-y: calc(var(--kit-spacing) * var(--chip-multiplier-y) + 0.25rem);
140
+ --chip-spacing-y: calc(var(--system-spacing) * var(--chip-multiplier-y) + 0.25rem);
110
141
  }
111
142
 
112
143
  /* state */
113
- .kit-chip.kit-chip--info:not([class*='chip--variant-']) {
114
- --on: var(--kit-on-info);
115
- --base: var(--kit-info);
144
+ .kit-chip.kit-chip--info[class*='chip--variant-filled'] {
145
+ --chip-color: var(--kit-on-info);
146
+ --chip-background: var(--kit-accent-info);
116
147
  }
117
- .kit-chip.kit-chip--info[class*='chip--variant-'] {
118
- --base: var(--kit-info);
148
+ .kit-chip.kit-chip--info[class*='chip--variant-']:not([class*='variant-filled']) {
149
+ --chip-background: var(--kit-accent-info);
119
150
  }
120
151
 
121
- .kit-chip.kit-chip--success:not([class*='chip--variant-']) {
122
- --on: var(--kit-on-success);
123
- --base: var(--kit-success);
152
+ .kit-chip.kit-chip--success[class*='chip--variant-filled'] {
153
+ --chip-color: var(--kit-on-success);
154
+ --chip-background: var(--kit-accent-success);
124
155
  }
125
- .kit-chip.kit-chip--success[class*='chip--variant-'] {
126
- --base: var(--kit-success);
156
+ .kit-chip.kit-chip--success[class*='chip--variant-']:not([class*='variant-filled']) {
157
+ --chip-background: var(--kit-accent-success);
127
158
  }
128
159
 
129
- .kit-chip.kit-chip--warning:not([class*='chip--variant-']) {
130
- --on: var(--kit-on-warning);
131
- --base: var(--kit-warning);
160
+ .kit-chip.kit-chip--warning[class*='chip--variant-filled'] {
161
+ --chip-color: var(--kit-on-warning);
162
+ --chip-background: var(--kit-accent-warning);
132
163
  }
133
- .kit-chip.kit-chip--warning[class*='chip--variant-'] {
134
- --base: var(--kit-warning);
164
+ .kit-chip.kit-chip--warning[class*='chip--variant-']:not([class*='variant-filled']) {
165
+ --chip-background: var(--kit-accent-warning);
135
166
  }
136
167
 
137
- .kit-chip.kit-chip--error:not([class*='chip--variant-']) {
138
- --on: var(--kit-on-error);
139
- --base: var(--kit-error);
168
+ .kit-chip.kit-chip--error[class*='chip--variant-filled'] {
169
+ --chip-color: var(--kit-on-error);
170
+ --chip-background: var(--kit-accent-destructive);
140
171
  }
141
- .kit-chip.kit-chip--error[class*='chip--variant-'] {
142
- --base: var(--kit-error);
172
+ .kit-chip.kit-chip--error[class*='chip--variant-']:not([class*='variant-filled']) {
173
+ --chip-background: var(--kit-accent-destructive);
143
174
  }
144
175
 
145
176
  /* events */
146
- .kit-chip.kit-chip--active:not([class*='chip--variant-']) {
147
- background-color: color-mix(in oklab, var(--chip-background) 90%, var(--kit-scrim));
148
- border-color: color-mix(in oklab, var(--chip-background) 90%, var(--kit-scrim));
177
+ .kit-chip[class*='chip--variant-filled']:active,
178
+ .kit-chip.kit-chip--active[class*='chip--variant-filled'] {
179
+ background-color: color-mix(in oklab, var(--chip-background) 90%, var(--kit-state-shadow));
149
180
  }
150
- .kit-chip.kit-chip--active[class*='chip--variant-'] {
181
+ .kit-chip.kit-chip--active[class*='chip--variant-']:not([class*='variant-filled']):active,
182
+ .kit-chip.kit-chip--active[class*='chip--variant-']:not([class*='variant-filled']) {
151
183
  background-color: color-mix(in oklab, currentColor 15%, transparent);
152
- border-color: color-mix(in oklab, currentColor 15%, transparent);
153
- }
154
-
155
- .kit-chip:hover:not([class*='chip--variant-']) {
156
- background-color: color-mix(in oklab, var(--chip-background) 85%, var(--kit-scrim));
157
- border-color: color-mix(in oklab, var(--chip-background) 85%, var(--kit-scrim));
158
- }
159
- .kit-chip:hover[class*='chip--variant-'] {
160
- background-color: color-mix(in oklab, currentColor 25%, transparent);
161
184
  }
162
185
 
163
186
  /* disabled */
164
187
  .kit-chip.kit-chip--disabled,
165
- .kit-chip[disabled] {
188
+ .kit-chip[disabled],
189
+ .kit-chip.kit-chip--loading {
166
190
  pointer-events: none;
167
191
  user-select: none;
168
192
  cursor: default;
169
193
  }
170
- .kit-chip:not([class*='chip--variant-']).kit-chip--disabled {
194
+ .kit-chip[class*='chip--variant-filled'].kit-chip--disabled {
171
195
  color: color-mix(in oklab, var(--chip-color) 40%, transparent) !important;
172
196
  background-color: color-mix(in oklab, var(--chip-background) 70%, transparent) !important;
173
- border-color: color-mix(in oklab, var(--chip-background) 70%, transparent) !important;
174
197
  }
175
- .kit-chip:not([class*='chip--variant-']).kit-chip--disabled i:before {
198
+ .kit-chip[class*='chip--variant-filled'].kit-chip--disabled i:before {
176
199
  color: color-mix(in oklab, var(--chip-color) 40%, transparent) !important;
177
200
  }
178
- .kit-chip[class*='chip--variant-'].kit-chip--disabled,
179
- .kit-chip[class*='chip--variant-'].kit-chip--disabled i:before {
201
+ .kit-chip[class*='chip--variant-']:not([class*='variant-filled']).kit-chip--disabled,
202
+ .kit-chip[class*='chip--variant-']:not([class*='variant-filled']).kit-chip--disabled i::before {
180
203
  color: color-mix(in oklab, var(--chip-background) 40%, transparent) !important;
181
204
  }
182
205
 
183
- /* loading */
184
- .kit-chip.kit-chip--loading {
185
- pointer-events: none;
186
- user-select: none;
187
- cursor: default;
206
+ /* icon */
207
+ .kit-chip i::before,
208
+ .kit-chip .kit-icon {
209
+ --base-parent: var(--chip-color);
188
210
  }
189
- .kit-chip.kit-chip--loading > .kit-chip-content {
190
- color: transparent;
191
- opacity: 0;
211
+
212
+ /* loading */
213
+ .kit-chip.kit-chip--loading > .kit-chip-content,
214
+ .kit-chip.kit-chip--loading > .kit-chip-append,
215
+ .kit-chip.kit-chip--loading > .kit-chip-prepend {
216
+ visibility: hidden;
192
217
  }
193
218
  .kit-chip.kit-chip--loading > .kit-chip-loading {
194
219
  position: absolute;