@nori-ui/core 0.0.2 → 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.
@@ -209,5 +209,5 @@ var themeDark = {
209
209
  };
210
210
 
211
211
  export { theme, themeDark };
212
- //# sourceMappingURL=chunk-JGH6Z5LM.js.map
213
- //# sourceMappingURL=chunk-JGH6Z5LM.js.map
212
+ //# sourceMappingURL=chunk-6OABNXBY.js.map
213
+ //# sourceMappingURL=chunk-6OABNXBY.js.map
@@ -1 +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"]}
1
+ {"version":3,"sources":["../../tokens/build/theme.ts"],"names":[],"mappings":"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","file":"chunk-6OABNXBY.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,3 @@
1
+
2
+ //# sourceMappingURL=chunk-UAKFCMWK.js.map
3
+ //# sourceMappingURL=chunk-UAKFCMWK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-UAKFCMWK.js"}
@@ -1,3 +1,4 @@
1
+ import { theme } from './chunk-6OABNXBY.js';
1
2
  import { defaultSemanticIcons } from './chunk-NDEDMCHT.js';
2
3
  import { Slot } from './chunk-FXKIWONG.js';
3
4
  import { cn } from './chunk-XGM2K4TT.js';
@@ -45,6 +46,30 @@ var SIZE_CLASSES = {
45
46
  };
46
47
  var ICON_SIZE = { sm: 14, md: 16, lg: 20 };
47
48
  var BASE_CLASSES = "inline-flex flex-row items-center justify-center gap-2 rounded-md select-none";
49
+ var VARIANT_STYLES = {
50
+ primary: { backgroundColor: theme.color.primary["600"] },
51
+ secondary: { backgroundColor: theme.color.neutral["100"] },
52
+ ghost: { backgroundColor: "transparent" },
53
+ destructive: { backgroundColor: theme.color.danger }
54
+ };
55
+ var VARIANT_TEXT_COLOR = {
56
+ primary: "#ffffff",
57
+ secondary: theme.color.neutral["900"],
58
+ ghost: theme.color.neutral["900"],
59
+ destructive: "#ffffff"
60
+ };
61
+ var SIZE_STYLES = {
62
+ sm: { container: { height: 32, paddingHorizontal: 12 }, text: { fontSize: 14 } },
63
+ md: { container: { height: 40, paddingHorizontal: 16 }, text: { fontSize: 16 } },
64
+ lg: { container: { height: 48, paddingHorizontal: 20 }, text: { fontSize: 18 } }
65
+ };
66
+ var BASE_STYLE = {
67
+ flexDirection: "row",
68
+ alignItems: "center",
69
+ justifyContent: "center",
70
+ gap: 8,
71
+ borderRadius: 6
72
+ };
48
73
  var Button = forwardRef(/* @__PURE__ */ __name(function Button2({
49
74
  children,
50
75
  variant = "primary",
@@ -57,6 +82,7 @@ var Button = forwardRef(/* @__PURE__ */ __name(function Button2({
57
82
  className,
58
83
  onPress,
59
84
  testID,
85
+ style,
60
86
  ...rest
61
87
  }, forwardedRef) {
62
88
  const isInoperative = Boolean(disabled) || Boolean(loading);
@@ -67,6 +93,16 @@ var Button = forwardRef(/* @__PURE__ */ __name(function Button2({
67
93
  isInoperative ? "opacity-60" : void 0,
68
94
  className
69
95
  );
96
+ const baseInlineStyle = [
97
+ BASE_STYLE,
98
+ VARIANT_STYLES[variant],
99
+ SIZE_STYLES[size].container,
100
+ isInoperative ? { opacity: 0.6 } : null
101
+ ];
102
+ const pressableStyle = typeof style === "function" ? (state) => [baseInlineStyle, style(state)] : [baseInlineStyle, style];
103
+ const slotStyle = [baseInlineStyle, typeof style === "function" ? null : style];
104
+ const textColor = VARIANT_TEXT_COLOR[variant];
105
+ const textStyle = { color: textColor, fontSize: SIZE_STYLES[size].text.fontSize, fontWeight: "500" };
70
106
  const handlePress = /* @__PURE__ */ __name((ev) => {
71
107
  if (isInoperative) return;
72
108
  onPress?.(ev);
@@ -75,6 +111,7 @@ var Button = forwardRef(/* @__PURE__ */ __name(function Button2({
75
111
  const slotProps = {
76
112
  ref: forwardedRef,
77
113
  className: classes,
114
+ style: slotStyle,
78
115
  onClick: handlePress,
79
116
  ...rest
80
117
  };
@@ -97,12 +134,20 @@ var Button = forwardRef(/* @__PURE__ */ __name(function Button2({
97
134
  disabled: isInoperative,
98
135
  onPress: handlePress,
99
136
  className: classes,
137
+ style: pressableStyle,
100
138
  ...pressableExtra,
101
139
  ...rest,
102
140
  children: [
103
- loading ? /* @__PURE__ */ jsx(Spinner, { size: ICON_SIZE[size], label: "Loading" }) : LeadingIcon ? /* @__PURE__ */ jsx(LeadingIcon, { size: ICON_SIZE[size] }) : null,
104
- /* @__PURE__ */ jsx(Text$1, { className: cn("font-medium", SIZE_CLASSES[size].includes("text-") ? void 0 : "text-md"), children }),
105
- TrailingIcon ? /* @__PURE__ */ jsx(TrailingIcon, { size: ICON_SIZE[size] }) : null
141
+ loading ? /* @__PURE__ */ jsx(Spinner, { size: ICON_SIZE[size], label: "Loading", color: textColor }) : LeadingIcon ? /* @__PURE__ */ jsx(LeadingIcon, { size: ICON_SIZE[size], color: textColor }) : null,
142
+ /* @__PURE__ */ jsx(
143
+ Text$1,
144
+ {
145
+ className: cn("font-medium", SIZE_CLASSES[size].includes("text-") ? void 0 : "text-md"),
146
+ style: textStyle,
147
+ children
148
+ }
149
+ ),
150
+ TrailingIcon ? /* @__PURE__ */ jsx(TrailingIcon, { size: ICON_SIZE[size], color: textColor }) : null
106
151
  ]
107
152
  }
108
153
  );
@@ -120,6 +165,21 @@ function useSemanticIcon(name) {
120
165
  return icons[name];
121
166
  }
122
167
  __name(useSemanticIcon, "useSemanticIcon");
168
+ var ROW_STYLE = { flexDirection: "row", alignItems: "center", gap: 8 };
169
+ var BOX_STYLE = {
170
+ width: 20,
171
+ height: 20,
172
+ borderRadius: 4,
173
+ borderWidth: 1,
174
+ borderColor: theme.color.neutral["300"],
175
+ backgroundColor: "#ffffff",
176
+ alignItems: "center",
177
+ justifyContent: "center"
178
+ };
179
+ var BOX_STYLE_CHECKED = {
180
+ backgroundColor: theme.color.primary["600"],
181
+ borderColor: theme.color.primary["600"]
182
+ };
123
183
  function Checkbox({
124
184
  checked,
125
185
  defaultChecked = false,
@@ -136,6 +196,7 @@ function Checkbox({
136
196
  const isControlled = checked !== void 0;
137
197
  const value = isControlled ? Boolean(checked) : inner;
138
198
  const ariaChecked = indeterminate ? "mixed" : value ? "true" : "false";
199
+ const isMarked = value || Boolean(indeterminate);
139
200
  const toggle = useCallback(() => {
140
201
  if (disabled) return;
141
202
  const next = !value;
@@ -168,10 +229,26 @@ function Checkbox({
168
229
  return /* @__PURE__ */ jsx(Slot, { ...slotProps, children });
169
230
  }
170
231
  const boxClasses = cn("w-5 h-5 rounded-sm border border-semantic-border-strong items-center justify-center");
171
- return /* @__PURE__ */ jsxs(View, { className: cn("flex-row items-center gap-2", disabled ? "opacity-60" : void 0, className), children: [
172
- /* @__PURE__ */ jsx(Pressable, { onPress: toggle, ...commonProps, className: boxClasses, children: (value || indeterminate) && !disabled ? /* @__PURE__ */ jsx(Check, { size: 14, color: "currentColor" }) : null }),
173
- children ?? (label !== void 0 ? /* @__PURE__ */ jsx(View, { children: label }) : null)
174
- ] });
232
+ return /* @__PURE__ */ jsxs(
233
+ View,
234
+ {
235
+ className: cn("flex-row items-center gap-2", disabled ? "opacity-60" : void 0, className),
236
+ style: [ROW_STYLE, disabled ? { opacity: 0.6 } : null],
237
+ children: [
238
+ /* @__PURE__ */ jsx(
239
+ Pressable,
240
+ {
241
+ onPress: toggle,
242
+ ...commonProps,
243
+ className: boxClasses,
244
+ style: [BOX_STYLE, isMarked && !disabled ? BOX_STYLE_CHECKED : null],
245
+ children: isMarked && !disabled ? /* @__PURE__ */ jsx(Check, { size: 14, color: "#ffffff" }) : null
246
+ }
247
+ ),
248
+ children ?? (label !== void 0 ? /* @__PURE__ */ jsx(Text$1, { style: { color: theme.color.neutral["900"], fontSize: 16 }, children: label }) : null)
249
+ ]
250
+ }
251
+ );
175
252
  }
176
253
  __name(Checkbox, "Checkbox");
177
254
  var ALIGN_CLASS = {
@@ -206,6 +283,25 @@ function HStack({ gap, align, justify, className, children, ...rest }) {
206
283
  );
207
284
  }
208
285
  __name(HStack, "HStack");
286
+ var ROW_STYLE2 = { flexDirection: "row", alignItems: "center", gap: 8 };
287
+ var TRACK_BASE = {
288
+ width: 40,
289
+ height: 24,
290
+ borderRadius: 12,
291
+ justifyContent: "center",
292
+ paddingHorizontal: 2
293
+ };
294
+ var THUMB_STYLE = {
295
+ width: 20,
296
+ height: 20,
297
+ borderRadius: 10,
298
+ backgroundColor: "#ffffff",
299
+ shadowColor: "#000",
300
+ shadowOpacity: 0.15,
301
+ shadowRadius: 2,
302
+ shadowOffset: { width: 0, height: 1 },
303
+ elevation: 2
304
+ };
209
305
  function Switch({
210
306
  checked,
211
307
  defaultChecked = false,
@@ -257,9 +353,22 @@ function Switch({
257
353
  disabled ? "opacity-60" : void 0
258
354
  );
259
355
  const thumbClasses = cn("w-5 h-5 rounded-full bg-white shadow-sm", value ? "self-end" : "self-start");
260
- return /* @__PURE__ */ jsxs(View, { className: cn("flex-row items-center gap-2", className), children: [
261
- /* @__PURE__ */ jsx(Pressable, { onPress: toggle, ...commonProps, className: trackClasses, children: /* @__PURE__ */ jsx(View, { className: thumbClasses }) }),
262
- label ? /* @__PURE__ */ jsx(Text$1, { className: "text-md text-semantic-text-default", children: label }) : null,
356
+ const trackStyle = [
357
+ TRACK_BASE,
358
+ { backgroundColor: value ? theme.color.primary["600"] : theme.color.neutral["300"] },
359
+ disabled ? { opacity: 0.6 } : null
360
+ ];
361
+ const thumbStyle = [THUMB_STYLE, { alignSelf: value ? "flex-end" : "flex-start" }];
362
+ return /* @__PURE__ */ jsxs(View, { className: cn("flex-row items-center gap-2", className), style: ROW_STYLE2, children: [
363
+ /* @__PURE__ */ jsx(Pressable, { onPress: toggle, ...commonProps, className: trackClasses, style: trackStyle, children: /* @__PURE__ */ jsx(View, { className: thumbClasses, style: thumbStyle }) }),
364
+ label ? /* @__PURE__ */ jsx(
365
+ Text$1,
366
+ {
367
+ className: "text-md text-semantic-text-default",
368
+ style: { color: theme.color.neutral["900"], fontSize: 16 },
369
+ children: label
370
+ }
371
+ ) : null,
263
372
  children
264
373
  ] });
265
374
  }
@@ -289,6 +398,23 @@ function Text({ variant = "body-md", className, testID, children, ...rest }) {
289
398
  );
290
399
  }
291
400
  __name(Text, "Text");
401
+ var CONTAINER_STYLE = { flexDirection: "column", gap: 4 };
402
+ var LABEL_STYLE = { fontSize: 14, fontWeight: "500", color: theme.color.neutral["900"] };
403
+ var FIELD_BASE_STYLE = {
404
+ flexDirection: "row",
405
+ alignItems: "center",
406
+ borderRadius: 6,
407
+ borderWidth: 1,
408
+ paddingHorizontal: 12
409
+ };
410
+ var INPUT_STYLE = {
411
+ flex: 1,
412
+ paddingVertical: 8,
413
+ fontSize: 16,
414
+ color: theme.color.neutral["900"]
415
+ };
416
+ var HELPER_STYLE = { fontSize: 14, color: theme.color.neutral["500"] };
417
+ var ERROR_STYLE = { fontSize: 14, color: theme.color.danger };
292
418
  function TextInput({
293
419
  label,
294
420
  helperText,
@@ -317,8 +443,21 @@ function TextInput({
317
443
  if (multiline !== void 0) inputExtras.multiline = multiline;
318
444
  if (numberOfLines !== void 0) inputExtras.numberOfLines = numberOfLines;
319
445
  if (onChangeText !== void 0) inputExtras.onChangeText = onChangeText;
320
- return /* @__PURE__ */ jsxs(View, { className: cn("flex flex-col gap-1", containerClassName), children: [
321
- label !== void 0 ? /* @__PURE__ */ jsx("label", { htmlFor: inputId, className: "text-sm font-medium text-semantic-text-default", children: label }) : null,
446
+ const fieldStyle = [
447
+ FIELD_BASE_STYLE,
448
+ { borderColor: hasError ? theme.color.danger : theme.color.neutral["200"] },
449
+ disabled ? { opacity: 0.6 } : null
450
+ ];
451
+ return /* @__PURE__ */ jsxs(View, { className: cn("flex flex-col gap-1", containerClassName), style: CONTAINER_STYLE, children: [
452
+ label !== void 0 ? /* @__PURE__ */ jsx(
453
+ "label",
454
+ {
455
+ htmlFor: inputId,
456
+ className: "text-sm font-medium text-semantic-text-default",
457
+ style: LABEL_STYLE,
458
+ children: label
459
+ }
460
+ ) : null,
322
461
  /* @__PURE__ */ jsxs(
323
462
  View,
324
463
  {
@@ -327,23 +466,34 @@ function TextInput({
327
466
  hasError ? "border-semantic-interactive-destructive" : "border-semantic-border-default",
328
467
  disabled ? "opacity-60" : void 0
329
468
  ),
469
+ style: fieldStyle,
330
470
  children: [
331
- leading ? /* @__PURE__ */ jsx(View, { className: "mr-2", children: leading }) : null,
471
+ leading ? /* @__PURE__ */ jsx(View, { className: "mr-2", style: { marginRight: 8 }, children: leading }) : null,
332
472
  /* @__PURE__ */ jsx(
333
473
  TextInput$1,
334
474
  {
335
475
  nativeID: inputId,
336
476
  editable: !disabled,
337
477
  className: cn("flex-1 py-2 text-md text-semantic-text-default outline-none", className),
478
+ style: INPUT_STYLE,
479
+ placeholderTextColor: theme.color.neutral["400"],
338
480
  ...inputExtras,
339
481
  ...rest
340
482
  }
341
483
  ),
342
- trailing ? /* @__PURE__ */ jsx(View, { className: "ml-2", children: trailing }) : null
484
+ trailing ? /* @__PURE__ */ jsx(View, { className: "ml-2", style: { marginLeft: 8 }, children: trailing }) : null
343
485
  ]
344
486
  }
345
487
  ),
346
- error ? /* @__PURE__ */ jsx(Text$1, { nativeID: describeId, className: "text-sm text-semantic-interactive-destructive", children: error }) : helperText ? /* @__PURE__ */ jsx(Text$1, { nativeID: describeId, className: "text-sm text-semantic-text-muted", children: helperText }) : null
488
+ error ? /* @__PURE__ */ jsx(
489
+ Text$1,
490
+ {
491
+ nativeID: describeId,
492
+ className: "text-sm text-semantic-interactive-destructive",
493
+ style: ERROR_STYLE,
494
+ children: error
495
+ }
496
+ ) : helperText ? /* @__PURE__ */ jsx(Text$1, { nativeID: describeId, className: "text-sm text-semantic-text-muted", style: HELPER_STYLE, children: helperText }) : null
347
497
  ] });
348
498
  }
349
499
  __name(TextInput, "TextInput");
@@ -385,5 +535,5 @@ function VStack({ gap, align, justify, className, children, ...rest }) {
385
535
  __name(VStack, "VStack");
386
536
 
387
537
  export { Box, Button, Checkbox, HStack, SemanticIconsProvider, Spinner, Switch, Text, TextArea, TextInput, VStack, useSemanticIcon };
388
- //# sourceMappingURL=chunk-6NDARMPP.js.map
389
- //# sourceMappingURL=chunk-6NDARMPP.js.map
538
+ //# sourceMappingURL=chunk-X3AJNNF6.js.map
539
+ //# sourceMappingURL=chunk-X3AJNNF6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Box/Box.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Button/Button.tsx","../src/icons/semantic-context.tsx","../src/icons/use-semantic-icon.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/HStack/HStack.tsx","../src/components/Switch/Switch.tsx","../src/components/Text/Text.tsx","../src/components/TextInput/TextInput.tsx","../src/components/TextArea/TextArea.tsx","../src/components/VStack/VStack.tsx"],"names":["jsx","Button","RNText","jsxs","View","Pressable","ROW_STYLE","useState","useCallback","VARIANT_CLASSES","RNTextInput","ALIGN_CLASS","JUSTIFY_CLASS"],"mappings":"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","file":"chunk-X3AJNNF6.js","sourcesContent":["import type { ViewProps } from 'react-native';\nimport { View } from 'react-native';\nimport { cn } from '../../utils/cn';\n\nexport type BoxProps = ViewProps & {\n className?: string;\n testID?: string;\n};\n\n/**\n * Generic layout primitive. Wraps react-native's <View> with className support.\n * RSC-safe.\n */\nexport function Box({ className, children, ...rest }: BoxProps) {\n return (\n <View {...rest} className={cn(className)}>\n {children}\n </View>\n );\n}\n","import type { ActivityIndicatorProps } from 'react-native';\nimport { ActivityIndicator } from 'react-native';\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg' | 'xl' | number;\n\nexport type SpinnerProps = Omit<ActivityIndicatorProps, 'size'> & {\n /** Visible (a11y) label. Defaults to the i18n \"common.loading\" default (\"Loading\"). */\n label?: string;\n size?: SpinnerSize;\n testID?: string;\n className?: string;\n};\n\nconst SIZE_MAP: Record<Exclude<SpinnerSize, number>, number> = {\n sm: 12,\n md: 16,\n lg: 24,\n xl: 32,\n};\n\n/**\n * Loading indicator.\n *\n * a11y: rendered with `role=\"progressbar\"` and an `aria-label` so screen\n * readers announce it. Respects `prefers-reduced-motion` — on web, react-native-web's\n * ActivityIndicator will render without animation when the media query matches;\n * on native, React Native's ActivityIndicator honors the OS reduce-motion setting\n * automatically.\n *\n * RSC-safe: pure render, no hooks.\n */\nexport function Spinner({ label = 'Loading', size = 'md', testID, color, style, ...rest }: SpinnerProps) {\n const px = typeof size === 'number' ? size : SIZE_MAP[size];\n return (\n <ActivityIndicator\n {...rest}\n {...(testID !== undefined ? { testID } : {})}\n accessibilityRole=\"progressbar\"\n accessibilityLabel={label}\n {...(color !== undefined ? { color } : {})}\n size={px}\n style={[{ width: px, height: px }, style]}\n />\n );\n}\n","import { theme } from '@nori-ui/tokens';\nimport type { ComponentType, ReactNode } from 'react';\nimport { forwardRef } from 'react';\nimport type { PressableProps, StyleProp, ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText } from 'react-native';\nimport { Slot } from '../../slot';\nimport { cn } from '../../utils/cn';\nimport { Spinner } from '../Spinner';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'destructive';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\ntype IconSlot = ComponentType<{ size?: number; color?: string }>;\n\nexport type ButtonProps = Omit<PressableProps, 'disabled' | 'children'> & {\n children?: ReactNode;\n variant?: ButtonVariant;\n size?: ButtonSize;\n disabled?: boolean;\n loading?: boolean;\n leadingIcon?: IconSlot;\n trailingIcon?: IconSlot;\n /** If true, the single child becomes the interactive element (Slot pattern). */\n asChild?: boolean;\n className?: string;\n testID?: string;\n};\n\nconst VARIANT_CLASSES: Record<ButtonVariant, string> = {\n primary:\n 'bg-semantic-interactive-primary hover:bg-semantic-interactive-primaryHover active:bg-semantic-interactive-primaryPressed',\n secondary: 'bg-neutral-100 hover:bg-neutral-200 active:bg-neutral-300',\n ghost: 'bg-transparent hover:bg-neutral-100 active:bg-neutral-200',\n destructive: 'bg-semantic-interactive-destructive hover:opacity-90 active:opacity-80',\n};\n\nconst SIZE_CLASSES: Record<ButtonSize, string> = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-4 text-md',\n lg: 'h-12 px-5 text-lg',\n};\n\nconst ICON_SIZE: Record<ButtonSize, number> = { sm: 14, md: 16, lg: 20 };\n\nconst BASE_CLASSES = 'inline-flex flex-row items-center justify-center gap-2 rounded-md select-none';\n\n// Inline fallback styles mirror the NativeWind classes above. They ship so\n// the component renders correctly when NativeWind is NOT active (e.g. Expo\n// Snack's sandbox, or apps that don't configure NativeWind). When NativeWind\n// IS active, its compiled className styles merge with and (where intended)\n// override these defaults.\nconst VARIANT_STYLES: Record<ButtonVariant, ViewStyle> = {\n primary: { backgroundColor: theme.color.primary['600'] },\n secondary: { backgroundColor: theme.color.neutral['100'] },\n ghost: { backgroundColor: 'transparent' },\n destructive: { backgroundColor: theme.color.danger },\n};\n\nconst VARIANT_TEXT_COLOR: Record<ButtonVariant, string> = {\n primary: '#ffffff',\n secondary: theme.color.neutral['900'],\n ghost: theme.color.neutral['900'],\n destructive: '#ffffff',\n};\n\nconst SIZE_STYLES: Record<ButtonSize, { container: ViewStyle; text: { fontSize: number } }> = {\n sm: { container: { height: 32, paddingHorizontal: 12 }, text: { fontSize: 14 } },\n md: { container: { height: 40, paddingHorizontal: 16 }, text: { fontSize: 16 } },\n lg: { container: { height: 48, paddingHorizontal: 20 }, text: { fontSize: 18 } },\n};\n\nconst BASE_STYLE: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n borderRadius: 6,\n};\n\nexport const Button = forwardRef<unknown, ButtonProps>(function Button(\n {\n children,\n variant = 'primary',\n size = 'md',\n disabled,\n loading,\n leadingIcon: LeadingIcon,\n trailingIcon: TrailingIcon,\n asChild,\n className,\n onPress,\n testID,\n style,\n ...rest\n },\n forwardedRef\n) {\n const isInoperative = Boolean(disabled) || Boolean(loading);\n const classes = cn(\n BASE_CLASSES,\n VARIANT_CLASSES[variant],\n SIZE_CLASSES[size],\n isInoperative ? 'opacity-60' : undefined,\n className\n );\n\n const baseInlineStyle: StyleProp<ViewStyle> = [\n BASE_STYLE,\n VARIANT_STYLES[variant],\n SIZE_STYLES[size].container,\n isInoperative ? { opacity: 0.6 } : null,\n ];\n const pressableStyle: PressableProps['style'] =\n typeof style === 'function' ? (state) => [baseInlineStyle, style(state)] : [baseInlineStyle, style];\n const slotStyle: StyleProp<ViewStyle> = [baseInlineStyle, typeof style === 'function' ? null : style];\n\n const textColor = VARIANT_TEXT_COLOR[variant];\n const textStyle = { color: textColor, fontSize: SIZE_STYLES[size].text.fontSize, fontWeight: '500' as const };\n\n const handlePress: NonNullable<PressableProps['onPress']> = (ev) => {\n if (isInoperative) return;\n onPress?.(ev);\n };\n\n if (asChild) {\n const slotProps: Record<string, unknown> = {\n ref: forwardedRef,\n className: classes,\n style: slotStyle,\n onClick: handlePress as unknown as (...args: unknown[]) => unknown,\n ...rest,\n };\n if (isInoperative) slotProps['aria-disabled'] = true;\n if (loading) slotProps['aria-busy'] = true;\n if (testID !== undefined) slotProps['data-testid'] = testID;\n return <Slot {...slotProps}>{children}</Slot>;\n }\n\n const pressableExtra: Record<string, unknown> = {};\n if (isInoperative) pressableExtra['aria-disabled'] = true;\n if (loading) pressableExtra['aria-busy'] = true;\n\n return (\n <Pressable\n ref={forwardedRef as never}\n {...(testID !== undefined ? { testID } : {})}\n role=\"button\"\n accessibilityRole=\"button\"\n accessibilityState={{ disabled: isInoperative, busy: Boolean(loading) }}\n disabled={isInoperative}\n onPress={handlePress}\n className={classes}\n style={pressableStyle}\n {...pressableExtra}\n {...rest}\n >\n {loading ? (\n <Spinner size={ICON_SIZE[size]} label=\"Loading\" color={textColor} />\n ) : LeadingIcon ? (\n <LeadingIcon size={ICON_SIZE[size]} color={textColor} />\n ) : null}\n <RNText\n className={cn('font-medium', SIZE_CLASSES[size].includes('text-') ? undefined : 'text-md')}\n style={textStyle}\n >\n {children}\n </RNText>\n {TrailingIcon ? <TrailingIcon size={ICON_SIZE[size]} color={textColor} /> : null}\n </Pressable>\n );\n});\nButton.displayName = 'Button';\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { createContext } from 'react';\nimport { defaultSemanticIcons, type SemanticIcons } from './default-semantic-icons';\n\nexport const SemanticIconsContext = createContext<SemanticIcons>(defaultSemanticIcons);\nSemanticIconsContext.displayName = 'SemanticIconsContext';\n\nexport type SemanticIconsProviderProps = {\n icons?: Partial<SemanticIcons>;\n children?: ReactNode;\n};\n\nexport function SemanticIconsProvider({ icons, children }: SemanticIconsProviderProps) {\n const merged: SemanticIcons = icons ? { ...defaultSemanticIcons, ...icons } : defaultSemanticIcons;\n return <SemanticIconsContext.Provider value={merged}>{children}</SemanticIconsContext.Provider>;\n}\n","'use client';\n\nimport { useContext } from 'react';\nimport type { SemanticIcons } from './default-semantic-icons';\nimport { SemanticIconsContext } from './semantic-context';\n\nexport function useSemanticIcon<K extends keyof SemanticIcons>(name: K): SemanticIcons[K] {\n const icons = useContext(SemanticIconsContext);\n return icons[name];\n}\n","'use client';\n\nimport { theme } from '@nori-ui/tokens';\nimport type { ReactNode } from 'react';\nimport { useCallback, useState } from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useSemanticIcon } from '../../icons/use-semantic-icon';\nimport { Slot } from '../../slot';\nimport { cn } from '../../utils/cn';\n\nexport type CheckboxProps = {\n checked?: boolean;\n defaultChecked?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n onChange?: (next: boolean) => void;\n label?: string;\n className?: string;\n testID?: string;\n asChild?: boolean;\n children?: ReactNode;\n};\n\n// Inline defaults so the checkbox renders correctly without NativeWind.\nconst ROW_STYLE: ViewStyle = { flexDirection: 'row', alignItems: 'center', gap: 8 };\nconst BOX_STYLE: ViewStyle = {\n width: 20,\n height: 20,\n borderRadius: 4,\n borderWidth: 1,\n borderColor: theme.color.neutral['300'],\n backgroundColor: '#ffffff',\n alignItems: 'center',\n justifyContent: 'center',\n};\nconst BOX_STYLE_CHECKED: ViewStyle = {\n backgroundColor: theme.color.primary['600'],\n borderColor: theme.color.primary['600'],\n};\n\n/**\n * Checkbox — supports controlled + uncontrolled state, indeterminate (aria-checked=\"mixed\"),\n * asChild (via Slot), and a visible label that doubles as the accessibility label.\n */\nexport function Checkbox({\n checked,\n defaultChecked = false,\n indeterminate,\n disabled,\n onChange,\n label,\n className,\n testID,\n asChild,\n children,\n}: CheckboxProps) {\n const [inner, setInner] = useState<boolean>(defaultChecked);\n const isControlled = checked !== undefined;\n const value = isControlled ? Boolean(checked) : inner;\n\n const ariaChecked: 'true' | 'false' | 'mixed' = indeterminate ? 'mixed' : value ? 'true' : 'false';\n const isMarked = value || Boolean(indeterminate);\n\n const toggle = useCallback(() => {\n if (disabled) return;\n const next = !value;\n if (!isControlled) setInner(next);\n onChange?.(next);\n }, [disabled, value, isControlled, onChange]);\n\n const Check = useSemanticIcon('checkmark');\n\n const commonProps: Record<string, unknown> = {\n role: 'checkbox',\n 'aria-checked': ariaChecked,\n accessibilityRole: 'checkbox' as const,\n accessibilityState: { checked: value, disabled: Boolean(disabled) },\n testID,\n };\n if (disabled) commonProps['aria-disabled'] = true;\n if (label !== undefined) {\n commonProps['aria-label'] = label;\n commonProps.accessibilityLabel = label;\n }\n\n if (asChild) {\n const slotProps: Record<string, unknown> = {\n role: 'checkbox',\n 'aria-checked': ariaChecked,\n onClick: toggle,\n };\n if (disabled) slotProps['aria-disabled'] = true;\n if (label !== undefined) slotProps['aria-label'] = label;\n if (testID !== undefined) slotProps['data-testid'] = testID;\n if (className !== undefined) slotProps.className = className;\n return <Slot {...slotProps}>{children}</Slot>;\n }\n\n const boxClasses = cn('w-5 h-5 rounded-sm border border-semantic-border-strong items-center justify-center');\n\n return (\n <View\n className={cn('flex-row items-center gap-2', disabled ? 'opacity-60' : undefined, className)}\n style={[ROW_STYLE, disabled ? { opacity: 0.6 } : null]}\n >\n <Pressable\n onPress={toggle}\n {...commonProps}\n className={boxClasses}\n style={[BOX_STYLE, isMarked && !disabled ? BOX_STYLE_CHECKED : null]}\n >\n {isMarked && !disabled ? <Check size={14} color=\"#ffffff\" /> : null}\n </Pressable>\n {children ??\n (label !== undefined ? (\n <RNText style={{ color: theme.color.neutral['900'], fontSize: 16 }}>{label}</RNText>\n ) : null)}\n </View>\n );\n}\n","import type { ViewProps } from 'react-native';\nimport { View } from 'react-native';\nimport { cn } from '../../utils/cn';\n\nexport type StackGap = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12;\nexport type StackAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\nexport type StackJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n\nexport type HStackProps = ViewProps & {\n gap?: StackGap;\n align?: StackAlign;\n justify?: StackJustify;\n className?: string;\n testID?: string;\n};\n\nconst ALIGN_CLASS: Record<StackAlign, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n};\n\nconst JUSTIFY_CLASS: Record<StackJustify, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n};\n\n/**\n * Horizontal flex layout primitive. RSC-safe.\n */\nexport function HStack({ gap, align, justify, className, children, ...rest }: HStackProps) {\n return (\n <View\n {...rest}\n className={cn(\n 'flex-row',\n gap !== undefined && gap !== 0 ? `gap-${gap}` : undefined,\n align !== undefined ? ALIGN_CLASS[align] : undefined,\n justify !== undefined ? JUSTIFY_CLASS[justify] : undefined,\n className\n )}\n >\n {children}\n </View>\n );\n}\n","'use client';\n\nimport { theme } from '@nori-ui/tokens';\nimport type { ReactNode } from 'react';\nimport { useCallback, useState } from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { Slot } from '../../slot';\nimport { cn } from '../../utils/cn';\n\nexport type SwitchProps = {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n onChange?: (next: boolean) => void;\n label?: string;\n className?: string;\n testID?: string;\n asChild?: boolean;\n children?: ReactNode;\n};\n\nconst ROW_STYLE: ViewStyle = { flexDirection: 'row', alignItems: 'center', gap: 8 };\nconst TRACK_BASE: ViewStyle = {\n width: 40,\n height: 24,\n borderRadius: 12,\n justifyContent: 'center',\n paddingHorizontal: 2,\n};\nconst THUMB_STYLE: ViewStyle = {\n width: 20,\n height: 20,\n borderRadius: 10,\n backgroundColor: '#ffffff',\n shadowColor: '#000',\n shadowOpacity: 0.15,\n shadowRadius: 2,\n shadowOffset: { width: 0, height: 1 },\n elevation: 2,\n};\n\n/**\n * Switch — a toggle control with role=\"switch\". Supports controlled + uncontrolled,\n * disabled state, asChild (via Slot), and a visible label that doubles as the\n * accessibility label.\n */\nexport function Switch({\n checked,\n defaultChecked = false,\n disabled,\n onChange,\n label,\n className,\n testID,\n asChild,\n children,\n}: SwitchProps) {\n const [inner, setInner] = useState<boolean>(defaultChecked);\n const isControlled = checked !== undefined;\n const value = isControlled ? Boolean(checked) : inner;\n\n const toggle = useCallback(() => {\n if (disabled) return;\n const next = !value;\n if (!isControlled) setInner(next);\n onChange?.(next);\n }, [disabled, value, isControlled, onChange]);\n\n const ariaChecked: 'true' | 'false' = value ? 'true' : 'false';\n\n const commonProps: Record<string, unknown> = {\n role: 'switch',\n 'aria-checked': ariaChecked,\n accessibilityRole: 'switch' as const,\n accessibilityState: { checked: value, disabled: Boolean(disabled) },\n testID,\n };\n if (disabled) commonProps['aria-disabled'] = true;\n if (label !== undefined) {\n commonProps['aria-label'] = label;\n commonProps.accessibilityLabel = label;\n }\n\n if (asChild) {\n const slotProps: Record<string, unknown> = {\n role: 'switch',\n 'aria-checked': ariaChecked,\n onClick: toggle,\n };\n if (disabled) slotProps['aria-disabled'] = true;\n if (label !== undefined) slotProps['aria-label'] = label;\n if (testID !== undefined) slotProps['data-testid'] = testID;\n if (className !== undefined) slotProps.className = className;\n return <Slot {...slotProps}>{children}</Slot>;\n }\n\n const trackClasses = cn(\n 'w-10 h-6 rounded-full justify-center px-0.5 transition-colors',\n value ? 'bg-semantic-interactive-primary' : 'bg-neutral-300',\n disabled ? 'opacity-60' : undefined\n );\n const thumbClasses = cn('w-5 h-5 rounded-full bg-white shadow-sm', value ? 'self-end' : 'self-start');\n\n const trackStyle = [\n TRACK_BASE,\n { backgroundColor: value ? theme.color.primary['600'] : theme.color.neutral['300'] },\n disabled ? { opacity: 0.6 } : null,\n ];\n const thumbStyle = [THUMB_STYLE, { alignSelf: value ? 'flex-end' : 'flex-start' } as ViewStyle];\n\n return (\n <View className={cn('flex-row items-center gap-2', className)} style={ROW_STYLE}>\n <Pressable onPress={toggle} {...commonProps} className={trackClasses} style={trackStyle}>\n <View className={thumbClasses} style={thumbStyle} />\n </Pressable>\n {label ? (\n <RNText\n className=\"text-md text-semantic-text-default\"\n style={{ color: theme.color.neutral['900'], fontSize: 16 }}\n >\n {label}\n </RNText>\n ) : null}\n {children}\n </View>\n );\n}\n","import type { TextProps as RNTextProps } from 'react-native';\nimport { Text as RNText } from 'react-native';\nimport { cn } from '../../utils/cn';\n\nexport type TextVariant = 'body-xs' | 'body-sm' | 'body-md' | 'body-lg' | 'heading-1' | 'heading-2' | 'heading-3';\n\nexport type TextProps = RNTextProps & {\n variant?: TextVariant;\n className?: string;\n testID?: string;\n};\n\nconst VARIANT_CLASSES: Record<TextVariant, string> = {\n 'body-xs': 'text-xs leading-normal',\n 'body-sm': 'text-sm leading-normal',\n 'body-md': 'text-md leading-normal',\n 'body-lg': 'text-lg leading-relaxed',\n 'heading-1': 'text-4xl leading-tight font-bold',\n 'heading-2': 'text-3xl leading-tight font-semibold',\n 'heading-3': 'text-2xl leading-tight font-semibold',\n};\n\nconst HEADING_VARIANTS: Readonly<Set<TextVariant>> = new Set(['heading-1', 'heading-2', 'heading-3']);\n\n/**\n * Typography primitive. Renders a react-native <Text>; on web via RN-Web\n * it becomes a <div role=\"...\"> with the appropriate className.\n *\n * RSC-safe: pure render, no hooks.\n */\nexport function Text({ variant = 'body-md', className, testID, children, ...rest }: TextProps) {\n const isHeading = HEADING_VARIANTS.has(variant);\n const role = isHeading ? 'header' : rest.accessibilityRole;\n return (\n <RNText\n testID={testID}\n {...rest}\n {...(role !== undefined ? { accessibilityRole: role } : {})}\n className={cn(VARIANT_CLASSES[variant], className)}\n >\n {children}\n </RNText>\n );\n}\n","import { theme } from '@nori-ui/tokens';\nimport type { ReactNode } from 'react';\nimport { useId } from 'react';\nimport type { TextInputProps as RNTextInputProps, TextStyle, ViewStyle } from 'react-native';\nimport { Text as RNText, TextInput as RNTextInput, View } from 'react-native';\nimport { cn } from '../../utils/cn';\n\nexport type TextInputProps = Omit<RNTextInputProps, 'editable'> & {\n label?: string;\n helperText?: string;\n error?: string;\n disabled?: boolean;\n leading?: ReactNode;\n trailing?: ReactNode;\n /** Pass through a custom wrapper className */\n containerClassName?: string;\n className?: string;\n testID?: string;\n /** Controlled text handler. Optional so uncontrolled usage works too. */\n onChangeText?: (text: string) => void;\n /** Multi-line mode — flipped by TextArea. Default false. */\n multiline?: boolean;\n numberOfLines?: number;\n};\n\nconst CONTAINER_STYLE: ViewStyle = { flexDirection: 'column', gap: 4 };\nconst LABEL_STYLE: TextStyle = { fontSize: 14, fontWeight: '500', color: theme.color.neutral['900'] };\nconst FIELD_BASE_STYLE: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 6,\n borderWidth: 1,\n paddingHorizontal: 12,\n};\nconst INPUT_STYLE: TextStyle = {\n flex: 1,\n paddingVertical: 8,\n fontSize: 16,\n color: theme.color.neutral['900'],\n};\nconst HELPER_STYLE: TextStyle = { fontSize: 14, color: theme.color.neutral['500'] };\nconst ERROR_STYLE: TextStyle = { fontSize: 14, color: theme.color.danger };\n\n/**\n * Single-line text input with label, helper, error, and leading/trailing slots.\n *\n * a11y: label is a <label for={id}>; the input is `aria-invalid=true` + labelled\n * by the error/helper text via aria-describedby when present.\n *\n * Notionally RSC-safe — uses only useId() which React 19 guarantees is safe on\n * the server. No \"use client\" required.\n */\nexport function TextInput({\n label,\n helperText,\n error,\n disabled,\n leading,\n trailing,\n containerClassName,\n className,\n testID,\n onChangeText,\n multiline,\n numberOfLines,\n ...rest\n}: TextInputProps) {\n const reactId = useId();\n const inputId = testID ?? `nori-ui-input-${reactId}`;\n const describeId = `${inputId}-describe`;\n const hasError = Boolean(error);\n const describedBy = error || helperText ? describeId : undefined;\n\n const inputExtras: Record<string, unknown> = {};\n if (testID !== undefined) inputExtras.testID = testID;\n if (label !== undefined) inputExtras.accessibilityLabel = label;\n if (hasError) inputExtras['aria-invalid'] = true;\n if (describedBy !== undefined) inputExtras['aria-describedby'] = describedBy;\n if (multiline !== undefined) inputExtras.multiline = multiline;\n if (numberOfLines !== undefined) inputExtras.numberOfLines = numberOfLines;\n if (onChangeText !== undefined) inputExtras.onChangeText = onChangeText;\n\n const fieldStyle = [\n FIELD_BASE_STYLE,\n { borderColor: hasError ? theme.color.danger : theme.color.neutral['200'] },\n disabled ? { opacity: 0.6 } : null,\n ];\n\n return (\n <View className={cn('flex flex-col gap-1', containerClassName)} style={CONTAINER_STYLE}>\n {label !== undefined ? (\n <label\n htmlFor={inputId}\n className=\"text-sm font-medium text-semantic-text-default\"\n style={LABEL_STYLE as object}\n >\n {label}\n </label>\n ) : null}\n <View\n className={cn(\n 'flex-row items-center rounded-md border px-3',\n hasError ? 'border-semantic-interactive-destructive' : 'border-semantic-border-default',\n disabled ? 'opacity-60' : undefined\n )}\n style={fieldStyle}\n >\n {leading ? (\n <View className=\"mr-2\" style={{ marginRight: 8 }}>\n {leading}\n </View>\n ) : null}\n <RNTextInput\n nativeID={inputId}\n editable={!disabled}\n className={cn('flex-1 py-2 text-md text-semantic-text-default outline-none', className)}\n style={INPUT_STYLE}\n placeholderTextColor={theme.color.neutral['400']}\n {...inputExtras}\n {...rest}\n />\n {trailing ? (\n <View className=\"ml-2\" style={{ marginLeft: 8 }}>\n {trailing}\n </View>\n ) : null}\n </View>\n {error ? (\n <RNText\n nativeID={describeId}\n className=\"text-sm text-semantic-interactive-destructive\"\n style={ERROR_STYLE}\n >\n {error}\n </RNText>\n ) : helperText ? (\n <RNText nativeID={describeId} className=\"text-sm text-semantic-text-muted\" style={HELPER_STYLE}>\n {helperText}\n </RNText>\n ) : null}\n </View>\n );\n}\n","import type { TextInputProps } from '../TextInput';\nimport { TextInput } from '../TextInput';\n\nexport type TextAreaProps = TextInputProps;\n\n/**\n * Multi-line text input. Thin wrapper over TextInput that fixes `multiline=true`\n * and provides a sensible default for `numberOfLines`.\n */\nexport function TextArea({ numberOfLines = 4, ...rest }: TextAreaProps) {\n return <TextInput multiline numberOfLines={numberOfLines} {...rest} />;\n}\n","import type { ViewProps } from 'react-native';\nimport { View } from 'react-native';\nimport { cn } from '../../utils/cn';\nimport type { StackAlign, StackGap, StackJustify } from '../HStack/HStack';\n\nexport type VStackProps = ViewProps & {\n gap?: StackGap;\n align?: StackAlign;\n justify?: StackJustify;\n className?: string;\n testID?: string;\n};\n\nconst ALIGN_CLASS: Record<StackAlign, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n};\n\nconst JUSTIFY_CLASS: Record<StackJustify, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n};\n\n/**\n * Vertical flex layout primitive. RSC-safe.\n */\nexport function VStack({ gap, align, justify, className, children, ...rest }: VStackProps) {\n return (\n <View\n {...rest}\n className={cn(\n 'flex-col',\n gap !== undefined && gap !== 0 ? `gap-${gap}` : undefined,\n align !== undefined ? ALIGN_CLASS[align] : undefined,\n justify !== undefined ? JUSTIFY_CLASS[justify] : undefined,\n className\n )}\n >\n {children}\n </View>\n );\n}\n"]}