@nori-ui/core 0.0.3 → 0.0.4

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.
package/dist/index.cjs CHANGED
@@ -37,6 +37,216 @@ function Box({ className, children, ...rest }) {
37
37
  }
38
38
  __name(Box, "Box");
39
39
 
40
+ // ../tokens/build/theme.ts
41
+ var theme = {
42
+ color: {
43
+ danger: "#ef4444",
44
+ info: "#3b82f6",
45
+ neutral: {
46
+ "100": "#f4f4f5",
47
+ "200": "#e4e4e7",
48
+ "300": "#d4d4d8",
49
+ "400": "#a1a1aa",
50
+ "50": "#fafafa",
51
+ "500": "#71717a",
52
+ "600": "#52525b",
53
+ "700": "#3f3f46",
54
+ "800": "#27272a",
55
+ "900": "#18181b"
56
+ },
57
+ primary: {
58
+ "100": "#dbeafe",
59
+ "200": "#bfdbfe",
60
+ "300": "#93c5fd",
61
+ "400": "#60a5fa",
62
+ "50": "#f0f7ff",
63
+ "500": "#3b82f6",
64
+ "600": "#2563eb",
65
+ "700": "#1d4ed8",
66
+ "800": "#1e40af",
67
+ "900": "#1e3a8a"
68
+ },
69
+ success: "#22c55e",
70
+ warning: "#f59e0b"
71
+ },
72
+ fontSize: {
73
+ "2xl": "24px",
74
+ "3xl": "30px",
75
+ "4xl": "36px",
76
+ lg: "18px",
77
+ md: "16px",
78
+ sm: "14px",
79
+ xl: "20px",
80
+ xs: "12px"
81
+ },
82
+ fontWeight: {
83
+ bold: "700",
84
+ medium: "500",
85
+ regular: "400",
86
+ semibold: "600"
87
+ },
88
+ lineHeight: {
89
+ normal: "1.4",
90
+ relaxed: "1.6",
91
+ tight: "1.2"
92
+ },
93
+ radius: {
94
+ "2xl": "16px",
95
+ full: "9999px",
96
+ lg: "8px",
97
+ md: "6px",
98
+ none: "0px",
99
+ sm: "4px",
100
+ xl: "12px"
101
+ },
102
+ semantic: {
103
+ background: {
104
+ default: "#fafafa",
105
+ elevated: "#ffffff",
106
+ subtle: "#f4f4f5"
107
+ },
108
+ border: {
109
+ default: "#e4e4e7",
110
+ strong: "#d4d4d8"
111
+ },
112
+ interactive: {
113
+ destructive: "#ef4444",
114
+ primary: "#2563eb",
115
+ primaryHover: "#1d4ed8",
116
+ primaryPressed: "#1e40af"
117
+ },
118
+ text: {
119
+ default: "#18181b",
120
+ inverted: "#fafafa",
121
+ muted: "#52525b"
122
+ }
123
+ },
124
+ shadow: {
125
+ lg: "0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)",
126
+ md: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)",
127
+ sm: "0 1px 2px 0 rgba(0, 0, 0, 0.05)"
128
+ },
129
+ spacing: {
130
+ "0": "0px",
131
+ "1": "4px",
132
+ "10": "40px",
133
+ "12": "48px",
134
+ "16": "64px",
135
+ "2": "8px",
136
+ "20": "80px",
137
+ "24": "96px",
138
+ "3": "12px",
139
+ "4": "16px",
140
+ "5": "20px",
141
+ "6": "24px",
142
+ "8": "32px"
143
+ }
144
+ };
145
+ var themeDark = {
146
+ color: {
147
+ danger: "#ef4444",
148
+ info: "#3b82f6",
149
+ neutral: {
150
+ "100": "#f4f4f5",
151
+ "200": "#e4e4e7",
152
+ "300": "#d4d4d8",
153
+ "400": "#a1a1aa",
154
+ "50": "#fafafa",
155
+ "500": "#71717a",
156
+ "600": "#52525b",
157
+ "700": "#3f3f46",
158
+ "800": "#27272a",
159
+ "900": "#18181b"
160
+ },
161
+ primary: {
162
+ "100": "#dbeafe",
163
+ "200": "#bfdbfe",
164
+ "300": "#93c5fd",
165
+ "400": "#60a5fa",
166
+ "50": "#f0f7ff",
167
+ "500": "#3b82f6",
168
+ "600": "#2563eb",
169
+ "700": "#1d4ed8",
170
+ "800": "#1e40af",
171
+ "900": "#1e3a8a"
172
+ },
173
+ success: "#22c55e",
174
+ warning: "#f59e0b"
175
+ },
176
+ fontSize: {
177
+ "2xl": "24px",
178
+ "3xl": "30px",
179
+ "4xl": "36px",
180
+ lg: "18px",
181
+ md: "16px",
182
+ sm: "14px",
183
+ xl: "20px",
184
+ xs: "12px"
185
+ },
186
+ fontWeight: {
187
+ bold: "700",
188
+ medium: "500",
189
+ regular: "400",
190
+ semibold: "600"
191
+ },
192
+ lineHeight: {
193
+ normal: "1.4",
194
+ relaxed: "1.6",
195
+ tight: "1.2"
196
+ },
197
+ radius: {
198
+ "2xl": "16px",
199
+ full: "9999px",
200
+ lg: "8px",
201
+ md: "6px",
202
+ none: "0px",
203
+ sm: "4px",
204
+ xl: "12px"
205
+ },
206
+ semantic: {
207
+ background: {
208
+ default: "#18181b",
209
+ elevated: "#3f3f46",
210
+ subtle: "#27272a"
211
+ },
212
+ border: {
213
+ default: "#3f3f46",
214
+ strong: "#52525b"
215
+ },
216
+ interactive: {
217
+ destructive: "#ef4444",
218
+ primary: "#60a5fa",
219
+ primaryHover: "#93c5fd",
220
+ primaryPressed: "#bfdbfe"
221
+ },
222
+ text: {
223
+ default: "#fafafa",
224
+ inverted: "#18181b",
225
+ muted: "#a1a1aa"
226
+ }
227
+ },
228
+ shadow: {
229
+ lg: "0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)",
230
+ md: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)",
231
+ sm: "0 1px 2px 0 rgba(0, 0, 0, 0.05)"
232
+ },
233
+ spacing: {
234
+ "0": "0px",
235
+ "1": "4px",
236
+ "10": "40px",
237
+ "12": "48px",
238
+ "16": "64px",
239
+ "2": "8px",
240
+ "20": "80px",
241
+ "24": "96px",
242
+ "3": "12px",
243
+ "4": "16px",
244
+ "5": "20px",
245
+ "6": "24px",
246
+ "8": "32px"
247
+ }
248
+ };
249
+
40
250
  // src/slot/compose-refs.ts
41
251
  function composeRefs(...refs) {
42
252
  return (node) => {
@@ -145,6 +355,30 @@ var SIZE_CLASSES = {
145
355
  };
146
356
  var ICON_SIZE = { sm: 14, md: 16, lg: 20 };
147
357
  var BASE_CLASSES = "inline-flex flex-row items-center justify-center gap-2 rounded-md select-none";
358
+ var VARIANT_STYLES = {
359
+ primary: { backgroundColor: theme.color.primary["600"] },
360
+ secondary: { backgroundColor: theme.color.neutral["100"] },
361
+ ghost: { backgroundColor: "transparent" },
362
+ destructive: { backgroundColor: theme.color.danger }
363
+ };
364
+ var VARIANT_TEXT_COLOR = {
365
+ primary: "#ffffff",
366
+ secondary: theme.color.neutral["900"],
367
+ ghost: theme.color.neutral["900"],
368
+ destructive: "#ffffff"
369
+ };
370
+ var SIZE_STYLES = {
371
+ sm: { container: { height: 32, paddingHorizontal: 12 }, text: { fontSize: 14 } },
372
+ md: { container: { height: 40, paddingHorizontal: 16 }, text: { fontSize: 16 } },
373
+ lg: { container: { height: 48, paddingHorizontal: 20 }, text: { fontSize: 18 } }
374
+ };
375
+ var BASE_STYLE = {
376
+ flexDirection: "row",
377
+ alignItems: "center",
378
+ justifyContent: "center",
379
+ gap: 8,
380
+ borderRadius: 6
381
+ };
148
382
  var Button = react.forwardRef(/* @__PURE__ */ __name(function Button2({
149
383
  children,
150
384
  variant = "primary",
@@ -157,6 +391,7 @@ var Button = react.forwardRef(/* @__PURE__ */ __name(function Button2({
157
391
  className,
158
392
  onPress,
159
393
  testID,
394
+ style,
160
395
  ...rest
161
396
  }, forwardedRef) {
162
397
  const isInoperative = Boolean(disabled) || Boolean(loading);
@@ -167,6 +402,16 @@ var Button = react.forwardRef(/* @__PURE__ */ __name(function Button2({
167
402
  isInoperative ? "opacity-60" : void 0,
168
403
  className
169
404
  );
405
+ const baseInlineStyle = [
406
+ BASE_STYLE,
407
+ VARIANT_STYLES[variant],
408
+ SIZE_STYLES[size].container,
409
+ isInoperative ? { opacity: 0.6 } : null
410
+ ];
411
+ const pressableStyle = typeof style === "function" ? (state) => [baseInlineStyle, style(state)] : [baseInlineStyle, style];
412
+ const slotStyle = [baseInlineStyle, typeof style === "function" ? null : style];
413
+ const textColor = VARIANT_TEXT_COLOR[variant];
414
+ const textStyle = { color: textColor, fontSize: SIZE_STYLES[size].text.fontSize, fontWeight: "500" };
170
415
  const handlePress = /* @__PURE__ */ __name((ev) => {
171
416
  if (isInoperative) return;
172
417
  onPress?.(ev);
@@ -175,6 +420,7 @@ var Button = react.forwardRef(/* @__PURE__ */ __name(function Button2({
175
420
  const slotProps = {
176
421
  ref: forwardedRef,
177
422
  className: classes,
423
+ style: slotStyle,
178
424
  onClick: handlePress,
179
425
  ...rest
180
426
  };
@@ -197,12 +443,20 @@ var Button = react.forwardRef(/* @__PURE__ */ __name(function Button2({
197
443
  disabled: isInoperative,
198
444
  onPress: handlePress,
199
445
  className: classes,
446
+ style: pressableStyle,
200
447
  ...pressableExtra,
201
448
  ...rest,
202
449
  children: [
203
- loading ? /* @__PURE__ */ jsxRuntime.jsx(Spinner, { size: ICON_SIZE[size], label: "Loading" }) : LeadingIcon ? /* @__PURE__ */ jsxRuntime.jsx(LeadingIcon, { size: ICON_SIZE[size] }) : null,
204
- /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { className: cn("font-medium", SIZE_CLASSES[size].includes("text-") ? void 0 : "text-md"), children }),
205
- TrailingIcon ? /* @__PURE__ */ jsxRuntime.jsx(TrailingIcon, { size: ICON_SIZE[size] }) : null
450
+ loading ? /* @__PURE__ */ jsxRuntime.jsx(Spinner, { size: ICON_SIZE[size], label: "Loading", color: textColor }) : LeadingIcon ? /* @__PURE__ */ jsxRuntime.jsx(LeadingIcon, { size: ICON_SIZE[size], color: textColor }) : null,
451
+ /* @__PURE__ */ jsxRuntime.jsx(
452
+ reactNative.Text,
453
+ {
454
+ className: cn("font-medium", SIZE_CLASSES[size].includes("text-") ? void 0 : "text-md"),
455
+ style: textStyle,
456
+ children
457
+ }
458
+ ),
459
+ TrailingIcon ? /* @__PURE__ */ jsxRuntime.jsx(TrailingIcon, { size: ICON_SIZE[size], color: textColor }) : null
206
460
  ]
207
461
  }
208
462
  );
@@ -250,6 +504,21 @@ function useSemanticIcon(name) {
250
504
  return icons[name];
251
505
  }
252
506
  __name(useSemanticIcon, "useSemanticIcon");
507
+ var ROW_STYLE = { flexDirection: "row", alignItems: "center", gap: 8 };
508
+ var BOX_STYLE = {
509
+ width: 20,
510
+ height: 20,
511
+ borderRadius: 4,
512
+ borderWidth: 1,
513
+ borderColor: theme.color.neutral["300"],
514
+ backgroundColor: "#ffffff",
515
+ alignItems: "center",
516
+ justifyContent: "center"
517
+ };
518
+ var BOX_STYLE_CHECKED = {
519
+ backgroundColor: theme.color.primary["600"],
520
+ borderColor: theme.color.primary["600"]
521
+ };
253
522
  function Checkbox({
254
523
  checked,
255
524
  defaultChecked = false,
@@ -266,6 +535,7 @@ function Checkbox({
266
535
  const isControlled = checked !== void 0;
267
536
  const value = isControlled ? Boolean(checked) : inner;
268
537
  const ariaChecked = indeterminate ? "mixed" : value ? "true" : "false";
538
+ const isMarked = value || Boolean(indeterminate);
269
539
  const toggle = react.useCallback(() => {
270
540
  if (disabled) return;
271
541
  const next = !value;
@@ -298,10 +568,26 @@ function Checkbox({
298
568
  return /* @__PURE__ */ jsxRuntime.jsx(Slot, { ...slotProps, children });
299
569
  }
300
570
  const boxClasses = cn("w-5 h-5 rounded-sm border border-semantic-border-strong items-center justify-center");
301
- return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: cn("flex-row items-center gap-2", disabled ? "opacity-60" : void 0, className), children: [
302
- /* @__PURE__ */ jsxRuntime.jsx(reactNative.Pressable, { onPress: toggle, ...commonProps, className: boxClasses, children: (value || indeterminate) && !disabled ? /* @__PURE__ */ jsxRuntime.jsx(Check, { size: 14, color: "currentColor" }) : null }),
303
- children ?? (label !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { children: label }) : null)
304
- ] });
571
+ return /* @__PURE__ */ jsxRuntime.jsxs(
572
+ reactNative.View,
573
+ {
574
+ className: cn("flex-row items-center gap-2", disabled ? "opacity-60" : void 0, className),
575
+ style: [ROW_STYLE, disabled ? { opacity: 0.6 } : null],
576
+ children: [
577
+ /* @__PURE__ */ jsxRuntime.jsx(
578
+ reactNative.Pressable,
579
+ {
580
+ onPress: toggle,
581
+ ...commonProps,
582
+ className: boxClasses,
583
+ style: [BOX_STYLE, isMarked && !disabled ? BOX_STYLE_CHECKED : null],
584
+ children: isMarked && !disabled ? /* @__PURE__ */ jsxRuntime.jsx(Check, { size: 14, color: "#ffffff" }) : null
585
+ }
586
+ ),
587
+ children ?? (label !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: { color: theme.color.neutral["900"], fontSize: 16 }, children: label }) : null)
588
+ ]
589
+ }
590
+ );
305
591
  }
306
592
  __name(Checkbox, "Checkbox");
307
593
  var ALIGN_CLASS = {
@@ -336,6 +622,25 @@ function HStack({ gap, align, justify, className, children, ...rest }) {
336
622
  );
337
623
  }
338
624
  __name(HStack, "HStack");
625
+ var ROW_STYLE2 = { flexDirection: "row", alignItems: "center", gap: 8 };
626
+ var TRACK_BASE = {
627
+ width: 40,
628
+ height: 24,
629
+ borderRadius: 12,
630
+ justifyContent: "center",
631
+ paddingHorizontal: 2
632
+ };
633
+ var THUMB_STYLE = {
634
+ width: 20,
635
+ height: 20,
636
+ borderRadius: 10,
637
+ backgroundColor: "#ffffff",
638
+ shadowColor: "#000",
639
+ shadowOpacity: 0.15,
640
+ shadowRadius: 2,
641
+ shadowOffset: { width: 0, height: 1 },
642
+ elevation: 2
643
+ };
339
644
  function Switch({
340
645
  checked,
341
646
  defaultChecked = false,
@@ -387,9 +692,22 @@ function Switch({
387
692
  disabled ? "opacity-60" : void 0
388
693
  );
389
694
  const thumbClasses = cn("w-5 h-5 rounded-full bg-white shadow-sm", value ? "self-end" : "self-start");
390
- return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: cn("flex-row items-center gap-2", className), children: [
391
- /* @__PURE__ */ jsxRuntime.jsx(reactNative.Pressable, { onPress: toggle, ...commonProps, className: trackClasses, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: thumbClasses }) }),
392
- label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { className: "text-md text-semantic-text-default", children: label }) : null,
695
+ const trackStyle = [
696
+ TRACK_BASE,
697
+ { backgroundColor: value ? theme.color.primary["600"] : theme.color.neutral["300"] },
698
+ disabled ? { opacity: 0.6 } : null
699
+ ];
700
+ const thumbStyle = [THUMB_STYLE, { alignSelf: value ? "flex-end" : "flex-start" }];
701
+ return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: cn("flex-row items-center gap-2", className), style: ROW_STYLE2, children: [
702
+ /* @__PURE__ */ jsxRuntime.jsx(reactNative.Pressable, { onPress: toggle, ...commonProps, className: trackClasses, style: trackStyle, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: thumbClasses, style: thumbStyle }) }),
703
+ label ? /* @__PURE__ */ jsxRuntime.jsx(
704
+ reactNative.Text,
705
+ {
706
+ className: "text-md text-semantic-text-default",
707
+ style: { color: theme.color.neutral["900"], fontSize: 16 },
708
+ children: label
709
+ }
710
+ ) : null,
393
711
  children
394
712
  ] });
395
713
  }
@@ -419,6 +737,23 @@ function Text({ variant = "body-md", className, testID, children, ...rest }) {
419
737
  );
420
738
  }
421
739
  __name(Text, "Text");
740
+ var CONTAINER_STYLE = { flexDirection: "column", gap: 4 };
741
+ var LABEL_STYLE = { fontSize: 14, fontWeight: "500", color: theme.color.neutral["900"] };
742
+ var FIELD_BASE_STYLE = {
743
+ flexDirection: "row",
744
+ alignItems: "center",
745
+ borderRadius: 6,
746
+ borderWidth: 1,
747
+ paddingHorizontal: 12
748
+ };
749
+ var INPUT_STYLE = {
750
+ flex: 1,
751
+ paddingVertical: 8,
752
+ fontSize: 16,
753
+ color: theme.color.neutral["900"]
754
+ };
755
+ var HELPER_STYLE = { fontSize: 14, color: theme.color.neutral["500"] };
756
+ var ERROR_STYLE = { fontSize: 14, color: theme.color.danger };
422
757
  function TextInput({
423
758
  label,
424
759
  helperText,
@@ -447,8 +782,21 @@ function TextInput({
447
782
  if (multiline !== void 0) inputExtras.multiline = multiline;
448
783
  if (numberOfLines !== void 0) inputExtras.numberOfLines = numberOfLines;
449
784
  if (onChangeText !== void 0) inputExtras.onChangeText = onChangeText;
450
- return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: cn("flex flex-col gap-1", containerClassName), children: [
451
- label !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: inputId, className: "text-sm font-medium text-semantic-text-default", children: label }) : null,
785
+ const fieldStyle = [
786
+ FIELD_BASE_STYLE,
787
+ { borderColor: hasError ? theme.color.danger : theme.color.neutral["200"] },
788
+ disabled ? { opacity: 0.6 } : null
789
+ ];
790
+ return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: cn("flex flex-col gap-1", containerClassName), style: CONTAINER_STYLE, children: [
791
+ label !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(
792
+ "label",
793
+ {
794
+ htmlFor: inputId,
795
+ className: "text-sm font-medium text-semantic-text-default",
796
+ style: LABEL_STYLE,
797
+ children: label
798
+ }
799
+ ) : null,
452
800
  /* @__PURE__ */ jsxRuntime.jsxs(
453
801
  reactNative.View,
454
802
  {
@@ -457,23 +805,34 @@ function TextInput({
457
805
  hasError ? "border-semantic-interactive-destructive" : "border-semantic-border-default",
458
806
  disabled ? "opacity-60" : void 0
459
807
  ),
808
+ style: fieldStyle,
460
809
  children: [
461
- leading ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: "mr-2", children: leading }) : null,
810
+ leading ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: "mr-2", style: { marginRight: 8 }, children: leading }) : null,
462
811
  /* @__PURE__ */ jsxRuntime.jsx(
463
812
  reactNative.TextInput,
464
813
  {
465
814
  nativeID: inputId,
466
815
  editable: !disabled,
467
816
  className: cn("flex-1 py-2 text-md text-semantic-text-default outline-none", className),
817
+ style: INPUT_STYLE,
818
+ placeholderTextColor: theme.color.neutral["400"],
468
819
  ...inputExtras,
469
820
  ...rest
470
821
  }
471
822
  ),
472
- trailing ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: "ml-2", children: trailing }) : null
823
+ trailing ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: "ml-2", style: { marginLeft: 8 }, children: trailing }) : null
473
824
  ]
474
825
  }
475
826
  ),
476
- error ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { nativeID: describeId, className: "text-sm text-semantic-interactive-destructive", children: error }) : helperText ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { nativeID: describeId, className: "text-sm text-semantic-text-muted", children: helperText }) : null
827
+ error ? /* @__PURE__ */ jsxRuntime.jsx(
828
+ reactNative.Text,
829
+ {
830
+ nativeID: describeId,
831
+ className: "text-sm text-semantic-interactive-destructive",
832
+ style: ERROR_STYLE,
833
+ children: error
834
+ }
835
+ ) : helperText ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { nativeID: describeId, className: "text-sm text-semantic-text-muted", style: HELPER_STYLE, children: helperText }) : null
477
836
  ] });
478
837
  }
479
838
  __name(TextInput, "TextInput");
@@ -587,216 +946,6 @@ function Icon({ as: IconComponent, size = "md", color }) {
587
946
  }
588
947
  __name(Icon, "Icon");
589
948
 
590
- // ../tokens/build/theme.ts
591
- var theme = {
592
- color: {
593
- danger: "#ef4444",
594
- info: "#3b82f6",
595
- neutral: {
596
- "100": "#f4f4f5",
597
- "200": "#e4e4e7",
598
- "300": "#d4d4d8",
599
- "400": "#a1a1aa",
600
- "50": "#fafafa",
601
- "500": "#71717a",
602
- "600": "#52525b",
603
- "700": "#3f3f46",
604
- "800": "#27272a",
605
- "900": "#18181b"
606
- },
607
- primary: {
608
- "100": "#dbeafe",
609
- "200": "#bfdbfe",
610
- "300": "#93c5fd",
611
- "400": "#60a5fa",
612
- "50": "#f0f7ff",
613
- "500": "#3b82f6",
614
- "600": "#2563eb",
615
- "700": "#1d4ed8",
616
- "800": "#1e40af",
617
- "900": "#1e3a8a"
618
- },
619
- success: "#22c55e",
620
- warning: "#f59e0b"
621
- },
622
- fontSize: {
623
- "2xl": "24px",
624
- "3xl": "30px",
625
- "4xl": "36px",
626
- lg: "18px",
627
- md: "16px",
628
- sm: "14px",
629
- xl: "20px",
630
- xs: "12px"
631
- },
632
- fontWeight: {
633
- bold: "700",
634
- medium: "500",
635
- regular: "400",
636
- semibold: "600"
637
- },
638
- lineHeight: {
639
- normal: "1.4",
640
- relaxed: "1.6",
641
- tight: "1.2"
642
- },
643
- radius: {
644
- "2xl": "16px",
645
- full: "9999px",
646
- lg: "8px",
647
- md: "6px",
648
- none: "0px",
649
- sm: "4px",
650
- xl: "12px"
651
- },
652
- semantic: {
653
- background: {
654
- default: "#fafafa",
655
- elevated: "#ffffff",
656
- subtle: "#f4f4f5"
657
- },
658
- border: {
659
- default: "#e4e4e7",
660
- strong: "#d4d4d8"
661
- },
662
- interactive: {
663
- destructive: "#ef4444",
664
- primary: "#2563eb",
665
- primaryHover: "#1d4ed8",
666
- primaryPressed: "#1e40af"
667
- },
668
- text: {
669
- default: "#18181b",
670
- inverted: "#fafafa",
671
- muted: "#52525b"
672
- }
673
- },
674
- shadow: {
675
- lg: "0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)",
676
- md: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)",
677
- sm: "0 1px 2px 0 rgba(0, 0, 0, 0.05)"
678
- },
679
- spacing: {
680
- "0": "0px",
681
- "1": "4px",
682
- "10": "40px",
683
- "12": "48px",
684
- "16": "64px",
685
- "2": "8px",
686
- "20": "80px",
687
- "24": "96px",
688
- "3": "12px",
689
- "4": "16px",
690
- "5": "20px",
691
- "6": "24px",
692
- "8": "32px"
693
- }
694
- };
695
- var themeDark = {
696
- color: {
697
- danger: "#ef4444",
698
- info: "#3b82f6",
699
- neutral: {
700
- "100": "#f4f4f5",
701
- "200": "#e4e4e7",
702
- "300": "#d4d4d8",
703
- "400": "#a1a1aa",
704
- "50": "#fafafa",
705
- "500": "#71717a",
706
- "600": "#52525b",
707
- "700": "#3f3f46",
708
- "800": "#27272a",
709
- "900": "#18181b"
710
- },
711
- primary: {
712
- "100": "#dbeafe",
713
- "200": "#bfdbfe",
714
- "300": "#93c5fd",
715
- "400": "#60a5fa",
716
- "50": "#f0f7ff",
717
- "500": "#3b82f6",
718
- "600": "#2563eb",
719
- "700": "#1d4ed8",
720
- "800": "#1e40af",
721
- "900": "#1e3a8a"
722
- },
723
- success: "#22c55e",
724
- warning: "#f59e0b"
725
- },
726
- fontSize: {
727
- "2xl": "24px",
728
- "3xl": "30px",
729
- "4xl": "36px",
730
- lg: "18px",
731
- md: "16px",
732
- sm: "14px",
733
- xl: "20px",
734
- xs: "12px"
735
- },
736
- fontWeight: {
737
- bold: "700",
738
- medium: "500",
739
- regular: "400",
740
- semibold: "600"
741
- },
742
- lineHeight: {
743
- normal: "1.4",
744
- relaxed: "1.6",
745
- tight: "1.2"
746
- },
747
- radius: {
748
- "2xl": "16px",
749
- full: "9999px",
750
- lg: "8px",
751
- md: "6px",
752
- none: "0px",
753
- sm: "4px",
754
- xl: "12px"
755
- },
756
- semantic: {
757
- background: {
758
- default: "#18181b",
759
- elevated: "#3f3f46",
760
- subtle: "#27272a"
761
- },
762
- border: {
763
- default: "#3f3f46",
764
- strong: "#52525b"
765
- },
766
- interactive: {
767
- destructive: "#ef4444",
768
- primary: "#60a5fa",
769
- primaryHover: "#93c5fd",
770
- primaryPressed: "#bfdbfe"
771
- },
772
- text: {
773
- default: "#fafafa",
774
- inverted: "#18181b",
775
- muted: "#a1a1aa"
776
- }
777
- },
778
- shadow: {
779
- lg: "0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)",
780
- md: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)",
781
- sm: "0 1px 2px 0 rgba(0, 0, 0, 0.05)"
782
- },
783
- spacing: {
784
- "0": "0px",
785
- "1": "4px",
786
- "10": "40px",
787
- "12": "48px",
788
- "16": "64px",
789
- "2": "8px",
790
- "20": "80px",
791
- "24": "96px",
792
- "3": "12px",
793
- "4": "16px",
794
- "5": "20px",
795
- "6": "24px",
796
- "8": "32px"
797
- }
798
- };
799
-
800
949
  exports.Box = Box;
801
950
  exports.Button = Button;
802
951
  exports.Checkbox = Checkbox;