@nori-ui/core 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/dist/chunk-6NDARMPP.js +389 -0
  4. package/dist/chunk-6NDARMPP.js.map +1 -0
  5. package/dist/chunk-7QVYU63E.js +6 -0
  6. package/dist/chunk-7QVYU63E.js.map +1 -0
  7. package/dist/chunk-BRCCWMGJ.js +3 -0
  8. package/dist/chunk-BRCCWMGJ.js.map +1 -0
  9. package/dist/chunk-FXKIWONG.js +80 -0
  10. package/dist/chunk-FXKIWONG.js.map +1 -0
  11. package/dist/chunk-JGH6Z5LM.js +213 -0
  12. package/dist/chunk-JGH6Z5LM.js.map +1 -0
  13. package/dist/chunk-NDEDMCHT.js +40 -0
  14. package/dist/chunk-NDEDMCHT.js.map +1 -0
  15. package/dist/chunk-RX7UULY3.js +19 -0
  16. package/dist/chunk-RX7UULY3.js.map +1 -0
  17. package/dist/chunk-SSTXLK5I.js +66 -0
  18. package/dist/chunk-SSTXLK5I.js.map +1 -0
  19. package/dist/chunk-XGM2K4TT.js +31 -0
  20. package/dist/chunk-XGM2K4TT.js.map +1 -0
  21. package/dist/client.cjs +861 -0
  22. package/dist/client.cjs.map +1 -0
  23. package/dist/client.d.cts +157 -0
  24. package/dist/client.d.ts +157 -0
  25. package/dist/client.js +50 -0
  26. package/dist/client.js.map +1 -0
  27. package/dist/i18n/index.cjs +70 -0
  28. package/dist/i18n/index.cjs.map +1 -0
  29. package/dist/i18n/index.d.cts +60 -0
  30. package/dist/i18n/index.d.ts +60 -0
  31. package/dist/i18n/index.js +4 -0
  32. package/dist/i18n/index.js.map +1 -0
  33. package/dist/icons/index.cjs +56 -0
  34. package/dist/icons/index.cjs.map +1 -0
  35. package/dist/icons/index.d.cts +38 -0
  36. package/dist/icons/index.d.ts +38 -0
  37. package/dist/icons/index.js +5 -0
  38. package/dist/icons/index.js.map +1 -0
  39. package/dist/index.cjs +820 -0
  40. package/dist/index.cjs.map +1 -0
  41. package/dist/index.d.cts +187 -0
  42. package/dist/index.d.ts +187 -0
  43. package/dist/index.js +11 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/slot/index.cjs +85 -0
  46. package/dist/slot/index.cjs.map +1 -0
  47. package/dist/slot/index.d.cts +13 -0
  48. package/dist/slot/index.d.ts +13 -0
  49. package/dist/slot/index.js +4 -0
  50. package/dist/slot/index.js.map +1 -0
  51. package/dist/stories/story-registry.cjs +612 -0
  52. package/dist/stories/story-registry.cjs.map +1 -0
  53. package/dist/stories/story-registry.d.cts +13 -0
  54. package/dist/stories/story-registry.d.ts +13 -0
  55. package/dist/stories/story-registry.js +105 -0
  56. package/dist/stories/story-registry.js.map +1 -0
  57. package/dist/theme/index.cjs +216 -0
  58. package/dist/theme/index.cjs.map +1 -0
  59. package/dist/theme/index.d.cts +1 -0
  60. package/dist/theme/index.d.ts +1 -0
  61. package/dist/theme/index.js +4 -0
  62. package/dist/theme/index.js.map +1 -0
  63. package/dist/utils/cn.cjs +34 -0
  64. package/dist/utils/cn.cjs.map +1 -0
  65. package/dist/utils/cn.d.cts +4 -0
  66. package/dist/utils/cn.d.ts +4 -0
  67. package/dist/utils/cn.js +4 -0
  68. package/dist/utils/cn.js.map +1 -0
  69. package/package.json +122 -0
@@ -0,0 +1,213 @@
1
+ // ../tokens/build/theme.ts
2
+ var theme = {
3
+ color: {
4
+ danger: "#ef4444",
5
+ info: "#3b82f6",
6
+ neutral: {
7
+ "100": "#f4f4f5",
8
+ "200": "#e4e4e7",
9
+ "300": "#d4d4d8",
10
+ "400": "#a1a1aa",
11
+ "50": "#fafafa",
12
+ "500": "#71717a",
13
+ "600": "#52525b",
14
+ "700": "#3f3f46",
15
+ "800": "#27272a",
16
+ "900": "#18181b"
17
+ },
18
+ primary: {
19
+ "100": "#dbeafe",
20
+ "200": "#bfdbfe",
21
+ "300": "#93c5fd",
22
+ "400": "#60a5fa",
23
+ "50": "#f0f7ff",
24
+ "500": "#3b82f6",
25
+ "600": "#2563eb",
26
+ "700": "#1d4ed8",
27
+ "800": "#1e40af",
28
+ "900": "#1e3a8a"
29
+ },
30
+ success: "#22c55e",
31
+ warning: "#f59e0b"
32
+ },
33
+ fontSize: {
34
+ "2xl": "24px",
35
+ "3xl": "30px",
36
+ "4xl": "36px",
37
+ lg: "18px",
38
+ md: "16px",
39
+ sm: "14px",
40
+ xl: "20px",
41
+ xs: "12px"
42
+ },
43
+ fontWeight: {
44
+ bold: "700",
45
+ medium: "500",
46
+ regular: "400",
47
+ semibold: "600"
48
+ },
49
+ lineHeight: {
50
+ normal: "1.4",
51
+ relaxed: "1.6",
52
+ tight: "1.2"
53
+ },
54
+ radius: {
55
+ "2xl": "16px",
56
+ full: "9999px",
57
+ lg: "8px",
58
+ md: "6px",
59
+ none: "0px",
60
+ sm: "4px",
61
+ xl: "12px"
62
+ },
63
+ semantic: {
64
+ background: {
65
+ default: "#fafafa",
66
+ elevated: "#ffffff",
67
+ subtle: "#f4f4f5"
68
+ },
69
+ border: {
70
+ default: "#e4e4e7",
71
+ strong: "#d4d4d8"
72
+ },
73
+ interactive: {
74
+ destructive: "#ef4444",
75
+ primary: "#2563eb",
76
+ primaryHover: "#1d4ed8",
77
+ primaryPressed: "#1e40af"
78
+ },
79
+ text: {
80
+ default: "#18181b",
81
+ inverted: "#fafafa",
82
+ muted: "#52525b"
83
+ }
84
+ },
85
+ shadow: {
86
+ lg: "0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)",
87
+ md: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)",
88
+ sm: "0 1px 2px 0 rgba(0, 0, 0, 0.05)"
89
+ },
90
+ spacing: {
91
+ "0": "0px",
92
+ "1": "4px",
93
+ "10": "40px",
94
+ "12": "48px",
95
+ "16": "64px",
96
+ "2": "8px",
97
+ "20": "80px",
98
+ "24": "96px",
99
+ "3": "12px",
100
+ "4": "16px",
101
+ "5": "20px",
102
+ "6": "24px",
103
+ "8": "32px"
104
+ }
105
+ };
106
+ var themeDark = {
107
+ color: {
108
+ danger: "#ef4444",
109
+ info: "#3b82f6",
110
+ neutral: {
111
+ "100": "#f4f4f5",
112
+ "200": "#e4e4e7",
113
+ "300": "#d4d4d8",
114
+ "400": "#a1a1aa",
115
+ "50": "#fafafa",
116
+ "500": "#71717a",
117
+ "600": "#52525b",
118
+ "700": "#3f3f46",
119
+ "800": "#27272a",
120
+ "900": "#18181b"
121
+ },
122
+ primary: {
123
+ "100": "#dbeafe",
124
+ "200": "#bfdbfe",
125
+ "300": "#93c5fd",
126
+ "400": "#60a5fa",
127
+ "50": "#f0f7ff",
128
+ "500": "#3b82f6",
129
+ "600": "#2563eb",
130
+ "700": "#1d4ed8",
131
+ "800": "#1e40af",
132
+ "900": "#1e3a8a"
133
+ },
134
+ success: "#22c55e",
135
+ warning: "#f59e0b"
136
+ },
137
+ fontSize: {
138
+ "2xl": "24px",
139
+ "3xl": "30px",
140
+ "4xl": "36px",
141
+ lg: "18px",
142
+ md: "16px",
143
+ sm: "14px",
144
+ xl: "20px",
145
+ xs: "12px"
146
+ },
147
+ fontWeight: {
148
+ bold: "700",
149
+ medium: "500",
150
+ regular: "400",
151
+ semibold: "600"
152
+ },
153
+ lineHeight: {
154
+ normal: "1.4",
155
+ relaxed: "1.6",
156
+ tight: "1.2"
157
+ },
158
+ radius: {
159
+ "2xl": "16px",
160
+ full: "9999px",
161
+ lg: "8px",
162
+ md: "6px",
163
+ none: "0px",
164
+ sm: "4px",
165
+ xl: "12px"
166
+ },
167
+ semantic: {
168
+ background: {
169
+ default: "#18181b",
170
+ elevated: "#3f3f46",
171
+ subtle: "#27272a"
172
+ },
173
+ border: {
174
+ default: "#3f3f46",
175
+ strong: "#52525b"
176
+ },
177
+ interactive: {
178
+ destructive: "#ef4444",
179
+ primary: "#60a5fa",
180
+ primaryHover: "#93c5fd",
181
+ primaryPressed: "#bfdbfe"
182
+ },
183
+ text: {
184
+ default: "#fafafa",
185
+ inverted: "#18181b",
186
+ muted: "#a1a1aa"
187
+ }
188
+ },
189
+ shadow: {
190
+ lg: "0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)",
191
+ md: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)",
192
+ sm: "0 1px 2px 0 rgba(0, 0, 0, 0.05)"
193
+ },
194
+ spacing: {
195
+ "0": "0px",
196
+ "1": "4px",
197
+ "10": "40px",
198
+ "12": "48px",
199
+ "16": "64px",
200
+ "2": "8px",
201
+ "20": "80px",
202
+ "24": "96px",
203
+ "3": "12px",
204
+ "4": "16px",
205
+ "5": "20px",
206
+ "6": "24px",
207
+ "8": "32px"
208
+ }
209
+ };
210
+
211
+ export { theme, themeDark };
212
+ //# sourceMappingURL=chunk-JGH6Z5LM.js.map
213
+ //# sourceMappingURL=chunk-JGH6Z5LM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../tokens/build/theme.ts"],"names":[],"mappings":";AAMO,IAAM,KAAA,GAAQ;AAAA,EACjB,KAAA,EAAO;AAAA,IACH,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS;AAAA,MACL,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO;AAAA,KACX;AAAA,IACA,OAAA,EAAS;AAAA,MACL,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO;AAAA,KACX;AAAA,IACA,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACN,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACR;AAAA,EACA,UAAA,EAAY;AAAA,IACR,IAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAQ,KAAA;AAAA,IACR,OAAA,EAAS,KAAA;AAAA,IACT,QAAA,EAAU;AAAA,GACd;AAAA,EACA,UAAA,EAAY;AAAA,IACR,MAAA,EAAQ,KAAA;AAAA,IACR,OAAA,EAAS,KAAA;AAAA,IACT,KAAA,EAAO;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACJ,KAAA,EAAO,MAAA;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,EAAA,EAAI,KAAA;AAAA,IACJ,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,KAAA;AAAA,IACN,EAAA,EAAI,KAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACR;AAAA,EACA,QAAA,EAAU;AAAA,IACN,UAAA,EAAY;AAAA,MACR,OAAA,EAAS,SAAA;AAAA,MACT,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACZ;AAAA,IACA,MAAA,EAAQ;AAAA,MACJ,OAAA,EAAS,SAAA;AAAA,MACT,MAAA,EAAQ;AAAA,KACZ;AAAA,IACA,WAAA,EAAa;AAAA,MACT,WAAA,EAAa,SAAA;AAAA,MACb,OAAA,EAAS,SAAA;AAAA,MACT,YAAA,EAAc,SAAA;AAAA,MACd,cAAA,EAAgB;AAAA,KACpB;AAAA,IACA,IAAA,EAAM;AAAA,MACF,OAAA,EAAS,SAAA;AAAA,MACT,QAAA,EAAU,SAAA;AAAA,MACV,KAAA,EAAO;AAAA;AACX,GACJ;AAAA,EACA,MAAA,EAAQ;AAAA,IACJ,EAAA,EAAI,wEAAA;AAAA,IACJ,EAAA,EAAI,sEAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACR;AAAA,EACA,OAAA,EAAS;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,GAAA,EAAK,KAAA;AAAA,IACL,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK;AAAA;AAEb;AASO,IAAM,SAAA,GAAY;AAAA,EACrB,KAAA,EAAO;AAAA,IACH,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS;AAAA,MACL,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO;AAAA,KACX;AAAA,IACA,OAAA,EAAS;AAAA,MACL,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO;AAAA,KACX;AAAA,IACA,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACN,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACR;AAAA,EACA,UAAA,EAAY;AAAA,IACR,IAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAQ,KAAA;AAAA,IACR,OAAA,EAAS,KAAA;AAAA,IACT,QAAA,EAAU;AAAA,GACd;AAAA,EACA,UAAA,EAAY;AAAA,IACR,MAAA,EAAQ,KAAA;AAAA,IACR,OAAA,EAAS,KAAA;AAAA,IACT,KAAA,EAAO;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACJ,KAAA,EAAO,MAAA;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,EAAA,EAAI,KAAA;AAAA,IACJ,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,KAAA;AAAA,IACN,EAAA,EAAI,KAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACR;AAAA,EACA,QAAA,EAAU;AAAA,IACN,UAAA,EAAY;AAAA,MACR,OAAA,EAAS,SAAA;AAAA,MACT,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACZ;AAAA,IACA,MAAA,EAAQ;AAAA,MACJ,OAAA,EAAS,SAAA;AAAA,MACT,MAAA,EAAQ;AAAA,KACZ;AAAA,IACA,WAAA,EAAa;AAAA,MACT,WAAA,EAAa,SAAA;AAAA,MACb,OAAA,EAAS,SAAA;AAAA,MACT,YAAA,EAAc,SAAA;AAAA,MACd,cAAA,EAAgB;AAAA,KACpB;AAAA,IACA,IAAA,EAAM;AAAA,MACF,OAAA,EAAS,SAAA;AAAA,MACT,QAAA,EAAU,SAAA;AAAA,MACV,KAAA,EAAO;AAAA;AACX,GACJ;AAAA,EACA,MAAA,EAAQ;AAAA,IACJ,EAAA,EAAI,wEAAA;AAAA,IACJ,EAAA,EAAI,sEAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACR;AAAA,EACA,OAAA,EAAS;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,GAAA,EAAK,KAAA;AAAA,IACL,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK;AAAA;AAEb","file":"chunk-JGH6Z5LM.js","sourcesContent":["// GENERATED by @nori-ui/tokens — DO NOT EDIT.\n// Run `yarn build:tokens` to regenerate.\n\n// Generated for light mode.\n// Do not edit — run `yarn build:tokens`.\n\nexport const theme = {\n color: {\n danger: \"#ef4444\",\n info: \"#3b82f6\",\n neutral: {\n \"100\": \"#f4f4f5\",\n \"200\": \"#e4e4e7\",\n \"300\": \"#d4d4d8\",\n \"400\": \"#a1a1aa\",\n \"50\": \"#fafafa\",\n \"500\": \"#71717a\",\n \"600\": \"#52525b\",\n \"700\": \"#3f3f46\",\n \"800\": \"#27272a\",\n \"900\": \"#18181b\",\n },\n primary: {\n \"100\": \"#dbeafe\",\n \"200\": \"#bfdbfe\",\n \"300\": \"#93c5fd\",\n \"400\": \"#60a5fa\",\n \"50\": \"#f0f7ff\",\n \"500\": \"#3b82f6\",\n \"600\": \"#2563eb\",\n \"700\": \"#1d4ed8\",\n \"800\": \"#1e40af\",\n \"900\": \"#1e3a8a\",\n },\n success: \"#22c55e\",\n warning: \"#f59e0b\",\n },\n fontSize: {\n \"2xl\": \"24px\",\n \"3xl\": \"30px\",\n \"4xl\": \"36px\",\n lg: \"18px\",\n md: \"16px\",\n sm: \"14px\",\n xl: \"20px\",\n xs: \"12px\",\n },\n fontWeight: {\n bold: \"700\",\n medium: \"500\",\n regular: \"400\",\n semibold: \"600\",\n },\n lineHeight: {\n normal: \"1.4\",\n relaxed: \"1.6\",\n tight: \"1.2\",\n },\n radius: {\n \"2xl\": \"16px\",\n full: \"9999px\",\n lg: \"8px\",\n md: \"6px\",\n none: \"0px\",\n sm: \"4px\",\n xl: \"12px\",\n },\n semantic: {\n background: {\n default: \"#fafafa\",\n elevated: \"#ffffff\",\n subtle: \"#f4f4f5\",\n },\n border: {\n default: \"#e4e4e7\",\n strong: \"#d4d4d8\",\n },\n interactive: {\n destructive: \"#ef4444\",\n primary: \"#2563eb\",\n primaryHover: \"#1d4ed8\",\n primaryPressed: \"#1e40af\",\n },\n text: {\n default: \"#18181b\",\n inverted: \"#fafafa\",\n muted: \"#52525b\",\n },\n },\n shadow: {\n lg: \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)\",\n md: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n sm: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n },\n spacing: {\n \"0\": \"0px\",\n \"1\": \"4px\",\n \"10\": \"40px\",\n \"12\": \"48px\",\n \"16\": \"64px\",\n \"2\": \"8px\",\n \"20\": \"80px\",\n \"24\": \"96px\",\n \"3\": \"12px\",\n \"4\": \"16px\",\n \"5\": \"20px\",\n \"6\": \"24px\",\n \"8\": \"32px\",\n },\n} as const;\n\nexport type Theme = typeof theme;\n\n\n// Dark mode overrides\n// Generated for dark mode.\n// Do not edit — run `yarn build:tokens`.\n\nexport const themeDark = {\n color: {\n danger: \"#ef4444\",\n info: \"#3b82f6\",\n neutral: {\n \"100\": \"#f4f4f5\",\n \"200\": \"#e4e4e7\",\n \"300\": \"#d4d4d8\",\n \"400\": \"#a1a1aa\",\n \"50\": \"#fafafa\",\n \"500\": \"#71717a\",\n \"600\": \"#52525b\",\n \"700\": \"#3f3f46\",\n \"800\": \"#27272a\",\n \"900\": \"#18181b\",\n },\n primary: {\n \"100\": \"#dbeafe\",\n \"200\": \"#bfdbfe\",\n \"300\": \"#93c5fd\",\n \"400\": \"#60a5fa\",\n \"50\": \"#f0f7ff\",\n \"500\": \"#3b82f6\",\n \"600\": \"#2563eb\",\n \"700\": \"#1d4ed8\",\n \"800\": \"#1e40af\",\n \"900\": \"#1e3a8a\",\n },\n success: \"#22c55e\",\n warning: \"#f59e0b\",\n },\n fontSize: {\n \"2xl\": \"24px\",\n \"3xl\": \"30px\",\n \"4xl\": \"36px\",\n lg: \"18px\",\n md: \"16px\",\n sm: \"14px\",\n xl: \"20px\",\n xs: \"12px\",\n },\n fontWeight: {\n bold: \"700\",\n medium: \"500\",\n regular: \"400\",\n semibold: \"600\",\n },\n lineHeight: {\n normal: \"1.4\",\n relaxed: \"1.6\",\n tight: \"1.2\",\n },\n radius: {\n \"2xl\": \"16px\",\n full: \"9999px\",\n lg: \"8px\",\n md: \"6px\",\n none: \"0px\",\n sm: \"4px\",\n xl: \"12px\",\n },\n semantic: {\n background: {\n default: \"#18181b\",\n elevated: \"#3f3f46\",\n subtle: \"#27272a\",\n },\n border: {\n default: \"#3f3f46\",\n strong: \"#52525b\",\n },\n interactive: {\n destructive: \"#ef4444\",\n primary: \"#60a5fa\",\n primaryHover: \"#93c5fd\",\n primaryPressed: \"#bfdbfe\",\n },\n text: {\n default: \"#fafafa\",\n inverted: \"#18181b\",\n muted: \"#a1a1aa\",\n },\n },\n shadow: {\n lg: \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)\",\n md: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n sm: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n },\n spacing: {\n \"0\": \"0px\",\n \"1\": \"4px\",\n \"10\": \"40px\",\n \"12\": \"48px\",\n \"16\": \"64px\",\n \"2\": \"8px\",\n \"20\": \"80px\",\n \"24\": \"96px\",\n \"3\": \"12px\",\n \"4\": \"16px\",\n \"5\": \"20px\",\n \"6\": \"24px\",\n \"8\": \"32px\",\n },\n} as const;\n\n"]}
@@ -0,0 +1,40 @@
1
+ import { __name } from './chunk-7QVYU63E.js';
2
+ import { jsx } from 'nativewind/jsx-runtime';
3
+
4
+ var make = /* @__PURE__ */ __name((path) => /* @__PURE__ */ __name(function PlaceholderIcon({ size = 20, color = "currentColor" }) {
5
+ return /* @__PURE__ */ jsx(
6
+ "svg",
7
+ {
8
+ width: size,
9
+ height: size,
10
+ viewBox: "0 0 24 24",
11
+ fill: "none",
12
+ stroke: color,
13
+ strokeWidth: "2",
14
+ strokeLinecap: "round",
15
+ strokeLinejoin: "round",
16
+ "aria-hidden": "true",
17
+ children: /* @__PURE__ */ jsx("path", { d: path })
18
+ }
19
+ );
20
+ }, "PlaceholderIcon"), "make");
21
+ var defaultSemanticIcons = {
22
+ checkmark: make("M20 6 9 17l-5-5"),
23
+ close: make("M18 6 6 18 M6 6l12 12"),
24
+ eye: make("M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z M12 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6z"),
25
+ eyeOff: make("M17.94 17.94A10 10 0 0 1 2 12s3.5-7 10-7c2 0 3.8.6 5.4 1.5 M1 1l22 22"),
26
+ chevronDown: make("m6 9 6 6 6-6"),
27
+ chevronUp: make("m18 15-6-6-6 6"),
28
+ alertTriangle: make(
29
+ "M12 9v4 M12 17h.01 M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"
30
+ ),
31
+ info: make(
32
+ "M12 8h.01 M11 12h1v4h1 M12 22C6.48 22 2 17.52 2 12 2 6.48 6.48 2 12 2c5.52 0 10 4.48 10 10 0 5.52-4.48 10-10 10z"
33
+ ),
34
+ check: make("M20 6 9 17l-5-5"),
35
+ x: make("M18 6 6 18 M6 6l12 12")
36
+ };
37
+
38
+ export { defaultSemanticIcons };
39
+ //# sourceMappingURL=chunk-NDEDMCHT.js.map
40
+ //# sourceMappingURL=chunk-NDEDMCHT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icons/default-semantic-icons.tsx"],"names":[],"mappings":";;;AAcA,IAAM,IAAA,mBAAO,MAAA,CAAA,CAAC,IAAA,qBACV,MAAA,CAAA,SAAS,eAAA,CAAgB,EAAE,IAAA,GAAO,EAAA,EAAI,KAAA,GAAQ,cAAA,EAAe,EAAG;AAC5D,EAAA,uBACI,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,KAAA,EAAO,IAAA;AAAA,MACP,MAAA,EAAQ,IAAA;AAAA,MACR,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA,EAAY,GAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,aAAA,EAAY,MAAA;AAAA,MAEZ,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAG,IAAA,EAAM;AAAA;AAAA,GACnB;AAER,CAAA,EAhBA,iBAAA,CAAA,EADS,MAAA,CAAA;AAgCN,IAAM,oBAAA,GAAsC;AAAA,EAC/C,SAAA,EAAW,KAAK,iBAAiB,CAAA;AAAA,EACjC,KAAA,EAAO,KAAK,uBAAuB,CAAA;AAAA,EACnC,GAAA,EAAK,KAAK,qFAAqF,CAAA;AAAA,EAC/F,MAAA,EAAQ,KAAK,uEAAuE,CAAA;AAAA,EACpF,WAAA,EAAa,KAAK,cAAc,CAAA;AAAA,EAChC,SAAA,EAAW,KAAK,gBAAgB,CAAA;AAAA,EAChC,aAAA,EAAe,IAAA;AAAA,IACX;AAAA,GACJ;AAAA,EACA,IAAA,EAAM,IAAA;AAAA,IACF;AAAA,GACJ;AAAA,EACA,KAAA,EAAO,KAAK,iBAAiB,CAAA;AAAA,EAC7B,CAAA,EAAG,KAAK,uBAAuB;AACnC","file":"chunk-NDEDMCHT.js","sourcesContent":["// default-semantic-icons — minimal built-in SVG placeholders for internal\n// library glyphs. Consumers can swap each one via the provider:\n//\n// <NoriProvider icons={{ checkmark: MyCheck, close: MyX }}>\n//\n// These defaults exist so the library renders usable UI out of the box even when\n// lucide-react(-native) is not installed. They are NOT intended to compete with\n// Lucide on style — override them to match your design system.\n\nimport type { ComponentType } from 'react';\nimport type { IconComponentProps } from './icon';\n\ntype SemanticIcon = ComponentType<IconComponentProps>;\n\nconst make = (path: string): SemanticIcon =>\n function PlaceholderIcon({ size = 20, color = 'currentColor' }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d={path} />\n </svg>\n );\n };\n\nexport type SemanticIcons = {\n checkmark: SemanticIcon;\n close: SemanticIcon;\n eye: SemanticIcon;\n eyeOff: SemanticIcon;\n chevronDown: SemanticIcon;\n chevronUp: SemanticIcon;\n alertTriangle: SemanticIcon;\n info: SemanticIcon;\n check: SemanticIcon;\n x: SemanticIcon;\n};\n\nexport const defaultSemanticIcons: SemanticIcons = {\n checkmark: make('M20 6 9 17l-5-5'),\n close: make('M18 6 6 18 M6 6l12 12'),\n eye: make('M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z M12 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6z'),\n eyeOff: make('M17.94 17.94A10 10 0 0 1 2 12s3.5-7 10-7c2 0 3.8.6 5.4 1.5 M1 1l22 22'),\n chevronDown: make('m6 9 6 6 6-6'),\n chevronUp: make('m18 15-6-6-6 6'),\n alertTriangle: make(\n 'M12 9v4 M12 17h.01 M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z'\n ),\n info: make(\n 'M12 8h.01 M11 12h1v4h1 M12 22C6.48 22 2 17.52 2 12 2 6.48 6.48 2 12 2c5.52 0 10 4.48 10 10 0 5.52-4.48 10-10 10z'\n ),\n check: make('M20 6 9 17l-5-5'),\n x: make('M18 6 6 18 M6 6l12 12'),\n};\n"]}
@@ -0,0 +1,19 @@
1
+ import { __name } from './chunk-7QVYU63E.js';
2
+ import { jsx } from 'nativewind/jsx-runtime';
3
+
4
+ var SIZE_MAP = {
5
+ sm: 16,
6
+ md: 20,
7
+ lg: 24,
8
+ xl: 32
9
+ };
10
+ function Icon({ as: IconComponent, size = "md", color }) {
11
+ const numericSize = typeof size === "number" ? size : SIZE_MAP[size];
12
+ const colorProps = color === void 0 ? {} : { color };
13
+ return /* @__PURE__ */ jsx(IconComponent, { size: numericSize, ...colorProps });
14
+ }
15
+ __name(Icon, "Icon");
16
+
17
+ export { Icon };
18
+ //# sourceMappingURL=chunk-RX7UULY3.js.map
19
+ //# sourceMappingURL=chunk-RX7UULY3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icons/icon.tsx"],"names":[],"mappings":";;;AAeA,IAAM,QAAA,GAAsD;AAAA,EACxD,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI;AACR,CAAA;AASO,SAAS,KAAK,EAAE,EAAA,EAAI,eAAe,IAAA,GAAO,IAAA,EAAM,OAAM,EAAc;AACvE,EAAA,MAAM,cAAc,OAAO,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,SAAS,IAAI,CAAA;AAGnE,EAAA,MAAM,aAAa,KAAA,KAAU,MAAA,GAAY,EAAC,GAAI,EAAE,KAAA,EAAM;AACtD,EAAA,uBAAO,GAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAM,WAAA,EAAc,GAAG,UAAA,EAAY,CAAA;AAC7D;AANgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA","file":"chunk-RX7UULY3.js","sourcesContent":["import type { ComponentType } from 'react';\n\nexport type IconSize = 'sm' | 'md' | 'lg' | 'xl' | number;\n\nexport type IconComponentProps = {\n size?: number;\n color?: string;\n};\n\nexport type IconProps = {\n as: ComponentType<IconComponentProps>;\n size?: IconSize;\n color?: string;\n};\n\nconst SIZE_MAP: Record<Exclude<IconSize, number>, number> = {\n sm: 16,\n md: 20,\n lg: 24,\n xl: 32,\n};\n\n/**\n * Thin wrapper around an icon component. Consumer imports the icon they want\n * from any library (e.g. lucide-react-native) and passes it as `as`. No registry,\n * no runtime lookup — tree-shaking is automatic.\n *\n * RSC-safe: pure render, no hooks, no refs.\n */\nexport function Icon({ as: IconComponent, size = 'md', color }: IconProps) {\n const numericSize = typeof size === 'number' ? size : SIZE_MAP[size];\n // Only spread color when defined — avoids passing `color: undefined` under\n // exactOptionalPropertyTypes.\n const colorProps = color === undefined ? {} : { color };\n return <IconComponent size={numericSize} {...colorProps} />;\n}\n"]}
@@ -0,0 +1,66 @@
1
+ import { __name } from './chunk-7QVYU63E.js';
2
+
3
+ // src/i18n/default-dictionary.ts
4
+ var defaultDictionary = {
5
+ // generic / shared
6
+ "common.cancel": "Cancel",
7
+ "common.confirm": "Confirm",
8
+ "common.close": "Close",
9
+ "common.back": "Back",
10
+ "common.loading": "Loading",
11
+ "common.error": "Something went wrong",
12
+ "common.retry": "Try again",
13
+ // button
14
+ "button.loadingLabel": "Loading",
15
+ // input
16
+ "input.clear": "Clear",
17
+ "input.passwordShow": "Show password",
18
+ "input.passwordHide": "Hide password",
19
+ // checkbox / switch
20
+ "checkbox.checked": "Checked",
21
+ "checkbox.unchecked": "Unchecked",
22
+ "switch.on": "On",
23
+ "switch.off": "Off"
24
+ };
25
+
26
+ // src/i18n/resolve.ts
27
+ function resolveI18n(input, defaults) {
28
+ if (typeof input === "function") {
29
+ return (keyOrKeys, options) => input(keyOrKeys, options);
30
+ }
31
+ const dict = input ?? {};
32
+ return (keyOrKeys, options) => {
33
+ const keys = Array.isArray(keyOrKeys) ? keyOrKeys : [keyOrKeys];
34
+ for (const rawKey of keys) {
35
+ const key = pluralize(rawKey, options?.count);
36
+ const template = dict[key] ?? defaults[key];
37
+ if (template !== void 0) {
38
+ return interpolate(template, options);
39
+ }
40
+ }
41
+ const lastKey = keys[keys.length - 1];
42
+ if (options?.defaultValue !== void 0) {
43
+ return interpolate(options.defaultValue, options);
44
+ }
45
+ return lastKey ?? "";
46
+ };
47
+ }
48
+ __name(resolveI18n, "resolveI18n");
49
+ function pluralize(key, count) {
50
+ if (count === void 0) return key;
51
+ if (count === 1) return `${key}_one`;
52
+ return `${key}_other`;
53
+ }
54
+ __name(pluralize, "pluralize");
55
+ function interpolate(template, options) {
56
+ if (!options) return template;
57
+ return template.replace(/\{\{\s*([A-Za-z0-9_.-]+)\s*\}\}/g, (_match, name) => {
58
+ const value = options[name];
59
+ return value === void 0 || value === null ? "" : String(value);
60
+ });
61
+ }
62
+ __name(interpolate, "interpolate");
63
+
64
+ export { defaultDictionary, resolveI18n };
65
+ //# sourceMappingURL=chunk-SSTXLK5I.js.map
66
+ //# sourceMappingURL=chunk-SSTXLK5I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i18n/default-dictionary.ts","../src/i18n/resolve.ts"],"names":[],"mappings":";;;AAWO,IAAM,iBAAA,GAAgC;AAAA;AAAA,EAEzC,eAAA,EAAiB,QAAA;AAAA,EACjB,gBAAA,EAAkB,SAAA;AAAA,EAClB,cAAA,EAAgB,OAAA;AAAA,EAChB,aAAA,EAAe,MAAA;AAAA,EACf,gBAAA,EAAkB,SAAA;AAAA,EAClB,cAAA,EAAgB,sBAAA;AAAA,EAChB,cAAA,EAAgB,WAAA;AAAA;AAAA,EAGhB,qBAAA,EAAuB,SAAA;AAAA;AAAA,EAGvB,aAAA,EAAe,OAAA;AAAA,EACf,oBAAA,EAAsB,eAAA;AAAA,EACtB,oBAAA,EAAsB,eAAA;AAAA;AAAA,EAGtB,kBAAA,EAAoB,SAAA;AAAA,EACpB,oBAAA,EAAsB,WAAA;AAAA,EACtB,WAAA,EAAa,IAAA;AAAA,EACb,YAAA,EAAc;AAClB;;;ACrBO,SAAS,WAAA,CAAY,OAAkB,QAAA,EAAmC;AAC7E,EAAA,IAAI,OAAO,UAAU,UAAA,EAAY;AAI7B,IAAA,OAAO,CAAC,SAAA,EAAW,OAAA,KAAY,KAAA,CAAM,WAAW,OAAO,CAAA;AAAA,EAC3D;AAEA,EAAA,MAAM,IAAA,GAAO,SAAS,EAAC;AAEvB,EAAA,OAAO,CAAC,WAAW,OAAA,KAAY;AAC3B,IAAA,MAAM,OAAO,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,GAAI,SAAA,GAAY,CAAC,SAAS,CAAA;AAC9D,IAAA,KAAA,MAAW,UAAU,IAAA,EAAM;AACvB,MAAA,MAAM,GAAA,GAAM,SAAA,CAAU,MAAA,EAAQ,OAAA,EAAS,KAAK,CAAA;AAC5C,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAG,CAAA,IAAK,SAAS,GAAG,CAAA;AAC1C,MAAA,IAAI,aAAa,MAAA,EAAW;AACxB,QAAA,OAAO,WAAA,CAAY,UAAU,OAAO,CAAA;AAAA,MACxC;AAAA,IACJ;AAEA,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AACpC,IAAA,IAAI,OAAA,EAAS,iBAAiB,MAAA,EAAW;AACrC,MAAA,OAAO,WAAA,CAAY,OAAA,CAAQ,YAAA,EAAc,OAAO,CAAA;AAAA,IACpD;AACA,IAAA,OAAO,OAAA,IAAW,EAAA;AAAA,EACtB,CAAA;AACJ;AA1BgB,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;AA4BhB,SAAS,SAAA,CAAU,KAAa,KAAA,EAAmC;AAC/D,EAAA,IAAI,KAAA,KAAU,QAAW,OAAO,GAAA;AAEhC,EAAA,IAAI,KAAA,KAAU,CAAA,EAAG,OAAO,CAAA,EAAG,GAAG,CAAA,IAAA,CAAA;AAC9B,EAAA,OAAO,GAAG,GAAG,CAAA,MAAA,CAAA;AACjB;AALS,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;AAOT,SAAS,WAAA,CAAY,UAAkB,OAAA,EAA0C;AAC7E,EAAA,IAAI,CAAC,SAAS,OAAO,QAAA;AACrB,EAAA,OAAO,QAAA,CAAS,OAAA,CAAQ,kCAAA,EAAoC,CAAC,QAAQ,IAAA,KAAiB;AAClF,IAAA,MAAM,KAAA,GAAQ,QAAQ,IAAI,CAAA;AAC1B,IAAA,OAAO,UAAU,MAAA,IAAa,KAAA,KAAU,IAAA,GAAO,EAAA,GAAK,OAAO,KAAK,CAAA;AAAA,EACpE,CAAC,CAAA;AACL;AANS,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA","file":"chunk-SSTXLK5I.js","sourcesContent":["import type { Dictionary } from './types';\n\n/**\n * Default English strings used by library components.\n *\n * Key naming convention:\n * <component>.<purpose>[_plural-form]\n *\n * Plural suffixes follow i18next: `_zero`, `_one`, `_two`, `_few`, `_many`, `_other`.\n * Interpolation uses `{{name}}` — double braces, no spaces, by convention.\n */\nexport const defaultDictionary: Dictionary = {\n // generic / shared\n 'common.cancel': 'Cancel',\n 'common.confirm': 'Confirm',\n 'common.close': 'Close',\n 'common.back': 'Back',\n 'common.loading': 'Loading',\n 'common.error': 'Something went wrong',\n 'common.retry': 'Try again',\n\n // button\n 'button.loadingLabel': 'Loading',\n\n // input\n 'input.clear': 'Clear',\n 'input.passwordShow': 'Show password',\n 'input.passwordHide': 'Hide password',\n\n // checkbox / switch\n 'checkbox.checked': 'Checked',\n 'checkbox.unchecked': 'Unchecked',\n 'switch.on': 'On',\n 'switch.off': 'Off',\n};\n","import type { Dictionary, I18nInput, I18nOptions, TranslateFn } from './types';\n\n/**\n * Normalizes the consumer's i18n input (undefined | dictionary | function) into a\n * uniform TranslateFn. Internal code only calls the returned function.\n *\n * Precedence for a given key lookup:\n * 1. consumer function (if provided) — called verbatim, no further fallback\n * 2. consumer dictionary (if provided)\n * 3. library defaults\n * 4. options.defaultValue\n * 5. the key itself (so missing strings are visible in dev, not silent)\n */\nexport function resolveI18n(input: I18nInput, defaults: Dictionary): TranslateFn {\n if (typeof input === 'function') {\n // Wrap so the consumer fn is always invoked with (key, options) — enables\n // Jest `toHaveBeenCalledWith(key, undefined)` assertions and mirrors i18next's\n // own call signature exactly.\n return (keyOrKeys, options) => input(keyOrKeys, options);\n }\n\n const dict = input ?? {};\n\n return (keyOrKeys, options) => {\n const keys = Array.isArray(keyOrKeys) ? keyOrKeys : [keyOrKeys];\n for (const rawKey of keys) {\n const key = pluralize(rawKey, options?.count);\n const template = dict[key] ?? defaults[key];\n if (template !== undefined) {\n return interpolate(template, options);\n }\n }\n // exhausted the key list\n const lastKey = keys[keys.length - 1];\n if (options?.defaultValue !== undefined) {\n return interpolate(options.defaultValue, options);\n }\n return lastKey ?? '';\n };\n}\n\nfunction pluralize(key: string, count: number | undefined): string {\n if (count === undefined) return key;\n // Minimal English pluralization — extend with ICU rules later if needed.\n if (count === 1) return `${key}_one`;\n return `${key}_other`;\n}\n\nfunction interpolate(template: string, options: I18nOptions | undefined): string {\n if (!options) return template;\n return template.replace(/\\{\\{\\s*([A-Za-z0-9_.-]+)\\s*\\}\\}/g, (_match, name: string) => {\n const value = options[name];\n return value === undefined || value === null ? '' : String(value);\n });\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import { __name } from './chunk-7QVYU63E.js';
2
+
3
+ // src/utils/cn.ts
4
+ function cn(...inputs) {
5
+ const out = [];
6
+ for (const input of inputs) append(out, input);
7
+ return out.join(" ");
8
+ }
9
+ __name(cn, "cn");
10
+ function append(out, input) {
11
+ if (!input) return;
12
+ if (typeof input === "string") {
13
+ if (input.length > 0) out.push(input);
14
+ return;
15
+ }
16
+ if (typeof input === "number") return;
17
+ if (Array.isArray(input)) {
18
+ for (const inner of input) append(out, inner);
19
+ return;
20
+ }
21
+ if (typeof input === "object") {
22
+ for (const key of Object.keys(input)) {
23
+ if (input[key]) out.push(key);
24
+ }
25
+ }
26
+ }
27
+ __name(append, "append");
28
+
29
+ export { cn };
30
+ //# sourceMappingURL=chunk-XGM2K4TT.js.map
31
+ //# sourceMappingURL=chunk-XGM2K4TT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/cn.ts"],"names":[],"mappings":";;;AAeO,SAAS,MAAM,MAAA,EAA8B;AAChD,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,KAAA,MAAW,KAAA,IAAS,MAAA,EAAQ,MAAA,CAAO,GAAA,EAAK,KAAK,CAAA;AAC7C,EAAA,OAAO,GAAA,CAAI,KAAK,GAAG,CAAA;AACvB;AAJgB,MAAA,CAAA,EAAA,EAAA,IAAA,CAAA;AAMhB,SAAS,MAAA,CAAO,KAAe,KAAA,EAAyB;AACpD,EAAA,IAAI,CAAC,KAAA,EAAO;AACZ,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,IAAA,IAAI,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,GAAA,CAAI,KAAK,KAAK,CAAA;AACpC,IAAA;AAAA,EACJ;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC/B,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,IAAA,KAAA,MAAW,KAAA,IAAS,KAAA,EAAO,MAAA,CAAO,GAAA,EAAK,KAAK,CAAA;AAC5C,IAAA;AAAA,EACJ;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,IAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,EAAG;AAClC,MAAA,IAAI,KAAA,CAAM,GAAG,CAAA,EAAG,GAAA,CAAI,KAAK,GAAG,CAAA;AAAA,IAChC;AAAA,EACJ;AACJ;AAhBS,MAAA,CAAA,MAAA,EAAA,QAAA,CAAA","file":"chunk-XGM2K4TT.js","sourcesContent":["// cn — class-name merger. clsx-compatible shape.\n//\n// Intentionally does NOT deduplicate Tailwind conflicts (e.g. \"text-sm text-lg\").\n// That's `tailwind-merge`'s job; we defer adding it until a component actually\n// needs it, to keep the core tree-shakable and the runtime zero-dep.\n\nexport type ClassInput =\n | string\n | number\n | boolean\n | null\n | undefined\n | ClassInput[]\n | Record<string, boolean | number | null | undefined>;\n\nexport function cn(...inputs: ClassInput[]): string {\n const out: string[] = [];\n for (const input of inputs) append(out, input);\n return out.join(' ');\n}\n\nfunction append(out: string[], input: ClassInput): void {\n if (!input) return;\n if (typeof input === 'string') {\n if (input.length > 0) out.push(input);\n return;\n }\n if (typeof input === 'number') return; // numbers are never class names\n if (Array.isArray(input)) {\n for (const inner of input) append(out, inner);\n return;\n }\n if (typeof input === 'object') {\n for (const key of Object.keys(input)) {\n if (input[key]) out.push(key);\n }\n }\n}\n"]}