banhaten 0.1.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 (201) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +361 -0
  3. package/banhaten.config.example.json +13 -0
  4. package/package.json +59 -0
  5. package/registry/assets/activity-feed-avatar.png +0 -0
  6. package/registry/assets/avatars/avatar-01.jpg +0 -0
  7. package/registry/assets/avatars/avatar-02.jpg +0 -0
  8. package/registry/assets/avatars/avatar-03.jpg +0 -0
  9. package/registry/assets/avatars/avatar-04.jpg +0 -0
  10. package/registry/assets/avatars/avatar-05.jpg +0 -0
  11. package/registry/assets/avatars/avatar-06.jpg +0 -0
  12. package/registry/assets/avatars/avatar-07.jpg +0 -0
  13. package/registry/assets/avatars/avatar-08.jpg +0 -0
  14. package/registry/assets/avatars/avatar-09.jpg +0 -0
  15. package/registry/assets/avatars/avatar-10.jpg +0 -0
  16. package/registry/assets/avatars/avatar-11.jpg +0 -0
  17. package/registry/assets/avatars/avatar-12.jpg +0 -0
  18. package/registry/assets/avatars/avatar-13.jpg +0 -0
  19. package/registry/assets/avatars/avatar-14.jpg +0 -0
  20. package/registry/assets/avatars/avatar-15.jpg +0 -0
  21. package/registry/assets/avatars/avatar-16.jpg +0 -0
  22. package/registry/assets/avatars/avatar-17.jpg +0 -0
  23. package/registry/assets/avatars/avatar-18.jpg +0 -0
  24. package/registry/assets/avatars/avatar-19.jpg +0 -0
  25. package/registry/assets/avatars/avatar-20.jpg +0 -0
  26. package/registry/assets/avatars/avatar-21.jpg +0 -0
  27. package/registry/assets/avatars/avatar-22.jpg +0 -0
  28. package/registry/assets/avatars/avatar-23.jpg +0 -0
  29. package/registry/assets/avatars/avatar-24.jpg +0 -0
  30. package/registry/assets/avatars/avatar-25.jpg +0 -0
  31. package/registry/assets/avatars/avatar-26.jpg +0 -0
  32. package/registry/assets/avatars/avatar-27.jpg +0 -0
  33. package/registry/assets/avatars/avatar-28.jpg +0 -0
  34. package/registry/assets/avatars/avatar-29.jpg +0 -0
  35. package/registry/assets/avatars/avatar-30.jpg +0 -0
  36. package/registry/assets/avatars/avatar-31.jpg +0 -0
  37. package/registry/assets/avatars/avatar-32.jpg +0 -0
  38. package/registry/assets/avatars/avatar-33.jpg +0 -0
  39. package/registry/assets/avatars/avatar-34.jpg +0 -0
  40. package/registry/assets/avatars/avatar-35.jpg +0 -0
  41. package/registry/assets/image-assets.json +744 -0
  42. package/registry/assets/images/art-01.jpg +0 -0
  43. package/registry/assets/images/art-02.jpg +0 -0
  44. package/registry/assets/images/art-03.jpg +0 -0
  45. package/registry/assets/images/art-04.jpg +0 -0
  46. package/registry/assets/images/art-05.jpg +0 -0
  47. package/registry/assets/images/art-06.jpg +0 -0
  48. package/registry/assets/images/art-07.jpg +0 -0
  49. package/registry/assets/images/art-08.jpg +0 -0
  50. package/registry/assets/images/art-09.jpg +0 -0
  51. package/registry/assets/images/art-10.jpg +0 -0
  52. package/registry/assets/images/art-11.jpg +0 -0
  53. package/registry/assets/images/art-12.jpg +0 -0
  54. package/registry/assets/images/art-13.jpg +0 -0
  55. package/registry/assets/images/art-14.jpg +0 -0
  56. package/registry/assets/images/art-15.jpg +0 -0
  57. package/registry/assets/images/art-16.jpg +0 -0
  58. package/registry/assets/images/art-17.jpg +0 -0
  59. package/registry/assets/images/art-18.jpg +0 -0
  60. package/registry/assets/images/art-19.jpg +0 -0
  61. package/registry/assets/images/art-20.jpg +0 -0
  62. package/registry/assets/images/art-21.jpg +0 -0
  63. package/registry/assets/images/art-22.jpg +0 -0
  64. package/registry/assets/images/art-23.jpg +0 -0
  65. package/registry/assets/images/art-24.jpg +0 -0
  66. package/registry/assets/images/art-25.jpg +0 -0
  67. package/registry/assets/images/art-26.jpg +0 -0
  68. package/registry/assets/images/art-27.jpg +0 -0
  69. package/registry/assets/images/nature-01.jpg +0 -0
  70. package/registry/assets/images/nature-02.jpg +0 -0
  71. package/registry/assets/images/nature-03.jpg +0 -0
  72. package/registry/assets/images/nature-04.jpg +0 -0
  73. package/registry/assets/images/nature-05.jpg +0 -0
  74. package/registry/assets/images/nature-06.jpg +0 -0
  75. package/registry/assets/images/nature-07.jpg +0 -0
  76. package/registry/assets/images/nature-08.jpg +0 -0
  77. package/registry/assets/images/nature-09.jpg +0 -0
  78. package/registry/assets/images/nature-10.jpg +0 -0
  79. package/registry/assets/images/nature-11.jpg +0 -0
  80. package/registry/assets/images/nature-12.jpg +0 -0
  81. package/registry/assets/images/nature-13.jpg +0 -0
  82. package/registry/assets/images/nature-14.jpg +0 -0
  83. package/registry/assets/images/nature-15.jpg +0 -0
  84. package/registry/assets/images/nature-16.jpg +0 -0
  85. package/registry/assets/images/nature-17.jpg +0 -0
  86. package/registry/assets/images/nature-18.jpg +0 -0
  87. package/registry/assets/images/nature-19.jpg +0 -0
  88. package/registry/assets/images/nature-20.jpg +0 -0
  89. package/registry/components/accordion.tsx +119 -0
  90. package/registry/components/alert.tsx +282 -0
  91. package/registry/components/attribute.tsx +452 -0
  92. package/registry/components/avatar.tsx +142 -0
  93. package/registry/components/badge.tsx +567 -0
  94. package/registry/components/button-group.tsx +246 -0
  95. package/registry/components/button.tsx +102 -0
  96. package/registry/components/card.tsx +613 -0
  97. package/registry/components/checkbox.tsx +244 -0
  98. package/registry/components/date-picker.tsx +1143 -0
  99. package/registry/components/divider.tsx +82 -0
  100. package/registry/components/expanded/ActivityFeed.tsx +226 -0
  101. package/registry/components/expanded/Banner.tsx +145 -0
  102. package/registry/components/expanded/BannerBoard.tsx +225 -0
  103. package/registry/components/expanded/Breadcrumbs.tsx +156 -0
  104. package/registry/components/expanded/CatalogComponentsShowcase.tsx +211 -0
  105. package/registry/components/expanded/CatalogDivider.tsx +48 -0
  106. package/registry/components/expanded/CatalogTag.tsx +92 -0
  107. package/registry/components/expanded/CommandBar.tsx +406 -0
  108. package/registry/components/expanded/FileUpload.tsx +231 -0
  109. package/registry/components/expanded/IconExplorer.tsx +612 -0
  110. package/registry/components/expanded/OnboardingStepListItem.tsx +67 -0
  111. package/registry/components/expanded/PageHeader.tsx +184 -0
  112. package/registry/components/expanded/Slideout.tsx +514 -0
  113. package/registry/components/expanded/Steps.tsx +266 -0
  114. package/registry/components/expanded/Table.tsx +1014 -0
  115. package/registry/components/expanded/Tabs.tsx +86 -0
  116. package/registry/components/expanded/Timeline.tsx +235 -0
  117. package/registry/components/expanded/TimelineShowcase.tsx +158 -0
  118. package/registry/components/expanded/activityFeed.css +292 -0
  119. package/registry/components/expanded/banner.css +312 -0
  120. package/registry/components/expanded/breadcrumbs.css +140 -0
  121. package/registry/components/expanded/catalogComponentsShowcase.css +87 -0
  122. package/registry/components/expanded/commandBar.css +473 -0
  123. package/registry/components/expanded/divider.css +75 -0
  124. package/registry/components/expanded/fileUpload.css +228 -0
  125. package/registry/components/expanded/iconExplorer.css +764 -0
  126. package/registry/components/expanded/iconPacks.ts +866 -0
  127. package/registry/components/expanded/onboardingStepListItem.css +126 -0
  128. package/registry/components/expanded/pageHeader.css +287 -0
  129. package/registry/components/expanded/slideout.css +955 -0
  130. package/registry/components/expanded/steps.css +329 -0
  131. package/registry/components/expanded/table.css +607 -0
  132. package/registry/components/expanded/tabs.css +197 -0
  133. package/registry/components/expanded/tag.css +148 -0
  134. package/registry/components/expanded/timeline.css +282 -0
  135. package/registry/components/input-content.ts +106 -0
  136. package/registry/components/input.tsx +866 -0
  137. package/registry/components/menu.tsx +758 -0
  138. package/registry/components/modal.tsx +799 -0
  139. package/registry/components/pagination.tsx +543 -0
  140. package/registry/components/progress-slider.tsx +216 -0
  141. package/registry/components/progress.tsx +367 -0
  142. package/registry/components/radio-card.tsx +654 -0
  143. package/registry/components/radio-group.tsx +570 -0
  144. package/registry/components/select-content.tsx +313 -0
  145. package/registry/components/select.tsx +871 -0
  146. package/registry/components/slider.tsx +380 -0
  147. package/registry/components/social-button.tsx +360 -0
  148. package/registry/components/spinner.tsx +31 -0
  149. package/registry/components/tag.tsx +423 -0
  150. package/registry/components/textarea.tsx +625 -0
  151. package/registry/components/toggle.tsx +272 -0
  152. package/registry/components/toolbar.tsx +467 -0
  153. package/registry/components/tooltip.tsx +427 -0
  154. package/registry/examples/accordion-demo.tsx +34 -0
  155. package/registry/examples/alert-demo.tsx +14 -0
  156. package/registry/examples/attribute-demo.tsx +65 -0
  157. package/registry/examples/avatar-demo.tsx +74 -0
  158. package/registry/examples/badge-demo.tsx +53 -0
  159. package/registry/examples/button-demo.tsx +83 -0
  160. package/registry/examples/button-group-demo.tsx +42 -0
  161. package/registry/examples/card-demo.tsx +48 -0
  162. package/registry/examples/checkbox-demo.tsx +67 -0
  163. package/registry/examples/date-picker-demo.tsx +74 -0
  164. package/registry/examples/divider-demo.tsx +17 -0
  165. package/registry/examples/expanded/activity-feed-demo.tsx +22 -0
  166. package/registry/examples/expanded/banner-demo.tsx +23 -0
  167. package/registry/examples/expanded/catalog-components-demo.tsx +5 -0
  168. package/registry/examples/expanded/command-bar-demo.tsx +10 -0
  169. package/registry/examples/expanded/icons-demo.tsx +5 -0
  170. package/registry/examples/expanded/onboarding-step-demo.tsx +11 -0
  171. package/registry/examples/expanded/page-header-demo.tsx +19 -0
  172. package/registry/examples/expanded/slideout-demo.tsx +15 -0
  173. package/registry/examples/expanded/steps-demo.tsx +18 -0
  174. package/registry/examples/expanded/tabs-demo.tsx +13 -0
  175. package/registry/examples/expanded/timeline-demo.tsx +18 -0
  176. package/registry/examples/input-demo.tsx +87 -0
  177. package/registry/examples/menu-demo.tsx +109 -0
  178. package/registry/examples/modal-demo.tsx +16 -0
  179. package/registry/examples/pagination-demo.tsx +17 -0
  180. package/registry/examples/progress-demo.tsx +37 -0
  181. package/registry/examples/progress-slider-demo.tsx +29 -0
  182. package/registry/examples/radio-card-demo.tsx +51 -0
  183. package/registry/examples/radio-group-demo.tsx +62 -0
  184. package/registry/examples/select-demo.tsx +73 -0
  185. package/registry/examples/slider-demo.tsx +31 -0
  186. package/registry/examples/social-button-demo.tsx +51 -0
  187. package/registry/examples/tag-demo.tsx +29 -0
  188. package/registry/examples/textarea-demo.tsx +79 -0
  189. package/registry/examples/toggle-demo.tsx +59 -0
  190. package/registry/examples/toolbar-demo.tsx +80 -0
  191. package/registry/examples/tooltip-demo.tsx +115 -0
  192. package/registry/hooks/use-direction.ts +27 -0
  193. package/registry/index.json +1213 -0
  194. package/registry/styles/globals.css +4600 -0
  195. package/registry/utils/cn.ts +6 -0
  196. package/src/cli/index.js +826 -0
  197. package/tokens/Color mode.zip +0 -0
  198. package/tokens/Numbers.zip +0 -0
  199. package/tokens/Radius.zip +0 -0
  200. package/tokens/Theme.zip +0 -0
  201. package/tokens/banhaten.tokens.json +5525 -0
@@ -0,0 +1,764 @@
1
+ .icons-page {
2
+ --icons-bg: var(--bh-bg-grouped);
3
+ --icons-surface: var(--bh-bg-raised);
4
+ --icons-surface-soft: var(--bh-bg-subtle);
5
+ --icons-text: var(--bh-content-default);
6
+ --icons-muted: var(--bh-content-muted);
7
+ --icons-border: var(--bh-border-subtle);
8
+ --icons-border-strong: var(--bh-border-strong);
9
+ --icons-brand: var(--bh-interactive-brand-default);
10
+ --icons-brand-dark: var(--bh-content-brand-strong);
11
+ --icons-brand-soft: var(--bh-bg-brand-soft);
12
+ --icons-warm: var(--bh-content-warning-default);
13
+ --icons-warm-soft: var(--bh-bg-warning-subtle);
14
+ --icons-danger: var(--bh-content-danger-default);
15
+ --icons-radius: var(--bh-radius-lg-8);
16
+ --icons-shadow: var(--shadow-component-default);
17
+
18
+ min-height: 100vh;
19
+ display: grid;
20
+ grid-template-columns: var(--bh-icon-explorer-nav-column) minmax(0, 1fr);
21
+ background: var(--icons-bg);
22
+ color: var(--icons-text);
23
+ font-family: var(--bh-font-family);
24
+ letter-spacing: 0;
25
+ }
26
+
27
+ .icons-page *,
28
+ .icons-page *::before,
29
+ .icons-page *::after {
30
+ box-sizing: border-box;
31
+ }
32
+
33
+ .icons-page button,
34
+ .icons-page input,
35
+ .icons-page select {
36
+ font: inherit;
37
+ }
38
+
39
+ .icons-page button {
40
+ cursor: pointer;
41
+ }
42
+
43
+ .icons-page button:disabled {
44
+ cursor: wait;
45
+ opacity: var(--bh-opacity-subtle);
46
+ }
47
+
48
+ .icons-page h1,
49
+ .icons-page h2,
50
+ .icons-page h3,
51
+ .icons-page p {
52
+ margin: 0;
53
+ }
54
+
55
+ .icons-page iconify-icon {
56
+ display: inline-block;
57
+ color: currentColor;
58
+ vertical-align: -0.14em;
59
+ }
60
+
61
+ .icons-sidebar {
62
+ height: 100vh;
63
+ position: sticky;
64
+ top: 0;
65
+ overflow: auto;
66
+ border-right: var(--bh-space-xxxs-1) solid var(--icons-border);
67
+ background: var(--icons-surface);
68
+ padding: calc(var(--bh-space-4xl-20) + var(--bh-space-xxs-2)) calc(var(--bh-space-xl-12) + var(--bh-space-sm-6)) calc(var(--bh-space-5xl-24) + var(--bh-space-xs-4));
69
+ }
70
+
71
+ .icons-sidebar__header {
72
+ display: flex;
73
+ align-items: center;
74
+ gap: var(--bh-space-lg-10);
75
+ margin-bottom: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6));
76
+ }
77
+
78
+ .icons-sidebar__header h1 {
79
+ font-size: var(--bh-text-heading-xs-semibold-font-size);
80
+ line-height: 1.2;
81
+ font-weight: var(--bh-font-weight-bold);
82
+ }
83
+
84
+ .icons-sidebar__header p,
85
+ .icons-topbar p,
86
+ .icons-panel__header span,
87
+ .icons-pack__copy span,
88
+ .icons-compare-card p,
89
+ .icons-compare-card > div:first-child span {
90
+ color: var(--icons-muted);
91
+ font-size: var(--bh-text-body-2xs-regular-font-size);
92
+ line-height: 1.35;
93
+ }
94
+
95
+ .icons-mark {
96
+ width: calc(var(--bh-space-6xl-32) + var(--bh-space-xxs-2));
97
+ height: calc(var(--bh-space-6xl-32) + var(--bh-space-xxs-2));
98
+ border-radius: var(--icons-radius);
99
+ display: grid;
100
+ place-items: center;
101
+ color: var(--bh-content-on-brand);
102
+ background: var(--icons-text);
103
+ }
104
+
105
+ .icons-sidebar__tools {
106
+ display: grid;
107
+ gap: var(--bh-space-lg-10);
108
+ margin: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6)) 0;
109
+ }
110
+
111
+ .icons-input,
112
+ .icons-select {
113
+ width: 100%;
114
+ height: calc(var(--bh-space-6xl-32) + var(--bh-space-sm-6));
115
+ border: var(--bh-space-xxxs-1) solid var(--icons-border);
116
+ border-radius: var(--icons-radius);
117
+ background: var(--bh-bg-raised);
118
+ color: var(--icons-text);
119
+ padding: 0 var(--bh-space-xl-12);
120
+ outline: none;
121
+ }
122
+
123
+ .icons-input:focus,
124
+ .icons-select:focus {
125
+ border-color: var(--icons-brand);
126
+ box-shadow: var(--shadow-button-focus);
127
+ }
128
+
129
+ .icons-pack-list {
130
+ display: grid;
131
+ gap: var(--bh-space-md-8);
132
+ }
133
+
134
+ .icons-pack {
135
+ width: 100%;
136
+ display: grid;
137
+ grid-template-columns: var(--bh-icon-explorer-pack-column) minmax(0, 1fr);
138
+ gap: var(--bh-space-lg-10);
139
+ align-items: center;
140
+ border: var(--bh-space-xxxs-1) solid transparent;
141
+ border-radius: var(--icons-radius);
142
+ background: transparent;
143
+ color: var(--icons-text);
144
+ padding: calc(var(--bh-space-md-8) + var(--bh-space-xxxs-1));
145
+ text-align: left;
146
+ }
147
+
148
+ .icons-pack:hover {
149
+ background: var(--bh-bg-muted);
150
+ }
151
+
152
+ .icons-pack.is-active {
153
+ background: var(--icons-brand-soft);
154
+ border-color: var(--bh-border-brand-subtle);
155
+ }
156
+
157
+ .icons-pack__glyph {
158
+ width: calc(var(--bh-space-7xl-40) + var(--bh-space-xxs-2));
159
+ height: calc(var(--bh-space-7xl-40) + var(--bh-space-xxs-2));
160
+ border-radius: var(--icons-radius);
161
+ display: grid;
162
+ place-items: center;
163
+ border: var(--bh-space-xxxs-1) solid var(--icons-border);
164
+ background: var(--bh-bg-raised);
165
+ color: var(--icons-brand-dark);
166
+ }
167
+
168
+ .icons-pack__copy {
169
+ min-width: 0;
170
+ display: grid;
171
+ gap: calc(var(--bh-space-xxs-2) + var(--bh-space-xxxs-1));
172
+ }
173
+
174
+ .icons-pack__copy strong {
175
+ min-width: 0;
176
+ font-size: var(--bh-text-body-xs-regular-font-size);
177
+ line-height: 1.25;
178
+ overflow: hidden;
179
+ text-overflow: ellipsis;
180
+ white-space: nowrap;
181
+ }
182
+
183
+ .icons-main {
184
+ min-width: 0;
185
+ }
186
+
187
+ .icons-topbar {
188
+ position: sticky;
189
+ top: 0;
190
+ z-index: 5;
191
+ min-height: var(--bh-icon-explorer-topbar-min-height);
192
+ display: grid;
193
+ grid-template-columns: minmax(0, 1fr) auto;
194
+ gap: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6));
195
+ align-items: center;
196
+ padding: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6)) calc(var(--bh-space-5xl-24) + var(--bh-space-xxs-2));
197
+ border-bottom: var(--bh-space-xxxs-1) solid var(--icons-border);
198
+ background: var(--bh-icon-explorer-topbar-bg);
199
+ backdrop-filter: blur(var(--bh-space-2xl-14));
200
+ }
201
+
202
+ .icons-topbar h2 {
203
+ font-size: var(--bh-text-heading-md-semibold-font-size);
204
+ line-height: 1.15;
205
+ font-weight: var(--bh-font-weight-bold);
206
+ }
207
+
208
+ .icons-topbar code {
209
+ color: var(--icons-brand-dark);
210
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
211
+ }
212
+
213
+ .icons-tabs {
214
+ display: inline-flex;
215
+ align-items: center;
216
+ gap: var(--bh-space-xs-4);
217
+ padding: var(--bh-space-xs-4);
218
+ border: var(--bh-space-xxxs-1) solid var(--icons-border);
219
+ border-radius: var(--icons-radius);
220
+ background: var(--bh-bg-raised);
221
+ }
222
+
223
+ .icons-tab {
224
+ min-height: var(--bh-space-6xl-32);
225
+ border: 0;
226
+ border-radius: var(--bh-radius-md-6);
227
+ padding: 0 calc(var(--bh-space-lg-10) + var(--bh-space-xxxs-1));
228
+ background: transparent;
229
+ color: var(--icons-muted);
230
+ font-size: var(--bh-text-body-xs-regular-font-size);
231
+ font-weight: var(--bh-font-weight-bold);
232
+ }
233
+
234
+ .icons-tab.is-active {
235
+ background: var(--icons-text);
236
+ color: var(--bh-content-on-brand);
237
+ }
238
+
239
+ .icons-content {
240
+ max-width: var(--bh-icon-explorer-canvas-max-width);
241
+ margin: 0 auto;
242
+ padding: var(--bh-space-5xl-24) calc(var(--bh-space-5xl-24) + var(--bh-space-xxs-2)) var(--bh-space-8xl-48);
243
+ display: grid;
244
+ gap: calc(var(--bh-space-4xl-20) + var(--bh-space-xxs-2));
245
+ }
246
+
247
+ .icons-panel,
248
+ .icons-compare-card {
249
+ background: var(--icons-surface);
250
+ border: var(--bh-space-xxxs-1) solid var(--icons-border);
251
+ border-radius: var(--icons-radius);
252
+ box-shadow: var(--icons-shadow);
253
+ }
254
+
255
+ .icons-summary-grid {
256
+ display: grid;
257
+ grid-template-columns: minmax(0, 1.25fr) minmax(var(--bh-icon-explorer-preview-column), 0.75fr);
258
+ gap: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6));
259
+ }
260
+
261
+ .icons-hero-panel {
262
+ display: grid;
263
+ grid-template-columns: auto minmax(0, 1fr);
264
+ gap: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6));
265
+ align-items: center;
266
+ padding: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6));
267
+ }
268
+
269
+ .icons-hero-glyph {
270
+ width: var(--bh-icon-explorer-detail-preview-size);
271
+ height: var(--bh-icon-explorer-detail-preview-size);
272
+ border-radius: var(--icons-radius);
273
+ display: grid;
274
+ place-items: center;
275
+ color: var(--icons-brand-dark);
276
+ background: var(--icons-brand-soft);
277
+ border: var(--bh-space-xxxs-1) solid var(--bh-border-brand-subtle);
278
+ }
279
+
280
+ .icons-hero-copy {
281
+ min-width: 0;
282
+ display: grid;
283
+ gap: var(--bh-space-lg-10);
284
+ }
285
+
286
+ .icons-hero-copy h3 {
287
+ font-size: var(--bh-text-heading-lg-semibold-font-size);
288
+ line-height: 1.05;
289
+ font-weight: var(--bh-font-weight-bold);
290
+ }
291
+
292
+ .icons-hero-copy p {
293
+ max-width: var(--bh-icon-explorer-detail-max-width);
294
+ color: var(--icons-muted);
295
+ font-size: var(--bh-text-body-sm-regular-font-size);
296
+ line-height: 1.55;
297
+ }
298
+
299
+ .icons-tags,
300
+ .icons-links,
301
+ .icons-variants,
302
+ .icons-button-row {
303
+ display: flex;
304
+ flex-wrap: wrap;
305
+ gap: var(--bh-space-md-8);
306
+ }
307
+
308
+ .icons-tag {
309
+ min-height: calc(var(--bh-space-5xl-24) + var(--bh-space-xxs-2));
310
+ border-radius: var(--bh-radius-full);
311
+ display: inline-flex;
312
+ align-items: center;
313
+ border: var(--bh-space-xxxs-1) solid var(--icons-border);
314
+ background: var(--bh-bg-subtle);
315
+ color: var(--icons-text);
316
+ padding: 0 calc(var(--bh-space-md-8) + var(--bh-space-xxxs-1));
317
+ font-size: var(--bh-text-body-2xs-regular-font-size);
318
+ font-weight: var(--bh-font-weight-bold);
319
+ }
320
+
321
+ .icons-tag.is-warm {
322
+ background: var(--icons-warm-soft);
323
+ border-color: var(--bh-border-warning-subtle);
324
+ color: var(--bh-content-warning-strong);
325
+ }
326
+
327
+ .icons-links a {
328
+ color: var(--icons-brand-dark);
329
+ text-decoration: none;
330
+ font-size: var(--bh-text-body-2xs-regular-font-size);
331
+ font-weight: var(--bh-font-weight-bold);
332
+ }
333
+
334
+ .icons-links a:hover {
335
+ text-decoration: underline;
336
+ }
337
+
338
+ .icons-panel__header {
339
+ padding: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6)) calc(var(--bh-space-xl-12) + var(--bh-space-sm-6)) 0;
340
+ display: flex;
341
+ justify-content: space-between;
342
+ align-items: flex-start;
343
+ gap: var(--bh-space-xl-12);
344
+ }
345
+
346
+ .icons-panel__header h3 {
347
+ font-size: var(--bh-text-body-md-font-size);
348
+ line-height: 1.2;
349
+ font-weight: var(--bh-font-weight-bold);
350
+ }
351
+
352
+ .icons-score-list,
353
+ .icons-controls {
354
+ display: grid;
355
+ gap: var(--bh-space-xl-12);
356
+ padding: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6));
357
+ }
358
+
359
+ .icons-score {
360
+ display: grid;
361
+ gap: var(--bh-space-sm-6);
362
+ }
363
+
364
+ .icons-score span {
365
+ display: flex;
366
+ justify-content: space-between;
367
+ gap: var(--bh-space-xl-12);
368
+ color: var(--icons-text);
369
+ font-size: var(--bh-text-body-2xs-regular-font-size);
370
+ font-style: normal;
371
+ }
372
+
373
+ .icons-score em {
374
+ color: var(--icons-muted);
375
+ font-style: normal;
376
+ }
377
+
378
+ .icons-score div {
379
+ height: var(--bh-space-md-8);
380
+ overflow: hidden;
381
+ border-radius: var(--bh-radius-full);
382
+ background: var(--bh-bg-muted);
383
+ }
384
+
385
+ .icons-score i {
386
+ display: block;
387
+ height: 100%;
388
+ border-radius: inherit;
389
+ background: var(--icons-brand);
390
+ }
391
+
392
+ .icons-variants {
393
+ padding: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6));
394
+ }
395
+
396
+ .icons-variant {
397
+ min-height: var(--bh-space-6xl-32);
398
+ border: var(--bh-space-xxxs-1) solid var(--icons-border);
399
+ border-radius: var(--bh-radius-full);
400
+ background: var(--bh-bg-raised);
401
+ color: var(--icons-text);
402
+ padding: 0 var(--bh-space-xl-12);
403
+ font-size: var(--bh-text-body-2xs-regular-font-size);
404
+ font-weight: var(--bh-font-weight-bold);
405
+ }
406
+
407
+ .icons-variant.is-active {
408
+ border-color: var(--icons-brand);
409
+ background: var(--icons-brand);
410
+ color: var(--bh-content-on-brand);
411
+ }
412
+
413
+ .icons-sample-grid {
414
+ display: grid;
415
+ grid-template-columns: repeat(6, minmax(var(--bh-icon-explorer-grid-column-min), 1fr));
416
+ gap: var(--bh-space-lg-10);
417
+ padding: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6));
418
+ }
419
+
420
+ .icons-sample {
421
+ min-height: calc(var(--bh-space-9xl-64) + var(--bh-space-xl-12));
422
+ border: var(--bh-space-xxxs-1) solid var(--icons-border);
423
+ border-radius: var(--icons-radius);
424
+ background: var(--icons-surface-soft);
425
+ color: var(--icons-text);
426
+ display: grid;
427
+ place-items: center;
428
+ gap: var(--bh-space-md-8);
429
+ padding: var(--bh-space-lg-10) var(--bh-space-sm-6);
430
+ }
431
+
432
+ .icons-sample span {
433
+ max-width: 100%;
434
+ color: var(--icons-muted);
435
+ font-size: var(--bh-text-body-3xs-regular-font-size);
436
+ line-height: 1.2;
437
+ overflow: hidden;
438
+ text-overflow: ellipsis;
439
+ white-space: nowrap;
440
+ }
441
+
442
+ .icons-component-grid {
443
+ display: grid;
444
+ grid-template-columns: minmax(var(--bh-icon-explorer-preview-column), 0.9fr) minmax(0, 1.1fr);
445
+ gap: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6));
446
+ }
447
+
448
+ .icons-controls label {
449
+ min-height: var(--bh-space-8xl-48);
450
+ display: flex;
451
+ align-items: center;
452
+ justify-content: space-between;
453
+ gap: var(--bh-space-xl-12);
454
+ border: var(--bh-space-xxxs-1) solid var(--icons-border);
455
+ border-radius: var(--icons-radius);
456
+ background: var(--icons-surface-soft);
457
+ padding: var(--bh-space-lg-10) var(--bh-space-xl-12);
458
+ }
459
+
460
+ .icons-controls span {
461
+ color: var(--icons-text);
462
+ font-size: var(--bh-text-body-xs-regular-font-size);
463
+ font-weight: var(--bh-font-weight-bold);
464
+ }
465
+
466
+ .icons-controls input[type="range"] {
467
+ width: var(--bh-icon-explorer-swatch-width);
468
+ accent-color: var(--icons-brand);
469
+ }
470
+
471
+ .icons-preview {
472
+ display: grid;
473
+ gap: var(--bh-space-2xl-14);
474
+ padding: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6));
475
+ }
476
+
477
+ .preview-button {
478
+ min-height: var(--bh-space-7xl-40);
479
+ border: var(--bh-space-xxxs-1) solid var(--icons-border);
480
+ border-radius: var(--icons-radius);
481
+ display: inline-flex;
482
+ align-items: center;
483
+ justify-content: center;
484
+ gap: var(--bh-space-md-8);
485
+ background: var(--bh-bg-raised);
486
+ color: var(--icons-text);
487
+ padding: 0 calc(var(--bh-space-xl-12) + var(--bh-space-xxxs-1));
488
+ font-size: var(--bh-text-body-xs-regular-font-size);
489
+ font-weight: var(--bh-font-weight-bold);
490
+ }
491
+
492
+ .preview-button.is-primary {
493
+ border-color: var(--icons-text);
494
+ background: var(--icons-text);
495
+ color: var(--bh-content-on-brand);
496
+ }
497
+
498
+ .preview-button.is-danger {
499
+ border-color: var(--bh-border-danger-subtle);
500
+ background: var(--bh-bg-danger-subtle);
501
+ color: var(--icons-danger);
502
+ }
503
+
504
+ .preview-button.is-icon-only {
505
+ width: var(--bh-space-7xl-40);
506
+ padding: 0;
507
+ }
508
+
509
+ .icons-field-row {
510
+ display: grid;
511
+ grid-template-columns: minmax(0, 1fr) var(--bh-icon-explorer-drawer-column);
512
+ gap: var(--bh-space-lg-10);
513
+ }
514
+
515
+ .icons-field {
516
+ height: calc(var(--bh-space-7xl-40) + var(--bh-space-xxs-2));
517
+ border: var(--bh-space-xxxs-1) solid var(--icons-border);
518
+ border-radius: var(--icons-radius);
519
+ display: flex;
520
+ align-items: center;
521
+ gap: var(--bh-space-md-8);
522
+ background: var(--bh-bg-raised);
523
+ color: var(--icons-muted);
524
+ padding: 0 var(--bh-space-xl-12);
525
+ font-size: var(--bh-text-body-xs-regular-font-size);
526
+ }
527
+
528
+ .icons-field.is-select {
529
+ justify-content: space-between;
530
+ }
531
+
532
+ .icons-field.is-select span {
533
+ display: inline-flex;
534
+ align-items: center;
535
+ gap: var(--bh-space-md-8);
536
+ min-width: 0;
537
+ }
538
+
539
+ .icons-menu-preview,
540
+ .icons-table-preview,
541
+ .icons-empty-preview {
542
+ border: var(--bh-space-xxxs-1) solid var(--icons-border);
543
+ border-radius: var(--icons-radius);
544
+ background: var(--bh-bg-raised);
545
+ overflow: hidden;
546
+ }
547
+
548
+ .icons-menu-row,
549
+ .icons-table-row {
550
+ display: grid;
551
+ align-items: center;
552
+ gap: var(--bh-space-lg-10);
553
+ min-height: calc(var(--bh-space-7xl-40) + var(--bh-space-xxs-2));
554
+ border-bottom: var(--bh-space-xxxs-1) solid var(--icons-border);
555
+ color: var(--icons-text);
556
+ padding: 0 var(--bh-space-xl-12);
557
+ font-size: var(--bh-text-body-xs-regular-font-size);
558
+ }
559
+
560
+ .icons-menu-row:last-child,
561
+ .icons-table-row:last-child {
562
+ border-bottom: 0;
563
+ }
564
+
565
+ .icons-menu-row {
566
+ grid-template-columns: var(--bh-icon-explorer-row-icon-column) minmax(0, 1fr) auto;
567
+ }
568
+
569
+ .icons-menu-row em {
570
+ min-height: calc(var(--bh-space-4xl-20) + var(--bh-space-xxs-2));
571
+ border-radius: var(--bh-radius-full);
572
+ display: inline-flex;
573
+ align-items: center;
574
+ gap: var(--bh-space-xs-4);
575
+ background: var(--bh-bg-success-subtle);
576
+ color: var(--bh-content-success-strong);
577
+ padding: 0 var(--bh-space-md-8);
578
+ font-size: var(--bh-text-body-3xs-regular-font-size);
579
+ font-style: normal;
580
+ font-weight: var(--bh-font-weight-bold);
581
+ }
582
+
583
+ .icons-menu-row small {
584
+ color: var(--icons-muted);
585
+ font-size: var(--bh-text-body-2xs-regular-font-size);
586
+ }
587
+
588
+ .icons-table-row {
589
+ grid-template-columns: var(--bh-icon-explorer-list-column) 1.1fr 0.8fr 0.8fr auto;
590
+ }
591
+
592
+ .icons-empty-preview {
593
+ min-height: var(--bh-icon-explorer-selected-min-height);
594
+ display: grid;
595
+ place-items: center;
596
+ padding: var(--bh-space-5xl-24);
597
+ text-align: center;
598
+ }
599
+
600
+ .icons-empty-preview > div {
601
+ max-width: var(--bh-icon-explorer-request-max-width);
602
+ display: grid;
603
+ place-items: center;
604
+ gap: var(--bh-space-lg-10);
605
+ }
606
+
607
+ .icons-empty-preview span {
608
+ width: calc(var(--bh-space-8xl-48) + var(--bh-space-sm-6));
609
+ height: calc(var(--bh-space-8xl-48) + var(--bh-space-sm-6));
610
+ display: grid;
611
+ place-items: center;
612
+ border-radius: var(--icons-radius);
613
+ background: var(--bh-bg-brand-subtle);
614
+ color: var(--icons-brand-dark);
615
+ }
616
+
617
+ .icons-empty-preview h3 {
618
+ font-size: var(--bh-text-body-md-font-size);
619
+ line-height: 1.2;
620
+ }
621
+
622
+ .icons-empty-preview p {
623
+ color: var(--icons-muted);
624
+ font-size: var(--bh-text-body-xs-regular-font-size);
625
+ line-height: 1.45;
626
+ }
627
+
628
+ .icons-catalog-tools {
629
+ display: grid;
630
+ grid-template-columns: minmax(0, 1fr) var(--bh-icon-explorer-group-column) auto;
631
+ gap: var(--bh-space-lg-10);
632
+ align-items: center;
633
+ padding: calc(var(--bh-space-xl-12) + var(--bh-space-sm-6));
634
+ }
635
+
636
+ .icons-error {
637
+ border: var(--bh-space-xxxs-1) solid var(--bh-border-danger-subtle);
638
+ border-radius: var(--icons-radius);
639
+ background: var(--bh-bg-danger-subtle);
640
+ color: var(--icons-danger);
641
+ padding: var(--bh-space-2xl-14);
642
+ font-size: var(--bh-text-body-xs-regular-font-size);
643
+ }
644
+
645
+ .icons-catalog-grid {
646
+ display: grid;
647
+ grid-template-columns: repeat(auto-fill, minmax(var(--bh-icon-explorer-grid-card-min), 1fr));
648
+ gap: var(--bh-space-lg-10);
649
+ }
650
+
651
+ .icons-catalog-card {
652
+ min-height: var(--bh-icon-explorer-grid-card-min-height);
653
+ border: var(--bh-space-xxxs-1) solid var(--icons-border);
654
+ border-radius: var(--icons-radius);
655
+ display: grid;
656
+ grid-template-rows: 1fr auto;
657
+ place-items: center;
658
+ gap: var(--bh-space-md-8);
659
+ background: var(--bh-bg-raised);
660
+ color: var(--icons-text);
661
+ padding: var(--bh-space-xl-12) var(--bh-space-md-8) var(--bh-space-lg-10);
662
+ text-align: center;
663
+ }
664
+
665
+ .icons-catalog-card span {
666
+ max-width: 100%;
667
+ color: var(--icons-muted);
668
+ font-size: var(--bh-text-body-3xs-regular-font-size);
669
+ line-height: 1.25;
670
+ overflow: hidden;
671
+ text-overflow: ellipsis;
672
+ white-space: nowrap;
673
+ }
674
+
675
+ .icons-load-more {
676
+ justify-self: center;
677
+ }
678
+
679
+ .icons-compare-grid {
680
+ display: grid;
681
+ grid-template-columns: repeat(auto-fill, minmax(var(--bh-icon-explorer-family-card-min), 1fr));
682
+ gap: var(--bh-space-xl-12);
683
+ }
684
+
685
+ .icons-compare-card {
686
+ display: grid;
687
+ gap: var(--bh-space-xl-12);
688
+ padding: var(--bh-space-2xl-14);
689
+ }
690
+
691
+ .icons-compare-card > div:first-child {
692
+ display: flex;
693
+ align-items: center;
694
+ justify-content: space-between;
695
+ gap: var(--bh-space-lg-10);
696
+ }
697
+
698
+ .icons-compare-card strong {
699
+ font-size: var(--bh-text-body-xs-regular-font-size);
700
+ }
701
+
702
+ .icons-compare-icons {
703
+ display: grid;
704
+ grid-template-columns: repeat(5, 1fr);
705
+ gap: var(--bh-space-md-8);
706
+ }
707
+
708
+ .icons-compare-icons span {
709
+ width: calc(var(--bh-space-6xl-32) + var(--bh-space-xs-4));
710
+ height: calc(var(--bh-space-6xl-32) + var(--bh-space-xs-4));
711
+ border: var(--bh-space-xxxs-1) solid var(--icons-border);
712
+ border-radius: var(--bh-radius-md-6);
713
+ display: grid;
714
+ place-items: center;
715
+ background: var(--icons-surface-soft);
716
+ color: var(--icons-text);
717
+ }
718
+
719
+ /* Approved exception: media query breakpoints stay literal because CSS vars are not reliable in query conditions. */
720
+ @media (max-width: 980px) {
721
+ .icons-page {
722
+ grid-template-columns: 1fr;
723
+ }
724
+
725
+ .icons-sidebar {
726
+ position: relative;
727
+ height: auto;
728
+ border-right: 0;
729
+ border-bottom: var(--bh-space-xxxs-1) solid var(--icons-border);
730
+ }
731
+
732
+ .icons-pack-list {
733
+ grid-template-columns: repeat(auto-fill, minmax(var(--bh-icon-explorer-mobile-card-min), 1fr));
734
+ }
735
+
736
+ .icons-topbar,
737
+ .icons-summary-grid,
738
+ .icons-component-grid,
739
+ .icons-field-row,
740
+ .icons-catalog-tools {
741
+ grid-template-columns: 1fr;
742
+ }
743
+ }
744
+
745
+ @media (max-width: 620px) {
746
+ .icons-topbar,
747
+ .icons-content,
748
+ .icons-sidebar {
749
+ padding-left: var(--bh-space-3xl-16);
750
+ padding-right: var(--bh-space-3xl-16);
751
+ }
752
+
753
+ .icons-sample-grid {
754
+ grid-template-columns: repeat(3, 1fr);
755
+ }
756
+
757
+ .icons-table-row {
758
+ grid-template-columns: var(--bh-icon-explorer-list-column) minmax(0, 1fr) auto;
759
+ }
760
+
761
+ .icons-table-row > span {
762
+ display: none;
763
+ }
764
+ }