@womp/kookie-ui 0.3.26 → 0.5.0

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 (204) hide show
  1. package/AUTHORS +27 -0
  2. package/LICENSE +29 -0
  3. package/README.md +21 -1
  4. package/components.css +472 -270
  5. package/dist/cjs/components/_internal/shell-bottom.js +1 -1
  6. package/dist/cjs/components/_internal/shell-bottom.js.map +3 -3
  7. package/dist/cjs/components/_internal/shell-inspector.js +1 -1
  8. package/dist/cjs/components/_internal/shell-inspector.js.map +3 -3
  9. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  10. package/dist/cjs/components/_internal/shell-sidebar.js.map +3 -3
  11. package/dist/cjs/components/alert-dialog.js +1 -1
  12. package/dist/cjs/components/alert-dialog.js.map +3 -3
  13. package/dist/cjs/components/badge.js +1 -1
  14. package/dist/cjs/components/badge.js.map +3 -3
  15. package/dist/cjs/components/button.js +1 -1
  16. package/dist/cjs/components/button.js.map +3 -3
  17. package/dist/cjs/components/chatbar.js +2 -2
  18. package/dist/cjs/components/chatbar.js.map +3 -3
  19. package/dist/cjs/components/checkbox-cards.js +1 -1
  20. package/dist/cjs/components/checkbox-cards.js.map +3 -3
  21. package/dist/cjs/components/combobox.js +1 -1
  22. package/dist/cjs/components/combobox.js.map +3 -3
  23. package/dist/cjs/components/context-menu.js +1 -1
  24. package/dist/cjs/components/context-menu.js.map +3 -3
  25. package/dist/cjs/components/dialog.js +1 -1
  26. package/dist/cjs/components/dialog.js.map +3 -3
  27. package/dist/cjs/components/dropdown-menu.js +1 -1
  28. package/dist/cjs/components/dropdown-menu.js.map +3 -3
  29. package/dist/cjs/components/hover-card.js +1 -1
  30. package/dist/cjs/components/hover-card.js.map +3 -3
  31. package/dist/cjs/components/icon-button.js +2 -2
  32. package/dist/cjs/components/icon-button.js.map +3 -3
  33. package/dist/cjs/components/index.js +5 -5
  34. package/dist/cjs/components/index.js.map +3 -3
  35. package/dist/cjs/components/popover.js +1 -1
  36. package/dist/cjs/components/popover.js.map +3 -3
  37. package/dist/cjs/components/radio-cards.js +1 -1
  38. package/dist/cjs/components/radio-cards.js.map +3 -3
  39. package/dist/cjs/components/select.js +1 -1
  40. package/dist/cjs/components/select.js.map +3 -3
  41. package/dist/cjs/components/sheet.js +1 -1
  42. package/dist/cjs/components/sheet.js.map +3 -3
  43. package/dist/cjs/components/shell.js +1 -1
  44. package/dist/cjs/components/shell.js.map +3 -3
  45. package/dist/cjs/components/sidebar.js +1 -1
  46. package/dist/cjs/components/sidebar.js.map +3 -3
  47. package/dist/cjs/components/theme-panel.js +3 -3
  48. package/dist/cjs/components/theme-panel.js.map +3 -3
  49. package/dist/cjs/components/theme.d.ts +3 -0
  50. package/dist/cjs/components/theme.d.ts.map +1 -1
  51. package/dist/cjs/components/theme.js +1 -1
  52. package/dist/cjs/components/theme.js.map +3 -3
  53. package/dist/cjs/components/theme.props.d.ts +15 -1
  54. package/dist/cjs/components/theme.props.d.ts.map +1 -1
  55. package/dist/cjs/components/theme.props.js +1 -1
  56. package/dist/cjs/components/theme.props.js.map +2 -2
  57. package/dist/cjs/components/toggle-button.js +2 -2
  58. package/dist/cjs/components/toggle-button.js.map +3 -3
  59. package/dist/cjs/components/toggle-icon-button.js +3 -3
  60. package/dist/cjs/components/toggle-icon-button.js.map +3 -3
  61. package/dist/cjs/components/tooltip.js +1 -1
  62. package/dist/cjs/components/tooltip.js.map +3 -3
  63. package/dist/cjs/components/user-card.js +1 -1
  64. package/dist/cjs/components/user-card.js.map +3 -3
  65. package/dist/cjs/helpers/font-config.d.ts +84 -77
  66. package/dist/cjs/helpers/font-config.d.ts.map +1 -1
  67. package/dist/cjs/helpers/font-config.js +5 -2
  68. package/dist/cjs/helpers/font-config.js.map +3 -3
  69. package/dist/cjs/helpers/index.js +5 -2
  70. package/dist/cjs/helpers/index.js.map +3 -3
  71. package/dist/cjs/index.js +5 -5
  72. package/dist/cjs/index.js.map +3 -3
  73. package/dist/cjs/props/index.js +1 -1
  74. package/dist/cjs/props/index.js.map +2 -2
  75. package/dist/esm/{chunk-4CKDU6FY.js → chunk-2FYJTSOP.js} +2 -2
  76. package/dist/esm/{chunk-ICIGZ3N7.js → chunk-374ZYJUP.js} +2 -2
  77. package/dist/esm/{chunk-F2HYQ3ZR.js → chunk-6IGTK4JE.js} +2 -2
  78. package/dist/esm/chunk-6XGZPIUT.js +2 -0
  79. package/dist/esm/{chunk-T27QHMW7.js.map → chunk-6XGZPIUT.js.map} +2 -2
  80. package/dist/esm/{chunk-FLFAXVFB.js → chunk-A2RZGGMY.js} +2 -2
  81. package/dist/esm/{chunk-KKM6T5P7.js → chunk-AU3D6F42.js} +2 -2
  82. package/dist/esm/{chunk-O3CDWEZA.js → chunk-CVWCKOHO.js} +2 -2
  83. package/dist/esm/{chunk-JQQIPEGY.js → chunk-CWRNW44F.js} +2 -2
  84. package/dist/esm/{chunk-UVCH7QKO.js → chunk-DNHUQLXO.js} +2 -2
  85. package/dist/esm/{chunk-FOEZLQTW.js → chunk-FXUUI6Z2.js} +2 -2
  86. package/dist/esm/{chunk-WO43WW3A.js → chunk-IKSN4RNB.js} +2 -2
  87. package/dist/esm/{chunk-4IY2PR6N.js → chunk-K6QZMNCD.js} +2 -2
  88. package/dist/esm/{chunk-DL2O3GKG.js → chunk-KKBP2CRH.js} +2 -2
  89. package/dist/esm/{chunk-VLO7NXSP.js → chunk-M24UXMOQ.js} +2 -2
  90. package/dist/esm/{chunk-MRECKC4D.js → chunk-MK2R6DAU.js} +2 -2
  91. package/dist/esm/{chunk-5IBGFL6O.js → chunk-MOR3NSXQ.js} +2 -2
  92. package/dist/esm/{chunk-PQZXQ4ST.js → chunk-OSRJRBKP.js} +2 -2
  93. package/dist/esm/{chunk-WTYNFBFV.js → chunk-PLWXTEVE.js} +2 -2
  94. package/dist/esm/{chunk-U2X2CAW4.js → chunk-QEOAXJLN.js} +2 -2
  95. package/dist/esm/{chunk-36ZQVP7F.js → chunk-RMKXWYOV.js} +2 -2
  96. package/dist/esm/{chunk-BJYUPIXO.js → chunk-S56YSRHP.js} +2 -2
  97. package/dist/esm/{chunk-22HGLMPQ.js → chunk-TOLLPRMM.js} +2 -2
  98. package/dist/esm/{chunk-ETMLMDW4.js → chunk-UGD7Z3L4.js} +2 -2
  99. package/dist/esm/chunk-VA5A4MHU.js +6 -0
  100. package/dist/esm/chunk-VA5A4MHU.js.map +7 -0
  101. package/dist/esm/{chunk-4BBOHEF4.js → chunk-W7N7V5YD.js} +2 -2
  102. package/dist/esm/{chunk-D5N627TH.js → chunk-WFMYNZXZ.js} +2 -2
  103. package/dist/esm/{chunk-JR2YOGII.js → chunk-YEB3H7QN.js} +2 -2
  104. package/dist/esm/chunk-YUP6EICB.js +2 -0
  105. package/dist/esm/chunk-YUP6EICB.js.map +7 -0
  106. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  107. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  108. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  109. package/dist/esm/components/alert-dialog.js +1 -1
  110. package/dist/esm/components/badge.js +1 -1
  111. package/dist/esm/components/button.js +1 -1
  112. package/dist/esm/components/chatbar.js +1 -1
  113. package/dist/esm/components/checkbox-cards.js +1 -1
  114. package/dist/esm/components/combobox.js +1 -1
  115. package/dist/esm/components/context-menu.js +1 -1
  116. package/dist/esm/components/dialog.js +1 -1
  117. package/dist/esm/components/dropdown-menu.js +1 -1
  118. package/dist/esm/components/hover-card.js +1 -1
  119. package/dist/esm/components/icon-button.js +1 -1
  120. package/dist/esm/components/index.js +1 -1
  121. package/dist/esm/components/popover.js +1 -1
  122. package/dist/esm/components/radio-cards.js +1 -1
  123. package/dist/esm/components/select.js +1 -1
  124. package/dist/esm/components/sheet.js +1 -1
  125. package/dist/esm/components/shell.js +1 -1
  126. package/dist/esm/components/sidebar.js +1 -1
  127. package/dist/esm/components/theme-panel.js +1 -1
  128. package/dist/esm/components/theme.d.ts +3 -0
  129. package/dist/esm/components/theme.d.ts.map +1 -1
  130. package/dist/esm/components/theme.js +1 -1
  131. package/dist/esm/components/theme.props.d.ts +15 -1
  132. package/dist/esm/components/theme.props.d.ts.map +1 -1
  133. package/dist/esm/components/theme.props.js +1 -1
  134. package/dist/esm/components/toggle-button.js +1 -1
  135. package/dist/esm/components/toggle-icon-button.js +1 -1
  136. package/dist/esm/components/tooltip.js +1 -1
  137. package/dist/esm/components/user-card.js +1 -1
  138. package/dist/esm/helpers/font-config.d.ts +84 -77
  139. package/dist/esm/helpers/font-config.d.ts.map +1 -1
  140. package/dist/esm/helpers/font-config.js +1 -1
  141. package/dist/esm/helpers/index.js +1 -1
  142. package/dist/esm/index.js +1 -1
  143. package/dist/esm/props/index.js +1 -1
  144. package/fonts.css +8 -0
  145. package/package.json +17 -7
  146. package/src/components/_internal/base-card.css +5 -5
  147. package/src/components/_internal/base-checkbox.css +17 -3
  148. package/src/components/_internal/base-dialog.css +4 -4
  149. package/src/components/_internal/base-menu.css +3 -3
  150. package/src/components/accordion.css +5 -5
  151. package/src/components/callout.css +5 -5
  152. package/src/components/chatbar.css +6 -6
  153. package/src/components/checkbox-cards.css +30 -0
  154. package/src/components/heading.css +10 -3
  155. package/src/components/hover-card.css +3 -3
  156. package/src/components/popover.css +4 -4
  157. package/src/components/radio-cards.css +30 -0
  158. package/src/components/select.css +2 -2
  159. package/src/components/shell.css +1 -1
  160. package/src/components/table.css +5 -5
  161. package/src/components/text.css +10 -3
  162. package/src/components/theme.props.tsx +13 -1
  163. package/src/components/theme.tsx +18 -0
  164. package/src/components/tooltip.css +1 -1
  165. package/src/helpers/font-config.ts +130 -148
  166. package/src/styles/fonts.css +24 -29
  167. package/src/styles/index.css +0 -1
  168. package/src/styles/tokens/base.css +1 -0
  169. package/src/styles/tokens/font-family.css +263 -0
  170. package/src/styles/tokens/radius.css +47 -4
  171. package/src/styles/tokens/typography.css +2 -216
  172. package/styles.css +9094 -8884
  173. package/tokens/base.css +55 -28
  174. package/tokens.css +55 -28
  175. package/dist/esm/chunk-LOGJJF4I.js +0 -2
  176. package/dist/esm/chunk-LOGJJF4I.js.map +0 -7
  177. package/dist/esm/chunk-Q7P6BTVU.js +0 -3
  178. package/dist/esm/chunk-Q7P6BTVU.js.map +0 -7
  179. package/dist/esm/chunk-T27QHMW7.js +0 -2
  180. /package/dist/esm/{chunk-4CKDU6FY.js.map → chunk-2FYJTSOP.js.map} +0 -0
  181. /package/dist/esm/{chunk-ICIGZ3N7.js.map → chunk-374ZYJUP.js.map} +0 -0
  182. /package/dist/esm/{chunk-F2HYQ3ZR.js.map → chunk-6IGTK4JE.js.map} +0 -0
  183. /package/dist/esm/{chunk-FLFAXVFB.js.map → chunk-A2RZGGMY.js.map} +0 -0
  184. /package/dist/esm/{chunk-KKM6T5P7.js.map → chunk-AU3D6F42.js.map} +0 -0
  185. /package/dist/esm/{chunk-O3CDWEZA.js.map → chunk-CVWCKOHO.js.map} +0 -0
  186. /package/dist/esm/{chunk-JQQIPEGY.js.map → chunk-CWRNW44F.js.map} +0 -0
  187. /package/dist/esm/{chunk-UVCH7QKO.js.map → chunk-DNHUQLXO.js.map} +0 -0
  188. /package/dist/esm/{chunk-FOEZLQTW.js.map → chunk-FXUUI6Z2.js.map} +0 -0
  189. /package/dist/esm/{chunk-WO43WW3A.js.map → chunk-IKSN4RNB.js.map} +0 -0
  190. /package/dist/esm/{chunk-4IY2PR6N.js.map → chunk-K6QZMNCD.js.map} +0 -0
  191. /package/dist/esm/{chunk-DL2O3GKG.js.map → chunk-KKBP2CRH.js.map} +0 -0
  192. /package/dist/esm/{chunk-VLO7NXSP.js.map → chunk-M24UXMOQ.js.map} +0 -0
  193. /package/dist/esm/{chunk-MRECKC4D.js.map → chunk-MK2R6DAU.js.map} +0 -0
  194. /package/dist/esm/{chunk-5IBGFL6O.js.map → chunk-MOR3NSXQ.js.map} +0 -0
  195. /package/dist/esm/{chunk-PQZXQ4ST.js.map → chunk-OSRJRBKP.js.map} +0 -0
  196. /package/dist/esm/{chunk-WTYNFBFV.js.map → chunk-PLWXTEVE.js.map} +0 -0
  197. /package/dist/esm/{chunk-U2X2CAW4.js.map → chunk-QEOAXJLN.js.map} +0 -0
  198. /package/dist/esm/{chunk-36ZQVP7F.js.map → chunk-RMKXWYOV.js.map} +0 -0
  199. /package/dist/esm/{chunk-BJYUPIXO.js.map → chunk-S56YSRHP.js.map} +0 -0
  200. /package/dist/esm/{chunk-22HGLMPQ.js.map → chunk-TOLLPRMM.js.map} +0 -0
  201. /package/dist/esm/{chunk-ETMLMDW4.js.map → chunk-UGD7Z3L4.js.map} +0 -0
  202. /package/dist/esm/{chunk-4BBOHEF4.js.map → chunk-W7N7V5YD.js.map} +0 -0
  203. /package/dist/esm/{chunk-D5N627TH.js.map → chunk-WFMYNZXZ.js.map} +0 -0
  204. /package/dist/esm/{chunk-JR2YOGII.js.map → chunk-YEB3H7QN.js.map} +0 -0
@@ -1,106 +1,113 @@
1
1
  /**
2
- * Font configuration utilities for Kookie UI
2
+ * Runtime font configuration for Kookie UI.
3
3
  *
4
- * These utilities help users configure custom fonts through CSS variables
5
- * and provide type-safe font configuration options.
6
- */
7
- /**
8
- * Font family configuration interface
4
+ * This is a thin, typed wrapper over the CSS tokens in `styles/tokens/font-family.css` —
5
+ * it writes the same variables you would write by hand, and nothing else. Prefer plain CSS
6
+ * where you can; reach for this when the stacks are only known at runtime (a theme editor,
7
+ * a user-selectable typeface).
8
+ *
9
+ * Two tiers, matching the CSS:
10
+ *
11
+ * - `stacks` — which typefaces exist: `sans`, `mono`, `serif`. Written to `:root`.
12
+ * - `roles` — which stack each role uses: `body`, `heading`, `code`, `strong`, `em`,
13
+ * `quote`. Written to the theme element, since roles are per-theme.
9
14
  */
10
- export interface FontConfig {
11
- /** Sans-serif font stack for fontFamily="sans" */
15
+ /** Tier 1 — the typefaces available to the theme. */
16
+ export interface FontStacks {
17
+ /** Sans-serif stack. Backs `font="sans"` and, by default, body text. */
12
18
  sans?: string;
13
- /** Monospace font stack for fontFamily="mono" */
19
+ /** Monospace stack. Backs `font="mono"` and `Code`. */
14
20
  mono?: string;
15
- /** Serif font stack for fontFamily="serif" */
21
+ /** Serif stack. Backs `font="serif"`, `Em` and `Quote`. */
16
22
  serif?: string;
17
- /** Base Inter font replacement */
18
- inter?: string;
19
- /** Base JetBrains Mono font replacement */
20
- jetbrainsMono?: string;
21
- /** Base Playfair Display font replacement */
22
- playfairDisplay?: string;
23
23
  }
24
- /**
25
- * CSS variable names used by Kookie UI for fonts
26
- */
27
- export declare const FONT_CSS_VARIABLES: {
24
+ /** Tier 2 — which stack each role of text uses. */
25
+ export interface FontRoles {
26
+ /** Body text: `Text`, inputs, buttons, and anything that does not opt out. */
27
+ body?: string;
28
+ /** `Heading`. Follows `body` when left unset. */
29
+ heading?: string;
30
+ /** `Code`. */
31
+ code?: string;
32
+ /** `Strong`. */
33
+ strong?: string;
34
+ /** `Em`. */
35
+ em?: string;
36
+ /** `Quote`. */
37
+ quote?: string;
38
+ }
39
+ export interface FontConfig {
40
+ stacks?: FontStacks;
41
+ roles?: FontRoles;
42
+ }
43
+ /** CSS custom properties backing each stack. Declared on `:root`. */
44
+ export declare const FONT_STACK_VARIABLES: {
28
45
  readonly sans: "--font-sans";
29
46
  readonly mono: "--font-mono";
30
47
  readonly serif: "--font-serif";
31
- readonly inter: "--font-inter";
32
- readonly jetbrainsMono: "--font-jetbrains-mono";
33
- readonly playfairDisplay: "--font-playfair-display";
34
- readonly defaultFamily: "--default-font-family";
35
- readonly headingFamily: "--heading-font-family";
36
- readonly strongFamily: "--strong-font-family";
37
- readonly codeFamily: "--code-font-family";
48
+ };
49
+ /** CSS custom properties backing each role. Declared on the theme element. */
50
+ export declare const FONT_ROLE_VARIABLES: {
51
+ readonly body: "--font-body";
52
+ readonly heading: "--font-heading";
53
+ readonly code: "--font-code";
54
+ readonly strong: "--font-strong";
55
+ readonly em: "--font-em";
56
+ readonly quote: "--font-quote";
38
57
  };
39
58
  /**
40
- * Popular font stacks for common use cases
59
+ * Ready-made stacks, each ending in a system fallback.
60
+ *
61
+ * The webfont entries assume the face is already loaded — via
62
+ * `import '@womp/kookie-ui/fonts.css'`, `next/font`, or your own `@font-face`.
63
+ * Kookie's core stylesheet deliberately loads none.
41
64
  */
42
65
  export declare const FONT_STACKS: {
43
- readonly inter: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif";
44
- readonly system: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif";
45
- readonly poppins: "'Poppins', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif";
46
- readonly openSans: "'Open Sans', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif";
47
- readonly jetbrainsMono: "'JetBrains Mono', 'Fira Code', 'Consolas', 'Liberation Mono', monospace";
48
- readonly firaCode: "'Fira Code', 'JetBrains Mono', 'Consolas', 'Liberation Mono', monospace";
49
- readonly sourceCodePro: "'Source Code Pro', 'JetBrains Mono', 'Consolas', monospace";
50
- readonly systemMono: "'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', 'Courier New', monospace";
51
- readonly playfair: "'Playfair Display', 'Times New Roman', 'Times', 'Georgia', 'Cambria', serif";
52
- readonly times: "'Times New Roman', 'Times', 'Georgia', 'Cambria', serif";
66
+ readonly system: "-apple-system, BlinkMacSystemFont, 'Segoe UI (Custom)', Roboto, 'Helvetica Neue', system-ui, sans-serif";
67
+ readonly inter: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI (Custom)', Roboto, system-ui, sans-serif";
68
+ readonly poppins: "'Poppins', -apple-system, BlinkMacSystemFont, system-ui, sans-serif";
69
+ readonly openSans: "'Open Sans (Custom)', -apple-system, BlinkMacSystemFont, system-ui, sans-serif";
70
+ readonly systemMono: "'Menlo', 'Consolas (Custom)', 'Bitstream Vera Sans Mono', monospace";
71
+ readonly jetbrainsMono: "'JetBrains Mono', 'Menlo', 'Consolas (Custom)', monospace";
72
+ readonly firaCode: "'Fira Code', 'Menlo', 'Consolas (Custom)', monospace";
73
+ readonly sourceCodePro: "'Source Code Pro', 'Menlo', 'Consolas (Custom)', monospace";
74
+ readonly systemSerif: "'Times New Roman', 'Times', 'Georgia', 'Cambria', serif";
75
+ readonly playfair: "'Playfair Display', 'Times New Roman', 'Georgia', serif";
53
76
  readonly georgia: "'Georgia', 'Times New Roman', 'Times', serif";
54
- readonly lora: "'Lora', 'Times New Roman', 'Times', serif";
77
+ readonly lora: "'Lora', 'Georgia', 'Times New Roman', serif";
55
78
  };
56
79
  /**
57
- * Apply font configuration to CSS variables
80
+ * Apply a font configuration.
58
81
  *
59
- * @param config Font configuration object
60
- * @param target Target element (defaults to document.documentElement)
82
+ * Stacks land on `:root` and roles on `themeElement`, mirroring where the stylesheet
83
+ * declares them — writing a role to `:root` would not survive, because the theme
84
+ * element declares its own.
61
85
  *
62
86
  * @example
63
87
  * ```ts
64
- * // Use Google Fonts
65
- * applyFontConfig({
66
- * sans: FONT_STACKS.poppins,
67
- * mono: FONT_STACKS.firaCode
68
- * });
69
- *
70
- * // Use system fonts only
88
+ * // Serif headings over a sans body
71
89
  * applyFontConfig({
72
- * sans: FONT_STACKS.system,
73
- * mono: FONT_STACKS.systemMono
90
+ * stacks: { sans: FONT_STACKS.inter, serif: FONT_STACKS.playfair },
91
+ * roles: { heading: 'var(--font-serif)' },
74
92
  * });
75
93
  * ```
76
94
  */
77
- export declare function applyFontConfig(config: FontConfig, target?: HTMLElement): void;
95
+ export declare function applyFontConfig(config: FontConfig, { root, themeElement }?: {
96
+ root?: HTMLElement;
97
+ themeElement?: HTMLElement | null;
98
+ }): void;
78
99
  /**
79
- * Generate CSS string for font configuration
80
- *
81
- * @param config Font configuration object
82
- * @returns CSS string that can be injected into a stylesheet
83
- *
84
- * @example
85
- * ```ts
86
- * const css = generateFontCSS({
87
- * sans: FONT_STACKS.poppins,
88
- * mono: FONT_STACKS.firaCode
89
- * });
90
- *
91
- * // Inject into document
92
- * const style = document.createElement('style');
93
- * style.textContent = css;
94
- * document.head.appendChild(style);
95
- * ```
100
+ * Render a font configuration as a CSS string, for injecting into a stylesheet or
101
+ * emitting server-side.
96
102
  */
97
103
  export declare function generateFontCSS(config: FontConfig): string;
98
- /**
99
- * Reset fonts to Kookie UI defaults
100
- */
101
- export declare function resetFonts(target?: HTMLElement): void;
102
- /**
103
- * Get current font configuration from CSS variables
104
- */
105
- export declare function getCurrentFontConfig(target?: HTMLElement): FontConfig;
104
+ /** Drop every inline font override, falling back to the stylesheet's defaults. */
105
+ export declare function resetFonts({ root, themeElement }?: {
106
+ root?: HTMLElement;
107
+ themeElement?: HTMLElement | null;
108
+ }): void;
109
+ /** Read the stacks and roles currently in effect. */
110
+ export declare function getCurrentFontConfig({ themeElement }?: {
111
+ themeElement?: HTMLElement | null;
112
+ }): Required<FontConfig>;
106
113
  //# sourceMappingURL=font-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"font-config.d.ts","sourceRoot":"","sources":["../../../src/helpers/font-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;CAWrB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAkBd,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,GAAE,WAAsC,GAAG,IAAI,CA0BxG;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA8B1D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,GAAE,WAAsC,GAAG,IAAI,CAU/E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,WAAsC,GAAG,UAAU,CAW/F"}
1
+ {"version":3,"file":"font-config.d.ts","sourceRoot":"","sources":["../../../src/helpers/font-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,qDAAqD;AACrD,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,qEAAqE;AACrE,eAAO,MAAM,oBAAoB;;;;CAIgC,CAAC;AAElE,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB;;;;;;;CAOgC,CAAC;AAEjE;;;;;;GAMG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAkBd,CAAC;AAeX;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,EAClB,EAAE,IAA+B,EAAE,YAAmE,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,WAAW,CAAC;IAAC,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAO,GACvK,IAAI,CAGN;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAc1D;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,EAAE,IAA+B,EAAE,YAAmE,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,WAAW,CAAC;IAAC,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAO,GAAG,IAAI,CAGzM;AAED,qDAAqD;AACrD,wBAAgB,oBAAoB,CAAC,EAAE,YAAmE,EAAE,GAAE;IAAE,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAqB9K"}
@@ -1,3 +1,6 @@
1
- "use strict";var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var l=(e,o)=>{for(var t in o)s(e,t,{get:o[t],enumerable:!0})},y=(e,o,t,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of p(o))!m.call(e,r)&&r!==t&&s(e,r,{get:()=>o[r],enumerable:!(i=a(o,r))||i.enumerable});return e};var f=e=>y(s({},"__esModule",{value:!0}),e);var F={};l(F,{FONT_CSS_VARIABLES:()=>n,FONT_STACKS:()=>u,applyFontConfig:()=>d,generateFontCSS:()=>M,getCurrentFontConfig:()=>P,resetFonts:()=>C});module.exports=f(F);var n={sans:"--font-sans",mono:"--font-mono",serif:"--font-serif",inter:"--font-inter",jetbrainsMono:"--font-jetbrains-mono",playfairDisplay:"--font-playfair-display",defaultFamily:"--default-font-family",headingFamily:"--heading-font-family",strongFamily:"--strong-font-family",codeFamily:"--code-font-family"},u={inter:"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",system:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",poppins:"'Poppins', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif",openSans:"'Open Sans', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif",jetbrainsMono:"'JetBrains Mono', 'Fira Code', 'Consolas', 'Liberation Mono', monospace",firaCode:"'Fira Code', 'JetBrains Mono', 'Consolas', 'Liberation Mono', monospace",sourceCodePro:"'Source Code Pro', 'JetBrains Mono', 'Consolas', monospace",systemMono:"'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', 'Courier New', monospace",playfair:"'Playfair Display', 'Times New Roman', 'Times', 'Georgia', 'Cambria', serif",times:"'Times New Roman', 'Times', 'Georgia', 'Cambria', serif",georgia:"'Georgia', 'Times New Roman', 'Times', serif",lora:"'Lora', 'Times New Roman', 'Times', serif"};function d(e,o=document.documentElement){let t=o.style;e.sans&&t.setProperty(n.sans,e.sans),e.mono&&t.setProperty(n.mono,e.mono),e.serif&&t.setProperty(n.serif,e.serif),e.inter&&t.setProperty(n.inter,e.inter),e.jetbrainsMono&&t.setProperty(n.jetbrainsMono,e.jetbrainsMono),e.playfairDisplay&&t.setProperty(n.playfairDisplay,e.playfairDisplay)}function M(e){let o=[":root {"];return e.sans&&o.push(` ${n.sans}: ${e.sans};`),e.mono&&o.push(` ${n.mono}: ${e.mono};`),e.serif&&o.push(` ${n.serif}: ${e.serif};`),e.inter&&o.push(` ${n.inter}: ${e.inter};`),e.jetbrainsMono&&o.push(` ${n.jetbrainsMono}: ${e.jetbrainsMono};`),e.playfairDisplay&&o.push(` ${n.playfairDisplay}: ${e.playfairDisplay};`),o.push("}"),o.join(`
2
- `)}function C(e=document.documentElement){let o=e.style;o.removeProperty(n.sans),o.removeProperty(n.mono),o.removeProperty(n.serif),o.removeProperty(n.inter),o.removeProperty(n.jetbrainsMono),o.removeProperty(n.playfairDisplay)}function P(e=document.documentElement){let o=getComputedStyle(e);return{sans:o.getPropertyValue(n.sans).trim()||void 0,mono:o.getPropertyValue(n.mono).trim()||void 0,serif:o.getPropertyValue(n.serif).trim()||void 0,inter:o.getPropertyValue(n.inter).trim()||void 0,jetbrainsMono:o.getPropertyValue(n.jetbrainsMono).trim()||void 0,playfairDisplay:o.getPropertyValue(n.playfairDisplay).trim()||void 0}}
1
+ "use strict";var m=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var g=(t,e)=>{for(var o in e)m(t,o,{get:e[o],enumerable:!0})},p=(t,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of u(e))!d.call(t,n)&&n!==o&&m(t,n,{get:()=>e[n],enumerable:!(s=f(e,n))||s.enumerable});return t};var y=t=>p(m({},"__esModule",{value:!0}),t);var T={};g(T,{FONT_ROLE_VARIABLES:()=>r,FONT_STACKS:()=>C,FONT_STACK_VARIABLES:()=>i,applyFontConfig:()=>S,generateFontCSS:()=>F,getCurrentFontConfig:()=>k,resetFonts:()=>M});module.exports=y(T);var i={sans:"--font-sans",mono:"--font-mono",serif:"--font-serif"},r={body:"--font-body",heading:"--font-heading",code:"--font-code",strong:"--font-strong",em:"--font-em",quote:"--font-quote"},C={system:"-apple-system, BlinkMacSystemFont, 'Segoe UI (Custom)', Roboto, 'Helvetica Neue', system-ui, sans-serif",inter:"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI (Custom)', Roboto, system-ui, sans-serif",poppins:"'Poppins', -apple-system, BlinkMacSystemFont, system-ui, sans-serif",openSans:"'Open Sans (Custom)', -apple-system, BlinkMacSystemFont, system-ui, sans-serif",systemMono:"'Menlo', 'Consolas (Custom)', 'Bitstream Vera Sans Mono', monospace",jetbrainsMono:"'JetBrains Mono', 'Menlo', 'Consolas (Custom)', monospace",firaCode:"'Fira Code', 'Menlo', 'Consolas (Custom)', monospace",sourceCodePro:"'Source Code Pro', 'Menlo', 'Consolas (Custom)', monospace",systemSerif:"'Times New Roman', 'Times', 'Georgia', 'Cambria', serif",playfair:"'Playfair Display', 'Times New Roman', 'Georgia', serif",georgia:"'Georgia', 'Times New Roman', 'Times', serif",lora:"'Lora', 'Georgia', 'Times New Roman', serif"};function c(t,e,o){for(let s of Object.keys(e)){let n=o[s];n&&t.style.setProperty(e[s],n)}}function l(t,e){for(let o of Object.values(e))t.style.removeProperty(o)}function S(t,{root:e=document.documentElement,themeElement:o=document.querySelector(".radix-themes")}={}){t.stacks&&c(e,i,t.stacks),t.roles&&o&&c(o,r,t.roles)}function F(t){let e=[],o=Object.entries(t.stacks??{}).filter(([,n])=>n);o.length&&e.push([":root {",...o.map(([n,a])=>` ${i[n]}: ${a};`),"}"].join(`
2
+ `));let s=Object.entries(t.roles??{}).filter(([,n])=>n);return s.length&&e.push([".radix-themes {",...s.map(([n,a])=>` ${r[n]}: ${a};`),"}"].join(`
3
+ `)),e.join(`
4
+
5
+ `)}function M({root:t=document.documentElement,themeElement:e=document.querySelector(".radix-themes")}={}){l(t,i),e&&l(e,r)}function k({themeElement:t=document.querySelector(".radix-themes")}={}){let e=getComputedStyle(t??document.documentElement),o=s=>e.getPropertyValue(s).trim()||void 0;return{stacks:{sans:o(i.sans),mono:o(i.mono),serif:o(i.serif)},roles:{body:o(r.body),heading:o(r.heading),code:o(r.code),strong:o(r.strong),em:o(r.em),quote:o(r.quote)}}}
3
6
  //# sourceMappingURL=font-config.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/font-config.ts"],
4
- "sourcesContent": ["/**\n * Font configuration utilities for Kookie UI\n *\n * These utilities help users configure custom fonts through CSS variables\n * and provide type-safe font configuration options.\n */\n\n/**\n * Font family configuration interface\n */\nexport interface FontConfig {\n /** Sans-serif font stack for fontFamily=\"sans\" */\n sans?: string;\n /** Monospace font stack for fontFamily=\"mono\" */\n mono?: string;\n /** Serif font stack for fontFamily=\"serif\" */\n serif?: string;\n /** Base Inter font replacement */\n inter?: string;\n /** Base JetBrains Mono font replacement */\n jetbrainsMono?: string;\n /** Base Playfair Display font replacement */\n playfairDisplay?: string;\n}\n\n/**\n * CSS variable names used by Kookie UI for fonts\n */\nexport const FONT_CSS_VARIABLES = {\n sans: '--font-sans',\n mono: '--font-mono',\n serif: '--font-serif',\n inter: '--font-inter',\n jetbrainsMono: '--font-jetbrains-mono',\n playfairDisplay: '--font-playfair-display',\n defaultFamily: '--default-font-family',\n headingFamily: '--heading-font-family',\n strongFamily: '--strong-font-family',\n codeFamily: '--code-font-family',\n} as const;\n\n/**\n * Popular font stacks for common use cases\n */\nexport const FONT_STACKS = {\n // Sans-serif options\n inter: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\",\n system: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n poppins: \"'Poppins', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif\",\n openSans: \"'Open Sans', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif\",\n\n // Monospace options\n jetbrainsMono: \"'JetBrains Mono', 'Fira Code', 'Consolas', 'Liberation Mono', monospace\",\n firaCode: \"'Fira Code', 'JetBrains Mono', 'Consolas', 'Liberation Mono', monospace\",\n sourceCodePro: \"'Source Code Pro', 'JetBrains Mono', 'Consolas', monospace\",\n systemMono: \"'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', 'Courier New', monospace\",\n\n // Serif options\n playfair: \"'Playfair Display', 'Times New Roman', 'Times', 'Georgia', 'Cambria', serif\",\n times: \"'Times New Roman', 'Times', 'Georgia', 'Cambria', serif\",\n georgia: \"'Georgia', 'Times New Roman', 'Times', serif\",\n lora: \"'Lora', 'Times New Roman', 'Times', serif\",\n} as const;\n\n/**\n * Apply font configuration to CSS variables\n *\n * @param config Font configuration object\n * @param target Target element (defaults to document.documentElement)\n *\n * @example\n * ```ts\n * // Use Google Fonts\n * applyFontConfig({\n * sans: FONT_STACKS.poppins,\n * mono: FONT_STACKS.firaCode\n * });\n *\n * // Use system fonts only\n * applyFontConfig({\n * sans: FONT_STACKS.system,\n * mono: FONT_STACKS.systemMono\n * });\n * ```\n */\nexport function applyFontConfig(config: FontConfig, target: HTMLElement = document.documentElement): void {\n const style = target.style;\n\n if (config.sans) {\n style.setProperty(FONT_CSS_VARIABLES.sans, config.sans);\n }\n\n if (config.mono) {\n style.setProperty(FONT_CSS_VARIABLES.mono, config.mono);\n }\n\n if (config.serif) {\n style.setProperty(FONT_CSS_VARIABLES.serif, config.serif);\n }\n\n if (config.inter) {\n style.setProperty(FONT_CSS_VARIABLES.inter, config.inter);\n }\n\n if (config.jetbrainsMono) {\n style.setProperty(FONT_CSS_VARIABLES.jetbrainsMono, config.jetbrainsMono);\n }\n\n if (config.playfairDisplay) {\n style.setProperty(FONT_CSS_VARIABLES.playfairDisplay, config.playfairDisplay);\n }\n}\n\n/**\n * Generate CSS string for font configuration\n *\n * @param config Font configuration object\n * @returns CSS string that can be injected into a stylesheet\n *\n * @example\n * ```ts\n * const css = generateFontCSS({\n * sans: FONT_STACKS.poppins,\n * mono: FONT_STACKS.firaCode\n * });\n *\n * // Inject into document\n * const style = document.createElement('style');\n * style.textContent = css;\n * document.head.appendChild(style);\n * ```\n */\nexport function generateFontCSS(config: FontConfig): string {\n const rules: string[] = [':root {'];\n\n if (config.sans) {\n rules.push(` ${FONT_CSS_VARIABLES.sans}: ${config.sans};`);\n }\n\n if (config.mono) {\n rules.push(` ${FONT_CSS_VARIABLES.mono}: ${config.mono};`);\n }\n\n if (config.serif) {\n rules.push(` ${FONT_CSS_VARIABLES.serif}: ${config.serif};`);\n }\n\n if (config.inter) {\n rules.push(` ${FONT_CSS_VARIABLES.inter}: ${config.inter};`);\n }\n\n if (config.jetbrainsMono) {\n rules.push(` ${FONT_CSS_VARIABLES.jetbrainsMono}: ${config.jetbrainsMono};`);\n }\n\n if (config.playfairDisplay) {\n rules.push(` ${FONT_CSS_VARIABLES.playfairDisplay}: ${config.playfairDisplay};`);\n }\n\n rules.push('}');\n\n return rules.join('\\n');\n}\n\n/**\n * Reset fonts to Kookie UI defaults\n */\nexport function resetFonts(target: HTMLElement = document.documentElement): void {\n const style = target.style;\n\n // Remove custom font variables to fall back to defaults\n style.removeProperty(FONT_CSS_VARIABLES.sans);\n style.removeProperty(FONT_CSS_VARIABLES.mono);\n style.removeProperty(FONT_CSS_VARIABLES.serif);\n style.removeProperty(FONT_CSS_VARIABLES.inter);\n style.removeProperty(FONT_CSS_VARIABLES.jetbrainsMono);\n style.removeProperty(FONT_CSS_VARIABLES.playfairDisplay);\n}\n\n/**\n * Get current font configuration from CSS variables\n */\nexport function getCurrentFontConfig(target: HTMLElement = document.documentElement): FontConfig {\n const computedStyle = getComputedStyle(target);\n\n return {\n sans: computedStyle.getPropertyValue(FONT_CSS_VARIABLES.sans).trim() || undefined,\n mono: computedStyle.getPropertyValue(FONT_CSS_VARIABLES.mono).trim() || undefined,\n serif: computedStyle.getPropertyValue(FONT_CSS_VARIABLES.serif).trim() || undefined,\n inter: computedStyle.getPropertyValue(FONT_CSS_VARIABLES.inter).trim() || undefined,\n jetbrainsMono: computedStyle.getPropertyValue(FONT_CSS_VARIABLES.jetbrainsMono).trim() || undefined,\n playfairDisplay: computedStyle.getPropertyValue(FONT_CSS_VARIABLES.playfairDisplay).trim() || undefined,\n };\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,EAAA,gBAAAC,EAAA,oBAAAC,EAAA,oBAAAC,EAAA,yBAAAC,EAAA,eAAAC,IAAA,eAAAC,EAAAR,GA4BO,IAAME,EAAqB,CAChC,KAAM,cACN,KAAM,cACN,MAAO,eACP,MAAO,eACP,cAAe,wBACf,gBAAiB,0BACjB,cAAe,wBACf,cAAe,wBACf,aAAc,uBACd,WAAY,oBACd,EAKaC,EAAc,CAEzB,MAAO,6EACP,OAAQ,6FACR,QAAS,oEACT,SAAU,sEAGV,cAAe,0EACf,SAAU,0EACV,cAAe,6DACf,WAAY,8EAGZ,SAAU,8EACV,MAAO,0DACP,QAAS,+CACT,KAAM,2CACR,EAuBO,SAASC,EAAgBK,EAAoBC,EAAsB,SAAS,gBAAuB,CACxG,IAAMC,EAAQD,EAAO,MAEjBD,EAAO,MACTE,EAAM,YAAYT,EAAmB,KAAMO,EAAO,IAAI,EAGpDA,EAAO,MACTE,EAAM,YAAYT,EAAmB,KAAMO,EAAO,IAAI,EAGpDA,EAAO,OACTE,EAAM,YAAYT,EAAmB,MAAOO,EAAO,KAAK,EAGtDA,EAAO,OACTE,EAAM,YAAYT,EAAmB,MAAOO,EAAO,KAAK,EAGtDA,EAAO,eACTE,EAAM,YAAYT,EAAmB,cAAeO,EAAO,aAAa,EAGtEA,EAAO,iBACTE,EAAM,YAAYT,EAAmB,gBAAiBO,EAAO,eAAe,CAEhF,CAqBO,SAASJ,EAAgBI,EAA4B,CAC1D,IAAMG,EAAkB,CAAC,SAAS,EAElC,OAAIH,EAAO,MACTG,EAAM,KAAK,KAAKV,EAAmB,IAAI,KAAKO,EAAO,IAAI,GAAG,EAGxDA,EAAO,MACTG,EAAM,KAAK,KAAKV,EAAmB,IAAI,KAAKO,EAAO,IAAI,GAAG,EAGxDA,EAAO,OACTG,EAAM,KAAK,KAAKV,EAAmB,KAAK,KAAKO,EAAO,KAAK,GAAG,EAG1DA,EAAO,OACTG,EAAM,KAAK,KAAKV,EAAmB,KAAK,KAAKO,EAAO,KAAK,GAAG,EAG1DA,EAAO,eACTG,EAAM,KAAK,KAAKV,EAAmB,aAAa,KAAKO,EAAO,aAAa,GAAG,EAG1EA,EAAO,iBACTG,EAAM,KAAK,KAAKV,EAAmB,eAAe,KAAKO,EAAO,eAAe,GAAG,EAGlFG,EAAM,KAAK,GAAG,EAEPA,EAAM,KAAK;AAAA,CAAI,CACxB,CAKO,SAASL,EAAWG,EAAsB,SAAS,gBAAuB,CAC/E,IAAMC,EAAQD,EAAO,MAGrBC,EAAM,eAAeT,EAAmB,IAAI,EAC5CS,EAAM,eAAeT,EAAmB,IAAI,EAC5CS,EAAM,eAAeT,EAAmB,KAAK,EAC7CS,EAAM,eAAeT,EAAmB,KAAK,EAC7CS,EAAM,eAAeT,EAAmB,aAAa,EACrDS,EAAM,eAAeT,EAAmB,eAAe,CACzD,CAKO,SAASI,EAAqBI,EAAsB,SAAS,gBAA6B,CAC/F,IAAMG,EAAgB,iBAAiBH,CAAM,EAE7C,MAAO,CACL,KAAMG,EAAc,iBAAiBX,EAAmB,IAAI,EAAE,KAAK,GAAK,OACxE,KAAMW,EAAc,iBAAiBX,EAAmB,IAAI,EAAE,KAAK,GAAK,OACxE,MAAOW,EAAc,iBAAiBX,EAAmB,KAAK,EAAE,KAAK,GAAK,OAC1E,MAAOW,EAAc,iBAAiBX,EAAmB,KAAK,EAAE,KAAK,GAAK,OAC1E,cAAeW,EAAc,iBAAiBX,EAAmB,aAAa,EAAE,KAAK,GAAK,OAC1F,gBAAiBW,EAAc,iBAAiBX,EAAmB,eAAe,EAAE,KAAK,GAAK,MAChG,CACF",
6
- "names": ["font_config_exports", "__export", "FONT_CSS_VARIABLES", "FONT_STACKS", "applyFontConfig", "generateFontCSS", "getCurrentFontConfig", "resetFonts", "__toCommonJS", "config", "target", "style", "rules", "computedStyle"]
4
+ "sourcesContent": ["/**\n * Runtime font configuration for Kookie UI.\n *\n * This is a thin, typed wrapper over the CSS tokens in `styles/tokens/font-family.css` \u2014\n * it writes the same variables you would write by hand, and nothing else. Prefer plain CSS\n * where you can; reach for this when the stacks are only known at runtime (a theme editor,\n * a user-selectable typeface).\n *\n * Two tiers, matching the CSS:\n *\n * - `stacks` \u2014 which typefaces exist: `sans`, `mono`, `serif`. Written to `:root`.\n * - `roles` \u2014 which stack each role uses: `body`, `heading`, `code`, `strong`, `em`,\n * `quote`. Written to the theme element, since roles are per-theme.\n */\n\n/** Tier 1 \u2014 the typefaces available to the theme. */\nexport interface FontStacks {\n /** Sans-serif stack. Backs `font=\"sans\"` and, by default, body text. */\n sans?: string;\n /** Monospace stack. Backs `font=\"mono\"` and `Code`. */\n mono?: string;\n /** Serif stack. Backs `font=\"serif\"`, `Em` and `Quote`. */\n serif?: string;\n}\n\n/** Tier 2 \u2014 which stack each role of text uses. */\nexport interface FontRoles {\n /** Body text: `Text`, inputs, buttons, and anything that does not opt out. */\n body?: string;\n /** `Heading`. Follows `body` when left unset. */\n heading?: string;\n /** `Code`. */\n code?: string;\n /** `Strong`. */\n strong?: string;\n /** `Em`. */\n em?: string;\n /** `Quote`. */\n quote?: string;\n}\n\nexport interface FontConfig {\n stacks?: FontStacks;\n roles?: FontRoles;\n}\n\n/** CSS custom properties backing each stack. Declared on `:root`. */\nexport const FONT_STACK_VARIABLES = {\n sans: '--font-sans',\n mono: '--font-mono',\n serif: '--font-serif',\n} as const satisfies Record<keyof FontStacks, `--font-${string}`>;\n\n/** CSS custom properties backing each role. Declared on the theme element. */\nexport const FONT_ROLE_VARIABLES = {\n body: '--font-body',\n heading: '--font-heading',\n code: '--font-code',\n strong: '--font-strong',\n em: '--font-em',\n quote: '--font-quote',\n} as const satisfies Record<keyof FontRoles, `--font-${string}`>;\n\n/**\n * Ready-made stacks, each ending in a system fallback.\n *\n * The webfont entries assume the face is already loaded \u2014 via\n * `import '@womp/kookie-ui/fonts.css'`, `next/font`, or your own `@font-face`.\n * Kookie's core stylesheet deliberately loads none.\n */\nexport const FONT_STACKS = {\n // Sans\n system: \"-apple-system, BlinkMacSystemFont, 'Segoe UI (Custom)', Roboto, 'Helvetica Neue', system-ui, sans-serif\",\n inter: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI (Custom)', Roboto, system-ui, sans-serif\",\n poppins: \"'Poppins', -apple-system, BlinkMacSystemFont, system-ui, sans-serif\",\n openSans: \"'Open Sans (Custom)', -apple-system, BlinkMacSystemFont, system-ui, sans-serif\",\n\n // Mono\n systemMono: \"'Menlo', 'Consolas (Custom)', 'Bitstream Vera Sans Mono', monospace\",\n jetbrainsMono: \"'JetBrains Mono', 'Menlo', 'Consolas (Custom)', monospace\",\n firaCode: \"'Fira Code', 'Menlo', 'Consolas (Custom)', monospace\",\n sourceCodePro: \"'Source Code Pro', 'Menlo', 'Consolas (Custom)', monospace\",\n\n // Serif\n systemSerif: \"'Times New Roman', 'Times', 'Georgia', 'Cambria', serif\",\n playfair: \"'Playfair Display', 'Times New Roman', 'Georgia', serif\",\n georgia: \"'Georgia', 'Times New Roman', 'Times', serif\",\n lora: \"'Lora', 'Georgia', 'Times New Roman', serif\",\n} as const;\n\nfunction write<K extends string>(target: HTMLElement, variables: Record<K, string>, values: Partial<Record<K, string>>) {\n for (const key of Object.keys(variables) as K[]) {\n const value = values[key];\n if (value) target.style.setProperty(variables[key], value);\n }\n}\n\nfunction clear(target: HTMLElement, variables: Record<string, string>) {\n for (const variable of Object.values(variables)) {\n target.style.removeProperty(variable);\n }\n}\n\n/**\n * Apply a font configuration.\n *\n * Stacks land on `:root` and roles on `themeElement`, mirroring where the stylesheet\n * declares them \u2014 writing a role to `:root` would not survive, because the theme\n * element declares its own.\n *\n * @example\n * ```ts\n * // Serif headings over a sans body\n * applyFontConfig({\n * stacks: { sans: FONT_STACKS.inter, serif: FONT_STACKS.playfair },\n * roles: { heading: 'var(--font-serif)' },\n * });\n * ```\n */\nexport function applyFontConfig(\n config: FontConfig,\n { root = document.documentElement, themeElement = document.querySelector<HTMLElement>('.radix-themes') }: { root?: HTMLElement; themeElement?: HTMLElement | null } = {},\n): void {\n if (config.stacks) write(root, FONT_STACK_VARIABLES, config.stacks);\n if (config.roles && themeElement) write(themeElement, FONT_ROLE_VARIABLES, config.roles);\n}\n\n/**\n * Render a font configuration as a CSS string, for injecting into a stylesheet or\n * emitting server-side.\n */\nexport function generateFontCSS(config: FontConfig): string {\n const blocks: string[] = [];\n\n const stacks = Object.entries(config.stacks ?? {}).filter(([, value]) => value);\n if (stacks.length) {\n blocks.push([':root {', ...stacks.map(([key, value]) => ` ${FONT_STACK_VARIABLES[key as keyof FontStacks]}: ${value};`), '}'].join('\\n'));\n }\n\n const roles = Object.entries(config.roles ?? {}).filter(([, value]) => value);\n if (roles.length) {\n blocks.push(['.radix-themes {', ...roles.map(([key, value]) => ` ${FONT_ROLE_VARIABLES[key as keyof FontRoles]}: ${value};`), '}'].join('\\n'));\n }\n\n return blocks.join('\\n\\n');\n}\n\n/** Drop every inline font override, falling back to the stylesheet's defaults. */\nexport function resetFonts({ root = document.documentElement, themeElement = document.querySelector<HTMLElement>('.radix-themes') }: { root?: HTMLElement; themeElement?: HTMLElement | null } = {}): void {\n clear(root, FONT_STACK_VARIABLES);\n if (themeElement) clear(themeElement, FONT_ROLE_VARIABLES);\n}\n\n/** Read the stacks and roles currently in effect. */\nexport function getCurrentFontConfig({ themeElement = document.querySelector<HTMLElement>('.radix-themes') }: { themeElement?: HTMLElement | null } = {}): Required<FontConfig> {\n // Roles resolve against the theme element, so read both tiers from it \u2014 it inherits\n // the stacks from `:root` and is the only place the roles are declared.\n const computed = getComputedStyle(themeElement ?? document.documentElement);\n const read = (variable: string) => computed.getPropertyValue(variable).trim() || undefined;\n\n return {\n stacks: {\n sans: read(FONT_STACK_VARIABLES.sans),\n mono: read(FONT_STACK_VARIABLES.mono),\n serif: read(FONT_STACK_VARIABLES.serif),\n },\n roles: {\n body: read(FONT_ROLE_VARIABLES.body),\n heading: read(FONT_ROLE_VARIABLES.heading),\n code: read(FONT_ROLE_VARIABLES.code),\n strong: read(FONT_ROLE_VARIABLES.strong),\n em: read(FONT_ROLE_VARIABLES.em),\n quote: read(FONT_ROLE_VARIABLES.quote),\n },\n };\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,EAAA,gBAAAC,EAAA,yBAAAC,EAAA,oBAAAC,EAAA,oBAAAC,EAAA,yBAAAC,EAAA,eAAAC,IAAA,eAAAC,EAAAT,GA+CO,IAAMI,EAAuB,CAClC,KAAM,cACN,KAAM,cACN,MAAO,cACT,EAGaF,EAAsB,CACjC,KAAM,cACN,QAAS,iBACT,KAAM,cACN,OAAQ,gBACR,GAAI,YACJ,MAAO,cACT,EASaC,EAAc,CAEzB,OAAQ,0GACR,MAAO,iGACP,QAAS,sEACT,SAAU,iFAGV,WAAY,sEACZ,cAAe,4DACf,SAAU,uDACV,cAAe,6DAGf,YAAa,0DACb,SAAU,0DACV,QAAS,+CACT,KAAM,6CACR,EAEA,SAASO,EAAwBC,EAAqBC,EAA8BC,EAAoC,CACtH,QAAWC,KAAO,OAAO,KAAKF,CAAS,EAAU,CAC/C,IAAMG,EAAQF,EAAOC,CAAG,EACpBC,GAAOJ,EAAO,MAAM,YAAYC,EAAUE,CAAG,EAAGC,CAAK,CAC3D,CACF,CAEA,SAASC,EAAML,EAAqBC,EAAmC,CACrE,QAAWK,KAAY,OAAO,OAAOL,CAAS,EAC5CD,EAAO,MAAM,eAAeM,CAAQ,CAExC,CAkBO,SAASZ,EACda,EACA,CAAE,KAAAC,EAAO,SAAS,gBAAiB,aAAAC,EAAe,SAAS,cAA2B,eAAe,CAAE,EAA+D,CAAC,EACjK,CACFF,EAAO,QAAQR,EAAMS,EAAMf,EAAsBc,EAAO,MAAM,EAC9DA,EAAO,OAASE,GAAcV,EAAMU,EAAclB,EAAqBgB,EAAO,KAAK,CACzF,CAMO,SAASZ,EAAgBY,EAA4B,CAC1D,IAAMG,EAAmB,CAAC,EAEpBC,EAAS,OAAO,QAAQJ,EAAO,QAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAEH,CAAK,IAAMA,CAAK,EAC1EO,EAAO,QACTD,EAAO,KAAK,CAAC,UAAW,GAAGC,EAAO,IAAI,CAAC,CAACR,EAAKC,CAAK,IAAM,KAAKX,EAAqBU,CAAuB,CAAC,KAAKC,CAAK,GAAG,EAAG,GAAG,EAAE,KAAK;AAAA,CAAI,CAAC,EAG3I,IAAMQ,EAAQ,OAAO,QAAQL,EAAO,OAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAEH,CAAK,IAAMA,CAAK,EAC5E,OAAIQ,EAAM,QACRF,EAAO,KAAK,CAAC,kBAAmB,GAAGE,EAAM,IAAI,CAAC,CAACT,EAAKC,CAAK,IAAM,KAAKb,EAAoBY,CAAsB,CAAC,KAAKC,CAAK,GAAG,EAAG,GAAG,EAAE,KAAK;AAAA,CAAI,CAAC,EAGzIM,EAAO,KAAK;AAAA;AAAA,CAAM,CAC3B,CAGO,SAASb,EAAW,CAAE,KAAAW,EAAO,SAAS,gBAAiB,aAAAC,EAAe,SAAS,cAA2B,eAAe,CAAE,EAA+D,CAAC,EAAS,CACzMJ,EAAMG,EAAMf,CAAoB,EAC5BgB,GAAcJ,EAAMI,EAAclB,CAAmB,CAC3D,CAGO,SAASK,EAAqB,CAAE,aAAAa,EAAe,SAAS,cAA2B,eAAe,CAAE,EAA2C,CAAC,EAAyB,CAG9K,IAAMI,EAAW,iBAAiBJ,GAAgB,SAAS,eAAe,EACpEK,EAAQR,GAAqBO,EAAS,iBAAiBP,CAAQ,EAAE,KAAK,GAAK,OAEjF,MAAO,CACL,OAAQ,CACN,KAAMQ,EAAKrB,EAAqB,IAAI,EACpC,KAAMqB,EAAKrB,EAAqB,IAAI,EACpC,MAAOqB,EAAKrB,EAAqB,KAAK,CACxC,EACA,MAAO,CACL,KAAMqB,EAAKvB,EAAoB,IAAI,EACnC,QAASuB,EAAKvB,EAAoB,OAAO,EACzC,KAAMuB,EAAKvB,EAAoB,IAAI,EACnC,OAAQuB,EAAKvB,EAAoB,MAAM,EACvC,GAAIuB,EAAKvB,EAAoB,EAAE,EAC/B,MAAOuB,EAAKvB,EAAoB,KAAK,CACvC,CACF,CACF",
6
+ "names": ["font_config_exports", "__export", "FONT_ROLE_VARIABLES", "FONT_STACKS", "FONT_STACK_VARIABLES", "applyFontConfig", "generateFontCSS", "getCurrentFontConfig", "resetFonts", "__toCommonJS", "write", "target", "variables", "values", "key", "value", "clear", "variable", "config", "root", "themeElement", "blocks", "stacks", "roles", "computed", "read"]
7
7
  }
@@ -1,3 +1,6 @@
1
- "use strict";var O=Object.create;var P=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var B=Object.getPrototypeOf,G=Object.prototype.hasOwnProperty;var A=(e,t)=>{for(var r in t)P(e,r,{get:t[r],enumerable:!0})},C=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of F(t))!G.call(e,o)&&o!==r&&P(e,o,{get:()=>t[o],enumerable:!(s=$(t,o))||s.enumerable});return e};var h=(e,t,r)=>(r=e!=null?O(B(e)):{},C(t||!e||!e.__esModule?P(r,"default",{value:e,enumerable:!0}):r,e)),z=e=>C(P({},"__esModule",{value:!0}),e);var me={};A(me,{FONT_CSS_VARIABLES:()=>m,FONT_STACKS:()=>Y,applyFontConfig:()=>Q,extractMarginProps:()=>I,extractProps:()=>J,generateFontCSS:()=>X,getCurrentFontConfig:()=>ee,getMarginStyles:()=>re,getMatchingGrayColor:()=>ne,getResponsiveClassNames:()=>b,getResponsiveCustomProperties:()=>k,getResponsiveStyles:()=>g,getSubtree:()=>se,hasOwnProperty:()=>R,isResponsiveObject:()=>c,mapButtonSizeToSpinnerSize:()=>ae,mapCalloutSizeToTextSize:()=>ie,mapResponsiveProp:()=>oe,mergeStyles:()=>y,normalizeToPx:()=>pe,requireReactElement:()=>le,resetFonts:()=>Z});module.exports=z(me);function I(e){let{m:t,mx:r,my:s,mt:o,mr:a,mb:i,ml:l,...p}=e;return{m:t,mx:r,my:s,mt:o,mr:a,mb:i,ml:l,rest:p}}var j=h(require("classnames"));var K=[],W=new Set;function U(e){let t=Object.assign({},...e),r=[],s=[],o=new Set;for(let a in t){let i=t[a],l=i.values??K,p={key:a,type:i.type,default:i.default,hasDefault:i.default!==void 0,responsive:"responsive"in i,className:i.className,customProperties:i.customProperties,parseValue:i.parseValue,values:l,valueSet:l.length>0?new Set(l):W,enumValueSet:i.type==="enum"?new Set([i.default,...l]):void 0};i.className?(r.push(p),o.add(a)):(p.hasDefault||i.type==="enum")&&s.push(p)}return{styling:r,passthrough:s,stylingKeys:o}}var L={children:new WeakMap};function T(e){let t=L;for(let r=0;r<e.length;r++){let s=e[r],o=t.children.get(s);o===void 0&&(o={children:new WeakMap},t.children.set(s,o)),t=o}return t.compiled??(t.compiled=U(e))}var _=["initial","xs","sm","md","lg","xl"],N=new Set(_);function R(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var q=new Set(["initial","xs","sm","md","lg","xl"]);function c(e){if(typeof e!="object"||e===null)return!1;for(let t in e)if(q.has(t))return!0;return!1}function D(e,t,r){return t!==void 0?t.has(r):e.includes(r)}function g({className:e,customProperties:t,...r}){let s=b({allowArbitraryValues:!0,className:e,...r}),o=k({customProperties:t,...r});return[s,o]}function b({allowArbitraryValues:e,value:t,className:r,propValues:s,propValueSet:o,parseValue:a=i=>i}){if(t){if(typeof t=="string")return D(s,o,t)?V(r,t,a):e?r:void 0;if(c(t)){let i=t,l=[];for(let p in i){if(!R(i,p)||!N.has(p))continue;let n=i[p];if(n!==void 0){if(D(s,o,n)){let u=V(r,n,a),f=p==="initial"?u:`${p}:${u}`;l.push(f)}else if(e){let u=p==="initial"?r:`${p}:${r}`;l.push(u)}}}return l.length>0?l.join(" "):""}if(e)return r}}function V(e,t,r){let s=e?"-":"",o=r(t),a=o?.startsWith("-"),i=a?"-":"",l=a?o?.substring(1):o;return`${i}${e}${s}${l}`}function k({customProperties:e,value:t,propValues:r,propValueSet:s,parseValue:o=a=>a}){if(!t||typeof t=="string"&&D(r,s,t))return;let a;if(typeof t=="string"){let i=o(t);a={};for(let l of e)a[l]=i;return a}if(c(t)){let i=t;for(let l in i){if(!R(i,l)||!N.has(l))continue;let p=i[l];if(p===void 0||D(r,s,p))continue;let n=o(p);a??(a={});for(let u of e){let f=l==="initial"?u:`${u}-${l}`;a[f]=n}}}return a??{}}function y(...e){let t;for(let r of e)r&&(t===void 0&&(t={}),Object.assign(t,r));return t}function H(e,t){let r=e.initial,s=!1;return t.hasDefault&&r===void 0&&(r=t.default,s=!0),t.enumValueSet!==void 0&&!t.enumValueSet.has(r)&&(r=t.default,s=!0),s?{...e,initial:r}:e}function J(e,...t){let{styling:r,passthrough:s,stylingKeys:o}=T(t),a={};for(let p in e)o.has(p)||(a[p]=e[p]);for(let p=0;p<s.length;p++){let n=s[p],u=a[n.key];if(u===void 0){n.hasDefault&&(a[n.key]=n.default);continue}n.enumValueSet!==void 0&&!n.enumValueSet.has(u)&&!c(u)&&(a[n.key]=n.default)}let i,l=[];for(let p=0;p<r.length;p++){let n=r[p],u=e[n.key];if(u===void 0&&n.hasDefault&&(u=n.default),n.enumValueSet!==void 0&&!n.enumValueSet.has(u)&&!c(u)&&(u=n.default),!!u){if(c(u)){if(!n.responsive)continue;u=H(u,n)}if(n.type==="enum"){let f=b({allowArbitraryValues:!1,value:u,className:n.className,propValues:n.values,propValueSet:n.valueSet,parseValue:n.parseValue});f&&l.push(f);continue}if(n.type==="string"||n.type==="enum | string"){let[f,x]=g({className:n.className,customProperties:n.customProperties,propValues:n.type==="string"?[]:n.values,propValueSet:n.type==="string"?void 0:n.valueSet,parseValue:n.parseValue,value:u});x&&(i=y(i,x)),f&&l.push(f);continue}if(n.type==="boolean"){l.push(n.className);continue}}}return a.className=(0,j.default)(l.length>0?l.join(" "):void 0,e.className),a.style=y(i,e.style),a}var m={sans:"--font-sans",mono:"--font-mono",serif:"--font-serif",inter:"--font-inter",jetbrainsMono:"--font-jetbrains-mono",playfairDisplay:"--font-playfair-display",defaultFamily:"--default-font-family",headingFamily:"--heading-font-family",strongFamily:"--strong-font-family",codeFamily:"--code-font-family"},Y={inter:"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",system:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",poppins:"'Poppins', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif",openSans:"'Open Sans', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif",jetbrainsMono:"'JetBrains Mono', 'Fira Code', 'Consolas', 'Liberation Mono', monospace",firaCode:"'Fira Code', 'JetBrains Mono', 'Consolas', 'Liberation Mono', monospace",sourceCodePro:"'Source Code Pro', 'JetBrains Mono', 'Consolas', monospace",systemMono:"'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', 'Courier New', monospace",playfair:"'Playfair Display', 'Times New Roman', 'Times', 'Georgia', 'Cambria', serif",times:"'Times New Roman', 'Times', 'Georgia', 'Cambria', serif",georgia:"'Georgia', 'Times New Roman', 'Times', serif",lora:"'Lora', 'Times New Roman', 'Times', serif"};function Q(e,t=document.documentElement){let r=t.style;e.sans&&r.setProperty(m.sans,e.sans),e.mono&&r.setProperty(m.mono,e.mono),e.serif&&r.setProperty(m.serif,e.serif),e.inter&&r.setProperty(m.inter,e.inter),e.jetbrainsMono&&r.setProperty(m.jetbrainsMono,e.jetbrainsMono),e.playfairDisplay&&r.setProperty(m.playfairDisplay,e.playfairDisplay)}function X(e){let t=[":root {"];return e.sans&&t.push(` ${m.sans}: ${e.sans};`),e.mono&&t.push(` ${m.mono}: ${e.mono};`),e.serif&&t.push(` ${m.serif}: ${e.serif};`),e.inter&&t.push(` ${m.inter}: ${e.inter};`),e.jetbrainsMono&&t.push(` ${m.jetbrainsMono}: ${e.jetbrainsMono};`),e.playfairDisplay&&t.push(` ${m.playfairDisplay}: ${e.playfairDisplay};`),t.push("}"),t.join(`
2
- `)}function Z(e=document.documentElement){let t=e.style;t.removeProperty(m.sans),t.removeProperty(m.mono),t.removeProperty(m.serif),t.removeProperty(m.inter),t.removeProperty(m.jetbrainsMono),t.removeProperty(m.playfairDisplay)}function ee(e=document.documentElement){let t=getComputedStyle(e);return{sans:t.getPropertyValue(m.sans).trim()||void 0,mono:t.getPropertyValue(m.mono).trim()||void 0,serif:t.getPropertyValue(m.serif).trim()||void 0,inter:t.getPropertyValue(m.inter).trim()||void 0,jetbrainsMono:t.getPropertyValue(m.jetbrainsMono).trim()||void 0,playfairDisplay:t.getPropertyValue(m.playfairDisplay).trim()||void 0}}var d=["0","1","2","3","4","5","6","7","8","9","10","11","12","-1","-2","-3","-4","-5","-6","-7","-8","-9","-10","-11","-12"],M={m:{type:"enum | string",values:d,responsive:!0,className:"rt-r-m",customProperties:["--m"]},mx:{type:"enum | string",values:d,responsive:!0,className:"rt-r-mx",customProperties:["--ml","--mr"]},my:{type:"enum | string",values:d,responsive:!0,className:"rt-r-my",customProperties:["--mt","--mb"]},mt:{type:"enum | string",values:d,responsive:!0,className:"rt-r-mt",customProperties:["--mt"]},mr:{type:"enum | string",values:d,responsive:!0,className:"rt-r-mr",customProperties:["--mr"]},mb:{type:"enum | string",values:d,responsive:!0,className:"rt-r-mb",customProperties:["--mb"]},ml:{type:"enum | string",values:d,responsive:!0,className:"rt-r-ml",customProperties:["--ml"]}};var E=M.m.values,te=new Set(E),w=[{key:"m",className:"rt-r-m",customProperties:["--margin"]},{key:"mx",className:"rt-r-mx",customProperties:["--margin-left","--margin-right"]},{key:"my",className:"rt-r-my",customProperties:["--margin-top","--margin-bottom"]},{key:"mt",className:"rt-r-mt",customProperties:["--margin-top"]},{key:"mr",className:"rt-r-mr",customProperties:["--margin-right"]},{key:"mb",className:"rt-r-mb",customProperties:["--margin-bottom"]},{key:"ml",className:"rt-r-ml",customProperties:["--margin-left"]}];function re(e){let t,r;for(let s=0;s<w.length;s++){let{key:o,className:a,customProperties:i}=w[s],l=e[o];if(l===void 0)continue;let[p,n]=g({className:a,customProperties:i,propValues:E,propValueSet:te,value:l});p&&(t??(t=[])).push(p),n&&(r=y(r,n))}return[t!==void 0?t.join(" "):"",r]}function ne(e){switch(e){case"tomato":case"red":case"ruby":case"crimson":case"pink":case"plum":case"purple":case"violet":return"mauve";case"iris":case"indigo":case"blue":case"sky":case"cyan":return"slate";case"teal":case"jade":case"mint":case"green":return"sage";case"grass":case"lime":return"olive";case"yellow":case"amber":case"orange":case"brown":case"gold":case"bronze":return"sand";case"gray":return"gray"}}var S=h(require("react"));function se(e,t){let{asChild:r,children:s}=e;if(!r)return typeof t=="function"?t(s):t;let o=S.Children.only(s);return S.cloneElement(o,{children:typeof t=="function"?t(o.props.children):t})}function oe(e,t){if(e!==void 0)return typeof e=="string"?t(e):Object.fromEntries(Object.entries(e).map(([r,s])=>[r,t(s)]))}function ie(e){return e==="3"?"3":e==="1"?"1":"2"}function ae(e){switch(e){case"1":return"1";case"2":case"3":return"2";case"4":return"3"}}function pe(e,t="horizontal"){if(e==null)return;if(typeof e=="number"&&Number.isFinite(e))return e;let r=String(e).trim();if(!r)return;if(r.endsWith("px"))return Number.parseFloat(r);if(r.endsWith("rem")){let o=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(r)*o}if(r.endsWith("%")){let o=Number.parseFloat(r),a=t==="horizontal"?document.documentElement.clientWidth||window.innerWidth||0:document.documentElement.clientHeight||window.innerHeight||0;return o/100*a}let s=Number.parseFloat(r);return Number.isFinite(s)?s:void 0}var v=h(require("react")),le=e=>{if(!v.isValidElement(e))throw Error(`Expected a single React Element child, but got: ${v.Children.toArray(e).map(r=>typeof r=="object"&&"type"in r&&typeof r.type=="string"?r.type:typeof r).join(", ")}`);return e};
1
+ "use strict";var B=Object.create;var R=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var K=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var L=(e,t)=>{for(var n in t)R(e,n,{get:t[n],enumerable:!0})},C=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of A(t))!q.call(e,s)&&s!==n&&R(e,s,{get:()=>t[s],enumerable:!(r=G(t,s))||r.enumerable});return e};var x=(e,t,n)=>(n=e!=null?B(K(e)):{},C(t||!e||!e.__esModule?R(n,"default",{value:e,enumerable:!0}):n,e)),z=e=>C(R({},"__esModule",{value:!0}),e);var ce={};L(ce,{FONT_ROLE_VARIABLES:()=>l,FONT_STACKS:()=>Z,FONT_STACK_VARIABLES:()=>d,applyFontConfig:()=>ee,extractMarginProps:()=>H,extractProps:()=>X,generateFontCSS:()=>te,getCurrentFontConfig:()=>se,getMarginStyles:()=>oe,getMatchingGrayColor:()=>ie,getResponsiveClassNames:()=>D,getResponsiveCustomProperties:()=>E,getResponsiveStyles:()=>P,getSubtree:()=>ae,hasOwnProperty:()=>S,isResponsiveObject:()=>c,mapButtonSizeToSpinnerSize:()=>ue,mapCalloutSizeToTextSize:()=>me,mapResponsiveProp:()=>pe,mergeStyles:()=>y,normalizeToPx:()=>le,requireReactElement:()=>fe,resetFonts:()=>ne});module.exports=z(ce);function H(e){let{m:t,mx:n,my:r,mt:s,mr:i,mb:a,ml:m,...p}=e;return{m:t,mx:n,my:r,mt:s,mr:i,mb:a,ml:m,rest:p}}var j=x(require("classnames"));var I=[],W=new Set;function U(e){let t=Object.assign({},...e),n=[],r=[],s=new Set;for(let i in t){let a=t[i],m=a.values??I,p={key:i,type:a.type,default:a.default,hasDefault:a.default!==void 0,responsive:"responsive"in a,className:a.className,customProperties:a.customProperties,parseValue:a.parseValue,values:m,valueSet:m.length>0?new Set(m):W,enumValueSet:a.type==="enum"?new Set([a.default,...m]):void 0};a.className?(n.push(p),s.add(i)):(p.hasDefault||a.type==="enum")&&r.push(p)}return{styling:n,passthrough:r,stylingKeys:s}}var _={children:new WeakMap};function k(e){let t=_;for(let n=0;n<e.length;n++){let r=e[n],s=t.children.get(r);s===void 0&&(s={children:new WeakMap},t.children.set(r,s)),t=s}return t.compiled??(t.compiled=U(e))}var Y=["initial","xs","sm","md","lg","xl"],N=new Set(Y);function S(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var J=new Set(["initial","xs","sm","md","lg","xl"]);function c(e){if(typeof e!="object"||e===null)return!1;for(let t in e)if(J.has(t))return!0;return!1}function b(e,t,n){return t!==void 0?t.has(n):e.includes(n)}function P({className:e,customProperties:t,...n}){let r=D({allowArbitraryValues:!0,className:e,...n}),s=E({customProperties:t,...n});return[r,s]}function D({allowArbitraryValues:e,value:t,className:n,propValues:r,propValueSet:s,parseValue:i=a=>a}){if(t){if(typeof t=="string")return b(r,s,t)?V(n,t,i):e?n:void 0;if(c(t)){let a=t,m=[];for(let p in a){if(!S(a,p)||!N.has(p))continue;let o=a[p];if(o!==void 0){if(b(r,s,o)){let u=V(n,o,i),f=p==="initial"?u:`${p}:${u}`;m.push(f)}else if(e){let u=p==="initial"?n:`${p}:${n}`;m.push(u)}}}return m.length>0?m.join(" "):""}if(e)return n}}function V(e,t,n){let r=e?"-":"",s=n(t),i=s?.startsWith("-"),a=i?"-":"",m=i?s?.substring(1):s;return`${a}${e}${r}${m}`}function E({customProperties:e,value:t,propValues:n,propValueSet:r,parseValue:s=i=>i}){if(!t||typeof t=="string"&&b(n,r,t))return;let i;if(typeof t=="string"){let a=s(t);i={};for(let m of e)i[m]=a;return i}if(c(t)){let a=t;for(let m in a){if(!S(a,m)||!N.has(m))continue;let p=a[m];if(p===void 0||b(n,r,p))continue;let o=s(p);i??(i={});for(let u of e){let f=m==="initial"?u:`${u}-${m}`;i[f]=o}}}return i??{}}function y(...e){let t;for(let n of e)n&&(t===void 0&&(t={}),Object.assign(t,n));return t}function Q(e,t){let n=e.initial,r=!1;return t.hasDefault&&n===void 0&&(n=t.default,r=!0),t.enumValueSet!==void 0&&!t.enumValueSet.has(n)&&(n=t.default,r=!0),r?{...e,initial:n}:e}function X(e,...t){let{styling:n,passthrough:r,stylingKeys:s}=k(t),i={};for(let p in e)s.has(p)||(i[p]=e[p]);for(let p=0;p<r.length;p++){let o=r[p],u=i[o.key];if(u===void 0){o.hasDefault&&(i[o.key]=o.default);continue}o.enumValueSet!==void 0&&!o.enumValueSet.has(u)&&!c(u)&&(i[o.key]=o.default)}let a,m=[];for(let p=0;p<n.length;p++){let o=n[p],u=e[o.key];if(u===void 0&&o.hasDefault&&(u=o.default),o.enumValueSet!==void 0&&!o.enumValueSet.has(u)&&!c(u)&&(u=o.default),!!u){if(c(u)){if(!o.responsive)continue;u=Q(u,o)}if(o.type==="enum"){let f=D({allowArbitraryValues:!1,value:u,className:o.className,propValues:o.values,propValueSet:o.valueSet,parseValue:o.parseValue});f&&m.push(f);continue}if(o.type==="string"||o.type==="enum | string"){let[f,T]=P({className:o.className,customProperties:o.customProperties,propValues:o.type==="string"?[]:o.values,propValueSet:o.type==="string"?void 0:o.valueSet,parseValue:o.parseValue,value:u});T&&(a=y(a,T)),f&&m.push(f);continue}if(o.type==="boolean"){m.push(o.className);continue}}}return i.className=(0,j.default)(m.length>0?m.join(" "):void 0,e.className),i.style=y(a,e.style),i}var d={sans:"--font-sans",mono:"--font-mono",serif:"--font-serif"},l={body:"--font-body",heading:"--font-heading",code:"--font-code",strong:"--font-strong",em:"--font-em",quote:"--font-quote"},Z={system:"-apple-system, BlinkMacSystemFont, 'Segoe UI (Custom)', Roboto, 'Helvetica Neue', system-ui, sans-serif",inter:"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI (Custom)', Roboto, system-ui, sans-serif",poppins:"'Poppins', -apple-system, BlinkMacSystemFont, system-ui, sans-serif",openSans:"'Open Sans (Custom)', -apple-system, BlinkMacSystemFont, system-ui, sans-serif",systemMono:"'Menlo', 'Consolas (Custom)', 'Bitstream Vera Sans Mono', monospace",jetbrainsMono:"'JetBrains Mono', 'Menlo', 'Consolas (Custom)', monospace",firaCode:"'Fira Code', 'Menlo', 'Consolas (Custom)', monospace",sourceCodePro:"'Source Code Pro', 'Menlo', 'Consolas (Custom)', monospace",systemSerif:"'Times New Roman', 'Times', 'Georgia', 'Cambria', serif",playfair:"'Playfair Display', 'Times New Roman', 'Georgia', serif",georgia:"'Georgia', 'Times New Roman', 'Times', serif",lora:"'Lora', 'Georgia', 'Times New Roman', serif"};function M(e,t,n){for(let r of Object.keys(t)){let s=n[r];s&&e.style.setProperty(t[r],s)}}function O(e,t){for(let n of Object.values(t))e.style.removeProperty(n)}function ee(e,{root:t=document.documentElement,themeElement:n=document.querySelector(".radix-themes")}={}){e.stacks&&M(t,d,e.stacks),e.roles&&n&&M(n,l,e.roles)}function te(e){let t=[],n=Object.entries(e.stacks??{}).filter(([,s])=>s);n.length&&t.push([":root {",...n.map(([s,i])=>` ${d[s]}: ${i};`),"}"].join(`
2
+ `));let r=Object.entries(e.roles??{}).filter(([,s])=>s);return r.length&&t.push([".radix-themes {",...r.map(([s,i])=>` ${l[s]}: ${i};`),"}"].join(`
3
+ `)),t.join(`
4
+
5
+ `)}function ne({root:e=document.documentElement,themeElement:t=document.querySelector(".radix-themes")}={}){O(e,d),t&&O(t,l)}function se({themeElement:e=document.querySelector(".radix-themes")}={}){let t=getComputedStyle(e??document.documentElement),n=r=>t.getPropertyValue(r).trim()||void 0;return{stacks:{sans:n(d.sans),mono:n(d.mono),serif:n(d.serif)},roles:{body:n(l.body),heading:n(l.heading),code:n(l.code),strong:n(l.strong),em:n(l.em),quote:n(l.quote)}}}var g=["0","1","2","3","4","5","6","7","8","9","10","11","12","-1","-2","-3","-4","-5","-6","-7","-8","-9","-10","-11","-12"],w={m:{type:"enum | string",values:g,responsive:!0,className:"rt-r-m",customProperties:["--m"]},mx:{type:"enum | string",values:g,responsive:!0,className:"rt-r-mx",customProperties:["--ml","--mr"]},my:{type:"enum | string",values:g,responsive:!0,className:"rt-r-my",customProperties:["--mt","--mb"]},mt:{type:"enum | string",values:g,responsive:!0,className:"rt-r-mt",customProperties:["--mt"]},mr:{type:"enum | string",values:g,responsive:!0,className:"rt-r-mr",customProperties:["--mr"]},mb:{type:"enum | string",values:g,responsive:!0,className:"rt-r-mb",customProperties:["--mb"]},ml:{type:"enum | string",values:g,responsive:!0,className:"rt-r-ml",customProperties:["--ml"]}};var $=w.m.values,re=new Set($),F=[{key:"m",className:"rt-r-m",customProperties:["--margin"]},{key:"mx",className:"rt-r-mx",customProperties:["--margin-left","--margin-right"]},{key:"my",className:"rt-r-my",customProperties:["--margin-top","--margin-bottom"]},{key:"mt",className:"rt-r-mt",customProperties:["--margin-top"]},{key:"mr",className:"rt-r-mr",customProperties:["--margin-right"]},{key:"mb",className:"rt-r-mb",customProperties:["--margin-bottom"]},{key:"ml",className:"rt-r-ml",customProperties:["--margin-left"]}];function oe(e){let t,n;for(let r=0;r<F.length;r++){let{key:s,className:i,customProperties:a}=F[r],m=e[s];if(m===void 0)continue;let[p,o]=P({className:i,customProperties:a,propValues:$,propValueSet:re,value:m});p&&(t??(t=[])).push(p),o&&(n=y(n,o))}return[t!==void 0?t.join(" "):"",n]}function ie(e){switch(e){case"tomato":case"red":case"ruby":case"crimson":case"pink":case"plum":case"purple":case"violet":return"mauve";case"iris":case"indigo":case"blue":case"sky":case"cyan":return"slate";case"teal":case"jade":case"mint":case"green":return"sage";case"grass":case"lime":return"olive";case"yellow":case"amber":case"orange":case"brown":case"gold":case"bronze":return"sand";case"gray":return"gray"}}var v=x(require("react"));function ae(e,t){let{asChild:n,children:r}=e;if(!n)return typeof t=="function"?t(r):t;let s=v.Children.only(r);return v.cloneElement(s,{children:typeof t=="function"?t(s.props.children):t})}function pe(e,t){if(e!==void 0)return typeof e=="string"?t(e):Object.fromEntries(Object.entries(e).map(([n,r])=>[n,t(r)]))}function me(e){return e==="3"?"3":e==="1"?"1":"2"}function ue(e){switch(e){case"1":return"1";case"2":case"3":return"2";case"4":return"3"}}function le(e,t="horizontal"){if(e==null)return;if(typeof e=="number"&&Number.isFinite(e))return e;let n=String(e).trim();if(!n)return;if(n.endsWith("px"))return Number.parseFloat(n);if(n.endsWith("rem")){let s=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(n)*s}if(n.endsWith("%")){let s=Number.parseFloat(n),i=t==="horizontal"?document.documentElement.clientWidth||window.innerWidth||0:document.documentElement.clientHeight||window.innerHeight||0;return s/100*i}let r=Number.parseFloat(n);return Number.isFinite(r)?r:void 0}var h=x(require("react")),fe=e=>{if(!h.isValidElement(e))throw Error(`Expected a single React Element child, but got: ${h.Children.toArray(e).map(n=>typeof n=="object"&&"type"in n&&typeof n.type=="string"?n.type:typeof n).join(", ")}`);return e};
3
6
  //# sourceMappingURL=index.js.map