@kushagradhawan/kookie-ui 0.1.41 → 0.1.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +257 -60
- package/components.css +398 -91
- package/dist/cjs/components/schemas/base-button.schema.d.ts +319 -0
- package/dist/cjs/components/schemas/base-button.schema.d.ts.map +1 -0
- package/dist/cjs/components/schemas/base-button.schema.js +2 -0
- package/dist/cjs/components/schemas/base-button.schema.js.map +7 -0
- package/dist/cjs/components/schemas/button.schema.d.ts +686 -0
- package/dist/cjs/components/schemas/button.schema.d.ts.map +1 -0
- package/dist/cjs/components/schemas/button.schema.js +2 -0
- package/dist/cjs/components/schemas/button.schema.js.map +7 -0
- package/dist/cjs/components/schemas/icon-button.schema.d.ts +329 -0
- package/dist/cjs/components/schemas/icon-button.schema.d.ts.map +1 -0
- package/dist/cjs/components/schemas/icon-button.schema.js +2 -0
- package/dist/cjs/components/schemas/icon-button.schema.js.map +7 -0
- package/dist/cjs/components/schemas/index.d.ts +52 -0
- package/dist/cjs/components/schemas/index.d.ts.map +1 -0
- package/dist/cjs/components/schemas/index.js +2 -0
- package/dist/cjs/components/schemas/index.js.map +7 -0
- package/dist/cjs/components/schemas/toggle-button.schema.d.ts +1172 -0
- package/dist/cjs/components/schemas/toggle-button.schema.d.ts.map +1 -0
- package/dist/cjs/components/schemas/toggle-button.schema.js +2 -0
- package/dist/cjs/components/schemas/toggle-button.schema.js.map +7 -0
- package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts +563 -0
- package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts.map +1 -0
- package/dist/cjs/components/schemas/toggle-icon-button.schema.js +2 -0
- package/dist/cjs/components/schemas/toggle-icon-button.schema.js.map +7 -0
- package/dist/cjs/components/sheet.d.ts +1 -1
- package/dist/cjs/components/sheet.d.ts.map +1 -1
- package/dist/cjs/components/sheet.js +1 -1
- package/dist/cjs/components/sheet.js.map +3 -3
- package/dist/cjs/components/shell.d.ts +125 -164
- package/dist/cjs/components/shell.d.ts.map +1 -1
- package/dist/cjs/components/shell.js +1 -1
- package/dist/cjs/components/shell.js.map +3 -3
- package/dist/cjs/components/sidebar.d.ts +1 -7
- package/dist/cjs/components/sidebar.d.ts.map +1 -1
- package/dist/cjs/components/sidebar.js +1 -1
- package/dist/cjs/components/sidebar.js.map +3 -3
- package/dist/cjs/components/theme.d.ts +3 -0
- package/dist/cjs/components/theme.d.ts.map +1 -1
- package/dist/cjs/components/theme.js +1 -1
- package/dist/cjs/components/theme.js.map +3 -3
- package/dist/cjs/components/theme.props.d.ts +10 -0
- package/dist/cjs/components/theme.props.d.ts.map +1 -1
- package/dist/cjs/components/theme.props.js +1 -1
- package/dist/cjs/components/theme.props.js.map +3 -3
- package/dist/cjs/helpers/font-config.d.ts +96 -0
- package/dist/cjs/helpers/font-config.d.ts.map +1 -0
- package/dist/cjs/helpers/font-config.js +3 -0
- package/dist/cjs/helpers/font-config.js.map +7 -0
- package/dist/cjs/helpers/index.d.ts +1 -0
- package/dist/cjs/helpers/index.d.ts.map +1 -1
- package/dist/cjs/helpers/index.js +1 -1
- package/dist/cjs/helpers/index.js.map +2 -2
- package/dist/esm/components/schemas/base-button.schema.d.ts +319 -0
- package/dist/esm/components/schemas/base-button.schema.d.ts.map +1 -0
- package/dist/esm/components/schemas/base-button.schema.js +2 -0
- package/dist/esm/components/schemas/base-button.schema.js.map +7 -0
- package/dist/esm/components/schemas/button.schema.d.ts +686 -0
- package/dist/esm/components/schemas/button.schema.d.ts.map +1 -0
- package/dist/esm/components/schemas/button.schema.js +2 -0
- package/dist/esm/components/schemas/button.schema.js.map +7 -0
- package/dist/esm/components/schemas/icon-button.schema.d.ts +329 -0
- package/dist/esm/components/schemas/icon-button.schema.d.ts.map +1 -0
- package/dist/esm/components/schemas/icon-button.schema.js +2 -0
- package/dist/esm/components/schemas/icon-button.schema.js.map +7 -0
- package/dist/esm/components/schemas/index.d.ts +52 -0
- package/dist/esm/components/schemas/index.d.ts.map +1 -0
- package/dist/esm/components/schemas/index.js +2 -0
- package/dist/esm/components/schemas/index.js.map +7 -0
- package/dist/esm/components/schemas/toggle-button.schema.d.ts +1172 -0
- package/dist/esm/components/schemas/toggle-button.schema.d.ts.map +1 -0
- package/dist/esm/components/schemas/toggle-button.schema.js +2 -0
- package/dist/esm/components/schemas/toggle-button.schema.js.map +7 -0
- package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts +563 -0
- package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts.map +1 -0
- package/dist/esm/components/schemas/toggle-icon-button.schema.js +2 -0
- package/dist/esm/components/schemas/toggle-icon-button.schema.js.map +7 -0
- package/dist/esm/components/sheet.d.ts +1 -1
- package/dist/esm/components/sheet.d.ts.map +1 -1
- package/dist/esm/components/sheet.js +1 -1
- package/dist/esm/components/sheet.js.map +3 -3
- package/dist/esm/components/shell.d.ts +125 -164
- package/dist/esm/components/shell.d.ts.map +1 -1
- package/dist/esm/components/shell.js +1 -1
- package/dist/esm/components/shell.js.map +3 -3
- package/dist/esm/components/sidebar.d.ts +1 -7
- package/dist/esm/components/sidebar.d.ts.map +1 -1
- package/dist/esm/components/sidebar.js +1 -1
- package/dist/esm/components/sidebar.js.map +3 -3
- package/dist/esm/components/theme.d.ts +3 -0
- package/dist/esm/components/theme.d.ts.map +1 -1
- package/dist/esm/components/theme.js +1 -1
- package/dist/esm/components/theme.js.map +3 -3
- package/dist/esm/components/theme.props.d.ts +10 -0
- package/dist/esm/components/theme.props.d.ts.map +1 -1
- package/dist/esm/components/theme.props.js +1 -1
- package/dist/esm/components/theme.props.js.map +3 -3
- package/dist/esm/helpers/font-config.d.ts +96 -0
- package/dist/esm/helpers/font-config.d.ts.map +1 -0
- package/dist/esm/helpers/font-config.js +3 -0
- package/dist/esm/helpers/font-config.js.map +7 -0
- package/dist/esm/helpers/index.d.ts +1 -0
- package/dist/esm/helpers/index.d.ts.map +1 -1
- package/dist/esm/helpers/index.js +1 -1
- package/dist/esm/helpers/index.js.map +2 -2
- package/package.json +23 -3
- package/schemas/base-button.d.ts +2 -0
- package/schemas/base-button.json +284 -0
- package/schemas/button.d.ts +2 -0
- package/schemas/button.json +535 -0
- package/schemas/icon-button.d.ts +2 -0
- package/schemas/icon-button.json +318 -0
- package/schemas/index.d.ts +2 -0
- package/schemas/index.json +2016 -0
- package/schemas/schemas.d.ts +29 -0
- package/schemas/toggle-button.d.ts +2 -0
- package/schemas/toggle-button.json +543 -0
- package/schemas/toggle-icon-button.d.ts +2 -0
- package/schemas/toggle-icon-button.json +326 -0
- package/schemas-json.d.ts +12 -0
- package/src/components/_internal/base-sidebar-menu.css +3 -8
- package/src/components/_internal/base-sidebar.css +1 -2
- package/src/components/schemas/base-button.schema.ts +339 -0
- package/src/components/schemas/button.schema.ts +198 -0
- package/src/components/schemas/icon-button.schema.ts +142 -0
- package/src/components/schemas/index.ts +68 -0
- package/src/components/schemas/toggle-button.schema.ts +122 -0
- package/src/components/schemas/toggle-icon-button.schema.ts +195 -0
- package/src/components/sheet.css +39 -19
- package/src/components/sheet.tsx +62 -3
- package/src/components/shell.css +510 -89
- package/src/components/shell.tsx +2055 -928
- package/src/components/sidebar.css +126 -65
- package/src/components/sidebar.tsx +5 -24
- package/src/components/theme.props.tsx +8 -0
- package/src/components/theme.tsx +16 -0
- package/src/helpers/font-config.ts +167 -0
- package/src/helpers/index.ts +1 -0
- package/src/styles/fonts.css +16 -13
- package/src/styles/tokens/typography.css +27 -4
- package/styles.css +410 -91
- package/tokens/base.css +12 -0
- package/tokens.css +12 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Font configuration utilities for Kookie UI
|
|
3
|
+
*
|
|
4
|
+
* These utilities help users configure custom fonts through CSS variables
|
|
5
|
+
* and provide type-safe font configuration options.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Font family configuration interface
|
|
10
|
+
*/
|
|
11
|
+
export interface FontConfig {
|
|
12
|
+
/** Sans-serif font stack for fontFamily="sans" */
|
|
13
|
+
sans?: string;
|
|
14
|
+
/** Monospace font stack for fontFamily="mono" */
|
|
15
|
+
mono?: string;
|
|
16
|
+
/** Base Inter font replacement */
|
|
17
|
+
inter?: string;
|
|
18
|
+
/** Base JetBrains Mono font replacement */
|
|
19
|
+
jetbrainsMono?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* CSS variable names used by Kookie UI for fonts
|
|
24
|
+
*/
|
|
25
|
+
export const FONT_CSS_VARIABLES = {
|
|
26
|
+
sans: '--font-sans',
|
|
27
|
+
mono: '--font-mono',
|
|
28
|
+
inter: '--font-inter',
|
|
29
|
+
jetbrainsMono: '--font-jetbrains-mono',
|
|
30
|
+
defaultFamily: '--default-font-family',
|
|
31
|
+
headingFamily: '--heading-font-family',
|
|
32
|
+
strongFamily: '--strong-font-family',
|
|
33
|
+
codeFamily: '--code-font-family',
|
|
34
|
+
} as const;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Popular font stacks for common use cases
|
|
38
|
+
*/
|
|
39
|
+
export const FONT_STACKS = {
|
|
40
|
+
// Sans-serif options
|
|
41
|
+
inter: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
|
|
42
|
+
system:
|
|
43
|
+
"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
|
|
44
|
+
poppins: "'Poppins', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif",
|
|
45
|
+
openSans: "'Open Sans', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif",
|
|
46
|
+
|
|
47
|
+
// Monospace options
|
|
48
|
+
jetbrainsMono: "'JetBrains Mono', 'Fira Code', 'Consolas', 'Liberation Mono', monospace",
|
|
49
|
+
firaCode: "'Fira Code', 'JetBrains Mono', 'Consolas', 'Liberation Mono', monospace",
|
|
50
|
+
sourceCodePro: "'Source Code Pro', 'JetBrains Mono', 'Consolas', monospace",
|
|
51
|
+
systemMono: "'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', 'Courier New', monospace",
|
|
52
|
+
} as const;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Apply font configuration to CSS variables
|
|
56
|
+
*
|
|
57
|
+
* @param config Font configuration object
|
|
58
|
+
* @param target Target element (defaults to document.documentElement)
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* // Use Google Fonts
|
|
63
|
+
* applyFontConfig({
|
|
64
|
+
* sans: FONT_STACKS.poppins,
|
|
65
|
+
* mono: FONT_STACKS.firaCode
|
|
66
|
+
* });
|
|
67
|
+
*
|
|
68
|
+
* // Use system fonts only
|
|
69
|
+
* applyFontConfig({
|
|
70
|
+
* sans: FONT_STACKS.system,
|
|
71
|
+
* mono: FONT_STACKS.systemMono
|
|
72
|
+
* });
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export function applyFontConfig(
|
|
76
|
+
config: FontConfig,
|
|
77
|
+
target: HTMLElement = document.documentElement,
|
|
78
|
+
): void {
|
|
79
|
+
const style = target.style;
|
|
80
|
+
|
|
81
|
+
if (config.sans) {
|
|
82
|
+
style.setProperty(FONT_CSS_VARIABLES.sans, config.sans);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (config.mono) {
|
|
86
|
+
style.setProperty(FONT_CSS_VARIABLES.mono, config.mono);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (config.inter) {
|
|
90
|
+
style.setProperty(FONT_CSS_VARIABLES.inter, config.inter);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (config.jetbrainsMono) {
|
|
94
|
+
style.setProperty(FONT_CSS_VARIABLES.jetbrainsMono, config.jetbrainsMono);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Generate CSS string for font configuration
|
|
100
|
+
*
|
|
101
|
+
* @param config Font configuration object
|
|
102
|
+
* @returns CSS string that can be injected into a stylesheet
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```ts
|
|
106
|
+
* const css = generateFontCSS({
|
|
107
|
+
* sans: FONT_STACKS.poppins,
|
|
108
|
+
* mono: FONT_STACKS.firaCode
|
|
109
|
+
* });
|
|
110
|
+
*
|
|
111
|
+
* // Inject into document
|
|
112
|
+
* const style = document.createElement('style');
|
|
113
|
+
* style.textContent = css;
|
|
114
|
+
* document.head.appendChild(style);
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
export function generateFontCSS(config: FontConfig): string {
|
|
118
|
+
const rules: string[] = [':root {'];
|
|
119
|
+
|
|
120
|
+
if (config.sans) {
|
|
121
|
+
rules.push(` ${FONT_CSS_VARIABLES.sans}: ${config.sans};`);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (config.mono) {
|
|
125
|
+
rules.push(` ${FONT_CSS_VARIABLES.mono}: ${config.mono};`);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (config.inter) {
|
|
129
|
+
rules.push(` ${FONT_CSS_VARIABLES.inter}: ${config.inter};`);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (config.jetbrainsMono) {
|
|
133
|
+
rules.push(` ${FONT_CSS_VARIABLES.jetbrainsMono}: ${config.jetbrainsMono};`);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
rules.push('}');
|
|
137
|
+
|
|
138
|
+
return rules.join('\n');
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Reset fonts to Kookie UI defaults
|
|
143
|
+
*/
|
|
144
|
+
export function resetFonts(target: HTMLElement = document.documentElement): void {
|
|
145
|
+
const style = target.style;
|
|
146
|
+
|
|
147
|
+
// Remove custom font variables to fall back to defaults
|
|
148
|
+
style.removeProperty(FONT_CSS_VARIABLES.sans);
|
|
149
|
+
style.removeProperty(FONT_CSS_VARIABLES.mono);
|
|
150
|
+
style.removeProperty(FONT_CSS_VARIABLES.inter);
|
|
151
|
+
style.removeProperty(FONT_CSS_VARIABLES.jetbrainsMono);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Get current font configuration from CSS variables
|
|
156
|
+
*/
|
|
157
|
+
export function getCurrentFontConfig(target: HTMLElement = document.documentElement): FontConfig {
|
|
158
|
+
const computedStyle = getComputedStyle(target);
|
|
159
|
+
|
|
160
|
+
return {
|
|
161
|
+
sans: computedStyle.getPropertyValue(FONT_CSS_VARIABLES.sans).trim() || undefined,
|
|
162
|
+
mono: computedStyle.getPropertyValue(FONT_CSS_VARIABLES.mono).trim() || undefined,
|
|
163
|
+
inter: computedStyle.getPropertyValue(FONT_CSS_VARIABLES.inter).trim() || undefined,
|
|
164
|
+
jetbrainsMono:
|
|
165
|
+
computedStyle.getPropertyValue(FONT_CSS_VARIABLES.jetbrainsMono).trim() || undefined,
|
|
166
|
+
};
|
|
167
|
+
}
|
package/src/helpers/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './component-props.js';
|
|
2
2
|
export * from './extract-margin-props.js';
|
|
3
3
|
export * from './extract-props.js';
|
|
4
|
+
export * from './font-config.js';
|
|
4
5
|
export * from './get-margin-styles.js';
|
|
5
6
|
export * from './get-matching-gray-color.js';
|
|
6
7
|
export * from './get-responsive-styles.js';
|
package/src/styles/fonts.css
CHANGED
|
@@ -2,19 +2,23 @@
|
|
|
2
2
|
@import url('https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,100..900;1,100..900&display=swap');
|
|
3
3
|
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap');
|
|
4
4
|
|
|
5
|
-
/* Font Variables */
|
|
5
|
+
/* Font Variables - Customize these to change fonts throughout your app */
|
|
6
6
|
:root {
|
|
7
|
-
|
|
8
|
-
--font-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
--font-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
/*
|
|
15
|
-
--font-sans: var(--font-inter);
|
|
16
|
-
--font-mono: var(--font-jetbrains-mono);
|
|
17
|
-
|
|
7
|
+
/* Base font definitions - override these in your CSS to customize fonts */
|
|
8
|
+
--font-inter:
|
|
9
|
+
'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
|
|
10
|
+
sans-serif;
|
|
11
|
+
--font-jetbrains-mono:
|
|
12
|
+
'JetBrains Mono', 'Fira Code', 'Consolas', 'Liberation Mono', 'Courier New', monospace;
|
|
13
|
+
|
|
14
|
+
/* Primary font variables - these map to theme fontFamily values */
|
|
15
|
+
--font-general-sans: var(--font-inter); /* Used when fontFamily="sans" */
|
|
16
|
+
--font-inter-mono: var(--font-jetbrains-mono); /* Used for code elements */
|
|
17
|
+
|
|
18
|
+
/* Tailwind-compatible aliases - override these to change theme fonts */
|
|
19
|
+
--font-sans: var(--font-inter); /* Theme fontFamily="sans" uses this */
|
|
20
|
+
--font-mono: var(--font-jetbrains-mono); /* Theme fontFamily="mono" uses this */
|
|
21
|
+
|
|
18
22
|
/* Force proper font weight rendering */
|
|
19
23
|
font-synthesis: none; /* Prevent browser from synthesizing weights */
|
|
20
24
|
}
|
|
@@ -33,4 +37,3 @@
|
|
|
33
37
|
font-display: block;
|
|
34
38
|
src: local('-apple-system'), local('BlinkMacSystemFont'), local('Segoe UI'), local('Roboto');
|
|
35
39
|
}
|
|
36
|
-
|
|
@@ -43,8 +43,17 @@
|
|
|
43
43
|
|
|
44
44
|
/* default values */
|
|
45
45
|
|
|
46
|
-
--default-font-family:
|
|
47
|
-
|
|
46
|
+
--default-font-family:
|
|
47
|
+
var(--font-inter, 'Inter'), -apple-system, BlinkMacSystemFont, 'Segoe UI (Custom)', Roboto,
|
|
48
|
+
'Helvetica Neue', 'Open Sans (Custom)', system-ui, sans-serif, 'Apple Color Emoji',
|
|
49
|
+
'Segoe UI Emoji';
|
|
50
|
+
|
|
51
|
+
/* Font family overrides based on theme data attribute */
|
|
52
|
+
--default-font-family-sans:
|
|
53
|
+
var(--font-inter, 'Inter'), -apple-system, BlinkMacSystemFont, 'Segoe UI (Custom)', Roboto,
|
|
54
|
+
'Helvetica Neue', 'Open Sans (Custom)', system-ui, sans-serif, 'Apple Color Emoji',
|
|
55
|
+
'Segoe UI Emoji';
|
|
56
|
+
--default-font-family-mono: var(--font-mono);
|
|
48
57
|
--default-font-size: var(--font-size-3); /* Same size used for `<Text size="3">` */
|
|
49
58
|
--default-font-style: normal;
|
|
50
59
|
--default-font-weight: var(--font-weight-regular);
|
|
@@ -75,8 +84,9 @@
|
|
|
75
84
|
|
|
76
85
|
/* Code */
|
|
77
86
|
|
|
78
|
-
--code-font-family:
|
|
79
|
-
|
|
87
|
+
--code-font-family:
|
|
88
|
+
var(--font-inter-mono, 'JetBrains Mono'), 'Menlo', 'Consolas (Custom)',
|
|
89
|
+
'Bitstream Vera Sans Mono', monospace, 'Apple Color Emoji', 'Segoe UI Emoji';
|
|
80
90
|
--code-font-size-adjust: 0.95;
|
|
81
91
|
--code-font-style: normal;
|
|
82
92
|
--code-font-weight: inherit;
|
|
@@ -304,3 +314,16 @@
|
|
|
304
314
|
descent-override: 22%;
|
|
305
315
|
src: local('Consolas Bold Italic');
|
|
306
316
|
}
|
|
317
|
+
|
|
318
|
+
/* Font family data attribute support */
|
|
319
|
+
[data-font-family='sans'] {
|
|
320
|
+
--default-font-family: var(--default-font-family-sans);
|
|
321
|
+
--heading-font-family: var(--default-font-family-sans);
|
|
322
|
+
--strong-font-family: var(--default-font-family-sans);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
[data-font-family='mono'] {
|
|
326
|
+
--default-font-family: var(--default-font-family-mono);
|
|
327
|
+
--heading-font-family: var(--default-font-family-mono);
|
|
328
|
+
--strong-font-family: var(--default-font-family-mono);
|
|
329
|
+
}
|