@okshaun/components 0.5.8 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/README.md +22 -26
  2. package/dist/.mcp.json +11 -0
  3. package/dist/index.d.ts +3 -1268
  4. package/dist/index.js +1231 -957
  5. package/dist/index.js.map +1 -1
  6. package/dist/okshaun-logo-white.svg +11 -0
  7. package/dist/okshaun-logo.svg +11 -0
  8. package/dist/preset-BzrKiUEH.js +8452 -0
  9. package/dist/preset-BzrKiUEH.js.map +1 -0
  10. package/dist/preset.js +3 -7234
  11. package/dist/preset.js.map +1 -1
  12. package/dist/specs/animation-styles.json +4 -0
  13. package/dist/specs/color-palette.json +98 -0
  14. package/dist/specs/conditions.json +1901 -0
  15. package/dist/specs/keyframes.json +137 -0
  16. package/dist/specs/layer-styles.json +23 -0
  17. package/dist/specs/patterns.json +475 -0
  18. package/dist/specs/recipes.json +907 -0
  19. package/dist/specs/semantic-tokens.json +2837 -0
  20. package/dist/specs/text-styles.json +149 -0
  21. package/dist/specs/tokens.json +2750 -0
  22. package/dist/sprite.svg +1 -1
  23. package/dist/sprite.symbol.html +14 -14
  24. package/dist/styles/global.css +148 -0
  25. package/dist/styles/recipes/avatar.css +185 -0
  26. package/dist/styles/recipes/badge.css +85 -0
  27. package/dist/styles/recipes/breadcrumbs.css +38 -0
  28. package/dist/styles/recipes/button.css +195 -0
  29. package/dist/styles/recipes/card.css +57 -0
  30. package/dist/styles/recipes/checkbox-input.css +12 -0
  31. package/dist/styles/recipes/checkbox.css +90 -0
  32. package/dist/styles/recipes/chip.css +137 -0
  33. package/dist/styles/recipes/code.css +12 -0
  34. package/dist/styles/recipes/divider.css +43 -0
  35. package/dist/styles/recipes/form-field.css +39 -0
  36. package/dist/styles/recipes/heading.css +40 -0
  37. package/dist/styles/recipes/icon-button.css +181 -0
  38. package/dist/styles/recipes/label.css +14 -0
  39. package/dist/styles/recipes/link.css +49 -0
  40. package/dist/styles/recipes/menu.css +141 -0
  41. package/dist/styles/recipes/modal.css +99 -0
  42. package/dist/styles/recipes/pre.css +16 -0
  43. package/dist/styles/recipes/radio-input.css +7 -0
  44. package/dist/styles/recipes/radio.css +82 -0
  45. package/dist/styles/recipes/select.css +103 -0
  46. package/dist/styles/recipes/spinner.css +36 -0
  47. package/dist/styles/recipes/tag.css +27 -0
  48. package/dist/styles/recipes/text.css +46 -0
  49. package/dist/styles/recipes/textarea.css +91 -0
  50. package/dist/styles/recipes/textinput.css +87 -0
  51. package/dist/styles/recipes/theme-switcher.css +53 -0
  52. package/dist/styles/recipes/toggle-input.css +12 -0
  53. package/dist/styles/recipes/toggle.css +125 -0
  54. package/dist/styles/recipes/tooltip.css +133 -0
  55. package/dist/styles/recipes.css +30 -0
  56. package/dist/styles/reset.css +1 -0
  57. package/dist/styles/tokens.css +1016 -0
  58. package/dist/styles/utilities.css +1694 -0
  59. package/dist/styles.css +7 -0
  60. package/dist/svgs/building.svg +1 -0
  61. package/dist/types/index.d.ts +21626 -0
  62. package/dist/types/preset.d.ts +19 -0
  63. package/package.json +37 -35
  64. package/src/recipes/avatar.ts +205 -0
  65. package/src/recipes/badge.ts +203 -0
  66. package/src/recipes/box.ts +13 -0
  67. package/src/recipes/breadcrumbs.ts +29 -0
  68. package/src/recipes/button.ts +319 -0
  69. package/src/recipes/card.ts +148 -0
  70. package/src/recipes/checkbox.ts +87 -0
  71. package/src/recipes/checkboxinput.ts +15 -0
  72. package/src/recipes/chip.ts +189 -0
  73. package/src/recipes/code.ts +35 -0
  74. package/src/recipes/divider.ts +41 -0
  75. package/src/recipes/formField.ts +60 -0
  76. package/src/recipes/index.ts +28 -0
  77. package/src/recipes/menu.ts +205 -0
  78. package/src/recipes/modal.ts +120 -0
  79. package/src/recipes/radio.ts +71 -0
  80. package/src/recipes/radioinput.ts +12 -0
  81. package/src/recipes/select.ts +142 -0
  82. package/src/recipes/spinner.ts +52 -0
  83. package/src/recipes/tag.ts +262 -0
  84. package/src/recipes/text.ts +193 -0
  85. package/src/recipes/textarea.ts +153 -0
  86. package/src/recipes/textinput.ts +100 -0
  87. package/src/recipes/themeSwitcher.ts +48 -0
  88. package/src/recipes/toggle.ts +116 -0
  89. package/src/recipes/toggleinput.ts +16 -0
  90. package/src/recipes/tooltip.ts +359 -0
  91. package/src/styles/index.css +1 -0
  92. package/src/styles/primitives/animations.ts +16 -0
  93. package/src/styles/primitives/aspectRatios.ts +22 -0
  94. package/src/styles/primitives/blurs.ts +25 -0
  95. package/src/styles/primitives/borderWidths.ts +10 -0
  96. package/src/styles/primitives/borders.ts +36 -0
  97. package/src/styles/primitives/colors.ts +228 -0
  98. package/src/styles/primitives/durations.ts +25 -0
  99. package/src/styles/primitives/easings.ts +19 -0
  100. package/src/styles/primitives/fontSizes.ts +16 -0
  101. package/src/styles/primitives/fontWeights.ts +9 -0
  102. package/src/styles/primitives/fonts.ts +18 -0
  103. package/src/styles/primitives/index.ts +46 -0
  104. package/src/styles/primitives/letterSpacings.ts +22 -0
  105. package/src/styles/primitives/lineHeights.ts +16 -0
  106. package/src/styles/primitives/radii.ts +14 -0
  107. package/src/styles/primitives/shadows.ts +73 -0
  108. package/src/styles/primitives/sizes.ts +86 -0
  109. package/src/styles/primitives/spacings.ts +7 -0
  110. package/src/styles/semantics/colors.ts +774 -0
  111. package/src/styles/semantics/index.ts +2 -0
  112. package/src/styles/semantics/shadows.ts +32 -0
  113. package/src/styles/utilities/breakpoints.ts +8 -0
  114. package/src/styles/utilities/conditions.ts +140 -0
  115. package/src/styles/utilities/containerSizes.ts +17 -0
  116. package/src/styles/utilities/filters.ts +12 -0
  117. package/src/styles/utilities/globalStyle.ts +93 -0
  118. package/src/styles/utilities/index.ts +9 -0
  119. package/src/styles/utilities/keyframes.ts +89 -0
  120. package/src/styles/utilities/layerStyles.ts +18 -0
  121. package/src/styles/utilities/textStyles.ts +135 -0
  122. package/src/styles/utilities/transitions.ts +92 -0
  123. package/src/utils/injectSprite.ts +36 -0
  124. package/src/utils/splitProps.ts +19 -0
  125. package/src/utils/spriteContent.ts +4 -0
  126. package/dist/panda.buildinfo.json +0 -448
  127. package/dist/preset.d.ts +0 -5
  128. package/dist/transitions-DUgH88VW.js +0 -1041
  129. package/dist/transitions-DUgH88VW.js.map +0 -1
@@ -0,0 +1,19 @@
1
+ import { Preset } from '@pandacss/types';
2
+
3
+ export declare const okshaunPreset: Preset;
4
+
5
+ export { }
6
+
7
+
8
+
9
+ declare module '@pandacss/dev' {
10
+ export function defineRecipe<V extends RecipeVariantRecord>(config: RecipeConfig<V>): Panda.RecipeConfig
11
+ export function defineSlotRecipe<S extends string, V extends SlotRecipeVariantRecord<S>>(config: SlotRecipeConfig<S, V>): Panda.SlotRecipeConfig
12
+ export function defineStyles(definition: SystemStyleObject): SystemStyleObject
13
+ export function defineGlobalStyles(definition: GlobalStyleObject): Panda.GlobalStyleObject
14
+ export function defineTextStyles(definition: CompositionStyles['textStyles']): Panda.TextStyles
15
+ export function defineAnimationStyles(definition: CompositionStyles['animationStyles']): Panda.AnimationStyles
16
+ export function defineLayerStyles(definition: CompositionStyles['layerStyles']): Panda.LayerStyles
17
+ export function definePattern<T extends PatternProperties>(config: PatternConfig<T>): Panda.PatternConfig
18
+ export function defineParts<T extends Parts>(parts: T): (config: Partial<Record<keyof T, SystemStyleObject>>) => Partial<Record<keyof T, SystemStyleObject>>
19
+ }
package/package.json CHANGED
@@ -1,30 +1,31 @@
1
1
  {
2
2
  "name": "@okshaun/components",
3
- "private": false,
4
- "version": "0.5.8",
3
+ "version": "1.0.1",
5
4
  "description": "A comprehensive React component library with Panda CSS theming",
6
5
  "type": "module",
7
6
  "main": "./dist/index.js",
8
7
  "module": "./dist/index.js",
9
8
  "types": "./dist/index.d.ts",
10
9
  "scripts": {
11
- "dev": "npm run panda:watch & vite",
12
- "build": "npm run panda && SKIP_OPEN=true npm run generate-sprite && vite build && SKIP_OPEN=true npm run generate-sprite:dist && npm run ship",
13
- "generate-sprite:dist": "node src/utils/generate-sprite-dist.js",
14
- "ship": "panda ship --outfile dist/panda.buildinfo.json",
15
- "panda": "panda codegen",
16
- "panda:watch": "panda codegen --watch",
17
- "preview": "vite preview",
10
+ "prepare": "npx panda codegen",
11
+ "dev": "npx panda codegen --watch & vite",
12
+ "build": "rm -rf dist && PANDA_STATIC=true npx panda codegen && npx panda cssgen --splitting && npx panda spec && npx panda init-mcp --client claude && vite build",
18
13
  "lint": "eslint .",
19
- "storybook": "storybook dev -p 6006",
20
- "build-storybook": "storybook build",
14
+ "preview": "vite preview",
21
15
  "generate-sprite": "node src/utils/generate-sprite.js",
22
- "prepublishOnly": "npm run build"
16
+ "storybook": "PANDA_STATIC=true storybook dev -p 6006",
17
+ "storybook:build": "PANDA_STATIC=true storybook build",
18
+ "panda-mcp": "npx panda mcp",
19
+ "prepublishOnly": "npm run build",
20
+ "format": "prettier --write 'src/**/*.{ts,tsx}'"
23
21
  },
24
22
  "files": [
25
- "dist",
26
- "README.md",
27
- "LICENSE"
23
+ "./dist/",
24
+ "./src/styles/*",
25
+ "./src/recipes/*",
26
+ "./src/tokens/*",
27
+ "./src/utils/*.ts",
28
+ "README.md"
28
29
  ],
29
30
  "keywords": [
30
31
  "react",
@@ -38,8 +39,8 @@
38
39
  "@fontsource-variable/piazzolla": "^5.1.1",
39
40
  "@fontsource/ibm-plex-mono": "^5.1.0",
40
41
  "@fontsource/ibm-plex-sans": "^5.1.0",
41
- "react": "^18.0.0 || ^19.0.0",
42
- "react-dom": "^18.0.0 || ^19.0.0"
42
+ "react": "^19.0.0",
43
+ "react-dom": "^19.0.0"
43
44
  },
44
45
  "peerDependenciesMeta": {
45
46
  "@fontsource-variable/piazzolla": {
@@ -61,22 +62,20 @@
61
62
  "@fontsource-variable/piazzolla": "^5.2.8",
62
63
  "@fontsource/ibm-plex-mono": "^5.2.7",
63
64
  "@fontsource/ibm-plex-sans": "^5.2.8",
64
- "@pandacss/dev": "^1.4.3",
65
- "@storybook/addon-essentials": "^8.5.2",
66
- "@storybook/addon-interactions": "^8.5.2",
67
- "@storybook/addon-onboarding": "^8.5.2",
68
- "@storybook/addon-themes": "^8.6.14",
69
- "@storybook/blocks": "^8.5.2",
70
- "@storybook/react": "^8.5.2",
71
- "@storybook/react-vite": "^8.5.2",
72
- "@storybook/test": "^8.5.2",
73
- "@types/node": "^22.7.7",
65
+ "@pandacss/dev": "^1.8.0",
66
+ "@storybook/addon-essentials": "^8.6.15",
67
+ "@storybook/addon-interactions": "^8.6.15",
68
+ "@storybook/addon-themes": "^8.6.15",
69
+ "@storybook/blocks": "^8.6.15",
70
+ "@storybook/react": "^8.6.15",
71
+ "@storybook/react-vite": "^8.6.15",
72
+ "@storybook/test": "^8.6.15",
73
+ "@types/node": "^22.15.30",
74
74
  "@types/react": "19.0.8",
75
75
  "@types/react-dom": "19.0.3",
76
76
  "@vitejs/plugin-react": "^4.3.4",
77
77
  "eslint": "^9.17.0",
78
78
  "eslint-config-prettier": "^9.1.0",
79
- "eslint-plugin-prettier": "^5.2.1",
80
79
  "eslint-plugin-react": "^7.37.2",
81
80
  "eslint-plugin-react-hooks": "^5.0.0",
82
81
  "eslint-plugin-react-refresh": "^0.4.16",
@@ -85,13 +84,14 @@
85
84
  "globals": "^15.14.0",
86
85
  "postcss": "^8.5.1",
87
86
  "prettier": "^3.3.3",
88
- "storybook": "^8.5.2",
87
+ "storybook": "^8.6.15",
89
88
  "svg-sprite": "^2.0.4",
90
89
  "svgo": "^3.0.2",
91
90
  "typescript": "^5.7.3",
92
- "typescript-eslint": "^8.18.2",
91
+ "typescript-eslint": "^8.54.0",
93
92
  "vite": "^6.0.5",
94
- "vite-plugin-dts": "^4.5.4"
93
+ "vite-plugin-dts": "^4.5.4",
94
+ "vite-plugin-static-copy": "^3.1.4"
95
95
  },
96
96
  "eslintConfig": {
97
97
  "extends": [
@@ -100,24 +100,26 @@
100
100
  },
101
101
  "exports": {
102
102
  ".": {
103
- "types": "./dist/index.d.ts",
103
+ "types": "./dist/types/index.d.ts",
104
104
  "import": "./dist/index.js",
105
105
  "default": "./dist/index.js"
106
106
  },
107
107
  "./preset": {
108
- "types": "./dist/preset.d.ts",
108
+ "types": "./dist/types/preset.d.ts",
109
109
  "import": "./dist/preset.js",
110
110
  "default": "./dist/preset.js"
111
111
  },
112
112
  "./sprite.svg": "./dist/sprite.svg",
113
- "./panda.buildinfo.json": "./dist/panda.buildinfo.json"
113
+ "./styles.css": "./dist/styles.css"
114
114
  },
115
115
  "repository": {
116
116
  "type": "git",
117
117
  "url": "git+https://github.com/shaunrfox/okshaun-components.git"
118
118
  },
119
+ "private": false,
120
+ "author": "Shaun Fox",
119
121
  "bugs": {
120
122
  "url": "https://github.com/shaunrfox/okshaun-components/issues"
121
123
  },
122
- "homepage": "https://github.com/shaunrfox/okshaun-components#readme"
124
+ "homepage": "https://shaunfox.com/okshaun-components"
123
125
  }
@@ -0,0 +1,205 @@
1
+ import { defineSlotRecipe } from '@pandacss/dev';
2
+
3
+ export const avatarRecipe = defineSlotRecipe({
4
+ className: 'avatar',
5
+ jsx: ['Avatar'],
6
+ slots: ['root', 'image', 'fallback', 'presence', 'status'],
7
+ staticCss: [
8
+ {
9
+ size: ['xs', 'sm', 'md', 'lx', 'xl', '2xl'],
10
+ shape: ['circle', 'square', 'hexagon'],
11
+ },
12
+ ],
13
+ base: {
14
+ root: {
15
+ display: 'inline-flex',
16
+ position: 'relative',
17
+ alignItems: 'center',
18
+ justifyContent: 'center',
19
+ verticalAlign: 'middle',
20
+ flexShrink: 0,
21
+ color: 'text',
22
+ bg: 'bg.neutral',
23
+ userSelect: 'none',
24
+ aspectRatio: 'square',
25
+ },
26
+ image: {
27
+ w: 'full',
28
+ h: 'full',
29
+ objectFit: 'cover',
30
+ overflow: 'hidden',
31
+ },
32
+ fallback: {
33
+ display: 'flex',
34
+ alignItems: 'center',
35
+ justifyContent: 'center',
36
+ w: 'full',
37
+ h: 'full',
38
+ fontFamily: 'sans',
39
+ fontWeight: 'medium',
40
+ textTransform: 'uppercase',
41
+ color: 'text.subtle',
42
+ },
43
+ presence: {
44
+ position: 'absolute',
45
+ bottom: '0',
46
+ right: '0',
47
+ borderRadius: 'full',
48
+ borderWidth: '2',
49
+ borderStyle: 'solid',
50
+ borderColor: 'bg',
51
+ zIndex: 1,
52
+ },
53
+ status: {
54
+ position: 'absolute',
55
+ top: '0',
56
+ right: '0',
57
+ display: 'flex',
58
+ alignItems: 'center',
59
+ justifyContent: 'center',
60
+ borderRadius: 'full',
61
+ borderWidth: '2',
62
+ borderStyle: 'solid',
63
+ borderColor: 'bg',
64
+ zIndex: 1,
65
+ },
66
+ },
67
+ variants: {
68
+ size: {
69
+ xs: {
70
+ root: {
71
+ w: '16',
72
+ h: '16',
73
+ },
74
+ fallback: {
75
+ fontSize: '8',
76
+ },
77
+ presence: {
78
+ w: '6',
79
+ h: '6',
80
+ },
81
+ status: {
82
+ w: '8',
83
+ h: '8',
84
+ },
85
+ },
86
+ sm: {
87
+ root: {
88
+ w: '20',
89
+ h: '20',
90
+ },
91
+ fallback: {
92
+ fontSize: '10',
93
+ },
94
+ presence: {
95
+ w: '8',
96
+ h: '8',
97
+ },
98
+ status: {
99
+ w: '10',
100
+ h: '10',
101
+ },
102
+ },
103
+ md: {
104
+ root: {
105
+ w: '24',
106
+ h: '24',
107
+ },
108
+ fallback: {
109
+ fontSize: '12',
110
+ },
111
+ presence: {
112
+ w: '8',
113
+ h: '8',
114
+ },
115
+ status: {
116
+ w: '10',
117
+ h: '10',
118
+ },
119
+ },
120
+ lg: {
121
+ root: {
122
+ w: '32',
123
+ h: '32',
124
+ },
125
+ fallback: {
126
+ fontSize: '14',
127
+ },
128
+ presence: {
129
+ w: '10',
130
+ h: '10',
131
+ },
132
+ status: {
133
+ w: '12',
134
+ h: '12',
135
+ },
136
+ },
137
+ xl: {
138
+ root: {
139
+ w: '48',
140
+ h: '48',
141
+ },
142
+ fallback: {
143
+ fontSize: '20',
144
+ },
145
+ presence: {
146
+ w: '12',
147
+ h: '12',
148
+ },
149
+ status: {
150
+ w: '16',
151
+ h: '16',
152
+ },
153
+ },
154
+ '2xl': {
155
+ root: {
156
+ w: '64',
157
+ h: '64',
158
+ },
159
+ fallback: {
160
+ fontSize: '24',
161
+ },
162
+ presence: {
163
+ w: '14',
164
+ h: '14',
165
+ },
166
+ status: {
167
+ w: '20',
168
+ h: '20',
169
+ },
170
+ },
171
+ },
172
+ shape: {
173
+ circle: {
174
+ root: {
175
+ borderRadius: '999',
176
+ },
177
+ image: {
178
+ borderRadius: '999',
179
+ },
180
+ },
181
+ square: {
182
+ root: {
183
+ borderRadius: '4',
184
+ },
185
+ image: {
186
+ borderRadius: '4',
187
+ },
188
+ },
189
+ hexagon: {
190
+ root: {
191
+ clipPath:
192
+ 'polygon(45% 1.33975%,46.5798% .60307%,48.26352% .15192%,50% 0,51.73648% .15192%,53.4202% .60307%,55% 1.33975%,89.64102% 21.33975%,91.06889% 22.33956%,92.30146% 23.57212%,93.30127% 25%,94.03794% 26.5798%,94.48909% 28.26352%,94.64102% 30%,94.64102% 70%,94.48909% 71.73648%,94.03794% 73.4202%,93.30127% 75%,92.30146% 76.42788%,91.06889% 77.66044%,89.64102% 78.66025%,55% 98.66025%,53.4202% 99.39693%,51.73648% 99.84808%,50% 100%,48.26352% 99.84808%,46.5798% 99.39693%,45% 98.66025%,10.35898% 78.66025%,8.93111% 77.66044%,7.69854% 76.42788%,6.69873% 75%,5.96206% 73.4202%,5.51091% 71.73648%,5.35898% 70%,5.35898% 30%,5.51091% 28.26352%,5.96206% 26.5798%,6.69873% 25%,7.69854% 23.57212%,8.93111% 22.33956%,10.35898% 21.33975%)',
193
+ },
194
+ image: {
195
+ clipPath:
196
+ 'polygon(45% 1.33975%,46.5798% .60307%,48.26352% .15192%,50% 0,51.73648% .15192%,53.4202% .60307%,55% 1.33975%,89.64102% 21.33975%,91.06889% 22.33956%,92.30146% 23.57212%,93.30127% 25%,94.03794% 26.5798%,94.48909% 28.26352%,94.64102% 30%,94.64102% 70%,94.48909% 71.73648%,94.03794% 73.4202%,93.30127% 75%,92.30146% 76.42788%,91.06889% 77.66044%,89.64102% 78.66025%,55% 98.66025%,53.4202% 99.39693%,51.73648% 99.84808%,50% 100%,48.26352% 99.84808%,46.5798% 99.39693%,45% 98.66025%,10.35898% 78.66025%,8.93111% 77.66044%,7.69854% 76.42788%,6.69873% 75%,5.96206% 73.4202%,5.51091% 71.73648%,5.35898% 70%,5.35898% 30%,5.51091% 28.26352%,5.96206% 26.5798%,6.69873% 25%,7.69854% 23.57212%,8.93111% 22.33956%,10.35898% 21.33975%)',
197
+ },
198
+ },
199
+ },
200
+ },
201
+ defaultVariants: {
202
+ size: 'md',
203
+ shape: 'circle',
204
+ },
205
+ });
@@ -0,0 +1,203 @@
1
+ import { defineSlotRecipe } from '@pandacss/dev';
2
+
3
+ export const badgeRecipe = defineSlotRecipe({
4
+ className: 'badge',
5
+ jsx: ['Badge'],
6
+ slots: ['root', 'indicator'],
7
+ base: {
8
+ root: {
9
+ display: 'inline-flex',
10
+ position: 'relative',
11
+ verticalAlign: 'middle',
12
+ },
13
+ indicator: {
14
+ display: 'inline-flex',
15
+ alignItems: 'center',
16
+ justifyContent: 'center',
17
+ borderRadius: '999',
18
+ fontWeight: 'medium',
19
+ fontFamily: 'sans',
20
+ lineHeight: '1',
21
+ whiteSpace: 'nowrap',
22
+ userSelect: 'none',
23
+ zIndex: '1',
24
+ },
25
+ },
26
+ variants: {
27
+ size: {
28
+ sm: {
29
+ indicator: {
30
+ h: '6',
31
+ fontSize: '10',
32
+ p: '3',
33
+ },
34
+ },
35
+ md: {
36
+ indicator: {
37
+ h: '8',
38
+ fontSize: '12',
39
+ p: '4',
40
+ },
41
+ },
42
+ lg: {
43
+ indicator: {
44
+ h: '10',
45
+ fontSize: '14',
46
+ p: '5',
47
+ },
48
+ },
49
+ },
50
+ // When standalone (no children), don't use absolute positioning
51
+ standalone: {
52
+ true: {
53
+ root: {
54
+ display: 'inline-flex',
55
+ },
56
+ indicator: {
57
+ position: 'static',
58
+ transform: 'none',
59
+ },
60
+ },
61
+ false: {
62
+ root: {
63
+ display: 'inline-flex',
64
+ position: 'relative',
65
+ verticalAlign: 'middle',
66
+ },
67
+ indicator: {
68
+ position: 'absolute',
69
+ top: '0',
70
+ right: '0',
71
+ transform: 'translate(50%, -50%)',
72
+ },
73
+ },
74
+ },
75
+ // Dot mode: smaller, no text
76
+ dot: {
77
+ true: {
78
+ indicator: {
79
+ // Dot mode styles handled by base + size variants
80
+ },
81
+ },
82
+ false: {
83
+ indicator: {
84
+ // Count mode - compound variants handle sizing
85
+ },
86
+ },
87
+ },
88
+ // variant variants for color schemes
89
+ variant: {
90
+ neutral: {
91
+ indicator: {
92
+ bg: { base: 'neutral.30', _dark: 'darkNeutral.40' },
93
+ color: 'text',
94
+ },
95
+ },
96
+ subtle: {
97
+ indicator: {
98
+ bg: 'bg.neutral',
99
+ color: 'text',
100
+ },
101
+ },
102
+ inverted: {
103
+ indicator: {
104
+ bg: 'bg.neutral.inverse.bold',
105
+ color: 'text.inverse',
106
+ },
107
+ },
108
+ 'subtle-inverted': {
109
+ indicator: {
110
+ bg: 'bg.neutral.inverse.subtle',
111
+ color: 'text',
112
+ },
113
+ },
114
+ success: {
115
+ indicator: {
116
+ bg: 'bg.success.bold',
117
+ color: 'text.inverse',
118
+ },
119
+ },
120
+ danger: {
121
+ indicator: {
122
+ bg: 'bg.danger.bold',
123
+ color: 'text.inverse',
124
+ },
125
+ },
126
+ warning: {
127
+ indicator: {
128
+ bg: 'bg.warning.bold',
129
+ color: 'text.warning.inverse',
130
+ },
131
+ },
132
+ info: {
133
+ indicator: {
134
+ bg: 'bg.info.bold',
135
+ color: 'text.inverse',
136
+ },
137
+ },
138
+ },
139
+ },
140
+ compoundVariants: [
141
+ // Count mode sizes (smaller than count mode)
142
+ {
143
+ dot: false,
144
+ size: 'sm',
145
+ css: {
146
+ indicator: {
147
+ minW: '16',
148
+ h: 'fit',
149
+ // w: '4',
150
+ // h: '4',
151
+ // p: '3',
152
+ },
153
+ },
154
+ },
155
+ {
156
+ dot: false,
157
+ size: 'md',
158
+ css: {
159
+ indicator: {
160
+ minW: '20',
161
+ h: 'fit',
162
+ // w: '6',
163
+ // h: '6',
164
+ // p: '4',
165
+ },
166
+ },
167
+ },
168
+ {
169
+ dot: false,
170
+ size: 'lg',
171
+ css: {
172
+ indicator: {
173
+ minW: '24',
174
+ h: 'fit',
175
+ // w: '8',
176
+ // h: '8',
177
+ // p: '5',
178
+ },
179
+ },
180
+ },
181
+ ],
182
+ defaultVariants: {
183
+ size: 'md',
184
+ variant: 'danger',
185
+ },
186
+ // staticCss: [
187
+ // {
188
+ // size: ['sm', 'md', 'lg'],
189
+ // standalone: ['true', 'false'],
190
+ // dot: ['true', 'false'],
191
+ // variant: [
192
+ // 'neutral',
193
+ // 'inverted',
194
+ // 'subtle',
195
+ // 'subtle-inverted',
196
+ // 'success',
197
+ // 'danger',
198
+ // 'warning',
199
+ // 'info',
200
+ // ],
201
+ // },
202
+ // ],
203
+ });
@@ -0,0 +1,13 @@
1
+ import { defineRecipe } from '@pandacss/dev';
2
+
3
+ const boxBase = {};
4
+
5
+ const boxVariants = {};
6
+
7
+ export const boxRecipe = defineRecipe({
8
+ className: 'box',
9
+ jsx: ['Box'],
10
+ base: boxBase,
11
+ variants: boxVariants,
12
+ defaultVariants: {},
13
+ });
@@ -0,0 +1,29 @@
1
+ import { defineRecipe } from '@pandacss/dev';
2
+
3
+ const BreadcrumbsBase = {
4
+ display: 'flex',
5
+ alignItems: 'center',
6
+ '& li': {
7
+ display: 'flex',
8
+ alignItems: 'center',
9
+ },
10
+ '& a': {
11
+ color: { base: 'gray.60', _dark: 'gray.60' },
12
+ _focusVisible: {
13
+ color: 'blue.50',
14
+ },
15
+ },
16
+ '& p': {
17
+ color: { base: 'gray.90', _dark: 'gray.10' },
18
+ },
19
+ '& span': {
20
+ mx: '6',
21
+ color: 'gray.20',
22
+ },
23
+ };
24
+
25
+ export const breadcrumbsRecipe = defineRecipe({
26
+ className: 'breadcrumbs',
27
+ jsx: ['Breadcrumbs'],
28
+ base: BreadcrumbsBase,
29
+ });