@ojiepermana/angular 22.1.10 → 22.1.12

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 (340) hide show
  1. package/README.md +32 -26
  2. package/chart/README.md +272 -0
  3. package/component/README.md +89 -0
  4. package/component/accordion/README.md +195 -0
  5. package/component/alert/README.md +184 -0
  6. package/component/alert-dialog/README.md +255 -0
  7. package/component/aspect-ratio/README.md +116 -0
  8. package/component/avatar/README.md +182 -0
  9. package/component/badge/README.md +143 -0
  10. package/component/breadcrumb/README.md +223 -0
  11. package/component/button/README.md +141 -0
  12. package/component/button-group/README.md +214 -0
  13. package/component/calendar/README.md +137 -0
  14. package/component/card/README.md +232 -0
  15. package/component/carousel/README.md +276 -0
  16. package/component/checkbox/README.md +153 -0
  17. package/component/collapsible/README.md +216 -0
  18. package/component/combobox/README.md +202 -0
  19. package/component/command/README.md +287 -0
  20. package/component/composer/README.md +241 -0
  21. package/component/context-menu/README.md +268 -0
  22. package/component/date-picker/README.md +202 -0
  23. package/component/dialog/README.md +276 -0
  24. package/component/drawer/README.md +147 -0
  25. package/component/dropdown-menu/README.md +336 -0
  26. package/component/editor/README.md +152 -0
  27. package/component/empty/README.md +193 -0
  28. package/component/form/README.md +216 -0
  29. package/component/hover-card/README.md +150 -0
  30. package/component/icon/README.md +25 -0
  31. package/component/input/README.md +160 -0
  32. package/component/input-group/README.md +245 -0
  33. package/component/input-otp/README.md +331 -0
  34. package/component/item/README.md +254 -0
  35. package/component/kanban/README.md +81 -0
  36. package/component/kbd/README.md +141 -0
  37. package/component/label/README.md +137 -0
  38. package/component/menubar/README.md +270 -0
  39. package/component/native-select/README.md +176 -0
  40. package/component/navigation-menu/README.md +165 -0
  41. package/component/pagination/README.md +151 -0
  42. package/component/pillbox/README.md +68 -0
  43. package/component/popover/README.md +54 -0
  44. package/component/progress/README.md +160 -0
  45. package/component/radio/README.md +212 -0
  46. package/component/resizable/README.md +178 -0
  47. package/component/scroll-area/README.md +150 -0
  48. package/component/select/README.md +228 -0
  49. package/component/separator/README.md +175 -0
  50. package/component/sheet/README.md +190 -0
  51. package/component/skeleton/README.md +158 -0
  52. package/component/slider/README.md +207 -0
  53. package/component/spinner/README.md +160 -0
  54. package/component/switch/README.md +170 -0
  55. package/component/table/README.md +292 -0
  56. package/component/tabs/README.md +220 -0
  57. package/component/textarea/README.md +169 -0
  58. package/component/timeline/README.md +94 -0
  59. package/component/toast/README.md +173 -0
  60. package/component/toggle/README.md +133 -0
  61. package/component/toggle-group/README.md +234 -0
  62. package/component/tooltip/README.md +230 -0
  63. package/fesm2022/ojiepermana-angular-chart-area.mjs +289 -3
  64. package/fesm2022/ojiepermana-angular-chart-bar.mjs +722 -3
  65. package/fesm2022/ojiepermana-angular-chart-core.mjs +1482 -3
  66. package/fesm2022/ojiepermana-angular-chart-line.mjs +294 -3
  67. package/fesm2022/ojiepermana-angular-chart-pie.mjs +291 -3
  68. package/fesm2022/ojiepermana-angular-chart-primitives.mjs +1301 -3
  69. package/fesm2022/ojiepermana-angular-chart-radar.mjs +421 -3
  70. package/fesm2022/ojiepermana-angular-chart-radial.mjs +295 -3
  71. package/fesm2022/ojiepermana-angular-chart-scatter.mjs +306 -3
  72. package/fesm2022/ojiepermana-angular-chart.mjs +12 -3
  73. package/fesm2022/ojiepermana-angular-component-accordion.mjs +267 -3
  74. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +359 -3
  75. package/fesm2022/ojiepermana-angular-component-alert.mjs +101 -3
  76. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +31 -3
  77. package/fesm2022/ojiepermana-angular-component-avatar.mjs +139 -3
  78. package/fesm2022/ojiepermana-angular-component-badge.mjs +57 -3
  79. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +192 -3
  80. package/fesm2022/ojiepermana-angular-component-button-group.mjs +95 -3
  81. package/fesm2022/ojiepermana-angular-component-button.mjs +73 -3
  82. package/fesm2022/ojiepermana-angular-component-calendar.mjs +718 -3
  83. package/fesm2022/ojiepermana-angular-component-card.mjs +167 -3
  84. package/fesm2022/ojiepermana-angular-component-carousel.mjs +326 -3
  85. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +190 -3
  86. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +117 -3
  87. package/fesm2022/ojiepermana-angular-component-combobox.mjs +327 -3
  88. package/fesm2022/ojiepermana-angular-component-command.mjs +351 -3
  89. package/fesm2022/ojiepermana-angular-component-composer.mjs +359 -3
  90. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +158 -3
  91. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +482 -3
  92. package/fesm2022/ojiepermana-angular-component-dialog.mjs +400 -3
  93. package/fesm2022/ojiepermana-angular-component-drawer.mjs +1 -3
  94. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +689 -3
  95. package/fesm2022/ojiepermana-angular-component-editor.mjs +511 -3
  96. package/fesm2022/ojiepermana-angular-component-empty.mjs +134 -3
  97. package/fesm2022/ojiepermana-angular-component-form.mjs +438 -3
  98. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +273 -3
  99. package/fesm2022/ojiepermana-angular-component-icon.mjs +139 -3
  100. package/fesm2022/ojiepermana-angular-component-input-group.mjs +176 -3
  101. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +550 -3
  102. package/fesm2022/ojiepermana-angular-component-input.mjs +52 -3
  103. package/fesm2022/ojiepermana-angular-component-item.mjs +264 -3
  104. package/fesm2022/ojiepermana-angular-component-kanban.mjs +310 -3
  105. package/fesm2022/ojiepermana-angular-component-kbd.mjs +48 -3
  106. package/fesm2022/ojiepermana-angular-component-label.mjs +27 -3
  107. package/fesm2022/ojiepermana-angular-component-menubar.mjs +327 -3
  108. package/fesm2022/ojiepermana-angular-component-native-select.mjs +62 -3
  109. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +378 -3
  110. package/fesm2022/ojiepermana-angular-component-pagination.mjs +238 -3
  111. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +999 -3
  112. package/fesm2022/ojiepermana-angular-component-popover.mjs +201 -3
  113. package/fesm2022/ojiepermana-angular-component-progress.mjs +57 -3
  114. package/fesm2022/ojiepermana-angular-component-radio.mjs +180 -3
  115. package/fesm2022/ojiepermana-angular-component-resizable.mjs +493 -3
  116. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +51 -3
  117. package/fesm2022/ojiepermana-angular-component-segmented-control.mjs +227 -3
  118. package/fesm2022/ojiepermana-angular-component-select.mjs +609 -3
  119. package/fesm2022/ojiepermana-angular-component-separator.mjs +31 -3
  120. package/fesm2022/ojiepermana-angular-component-sheet.mjs +407 -3
  121. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +25 -3
  122. package/fesm2022/ojiepermana-angular-component-slider.mjs +456 -3
  123. package/fesm2022/ojiepermana-angular-component-spinner.mjs +56 -3
  124. package/fesm2022/ojiepermana-angular-component-switch.mjs +145 -3
  125. package/fesm2022/ojiepermana-angular-component-table.mjs +155 -3
  126. package/fesm2022/ojiepermana-angular-component-tabs.mjs +315 -3
  127. package/fesm2022/ojiepermana-angular-component-textarea.mjs +46 -3
  128. package/fesm2022/ojiepermana-angular-component-timeline.mjs +237 -3
  129. package/fesm2022/ojiepermana-angular-component-toast.mjs +241 -3
  130. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +290 -3
  131. package/fesm2022/ojiepermana-angular-component-toggle.mjs +76 -3
  132. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +519 -3
  133. package/fesm2022/ojiepermana-angular-component-utils-core.mjs +310 -3
  134. package/fesm2022/ojiepermana-angular-component-utils-overlay.mjs +62 -3
  135. package/fesm2022/ojiepermana-angular-component-utils-scale.mjs +34 -3
  136. package/fesm2022/ojiepermana-angular-component-utils.mjs +3 -2
  137. package/fesm2022/ojiepermana-angular-component.mjs +4 -4
  138. package/fesm2022/ojiepermana-angular-navigation-core.mjs +21 -3
  139. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +20 -3
  140. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-CDBxQ8rk.mjs +91 -0
  141. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-DBQHdvGa.mjs +512 -0
  142. package/fesm2022/ojiepermana-angular-navigation-navigation-entry-grid.component-Cd-jh6tg.mjs +623 -0
  143. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-BCGvhoYj.mjs +404 -0
  144. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-Dk_03e-6.mjs +466 -0
  145. package/fesm2022/ojiepermana-angular-navigation-ojiepermana-angular-navigation-DNKU6viC.mjs +2642 -0
  146. package/fesm2022/ojiepermana-angular-navigation-service.mjs +725 -3
  147. package/fesm2022/ojiepermana-angular-navigation-types.mjs +65 -4
  148. package/fesm2022/ojiepermana-angular-navigation.mjs +4 -10
  149. package/fesm2022/ojiepermana-angular-sdk.mjs +204 -4
  150. package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +1387 -3
  151. package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +331 -3
  152. package/fesm2022/ojiepermana-angular-theme-layout-types.mjs +45 -4
  153. package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +1044 -3
  154. package/fesm2022/ojiepermana-angular-theme-layout.mjs +729 -3
  155. package/fesm2022/ojiepermana-angular-theme-page-core.mjs +381 -3
  156. package/fesm2022/ojiepermana-angular-theme-page-filter.mjs +267 -3
  157. package/fesm2022/ojiepermana-angular-theme-page-root.mjs +361 -3
  158. package/fesm2022/ojiepermana-angular-theme-page-side.mjs +198 -3
  159. package/fesm2022/ojiepermana-angular-theme-page-slots.mjs +110 -3
  160. package/fesm2022/ojiepermana-angular-theme-page.mjs +7 -2
  161. package/fesm2022/ojiepermana-angular-theme-shell-services.mjs +338 -3
  162. package/fesm2022/ojiepermana-angular-theme-shell-types.mjs +160 -4
  163. package/fesm2022/ojiepermana-angular-theme-shell.mjs +811 -3
  164. package/fesm2022/ojiepermana-angular-theme-styles.mjs +783 -3
  165. package/fesm2022/ojiepermana-angular-theme.mjs +4 -4
  166. package/fesm2022/ojiepermana-angular.mjs +6 -11
  167. package/navigation/README.md +374 -0
  168. package/package.json +81 -20
  169. package/sdk/README.md +212 -0
  170. package/sdk/schematics/collection.json +20 -0
  171. package/sdk/schematics/init/index.js +83 -0
  172. package/sdk/schematics/init/schema.json +19 -0
  173. package/sdk/schematics/ng-add/index.js +147 -0
  174. package/sdk/schematics/ng-add/schema.json +14 -0
  175. package/sdk/schematics/package.json +3 -0
  176. package/sdk/schematics/sdk/index.js +175 -0
  177. package/sdk/schematics/sdk/schema.json +19 -0
  178. package/sdk/sdk.config.example.json +24 -0
  179. package/sdk/src/config/loader.js +43 -0
  180. package/sdk/src/config/schema.js +59 -0
  181. package/sdk/src/emit/client.js +251 -0
  182. package/sdk/src/emit/metadata.js +310 -0
  183. package/sdk/src/emit/models.js +104 -0
  184. package/sdk/src/emit/navigation.js +56 -0
  185. package/sdk/src/emit/operations.js +118 -0
  186. package/sdk/src/emit/public-api.js +54 -0
  187. package/sdk/src/emit/services.js +110 -0
  188. package/sdk/src/engine.js +67 -0
  189. package/sdk/src/layout/per-domain.js +360 -0
  190. package/sdk/src/package.json +3 -0
  191. package/sdk/src/parser/bundle.js +25 -0
  192. package/sdk/src/parser/ir.js +429 -0
  193. package/sdk/src/parser/types.js +7 -0
  194. package/sdk/src/render/template.js +152 -0
  195. package/sdk/src/writer/index.js +286 -0
  196. package/theme/README.md +126 -0
  197. package/theme/component/settings/README.md +135 -0
  198. package/theme/layout/README.md +539 -0
  199. package/theme/page/README.md +453 -0
  200. package/theme/shell/README.md +340 -0
  201. package/theme/styles/README.md +178 -0
  202. package/theme/styles/css/base/components.css +553 -0
  203. package/theme/styles/css/base/index.css +14 -0
  204. package/theme/styles/css/base/package.css +9 -0
  205. package/theme/styles/css/base/prefers-dark.css +86 -0
  206. package/theme/styles/css/base/print.css +62 -0
  207. package/theme/styles/css/base/status.css +38 -0
  208. package/theme/styles/css/base/tailwind.css +165 -0
  209. package/theme/styles/css/base/theme.css +373 -0
  210. package/theme/styles/css/base/tokens.css +361 -0
  211. package/theme/styles/css/color/amber.css +72 -0
  212. package/theme/styles/css/color/blue.css +72 -0
  213. package/theme/styles/css/color/brand.css +38 -0
  214. package/theme/styles/css/color/cyan.css +72 -0
  215. package/theme/styles/css/color/emerald.css +72 -0
  216. package/theme/styles/css/color/fuchsia.css +72 -0
  217. package/theme/styles/css/color/green.css +72 -0
  218. package/theme/styles/css/color/index.css +19 -0
  219. package/theme/styles/css/color/indigo.css +72 -0
  220. package/theme/styles/css/color/lime.css +72 -0
  221. package/theme/styles/css/color/orange.css +72 -0
  222. package/theme/styles/css/color/pink.css +72 -0
  223. package/theme/styles/css/color/purple.css +72 -0
  224. package/theme/styles/css/color/red.css +72 -0
  225. package/theme/styles/css/color/rose.css +72 -0
  226. package/theme/styles/css/color/sky.css +72 -0
  227. package/theme/styles/css/color/teal.css +72 -0
  228. package/theme/styles/css/color/violet.css +72 -0
  229. package/theme/styles/css/color/yellow.css +72 -0
  230. package/theme/styles/css/index.css +18 -0
  231. package/theme/styles/css/neutral/gray.css +63 -0
  232. package/theme/styles/css/neutral/index.css +11 -0
  233. package/theme/styles/css/neutral/mauve.css +63 -0
  234. package/theme/styles/css/neutral/mist.css +63 -0
  235. package/theme/styles/css/neutral/neutral.css +63 -0
  236. package/theme/styles/css/neutral/olive.css +63 -0
  237. package/theme/styles/css/neutral/slate.css +63 -0
  238. package/theme/styles/css/neutral/stone.css +63 -0
  239. package/theme/styles/css/neutral/taupe.css +63 -0
  240. package/theme/styles/css/neutral/zinc.css +63 -0
  241. package/theme/styles/css/radius/index.css +30 -0
  242. package/theme/styles/css/space/index.css +20 -0
  243. package/types/ojiepermana-angular-chart-area.d.ts +76 -1
  244. package/types/ojiepermana-angular-chart-bar.d.ts +201 -1
  245. package/types/ojiepermana-angular-chart-core.d.ts +811 -1
  246. package/types/ojiepermana-angular-chart-line.d.ts +75 -1
  247. package/types/ojiepermana-angular-chart-pie.d.ts +131 -1
  248. package/types/ojiepermana-angular-chart-primitives.d.ts +291 -1
  249. package/types/ojiepermana-angular-chart-radar.d.ts +116 -1
  250. package/types/ojiepermana-angular-chart-radial.d.ts +116 -1
  251. package/types/ojiepermana-angular-chart-scatter.d.ts +125 -1
  252. package/types/ojiepermana-angular-chart.d.ts +2 -1
  253. package/types/ojiepermana-angular-component-accordion.d.ts +85 -1
  254. package/types/ojiepermana-angular-component-alert-dialog.d.ts +140 -1
  255. package/types/ojiepermana-angular-component-alert.d.ts +42 -1
  256. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +12 -1
  257. package/types/ojiepermana-angular-component-avatar.d.ts +56 -1
  258. package/types/ojiepermana-angular-component-badge.d.ts +24 -1
  259. package/types/ojiepermana-angular-component-breadcrumb.d.ts +46 -1
  260. package/types/ojiepermana-angular-component-button-group.d.ts +26 -1
  261. package/types/ojiepermana-angular-component-button.d.ts +27 -1
  262. package/types/ojiepermana-angular-component-calendar.d.ts +111 -1
  263. package/types/ojiepermana-angular-component-card.d.ts +69 -1
  264. package/types/ojiepermana-angular-component-carousel.d.ts +86 -1
  265. package/types/ojiepermana-angular-component-checkbox.d.ts +42 -1
  266. package/types/ojiepermana-angular-component-collapsible.d.ts +42 -1
  267. package/types/ojiepermana-angular-component-combobox.d.ts +60 -1
  268. package/types/ojiepermana-angular-component-command.d.ts +130 -1
  269. package/types/ojiepermana-angular-component-composer.d.ts +90 -1
  270. package/types/ojiepermana-angular-component-context-menu.d.ts +54 -1
  271. package/types/ojiepermana-angular-component-date-picker.d.ts +109 -1
  272. package/types/ojiepermana-angular-component-dialog.d.ts +136 -1
  273. package/types/ojiepermana-angular-component-drawer.d.ts +1 -1
  274. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +248 -1
  275. package/types/ojiepermana-angular-component-editor.d.ts +135 -1
  276. package/types/ojiepermana-angular-component-empty.d.ts +50 -1
  277. package/types/ojiepermana-angular-component-form.d.ts +159 -1
  278. package/types/ojiepermana-angular-component-hover-card.d.ts +75 -1
  279. package/types/ojiepermana-angular-component-icon.d.ts +89 -1
  280. package/types/ojiepermana-angular-component-input-group.d.ts +51 -1
  281. package/types/ojiepermana-angular-component-input-otp.d.ts +155 -1
  282. package/types/ojiepermana-angular-component-input.d.ts +21 -1
  283. package/types/ojiepermana-angular-component-item.d.ts +93 -1
  284. package/types/ojiepermana-angular-component-kanban.d.ts +70 -1
  285. package/types/ojiepermana-angular-component-kbd.d.ts +16 -1
  286. package/types/ojiepermana-angular-component-label.d.ts +11 -1
  287. package/types/ojiepermana-angular-component-menubar.d.ts +93 -1
  288. package/types/ojiepermana-angular-component-native-select.d.ts +26 -1
  289. package/types/ojiepermana-angular-component-navigation-menu.d.ts +104 -1
  290. package/types/ojiepermana-angular-component-pagination.d.ts +33 -1
  291. package/types/ojiepermana-angular-component-pillbox.d.ts +222 -1
  292. package/types/ojiepermana-angular-component-popover.d.ts +66 -1
  293. package/types/ojiepermana-angular-component-progress.d.ts +17 -1
  294. package/types/ojiepermana-angular-component-radio.d.ts +60 -1
  295. package/types/ojiepermana-angular-component-resizable.d.ts +117 -1
  296. package/types/ojiepermana-angular-component-scroll-area.d.ts +19 -1
  297. package/types/ojiepermana-angular-component-segmented-control.d.ts +58 -1
  298. package/types/ojiepermana-angular-component-select.d.ts +122 -1
  299. package/types/ojiepermana-angular-component-separator.d.ts +14 -1
  300. package/types/ojiepermana-angular-component-sheet.d.ts +130 -1
  301. package/types/ojiepermana-angular-component-skeleton.d.ts +10 -1
  302. package/types/ojiepermana-angular-component-slider.d.ts +83 -1
  303. package/types/ojiepermana-angular-component-spinner.d.ts +13 -1
  304. package/types/ojiepermana-angular-component-switch.d.ts +44 -1
  305. package/types/ojiepermana-angular-component-table.d.ts +57 -1
  306. package/types/ojiepermana-angular-component-tabs.d.ts +124 -1
  307. package/types/ojiepermana-angular-component-textarea.d.ts +17 -1
  308. package/types/ojiepermana-angular-component-timeline.d.ts +64 -1
  309. package/types/ojiepermana-angular-component-toast.d.ts +64 -1
  310. package/types/ojiepermana-angular-component-toggle-group.d.ts +90 -1
  311. package/types/ojiepermana-angular-component-toggle.d.ts +25 -1
  312. package/types/ojiepermana-angular-component-tooltip.d.ts +143 -1
  313. package/types/ojiepermana-angular-component-utils-core.d.ts +184 -1
  314. package/types/ojiepermana-angular-component-utils-overlay.d.ts +21 -1
  315. package/types/ojiepermana-angular-component-utils-scale.d.ts +19 -1
  316. package/types/ojiepermana-angular-component-utils.d.ts +2 -1
  317. package/types/ojiepermana-angular-component.d.ts +2 -1
  318. package/types/ojiepermana-angular-navigation-core.d.ts +59 -1
  319. package/types/ojiepermana-angular-navigation-icon.d.ts +12 -1
  320. package/types/ojiepermana-angular-navigation-service.d.ts +116 -1
  321. package/types/ojiepermana-angular-navigation-types.d.ts +144 -1
  322. package/types/ojiepermana-angular-navigation.d.ts +507 -1
  323. package/types/ojiepermana-angular-sdk.d.ts +89 -1
  324. package/types/ojiepermana-angular-theme-component-settings.d.ts +154 -1
  325. package/types/ojiepermana-angular-theme-layout-services.d.ts +147 -1
  326. package/types/ojiepermana-angular-theme-layout-types.d.ts +40 -1
  327. package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +299 -1
  328. package/types/ojiepermana-angular-theme-layout.d.ts +129 -1
  329. package/types/ojiepermana-angular-theme-page-core.d.ts +157 -1
  330. package/types/ojiepermana-angular-theme-page-filter.d.ts +77 -1
  331. package/types/ojiepermana-angular-theme-page-root.d.ts +88 -1
  332. package/types/ojiepermana-angular-theme-page-side.d.ts +50 -1
  333. package/types/ojiepermana-angular-theme-page-slots.d.ts +40 -1
  334. package/types/ojiepermana-angular-theme-page.d.ts +5 -1
  335. package/types/ojiepermana-angular-theme-shell-services.d.ts +193 -1
  336. package/types/ojiepermana-angular-theme-shell-types.d.ts +105 -1
  337. package/types/ojiepermana-angular-theme-shell.d.ts +100 -1
  338. package/types/ojiepermana-angular-theme-styles.d.ts +319 -1
  339. package/types/ojiepermana-angular-theme.d.ts +2 -1
  340. package/types/ojiepermana-angular.d.ts +5 -5
@@ -0,0 +1,361 @@
1
+ /**
2
+ * Default theme color, style, and layout tokens.
3
+ */
4
+ @layer tokens {
5
+ :root {
6
+ --highlight: 0 0% 64%;
7
+ --highlight-border-alpha: 0.7;
8
+ --highlight-background-alpha: 0.7;
9
+
10
+ /* App/layout-frame surface — CONSTANT white (near-black in dark). The
11
+ * theme-color/theme-neutral axes deliberately do NOT emit this token; the
12
+ * FluxUI-style tint lives on --layout-canvas (the shell behind the layout
13
+ * frame) instead. */
14
+ --background: 0 0% 100%;
15
+ /* Shell canvas behind the layout frame. Tinted per theme-neutral (strong)
16
+ * and theme-color (fallback) by the generated palettes. */
17
+ --layout-canvas: 0 0% 95%;
18
+ --surface: 0 0% 89.8%;
19
+ --surface-foreground: 0 0% 12%;
20
+ --foreground: 0 0% 12%;
21
+
22
+ --card: 0 0% 100%;
23
+ --card-foreground: 0 0% 12%;
24
+
25
+ --popover: 0 0% 100%;
26
+ --popover-foreground: 0 0% 12%;
27
+
28
+ --muted: 0 0% 94%;
29
+ --muted-foreground: 0 0% 38%;
30
+
31
+ --border: 0 0% 82%;
32
+ --input: 0 0% 82%;
33
+
34
+ /* Surface-grid line for the base neutral. Explicit (not var(--border)) so the
35
+ * grid keeps the same tonal contract as every generated neutral. */
36
+ --layout-grid-line: 0 0% 82%;
37
+ /* LIGHTNESS of the `grid` surface LINE tier. Pattern hue and saturation come
38
+ * from the achromatic base neutral or the active family on non-base neutrals;
39
+ * this tonal anchor stays at ~82% in light mode. */
40
+ --layout-grid-l: 82%;
41
+
42
+ /* `grid-line` surface highlight LIGHTNESS. The glow (pattern HIGHLIGHT tier,
43
+ * base/theme.css) uses this tonal anchor for the base neutral or the active
44
+ * neutral family.
45
+ * Medium-dark in light mode so the mosaic reads as soft darker lines on a
46
+ * light surface; inverts to near-white in dark (dark block). Global
47
+ * faintness lives in --layout-grid-highlight-opacity (base/theme.css). */
48
+ --layout-grid-highlight-l: 45%;
49
+
50
+ /* Base accent = near-black neutral (FluxUI "base"); inverts to near-white in
51
+ * dark mode (see :root[data-mode='dark'] below). Accent palettes
52
+ * (theme-color) override these at higher specificity. */
53
+ --primary: 0 0% 10%;
54
+ --primary-foreground: 0 0% 100%;
55
+ --accent: 0 0% 95%;
56
+ --accent-foreground: 0 0% 14%;
57
+ --secondary: 0 0% 95%;
58
+ --secondary-foreground: 0 0% 18%;
59
+ --ring: 0 0% 16%;
60
+
61
+ /* Brand identity color — set by the consumer via ThemeBrandService
62
+ * (provideUiTheme({ brand }) or setBrand()). Concrete (not var(--primary))
63
+ * so the theme-color='brand' preset never forms a var() cycle. Defaults to
64
+ * the base accent and inverts in dark mode. */
65
+ --brand: 0 0% 10%;
66
+ --brand-foreground: 0 0% 100%;
67
+
68
+ /* Tailwind's stock `rounded-md`, matching the theme-radius='md' default. */
69
+ --radius-base: 0.375rem;
70
+ --radius: var(--radius-base);
71
+
72
+ --border-width-base: 1px;
73
+ --border-width: var(--border-width-base);
74
+
75
+ /* Concrete values live in the *-base primitives; --shadow-* and
76
+ * --theme-shadow-* are aliases. Never alias --theme-shadow-* back to
77
+ * --shadow-* — the Tailwind @theme mapping re-emits
78
+ * --shadow-*: var(--theme-shadow-*) in the later `theme` layer, which
79
+ * turns that into a var() cycle and invalidates both tokens. */
80
+ --shadow-base: 0 1px 0 0 hsl(0 0% 12% / 0.08);
81
+ --shadow-md-base: 0 8px 18px -14px hsl(0 0% 12% / 0.24);
82
+ --shadow-lg-base: 0 18px 36px -28px hsl(0 0% 12% / 0.34);
83
+ --shadow-xl-base: 0 24px 48px -36px hsl(0 0% 12% / 0.4);
84
+ --shadow-sm: var(--shadow-base);
85
+ --shadow-md: var(--shadow-md-base);
86
+ --shadow-lg: var(--shadow-lg-base);
87
+ --shadow-xl: var(--shadow-xl-base);
88
+
89
+ --theme-shadow-sm: var(--shadow-base);
90
+ --theme-shadow: 0 2px 4px -2px hsl(0 0% 12% / 0.14);
91
+ --theme-shadow-md: var(--shadow-md-base);
92
+ --theme-shadow-lg: var(--shadow-lg-base);
93
+ --theme-shadow-xl: var(--shadow-xl-base);
94
+ --shadow: var(--theme-shadow);
95
+
96
+ --theme-font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
97
+ --theme-font-mono: 'JetBrains Mono', 'Fira Code', monospace;
98
+
99
+ --font-sans: var(--theme-font-sans);
100
+ --font-mono: var(--theme-font-mono);
101
+ --font-weight-bold: 600;
102
+ --theme-text-scale: 1;
103
+ --font-size-base: 1rem;
104
+ --line-height-base: 1.5;
105
+ /* Derived, not fixed: this is the middle rung of the control height ladder
106
+ * and it has to move with the theme-space density axis like every other
107
+ * rung. Nine units, which is 2.25rem at the 0.25rem default, so the value
108
+ * this line used to hold is exactly what it still produces. Redeclaring it
109
+ * as a literal here is what kept `h-control-md` frozen while the rest of the
110
+ * ladder followed the axis. */
111
+ --control-height-base: calc(var(--spacing-base) * 9);
112
+ --nav-font-family: var(--font-sans);
113
+ /* Item labels — a dedicated 13px tier between --text-xs and --text-sm, with
114
+ * slightly negative tracking and a mid weight. Weight/tracking are tokens so
115
+ * the whole tier can be re-tuned without touching components. */
116
+ --nav-text-size: calc(var(--font-size-base) * 0.8125);
117
+ --nav-text-line-height: 1.4;
118
+ --nav-text-weight: 450;
119
+ --nav-text-tracking: -0.006em;
120
+ --nav-heading-font-family: var(--font-sans);
121
+ /* Section/group headings — a distinct micro-label tier *below* item labels:
122
+ * smaller (11px), uppercase, heavier weight, restrained tracking. Keeping it
123
+ * smaller than --nav-text-size is what gives the sidebar a clear hierarchy. */
124
+ --nav-heading-size: var(--text-2xs-plus);
125
+ --nav-heading-line-height: var(--text-2xs-plus--line-height);
126
+ --nav-heading-weight: 600;
127
+ --nav-heading-letter-spacing: 0.08em;
128
+ --nav-badge-font-family: var(--font-sans);
129
+ /* Badges/counters — compact pill tier (11px), aligned with the heading tier. */
130
+ --nav-badge-size: var(--text-2xs-plus);
131
+ --nav-badge-line-height: var(--text-2xs-plus--line-height);
132
+ --nav-badge-weight: 500;
133
+ /* Item subtitles/descriptions — a quiet 12px tier under labels. */
134
+ --nav-subtitle-size: calc(var(--font-size-base) * 0.75);
135
+ --nav-subtitle-line-height: 1.35;
136
+
137
+ /* Shared opacity for section chrome: Page and Navigation headers/footers,
138
+ * flyout/panel frames, entry borders, and tree rails. */
139
+ --section-border-opacity: 0.666;
140
+
141
+ /* Navigation geometry — ONE proportional system for every nav surface
142
+ * (sidebar, dockbar, navbar, flyout, entry grid). Icons are naked glyphs;
143
+ * derived tokens keep alignment exact: --nav-indent places a child's icon
144
+ * under its parent's label, --nav-rail-offset places tree rails under the
145
+ * parent icon's center. Heights/gaps ride --spacing-base so the whole nav
146
+ * rescales with the theme-space density axis. */
147
+ --nav-icon-size: 1.125rem; /* inline glyph beside a label */
148
+ --nav-icon-size-rail: 1.25rem; /* icon-only rail/dock glyph */
149
+ --nav-icon-size-sub: 1rem; /* chevrons + secondary glyphs */
150
+ --nav-item-height: calc(var(--spacing-base) * 8); /* 32px @ normal density */
151
+ --nav-rail-item-size: calc(var(--spacing-base) * 10); /* 40px icon-only button */
152
+ --nav-item-gap: calc(var(--spacing-base) * 2); /* icon ↔ label */
153
+ --nav-item-padding-x: calc(var(--spacing-base) * 3);
154
+ --nav-indent: calc(var(--nav-icon-size) + var(--nav-item-gap));
155
+ --nav-rail-offset: calc(var(--nav-item-padding-x) + var(--nav-icon-size) / 2);
156
+ --nav-entry-box-size: calc(var(--spacing-base) * 9); /* entry-grid icon chip */
157
+ --letter-spacing: 0;
158
+ --spacing-base: 0.25rem;
159
+ --space-unit: var(--spacing-base);
160
+ /* Shell bar height for the navigation header/footer/navbar AND the page
161
+ * header/footer. Spacing-based (12 × --spacing-base = 3rem @ normal) so it
162
+ * tracks the theme-space density axis in lockstep with h-12/top-12
163
+ * utilities — the nav bars and page bars stay border-aligned at every
164
+ * density, not just the default. */
165
+ --layout-topbar-height: calc(var(--spacing-base) * 12);
166
+
167
+ --layout-shell-padding: clamp(1rem, 2vw, 2rem);
168
+ --layout-frame-radius: var(--radius-lg);
169
+ --layout-frame-shadow: var(--shadow-sm);
170
+ --layout-sidebar-width: 17.5rem;
171
+ --layout-sidebar-collapsed-width: 4rem;
172
+ --layout-aside-width: 15rem;
173
+ --container-base: 80rem;
174
+ --layout-main-max-width: var(--container-base);
175
+ --layout-vertical-shell-max-width: calc(
176
+ var(--layout-sidebar-width) + var(--layout-main-max-width)
177
+ );
178
+ --layout-empty-max-width: 24rem;
179
+ --layout-empty-padding: clamp(1.5rem, 4vw, 3rem);
180
+ --layout-topbar-inline: 0.875rem;
181
+ --layout-logo-mark-size: 2rem;
182
+
183
+ /* Desktop shell geometry (@ojiepermana/angular/theme/shell), active when the
184
+ * app owns the OS window (<Shell mode="desktop">). --shell-bar-height is the
185
+ * single titlebar thickness knob and rides --spacing-base like
186
+ * --layout-topbar-height, so window chrome tracks the theme-space density
187
+ * axis. --shell-traffic-light-inset reserves the leading run macOS keeps
188
+ * drawing its native window buttons into on a decoration-less window. */
189
+ --shell-bar-height: calc(var(--spacing-base) * 9);
190
+ --shell-bar-inline: calc(var(--spacing-base) * 2);
191
+ --shell-bar-gap: calc(var(--spacing-base) * 1);
192
+ --shell-control-size: calc(var(--spacing-base) * 7);
193
+ --shell-traffic-light-inset: 4.75rem;
194
+ /* Diameter of one macOS traffic light — ~13.1px, a little over the 12px the OS
195
+ * itself draws. The app's own lights sit in a titlebar the user can mis-click, so
196
+ * they get a slightly larger target than the window server's, without growing
197
+ * enough to look oversized next to a real macOS window. */
198
+ --shell-traffic-light-size: calc(0.75rem * 1.0925);
199
+ /* `frame='modern'`: how far the inset app sits from the window edge. Rides
200
+ * --spacing-base (3 units = 0.75rem at normal density), so the gap tracks the
201
+ * theme-space axis like the rest of the shell geometry. */
202
+ --shell-frame-inset: calc(var(--spacing-base) * 3);
203
+ /* Corner radius of the app inside a desktop window. Deliberately a fixed 12px
204
+ * rather than riding --radius-base: this is window geometry, matching what the
205
+ * OS rounds its own windows to, not a component-styling choice the theme-radius
206
+ * axis should retune. */
207
+ --shell-frame-radius: 0.75rem;
208
+ /* Edge of the app panel inside a desktop window. The full-strength structural
209
+ * border tier: this is the boundary between the app and the window chrome, the
210
+ * same weight as a page or nav outer edge. */
211
+ --shell-frame-border: var(--border);
212
+
213
+ /* Titlebar surface. These are the `color='sync'` values: the selected
214
+ * theme-color is promoted to the shell chrome through the semantic primary
215
+ * pair. `color='default'` swaps them for the active device's native palette
216
+ * (see the blocks after the dark theme). */
217
+ --shell-bar-background: var(--primary);
218
+ --shell-bar-foreground: var(--primary-foreground);
219
+ --shell-bar-border: var(--border);
220
+ }
221
+
222
+ :root[data-mode='dark'] {
223
+ --highlight: 0 0% 64%;
224
+ --highlight-border-alpha: 0.45;
225
+ --highlight-background-alpha: 0.55;
226
+
227
+ /* Constant near-black (see light block) — the axes tint --layout-canvas. */
228
+ --background: 0 0% 5%;
229
+ --layout-canvas: 0 0% 15%;
230
+ --surface: 0 0% 18%;
231
+ --surface-foreground: 0 0% 96%;
232
+ --foreground: 0 0% 96%;
233
+
234
+ --card: 0 0% 11%;
235
+ --card-foreground: 0 0% 96%;
236
+
237
+ --popover: 0 0% 11%;
238
+ --popover-foreground: 0 0% 96%;
239
+
240
+ --muted: 0 0% 18%;
241
+ --muted-foreground: 0 0% 70%;
242
+
243
+ --border: 0 0% 24%;
244
+ --input: 0 0% 24%;
245
+
246
+ /* Surface-grid line for the base neutral (dark). See light block. */
247
+ --layout-grid-line: 0 0% 24%;
248
+ /* `grid` surface line lightness (dark) — see light block. */
249
+ --layout-grid-l: 24%;
250
+
251
+ /* `grid-line` highlight lightness inverts to near-white so the glow squares
252
+ * read bright on the dark surface, matching the dark mosaic reference. */
253
+ --layout-grid-highlight-l: 88%;
254
+ --layout-grid-highlight-opacity: 0.62;
255
+
256
+ /* `matrix` is tinted with the pattern NODE tier, which is bright on dark
257
+ * (near-white achromatic base node or L78 family hue elsewhere)
258
+ * — so tone the field down here to keep it as faint behind content as it is
259
+ * in light mode (see --layout-matrix-opacity in base/theme.css). The
260
+ * edge-glow accents are raised instead: bright-on-near-black actually
261
+ * blooms, so the lit digits read as a glow against the dark surface. */
262
+ --layout-matrix-opacity: 0.24;
263
+ --layout-matrix-glow-opacity: 0.72;
264
+
265
+ /* `circuit` via nodes are tinted with the pattern NODE tier, which is
266
+ * bright on dark (see the matrix note above) and blooms — so tone the node
267
+ * layer down here to keep the glints as quiet as they are in light mode
268
+ * (same treatment as --layout-matrix-opacity). The traces use the LINE tier
269
+ * (already per-mode), so they need no dark override. */
270
+ --layout-circuit-node-opacity: 0.3;
271
+
272
+ --layout-pattern-node: 0 0% 78%;
273
+
274
+ /* Base accent inverts: near-white primary on dark. */
275
+ --primary: 0 0% 98%;
276
+ --primary-foreground: 0 0% 12%;
277
+ --accent: 0 0% 16%;
278
+ --accent-foreground: 0 0% 98%;
279
+ --secondary: 0 0% 18%;
280
+ --secondary-foreground: 0 0% 96%;
281
+ --ring: 0 0% 85%;
282
+
283
+ --brand: 0 0% 98%;
284
+ --brand-foreground: 0 0% 12%;
285
+
286
+ --shadow-base: 0 1px 0 0 hsl(0 0% 96% / 0.08);
287
+ --shadow-sm: var(--shadow-base);
288
+ --theme-shadow-sm: var(--shadow-base);
289
+
290
+ --layout-frame-shadow: 0 0 0 1px hsl(var(--border));
291
+ }
292
+
293
+ /*
294
+ * Native-like titlebar chrome — `<Shell color="default">`.
295
+ *
296
+ * `sync` (the default) maps the shell background to the selected Theme color
297
+ * through --primary, paired with --primary-foreground for readable chrome.
298
+ * `default` instead paints the real chrome of the active device, for an app that
299
+ * wants to disappear into its OS: each palette below is that platform's own
300
+ * titlebar grey, in the same `H S% L%` triplet form as every other token, with a
301
+ * dark counterpart.
302
+ *
303
+ * Scoped to [data-shell-color='default'] on the <Shell> host (and the titlebar
304
+ * it renders), so it never leaks into the rest of the app. Only desktop devices
305
+ * appear here — the other modes draw no chrome of their own.
306
+ */
307
+ /* Re-declare sync chrome at each shell boundary. Custom properties inherit, so a
308
+ * nested preview must resolve its own semantic primary pair and structural border
309
+ * rather than inheriting native chrome from an outer shell. */
310
+ [data-shell-color='sync'] {
311
+ --shell-bar-background: var(--primary);
312
+ --shell-bar-foreground: var(--primary-foreground);
313
+ --shell-bar-border: var(--border);
314
+ }
315
+
316
+ [data-shell-color='default'][data-shell-device='macos'] {
317
+ --shell-bar-background: 0 0% 93%;
318
+ --shell-bar-foreground: 0 0% 20%;
319
+ --shell-bar-border: 0 0% 80%;
320
+ }
321
+
322
+ [data-shell-color='default'][data-shell-device='windows'] {
323
+ --shell-bar-background: 0 0% 96%;
324
+ --shell-bar-foreground: 0 0% 16%;
325
+ --shell-bar-border: 0 0% 87%;
326
+ }
327
+
328
+ [data-shell-color='default'][data-shell-device='linux'] {
329
+ --shell-bar-background: 0 0% 92%;
330
+ --shell-bar-foreground: 0 0% 18%;
331
+ --shell-bar-border: 0 0% 78%;
332
+ }
333
+
334
+ :root[data-mode='dark'] [data-shell-color='default'][data-shell-device='macos'] {
335
+ --shell-bar-background: 240 2% 18%;
336
+ --shell-bar-foreground: 0 0% 90%;
337
+ --shell-bar-border: 240 2% 26%;
338
+ }
339
+
340
+ :root[data-mode='dark'] [data-shell-color='default'][data-shell-device='windows'] {
341
+ --shell-bar-background: 0 0% 13%;
342
+ --shell-bar-foreground: 0 0% 93%;
343
+ --shell-bar-border: 0 0% 22%;
344
+ }
345
+
346
+ :root[data-mode='dark'] [data-shell-color='default'][data-shell-device='linux'] {
347
+ --shell-bar-background: 0 0% 19%;
348
+ --shell-bar-foreground: 0 0% 92%;
349
+ --shell-bar-border: 0 0% 27%;
350
+ }
351
+ }
352
+
353
+ @layer utilities {
354
+ .border-highlight {
355
+ border-color: hsl(var(--highlight, var(--border)) / var(--highlight-border-alpha, 0.7));
356
+ }
357
+
358
+ .bg-highlight {
359
+ background-color: hsl(var(--highlight, var(--border)) / var(--highlight-background-alpha, 0.7));
360
+ }
361
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Accent theme: amber. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-color='amber'][data-mode='light'] {
6
+ --foreground: 38 31% 16%;
7
+ --surface: 38 32% 95%;
8
+ --surface-foreground: 38 31% 16%;
9
+ --card: 38 52% 99%;
10
+ --card-foreground: 38 31% 16%;
11
+ --popover: 38 52% 99%;
12
+ --popover-foreground: 38 31% 16%;
13
+ --muted: 38 28% 95%;
14
+ --muted-foreground: 38 18% 40%;
15
+ --border: 38 28% 87%;
16
+ --input: 38 28% 87%;
17
+ --primary: 38 92% 48%;
18
+ --primary-foreground: 0 0% 12%;
19
+ --accent: 38 55% 94%;
20
+ --accent-foreground: 38 92% 31%;
21
+ --secondary: 38 37% 93%;
22
+ --secondary-foreground: 38 92% 28%;
23
+ --ring: 38 92% 41%;
24
+ --highlight: 38 92% 64%;
25
+ }
26
+
27
+ html[theme-color='amber'][data-mode='dark'] {
28
+ --foreground: 38 14% 96%;
29
+ --surface: 38 23% 12%;
30
+ --surface-foreground: 38 14% 96%;
31
+ --card: 38 28% 9%;
32
+ --card-foreground: 38 14% 96%;
33
+ --popover: 38 28% 9%;
34
+ --popover-foreground: 38 14% 96%;
35
+ --muted: 38 23% 16%;
36
+ --muted-foreground: 38 18% 64%;
37
+ --border: 38 23% 18%;
38
+ --input: 38 23% 18%;
39
+ --primary: 38 92% 58%;
40
+ --primary-foreground: 0 0% 10%;
41
+ --accent: 38 46% 18%;
42
+ --accent-foreground: 38 74% 80%;
43
+ --secondary: 38 37% 18%;
44
+ --secondary-foreground: 38 64% 82%;
45
+ --ring: 38 92% 58%;
46
+ --highlight: 38 92% 58%;
47
+ }
48
+
49
+ @media (prefers-color-scheme: dark) {
50
+ html[theme-color='amber']:not([data-mode='light']) {
51
+ --foreground: 38 14% 96%;
52
+ --surface: 38 23% 12%;
53
+ --surface-foreground: 38 14% 96%;
54
+ --card: 38 28% 9%;
55
+ --card-foreground: 38 14% 96%;
56
+ --popover: 38 28% 9%;
57
+ --popover-foreground: 38 14% 96%;
58
+ --muted: 38 23% 16%;
59
+ --muted-foreground: 38 18% 64%;
60
+ --border: 38 23% 18%;
61
+ --input: 38 23% 18%;
62
+ --primary: 38 92% 58%;
63
+ --primary-foreground: 0 0% 10%;
64
+ --accent: 38 46% 18%;
65
+ --accent-foreground: 38 74% 80%;
66
+ --secondary: 38 37% 18%;
67
+ --secondary-foreground: 38 64% 82%;
68
+ --ring: 38 92% 58%;
69
+ --highlight: 38 92% 58%;
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Accent theme: blue. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-color='blue'][data-mode='light'] {
6
+ --foreground: 221 29% 16%;
7
+ --surface: 221 29% 95%;
8
+ --surface-foreground: 221 29% 16%;
9
+ --card: 221 52% 99%;
10
+ --card-foreground: 221 29% 16%;
11
+ --popover: 221 52% 99%;
12
+ --popover-foreground: 221 29% 16%;
13
+ --muted: 221 25% 95%;
14
+ --muted-foreground: 221 17% 40%;
15
+ --border: 221 25% 87%;
16
+ --input: 221 25% 87%;
17
+ --primary: 221 83% 48%;
18
+ --primary-foreground: 0 0% 100%;
19
+ --accent: 221 50% 94%;
20
+ --accent-foreground: 221 83% 32%;
21
+ --secondary: 221 33% 93%;
22
+ --secondary-foreground: 221 83% 28%;
23
+ --ring: 221 83% 48%;
24
+ --highlight: 221 83% 64%;
25
+ }
26
+
27
+ html[theme-color='blue'][data-mode='dark'] {
28
+ --foreground: 221 12% 96%;
29
+ --surface: 221 21% 12%;
30
+ --surface-foreground: 221 12% 96%;
31
+ --card: 221 25% 9%;
32
+ --card-foreground: 221 12% 96%;
33
+ --popover: 221 25% 9%;
34
+ --popover-foreground: 221 12% 96%;
35
+ --muted: 221 21% 16%;
36
+ --muted-foreground: 221 17% 64%;
37
+ --border: 221 21% 18%;
38
+ --input: 221 21% 18%;
39
+ --primary: 221 83% 58%;
40
+ --primary-foreground: 0 0% 4%;
41
+ --accent: 221 42% 18%;
42
+ --accent-foreground: 221 66% 80%;
43
+ --secondary: 221 33% 18%;
44
+ --secondary-foreground: 221 58% 82%;
45
+ --ring: 221 83% 58%;
46
+ --highlight: 221 83% 58%;
47
+ }
48
+
49
+ @media (prefers-color-scheme: dark) {
50
+ html[theme-color='blue']:not([data-mode='light']) {
51
+ --foreground: 221 12% 96%;
52
+ --surface: 221 21% 12%;
53
+ --surface-foreground: 221 12% 96%;
54
+ --card: 221 25% 9%;
55
+ --card-foreground: 221 12% 96%;
56
+ --popover: 221 25% 9%;
57
+ --popover-foreground: 221 12% 96%;
58
+ --muted: 221 21% 16%;
59
+ --muted-foreground: 221 17% 64%;
60
+ --border: 221 21% 18%;
61
+ --input: 221 21% 18%;
62
+ --primary: 221 83% 58%;
63
+ --primary-foreground: 0 0% 4%;
64
+ --accent: 221 42% 18%;
65
+ --accent-foreground: 221 66% 80%;
66
+ --secondary: 221 33% 18%;
67
+ --secondary-foreground: 221 58% 82%;
68
+ --ring: 221 83% 58%;
69
+ --highlight: 221 83% 58%;
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Accent theme: brand. Maps the chromatic accent tokens to the consumer's
3
+ * --brand / --brand-foreground (set by ThemeBrandService). Layout canvas and
4
+ * surface patterns are left to the neutral axis. Hand-written, not emitted by
5
+ * the generated index.
6
+ *
7
+ * --accent-foreground and --secondary-foreground are deliberately NOT mapped to
8
+ * --brand. Those are text on a neutral tint, and --brand is a value the consumer
9
+ * chooses while the tint underneath it also moves with the theme-neutral axis, so
10
+ * no fixed mapping can promise 4.5 to 1. They fall through to the base theme
11
+ * instead, which is measured and passes. The brand colour still comes through on
12
+ * --primary, --ring, and --highlight, where it is paired with
13
+ * --brand-foreground.
14
+ *
15
+ * --ring reads --brand-ring rather than --brand, for the same reason a generated
16
+ * accent emits a --ring separate from its --primary: the fill keeps the
17
+ * lightness it was designed with, and only the focus indicator is darkened to
18
+ * clear 3 to 1 against the background. ThemeBrandService solves that value once
19
+ * per mode (--brand-ring-light / --brand-ring-dark); without it the ring simply
20
+ * falls back to the brand.
21
+ */
22
+ @layer tokens {
23
+ html[theme-color='brand'][data-mode='light'] {
24
+ --brand-ring: var(--brand-ring-light, var(--brand));
25
+ }
26
+
27
+ html[theme-color='brand'][data-mode='dark'] {
28
+ --brand-ring: var(--brand-ring-dark, var(--brand));
29
+ }
30
+
31
+ html[theme-color='brand'][data-mode='light'],
32
+ html[theme-color='brand'][data-mode='dark'] {
33
+ --primary: var(--brand);
34
+ --primary-foreground: var(--brand-foreground);
35
+ --ring: var(--brand-ring, var(--brand));
36
+ --highlight: var(--brand);
37
+ }
38
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Accent theme: cyan. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-color='cyan'][data-mode='light'] {
6
+ --foreground: 191 29% 16%;
7
+ --surface: 191 30% 95%;
8
+ --surface-foreground: 191 29% 16%;
9
+ --card: 191 52% 99%;
10
+ --card-foreground: 191 29% 16%;
11
+ --popover: 191 52% 99%;
12
+ --popover-foreground: 191 29% 16%;
13
+ --muted: 191 26% 95%;
14
+ --muted-foreground: 191 17% 40%;
15
+ --border: 191 26% 87%;
16
+ --input: 191 26% 87%;
17
+ --primary: 191 85% 48%;
18
+ --primary-foreground: 0 0% 12%;
19
+ --accent: 191 51% 94%;
20
+ --accent-foreground: 191 85% 30%;
21
+ --secondary: 191 34% 93%;
22
+ --secondary-foreground: 191 85% 28%;
23
+ --ring: 191 85% 41%;
24
+ --highlight: 191 85% 64%;
25
+ }
26
+
27
+ html[theme-color='cyan'][data-mode='dark'] {
28
+ --foreground: 191 13% 96%;
29
+ --surface: 191 21% 12%;
30
+ --surface-foreground: 191 13% 96%;
31
+ --card: 191 26% 9%;
32
+ --card-foreground: 191 13% 96%;
33
+ --popover: 191 26% 9%;
34
+ --popover-foreground: 191 13% 96%;
35
+ --muted: 191 21% 16%;
36
+ --muted-foreground: 191 17% 64%;
37
+ --border: 191 21% 18%;
38
+ --input: 191 21% 18%;
39
+ --primary: 191 85% 58%;
40
+ --primary-foreground: 0 0% 10%;
41
+ --accent: 191 43% 18%;
42
+ --accent-foreground: 191 68% 80%;
43
+ --secondary: 191 34% 18%;
44
+ --secondary-foreground: 191 59% 82%;
45
+ --ring: 191 85% 58%;
46
+ --highlight: 191 85% 58%;
47
+ }
48
+
49
+ @media (prefers-color-scheme: dark) {
50
+ html[theme-color='cyan']:not([data-mode='light']) {
51
+ --foreground: 191 13% 96%;
52
+ --surface: 191 21% 12%;
53
+ --surface-foreground: 191 13% 96%;
54
+ --card: 191 26% 9%;
55
+ --card-foreground: 191 13% 96%;
56
+ --popover: 191 26% 9%;
57
+ --popover-foreground: 191 13% 96%;
58
+ --muted: 191 21% 16%;
59
+ --muted-foreground: 191 17% 64%;
60
+ --border: 191 21% 18%;
61
+ --input: 191 21% 18%;
62
+ --primary: 191 85% 58%;
63
+ --primary-foreground: 0 0% 10%;
64
+ --accent: 191 43% 18%;
65
+ --accent-foreground: 191 68% 80%;
66
+ --secondary: 191 34% 18%;
67
+ --secondary-foreground: 191 59% 82%;
68
+ --ring: 191 85% 58%;
69
+ --highlight: 191 85% 58%;
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Accent theme: emerald. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-color='emerald'][data-mode='light'] {
6
+ --foreground: 160 28% 16%;
7
+ --surface: 160 27% 95%;
8
+ --surface-foreground: 160 28% 16%;
9
+ --card: 160 52% 99%;
10
+ --card-foreground: 160 28% 16%;
11
+ --popover: 160 52% 99%;
12
+ --popover-foreground: 160 28% 16%;
13
+ --muted: 160 23% 95%;
14
+ --muted-foreground: 160 16% 40%;
15
+ --border: 160 23% 87%;
16
+ --input: 160 23% 87%;
17
+ --primary: 160 78% 48%;
18
+ --primary-foreground: 0 0% 12%;
19
+ --accent: 160 47% 94%;
20
+ --accent-foreground: 160 78% 27%;
21
+ --secondary: 160 31% 93%;
22
+ --secondary-foreground: 160 78% 27%;
23
+ --ring: 160 78% 37%;
24
+ --highlight: 160 78% 64%;
25
+ }
26
+
27
+ html[theme-color='emerald'][data-mode='dark'] {
28
+ --foreground: 160 12% 96%;
29
+ --surface: 160 20% 12%;
30
+ --surface-foreground: 160 12% 96%;
31
+ --card: 160 23% 9%;
32
+ --card-foreground: 160 12% 96%;
33
+ --popover: 160 23% 9%;
34
+ --popover-foreground: 160 12% 96%;
35
+ --muted: 160 20% 16%;
36
+ --muted-foreground: 160 16% 64%;
37
+ --border: 160 20% 18%;
38
+ --input: 160 20% 18%;
39
+ --primary: 160 78% 58%;
40
+ --primary-foreground: 0 0% 10%;
41
+ --accent: 160 39% 18%;
42
+ --accent-foreground: 160 62% 80%;
43
+ --secondary: 160 31% 18%;
44
+ --secondary-foreground: 160 55% 82%;
45
+ --ring: 160 78% 58%;
46
+ --highlight: 160 78% 58%;
47
+ }
48
+
49
+ @media (prefers-color-scheme: dark) {
50
+ html[theme-color='emerald']:not([data-mode='light']) {
51
+ --foreground: 160 12% 96%;
52
+ --surface: 160 20% 12%;
53
+ --surface-foreground: 160 12% 96%;
54
+ --card: 160 23% 9%;
55
+ --card-foreground: 160 12% 96%;
56
+ --popover: 160 23% 9%;
57
+ --popover-foreground: 160 12% 96%;
58
+ --muted: 160 20% 16%;
59
+ --muted-foreground: 160 16% 64%;
60
+ --border: 160 20% 18%;
61
+ --input: 160 20% 18%;
62
+ --primary: 160 78% 58%;
63
+ --primary-foreground: 0 0% 10%;
64
+ --accent: 160 39% 18%;
65
+ --accent-foreground: 160 62% 80%;
66
+ --secondary: 160 31% 18%;
67
+ --secondary-foreground: 160 55% 82%;
68
+ --ring: 160 78% 58%;
69
+ --highlight: 160 78% 58%;
70
+ }
71
+ }
72
+ }