zabi-components 5.0.9 → 5.0.10

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.
@@ -13,7 +13,14 @@
13
13
  text = "",
14
14
  showIcon = true,
15
15
  }: {
16
- variant?: "default" | "success" | "warning" | "error" | "info";
16
+ variant?:
17
+ | "default"
18
+ | "success"
19
+ | "warning"
20
+ | "error"
21
+ | "info"
22
+ | "neutral"
23
+ | "energetic";
17
24
  size?: "sm" | "md" | "lg";
18
25
  text: string;
19
26
  showIcon?: boolean;
@@ -35,14 +42,18 @@
35
42
  // Variant classes - using semantic color system
36
43
  const variantClass =
37
44
  variant === "success"
38
- ? "bg-surface-level-1 border-secondary text-success"
45
+ ? "bg-surface-level-1 border-success text-success"
39
46
  : variant === "warning"
40
47
  ? "bg-surface-level-1 border-secondary text-warning"
41
48
  : variant === "error"
42
49
  ? "bg-surface-level-1 border-secondary text-error"
43
50
  : variant === "info"
44
- ? "bg-surface-level-1 border-secondary text-body"
45
- : "bg-surface-level-1 border-secondary text-body"; // default
51
+ ? "bg-surface-level-1 border-secondary text-info"
52
+ : variant === "neutral"
53
+ ? "bg-surface-level-1 border-secondary text-neutral"
54
+ : variant === "energetic"
55
+ ? "bg-surface-level-1 border-secondary text-energetic"
56
+ : "bg-surface-level-1 border-secondary text-body"; // default
46
57
 
47
58
  return `${baseClasses} ${sizeClass} ${variantClass}`.trim();
48
59
  });
@@ -68,6 +79,10 @@
68
79
  <X size={iconSize()} class={iconSpacingClass()} />
69
80
  {:else if variant === "info"}
70
81
  <Info size={iconSize()} class={iconSpacingClass()} />
82
+ {:else if variant === "neutral"}
83
+ <Info size={iconSize()} class={iconSpacingClass()} />
84
+ {:else if variant === "energetic"}
85
+ <Info size={iconSize()} class={iconSpacingClass()} />
71
86
  {:else}
72
87
  <Info size={iconSize()} class={iconSpacingClass()} />
73
88
  {/if}
@@ -1,5 +1,5 @@
1
1
  type $$ComponentProps = {
2
- variant?: "default" | "success" | "warning" | "error" | "info";
2
+ variant?: "default" | "success" | "warning" | "error" | "info" | "neutral" | "energetic";
3
3
  size?: "sm" | "md" | "lg";
4
4
  text: string;
5
5
  showIcon?: boolean;
@@ -34,14 +34,14 @@
34
34
  // Variant classes using semantic action colors
35
35
  const variantClass = $derived(() => {
36
36
  return variant === "primary"
37
- ? "bg-action-primary text-inverse focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
37
+ ? "bg-action-primary text-inverse focus:ring-2 focus:ring-brand-500 focus:ring-offset-2"
38
38
  : variant === "secondary"
39
39
  ? "border border-secondary text-description hover:border-secondary-hover focus:ring-2 focus:ring-stone-500 focus:ring-offset-2"
40
40
  : variant === "danger"
41
41
  ? "bg-action-danger text-inverse focus:ring-2 focus:ring-red-500 focus:ring-offset-2"
42
42
  : variant === "ghost"
43
43
  ? "bg-transparent text-headline hover:bg-surface-hover active:bg-surface-active focus:ring-2 focus:ring-stone-500 focus:ring-offset-2 disabled:text-disabled"
44
- : "bg-action-primary text-inverse focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"; // default primary
44
+ : "bg-action-primary text-inverse focus:ring-2 focus:ring-brand-500 focus:ring-offset-2"; // default primary
45
45
  });
46
46
 
47
47
  // Button classes using Badge pattern
@@ -31,7 +31,7 @@
31
31
  // Checkbox classes using Badge pattern
32
32
  const checkboxClasses = $derived(
33
33
  () =>
34
- "w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500 focus:ring-2 disabled:opacity-50 disabled:cursor-not-allowed",
34
+ "w-4 h-4 text-brand-600 bg-gray-100 border-gray-300 rounded focus:ring-brand-500 focus:ring-2 disabled:opacity-50 disabled:cursor-not-allowed",
35
35
  );
36
36
 
37
37
  function handleChange(event: Event) {
@@ -68,10 +68,10 @@
68
68
  // Input classes
69
69
  const inputClasses = $derived(() => {
70
70
  const baseClasses =
71
- "w-full px-3 py-2 border rounded-lg text-sm transition-colors focus:outline-none focus:ring-2 focus:ring-blue-200";
71
+ "w-full px-3 py-2 border rounded-lg text-sm transition-colors focus:outline-none focus:ring-2 focus:ring-brand-200";
72
72
  const stateClasses =
73
73
  isValidHex(value) || value === ""
74
- ? "border-gray-300 focus:border-blue-500"
74
+ ? "border-gray-300 focus:border-brand-500"
75
75
  : "border-red-300 focus:border-red-500 focus:ring-red-200";
76
76
 
77
77
  return `${baseClasses} ${stateClasses}`.trim();
@@ -54,7 +54,7 @@
54
54
  {...restProps}
55
55
  >
56
56
  <div
57
- class="h-full bg-blue-600 rounded-full"
57
+ class="h-full bg-brand-600 rounded-full"
58
58
  style="width: {percentage}%"
59
59
  ></div>
60
60
  </div>
@@ -68,7 +68,7 @@
68
68
  {#if mounted}
69
69
  <button
70
70
  onclick={toggleTheme}
71
- class="w-10 h-10 bg-gray-100 hover:bg-gray-200 border border-gray-300 rounded-lg flex items-center justify-center text-gray-700 cursor-pointer focus:outline-none focus:ring-2 focus:ring-blue-500"
71
+ class="w-10 h-10 bg-gray-100 hover:bg-gray-200 border border-gray-300 rounded-lg flex items-center justify-center text-gray-700 cursor-pointer focus:outline-none focus:ring-2 focus:ring-brand-500"
72
72
  aria-label={isDark ? "Switch to light mode" : "Switch to dark mode"}
73
73
  {...restProps}
74
74
  >
@@ -21,7 +21,7 @@
21
21
  success: "bg-green-100 border-green-300 text-success",
22
22
  error: "bg-red-100 border-red-300 text-error",
23
23
  warning: "bg-yellow-100 border-yellow-300 text-warning",
24
- info: "bg-blue-100 border-blue-300 text-body",
24
+ info: "bg-iris-100 border-iris-300 text-body",
25
25
  };
26
26
 
27
27
  function closeToast(event: Event) {
@@ -40,14 +40,15 @@
40
40
  }
41
41
 
42
42
  // Toggle button classes using full class names
43
- const toggleButtonClasses = $derived(() => {
44
- const baseClasses =
45
- "relative inline-flex w-11 h-6 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2";
46
- const stateClasses = checked ? "bg-blue-600" : "bg-gray-200";
47
- const disabledClasses = disabled ? "opacity-50 cursor-not-allowed" : "";
48
-
49
- return `${baseClasses} ${stateClasses} ${disabledClasses}`.trim();
50
- });
43
+ const toggleButtonClasses = $derived(() =>
44
+ [
45
+ "relative inline-flex w-11 h-6 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2",
46
+ checked ? "bg-brand-600" : "bg-gray-200",
47
+ disabled && "opacity-50 cursor-not-allowed",
48
+ ]
49
+ .filter(Boolean)
50
+ .join(" "),
51
+ );
51
52
 
52
53
  // Toggle thumb classes using full class names
53
54
  const toggleThumbClasses = $derived(() => {
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  interface Props {
3
- variant?: "info" | "success" | "warning" | "error";
3
+ variant?: "info" | "success" | "warning" | "error" | "neutral" | "energetic";
4
4
  title?: string;
5
5
  message?: string;
6
6
  closable?: boolean;
@@ -27,10 +27,12 @@
27
27
  }
28
28
 
29
29
  let alertClasses = $derived({
30
- info: "bg-info-surface text-body border border-info",
31
- success: "bg-success-surface text-success border border-success",
32
- warning: "bg-warning-surface text-warning border border-warning",
33
- error: "bg-error-surface text-error border border-error",
30
+ info: "bg-surface-level-1 text-info border border-info",
31
+ success: "bg-surface-level-1 text-success border border-success",
32
+ warning: "bg-surface-level-1 text-warning border border-warning",
33
+ error: "bg-surface-level-1 text-error border border-error",
34
+ neutral: "bg-surface-level-1 text-neutral border border-neutral",
35
+ energetic: "bg-surface-level-1 text-energetic border border-energetic",
34
36
  });
35
37
 
36
38
  let alertRole = $derived(
@@ -50,6 +52,12 @@
50
52
  error: `<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
51
53
  <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clip-rule="evenodd" />
52
54
  </svg>`,
55
+ neutral: `<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
56
+ <path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zM10 9a1 1 0 100 2 1 1 0 000-2z" clip-rule="evenodd" />
57
+ </svg>`,
58
+ energetic: `<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
59
+ <path d="M11 3L4 14h6l-1 7 7-11h-6l1-7z" />
60
+ </svg>`,
53
61
  });
54
62
  </script>
55
63
 
@@ -1,5 +1,5 @@
1
1
  interface Props {
2
- variant?: "info" | "success" | "warning" | "error";
2
+ variant?: "info" | "success" | "warning" | "error" | "neutral" | "energetic";
3
3
  title?: string;
4
4
  message?: string;
5
5
  closable?: boolean;
@@ -49,8 +49,8 @@
49
49
  class="px-4 py-2 text-sm font-medium border-b-2 transition-colors {activeTab ===
50
50
  tab.id
51
51
  ? variant === 'pills'
52
- ? 'bg-blue-100 text-blue-700 border-blue-500'
53
- : 'border-blue-500 text-body'
52
+ ? 'bg-brand-100 text-brand-700 border-brand-500'
53
+ : 'border-brand-500 text-body'
54
54
  : 'border-transparent text-description hover:text-body hover:border-gray-300'}"
55
55
  onclick={() => selectTab(tab.id)}
56
56
  disabled={tab.disabled}
@@ -9,11 +9,11 @@ export type Variant = 'default' | 'success' | 'warning' | 'error' | 'info';
9
9
  */
10
10
  export function getInputVariantClasses(variant: Variant): string {
11
11
  const variantMap: Record<Variant, string> = {
12
- default: 'border-gray-300 focus:border-blue-500 focus:ring-blue-500',
12
+ default: 'border-gray-300 focus:border-brand-500 focus:ring-brand-500',
13
13
  success: 'border-green-300 focus:border-green-500 focus:ring-green-500',
14
14
  warning: 'border-yellow-300 focus:border-yellow-500 focus:ring-yellow-500',
15
15
  error: 'border-red-300 focus:border-red-500 focus:ring-red-500',
16
- info: 'border-blue-300 focus:border-blue-500 focus:ring-blue-500',
16
+ info: 'border-iris-300 focus:border-iris-500 focus:ring-iris-500',
17
17
  };
18
18
 
19
19
  return variantMap[variant] || variantMap.default;
@@ -28,7 +28,7 @@ export function getCardVariantClasses(variant: Variant): string {
28
28
  success: 'border-green-200 bg-green-50',
29
29
  warning: 'border-yellow-200 bg-yellow-50',
30
30
  error: 'border-red-200 bg-red-50',
31
- info: 'border-blue-200 bg-blue-50',
31
+ info: 'border-iris-200 bg-iris-50',
32
32
  };
33
33
 
34
34
  return variantMap[variant] || variantMap.default;
@@ -60,9 +60,9 @@ export function getVariantClasses(variant: Variant, type: 'border' | 'text' | 'b
60
60
  bg: 'bg-red-50'
61
61
  },
62
62
  info: {
63
- border: 'border-blue-300',
64
- text: 'text-blue-900',
65
- bg: 'bg-blue-50'
63
+ border: 'border-iris-300',
64
+ text: 'text-iris-900',
65
+ bg: 'bg-iris-50'
66
66
  },
67
67
  };
68
68
 
@@ -9,6 +9,58 @@
9
9
  /* Typography - Nunito Sans font family */
10
10
  --font-family-sans: 'Nunito Sans', ui-sans-serif, system-ui, sans-serif;
11
11
 
12
+ /* Brand Color Scale */
13
+ --color-brand-50: #f7faff;
14
+ --color-brand-100: #edf2fb; /* provided */
15
+ --color-brand-200: #dfe7fb;
16
+ --color-brand-300: #ccdbfd; /* provided */
17
+ --color-brand-400: #abc4ff; /* provided */
18
+ --color-brand-500: #8fa8ff;
19
+ --color-brand-600: #6e84fa;
20
+ --color-brand-700: #5366e2;
21
+ --color-brand-800: #3f4fc0;
22
+ --color-brand-900: #2f3c99;
23
+ --color-brand-950: #1f2866;
24
+
25
+ /* Citron Color Scale */
26
+ --color-citron-50: #f9faeb;
27
+ --color-citron-100: #f1f5cf;
28
+ --color-citron-200: #e4ecaa;
29
+ --color-citron-300: #d5e184;
30
+ --color-citron-400: #c7d460;
31
+ --color-citron-500: #bbbe64; /* provided */
32
+ --color-citron-600: #a3a852;
33
+ --color-citron-700: #848a43;
34
+ --color-citron-800: #666c35;
35
+ --color-citron-900: #4d5229;
36
+ --color-citron-950: #323518;
37
+
38
+ /* Pine Color Scale */
39
+ --color-pine-50: #e9f6f2;
40
+ --color-pine-100: #d2ece4;
41
+ --color-pine-200: #a7d9c9;
42
+ --color-pine-300: #78c4ad;
43
+ --color-pine-400: #49ad91;
44
+ --color-pine-500: #0C5D43; /* provided */
45
+ --color-pine-600: #0a513a;
46
+ --color-pine-700: #084532;
47
+ --color-pine-800: #063a2a;
48
+ --color-pine-900: #04231a;
49
+ --color-pine-950: #02160f;
50
+
51
+ /* Iris Color Scale */
52
+ --color-iris-50: #f4f4fa;
53
+ --color-iris-100: #e9e9f7;
54
+ --color-iris-200: #d6d6f0;
55
+ --color-iris-300: #bdbde6;
56
+ --color-iris-400: #a3a3d8;
57
+ --color-iris-500: #6969B3; /* provided */
58
+ --color-iris-600: #58589e;
59
+ --color-iris-700: #474788;
60
+ --color-iris-800: #38386f;
61
+ --color-iris-900: #2a2a56;
62
+ --color-iris-950: #1b1b37;
63
+
12
64
  /* Surface Colors - Level-based naming with stone palette */
13
65
  --color-surface-level-0: theme(colors.stone.50);
14
66
  --color-surface-level-0-hover: theme(colors.stone.100);
@@ -45,11 +97,13 @@
45
97
  --color-caption: theme(colors.stone.500);
46
98
  --color-input-placeholder: theme(colors.stone.400);
47
99
  --color-label: theme(colors.stone.700);
48
- --color-link: theme(colors.blue.600);
49
- --color-link-hover: theme(colors.blue.700);
50
- --color-success: theme(colors.green.700);
51
- --color-warning: theme(colors.yellow.700);
52
- --color-error: theme(colors.red.700);
100
+ --color-link: theme(colors.brand.600);
101
+ --color-link-hover: theme(colors.brand.700);
102
+ --color-success-text: theme(colors.pine.700);
103
+ --color-warning-text: theme(colors.amber.700);
104
+ --color-neutral-text: theme(colors.stone.700);
105
+ --color-energetic-text: theme(colors.citron.700);
106
+ --color-error-text: theme(colors.red.700);
53
107
  --color-inverse: theme(colors.white);
54
108
  --color-disabled: theme(colors.stone.400);
55
109
 
@@ -60,16 +114,16 @@
60
114
  --color-border-strong: theme(colors.stone.500);
61
115
 
62
116
  /* Focus Colors */
63
- --color-focus: theme(colors.blue.500);
64
- --color-focus-weak: theme(colors.blue.600);
65
- --color-focus-medium: theme(colors.blue.700);
66
- --color-focus-strong: theme(colors.blue.800);
117
+ --color-focus: theme(colors.brand.500);
118
+ --color-focus-weak: theme(colors.brand.600);
119
+ --color-focus-medium: theme(colors.brand.700);
120
+ --color-focus-strong: theme(colors.brand.800);
67
121
 
68
122
  /* Primary Colors */
69
- --color-primary: theme(colors.blue.600);
70
- --color-primary-weak: theme(colors.blue.700);
71
- --color-primary-medium: theme(colors.blue.800);
72
- --color-primary-strong: theme(colors.blue.900);
123
+ --color-primary: theme(colors.brand.600);
124
+ --color-primary-weak: theme(colors.brand.700);
125
+ --color-primary-medium: theme(colors.brand.800);
126
+ --color-primary-strong: theme(colors.brand.900);
73
127
 
74
128
  /* Secondary Colors */
75
129
  --color-secondary: theme(colors.stone.600);
@@ -78,37 +132,51 @@
78
132
  --color-secondary-strong: theme(colors.stone.900);
79
133
 
80
134
  /* Success Colors */
81
- --color-success: theme(colors.green.600);
82
- --color-success-weak: theme(colors.green.700);
83
- --color-success-medium: theme(colors.green.800);
84
- --color-success-strong: theme(colors.green.900);
135
+ --color-success: theme(colors.pine.600);
136
+ --color-success-weak: theme(colors.pine.700);
137
+ --color-success-medium: theme(colors.pine.800);
138
+ --color-success-strong: theme(colors.pine.900);
85
139
 
86
140
  /* Warning Colors */
87
- --color-warning: theme(colors.yellow.600);
88
- --color-warning-weak: theme(colors.yellow.700);
89
- --color-warning-medium: theme(colors.yellow.800);
90
- --color-warning-strong: theme(colors.yellow.900);
141
+ --color-warning: theme(colors.amber.500);
142
+ --color-warning-weak: theme(colors.amber.600);
143
+ --color-warning-medium: theme(colors.amber.400);
144
+ --color-warning-strong: theme(colors.amber.300);
91
145
 
92
146
  /* Error Colors */
93
- --color-error: theme(colors.red.600);
94
- --color-error-weak: theme(colors.red.700);
95
- --color-error-medium: theme(colors.red.800);
96
- --color-error-strong: theme(colors.red.900);
147
+ --color-error: theme(colors.red.500);
148
+ --color-error-weak: theme(colors.red.600);
149
+ --color-error-medium: theme(colors.red.400);
150
+ --color-error-strong: theme(colors.red.300);
151
+
152
+ /* Energetic Colors (Citron) */
153
+ --color-energetic: theme(colors.citron.500);
154
+ --color-energetic-weak: theme(colors.citron.600);
155
+ --color-energetic-medium: theme(colors.citron.400);
156
+ --color-energetic-strong: theme(colors.citron.300);
157
+
158
+ /* Neutral Colors */
159
+ --color-neutral: theme(colors.stone.600);
160
+ --color-neutral-weak: theme(colors.stone.700);
161
+ --color-neutral-medium: theme(colors.stone.800);
162
+ --color-neutral-strong: theme(colors.stone.900);
97
163
 
98
164
  /* Info Colors */
99
- --color-info: theme(colors.blue.600);
100
- --color-info-weak: theme(colors.blue.700);
101
- --color-info-medium: theme(colors.blue.800);
102
- --color-info-strong: theme(colors.blue.900);
165
+ --color-info: theme(colors.iris.600);
166
+ --color-info-weak: theme(colors.iris.700);
167
+ --color-info-medium: theme(colors.iris.800);
168
+ --color-info-strong: theme(colors.iris.900);
169
+ /* Text alias */
170
+ --color-info-text: var(--color-info);
103
171
 
104
172
  /* Action Colors - For interactive elements like buttons */
105
173
  /* Primary Actions */
106
- --color-action-primary: theme(colors.blue.600);
107
- --color-action-primary-hover: theme(colors.blue.700);
108
- --color-action-primary-active: theme(colors.blue.800);
109
- --color-action-primary-disabled: theme(colors.blue.300);
110
- --color-action-primary-subtle: theme(colors.blue.50);
111
- --color-action-primary-subtle-hover: theme(colors.blue.100);
174
+ --color-action-primary: theme(colors.brand.600);
175
+ --color-action-primary-hover: theme(colors.brand.700);
176
+ --color-action-primary-active: theme(colors.brand.800);
177
+ --color-action-primary-disabled: theme(colors.brand.300);
178
+ --color-action-primary-subtle: theme(colors.brand.50);
179
+ --color-action-primary-subtle-hover: theme(colors.brand.100);
112
180
 
113
181
  /* Secondary Actions */
114
182
  --color-action-secondary: theme(colors.stone.600);
@@ -206,11 +274,13 @@ body {
206
274
  --color-caption: theme(colors.stone.400);
207
275
  --color-input-placeholder: theme(colors.stone.500);
208
276
  --color-label: theme(colors.stone.200);
209
- --color-link: theme(colors.blue.400);
210
- --color-link-hover: theme(colors.blue.300);
211
- --color-success: theme(colors.green.400);
212
- --color-warning: theme(colors.yellow.400);
213
- --color-error: theme(colors.red.400);
277
+ --color-link: theme(colors.brand.400);
278
+ --color-link-hover: theme(colors.brand.300);
279
+ --color-success-text: theme(colors.pine.400);
280
+ --color-warning-text: theme(colors.amber.400);
281
+ --color-neutral-text: theme(colors.stone.400);
282
+ --color-energetic-text: theme(colors.citron.400);
283
+ --color-error-text: theme(colors.red.400);
214
284
  --color-inverse: theme(colors.stone.900);
215
285
  --color-disabled: theme(colors.stone.500);
216
286
 
@@ -221,17 +291,17 @@ body {
221
291
  --color-border-strong: theme(colors.stone.300);
222
292
 
223
293
  /* Focus Colors */
224
- --color-focus: theme(colors.blue.400);
225
- --color-focus-weak: theme(colors.blue.500);
226
- --color-focus-medium: theme(colors.blue.600);
227
- --color-focus-strong: theme(colors.blue.700);
228
- --color-focus-disabled: theme(colors.blue.600);
294
+ --color-focus: theme(colors.brand.400);
295
+ --color-focus-weak: theme(colors.brand.500);
296
+ --color-focus-medium: theme(colors.brand.600);
297
+ --color-focus-strong: theme(colors.brand.700);
298
+ --color-focus-disabled: theme(colors.brand.600);
229
299
 
230
300
  /* Primary Colors */
231
- --color-primary: theme(colors.blue.600);
232
- --color-primary-weak: theme(colors.blue.700);
233
- --color-primary-medium: theme(colors.blue.800);
234
- --color-primary-strong: theme(colors.blue.900);
301
+ --color-primary: theme(colors.brand.600);
302
+ --color-primary-weak: theme(colors.brand.700);
303
+ --color-primary-medium: theme(colors.brand.800);
304
+ --color-primary-strong: theme(colors.brand.900);
235
305
 
236
306
  /* Secondary Colors */
237
307
  --color-secondary: theme(colors.stone.600);
@@ -240,16 +310,16 @@ body {
240
310
  --color-secondary-strong: theme(colors.stone.900);
241
311
 
242
312
  /* Success Colors */
243
- --color-success: theme(colors.green.600);
244
- --color-success-weak: theme(colors.green.700);
245
- --color-success-medium: theme(colors.green.800);
246
- --color-success-strong: theme(colors.green.900);
313
+ --color-success: theme(colors.pine.500);
314
+ --color-success-weak: theme(colors.pine.600);
315
+ --color-success-medium: theme(colors.pine.400);
316
+ --color-success-strong: theme(colors.pine.300);
247
317
 
248
318
  /* Warning Colors */
249
- --color-warning: theme(colors.yellow.600);
250
- --color-warning-weak: theme(colors.yellow.700);
251
- --color-warning-medium: theme(colors.yellow.800);
252
- --color-warning-strong: theme(colors.yellow.900);
319
+ --color-warning: theme(colors.amber.600);
320
+ --color-warning-weak: theme(colors.amber.700);
321
+ --color-warning-medium: theme(colors.amber.800);
322
+ --color-warning-strong: theme(colors.amber.900);
253
323
 
254
324
  /* Error Colors */
255
325
  --color-error: theme(colors.red.600);
@@ -257,21 +327,35 @@ body {
257
327
  --color-error-medium: theme(colors.red.800);
258
328
  --color-error-strong: theme(colors.red.900);
259
329
 
330
+ /* Energetic Colors (Citron) */
331
+ --color-energetic: theme(colors.citron.600);
332
+ --color-energetic-weak: theme(colors.citron.700);
333
+ --color-energetic-medium: theme(colors.citron.800);
334
+ --color-energetic-strong: theme(colors.citron.900);
335
+
336
+ /* Neutral Colors */
337
+ --color-neutral: theme(colors.stone.600);
338
+ --color-neutral-weak: theme(colors.stone.500);
339
+ --color-neutral-medium: theme(colors.stone.400);
340
+ --color-neutral-strong: theme(colors.stone.300);
341
+
260
342
  /* Info Colors */
261
- --color-info: theme(colors.blue.600);
262
- --color-info-weak: theme(colors.blue.700);
263
- --color-info-active: theme(colors.blue.800);
264
- --color-info-medium: theme(colors.blue.800);
265
- --color-info-strong: theme(colors.blue.900);
343
+ --color-info: theme(colors.iris.500);
344
+ --color-info-weak: theme(colors.iris.600);
345
+ --color-info-active: theme(colors.iris.400);
346
+ --color-info-medium: theme(colors.iris.400);
347
+ --color-info-strong: theme(colors.iris.300);
348
+ /* Text alias */
349
+ --color-info-text: var(--color-info);
266
350
 
267
351
  /* Action Colors - Dark mode variants */
268
352
  /* Primary Actions */
269
- --color-action-primary: theme(colors.blue.500);
270
- --color-action-primary-hover: theme(colors.blue.600);
271
- --color-action-primary-active: theme(colors.blue.700);
272
- --color-action-primary-disabled: theme(colors.blue.700);
273
- --color-action-primary-subtle: theme(colors.blue.950);
274
- --color-action-primary-subtle-hover: theme(colors.blue.900);
353
+ --color-action-primary: theme(colors.brand.500);
354
+ --color-action-primary-hover: theme(colors.brand.600);
355
+ --color-action-primary-active: theme(colors.brand.700);
356
+ --color-action-primary-disabled: theme(colors.brand.700);
357
+ --color-action-primary-subtle: theme(colors.brand.950);
358
+ --color-action-primary-subtle-hover: theme(colors.brand.900);
275
359
 
276
360
  /* Secondary Actions */
277
361
  --color-action-secondary: theme(colors.stone.500);
@@ -365,16 +449,30 @@ body {
365
449
  color: var(--color-link-hover);
366
450
  }
367
451
 
452
+
368
453
  .text-success {
369
- color: var(--color-success);
454
+ color: var(--color-success-text);
370
455
  }
371
456
 
372
457
  .text-warning {
373
- color: var(--color-warning);
458
+ color: var(--color-warning-text);
374
459
  }
375
460
 
376
461
  .text-error {
377
- color: var(--color-error);
462
+ color: var(--color-error-text);
463
+ }
464
+
465
+ /* Additional status text utilities */
466
+ .text-info {
467
+ color: var(--color-info-text);
468
+ }
469
+
470
+ .text-neutral {
471
+ color: var(--color-neutral-text);
472
+ }
473
+
474
+ .text-energetic {
475
+ color: var(--color-energetic-text);
378
476
  }
379
477
 
380
478
  .text-inverse {
@@ -406,6 +504,31 @@ body {
406
504
  border-color: var(--color-border-disabled);
407
505
  }
408
506
 
507
+ /* Status border utilities */
508
+ .border-success {
509
+ border-color: var(--color-success);
510
+ }
511
+
512
+ .border-warning {
513
+ border-color: var(--color-warning);
514
+ }
515
+
516
+ .border-error {
517
+ border-color: var(--color-error);
518
+ }
519
+
520
+ .border-info {
521
+ border-color: var(--color-info);
522
+ }
523
+
524
+ .border-neutral {
525
+ border-color: var(--color-neutral);
526
+ }
527
+
528
+ .border-energetic {
529
+ border-color: var(--color-energetic);
530
+ }
531
+
409
532
  /* Focus utilities */
410
533
  .focus-ring {
411
534
  box-shadow: 0 0 0 2px var(--color-focus-ring-offset), 0 0 0 4px var(--color-focus-ring);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zabi-components",
3
- "version": "5.0.9",
3
+ "version": "5.0.10",
4
4
  "description": "A modern Svelte 5 component library with TypeScript, Tailwind CSS v4, and 100% SSR-safe components",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",