@ojiepermana/angular 22.1.11 → 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,553 @@
1
+ /**
2
+ * Global component-facing styles that should react to the active theme.
3
+ */
4
+ @layer base {
5
+ * {
6
+ border-color: hsl(var(--border));
7
+ outline-color: hsl(var(--ring) / var(--opacity-50));
8
+ }
9
+
10
+ html,
11
+ body {
12
+ min-height: 100%;
13
+ }
14
+
15
+ html {
16
+ background: hsl(var(--background));
17
+ }
18
+
19
+ body {
20
+ background: hsl(var(--background));
21
+ color: hsl(var(--foreground));
22
+ font-family: var(--font-sans);
23
+ font-size: var(--text-base);
24
+ line-height: var(--text-base--line-height);
25
+ letter-spacing: var(--letter-spacing);
26
+ transition:
27
+ background-color var(--duration-normal) var(--ease-standard),
28
+ color var(--duration-normal) var(--ease-standard),
29
+ border-color var(--duration-normal) var(--ease-standard),
30
+ box-shadow var(--duration-normal) var(--ease-standard),
31
+ outline-color var(--duration-normal) var(--ease-standard);
32
+ }
33
+
34
+ button,
35
+ input,
36
+ select,
37
+ textarea {
38
+ font: inherit;
39
+ }
40
+
41
+ html,
42
+ body,
43
+ * {
44
+ scrollbar-width: thin;
45
+ scrollbar-color: hsl(var(--scrollbar-thumb)) hsl(var(--scrollbar-track));
46
+ }
47
+
48
+ *::-webkit-scrollbar {
49
+ width: var(--scrollbar-size);
50
+ height: var(--scrollbar-size);
51
+ }
52
+
53
+ *::-webkit-scrollbar-track {
54
+ background: hsl(var(--scrollbar-track));
55
+ }
56
+
57
+ *::-webkit-scrollbar-thumb {
58
+ background: hsl(var(--scrollbar-thumb));
59
+ border: 2px solid transparent;
60
+ background-clip: padding-box;
61
+ border-radius: var(--scrollbar-radius);
62
+ }
63
+
64
+ *::-webkit-scrollbar-thumb:hover {
65
+ background: hsl(var(--scrollbar-thumb-hover));
66
+ background-clip: padding-box;
67
+ }
68
+
69
+ ::selection {
70
+ background: hsl(var(--primary) / var(--opacity-24));
71
+ color: hsl(var(--foreground));
72
+ }
73
+
74
+ @media (forced-colors: active) {
75
+ html,
76
+ body,
77
+ * {
78
+ scrollbar-width: auto;
79
+ scrollbar-color: auto;
80
+ }
81
+
82
+ *::-webkit-scrollbar-thumb {
83
+ background: CanvasText;
84
+ border-color: transparent;
85
+ }
86
+
87
+ :where(button, [href], input, select, textarea, [tabindex]):focus-visible {
88
+ outline: 2px solid Highlight !important;
89
+ outline-offset: 2px;
90
+ box-shadow: none !important;
91
+ }
92
+ }
93
+
94
+ @media (pointer: coarse) {
95
+ :where(
96
+ button,
97
+ [role='button'],
98
+ [role='option'],
99
+ [role='tab'],
100
+ [role='menuitem'],
101
+ [role='gridcell'][tabindex]
102
+ ) {
103
+ min-inline-size: 2.75rem;
104
+ min-block-size: 2.75rem;
105
+ }
106
+ }
107
+ }
108
+
109
+ @layer components {
110
+ /* Icon family per appearance: Material Symbols Rounded is the default
111
+ * (IconComponent's own fallback); any border-rail scope — the layout axis
112
+ * (data-layout-appearance) or a navigation type-style (data-type-style) —
113
+ * swaps the inherited token to Sharp so every <Icon> inside follows. */
114
+ [data-layout-appearance='border-rail'],
115
+ [data-type-style='border-rail'] {
116
+ --icon-font-family: 'Material Symbols Sharp';
117
+ }
118
+
119
+ .nav-text {
120
+ font-family: var(--nav-font-family, var(--font-sans));
121
+ font-size: var(--nav-text-size, var(--text-base));
122
+ line-height: var(--nav-text-line-height, var(--text-base--line-height));
123
+ font-weight: var(--nav-text-weight, 450);
124
+ letter-spacing: var(--nav-text-tracking, -0.006em);
125
+ }
126
+
127
+ .nav-subtitle {
128
+ font-family: var(--nav-font-family, var(--font-sans));
129
+ font-size: var(--nav-subtitle-size, var(--text-xs));
130
+ line-height: var(--nav-subtitle-line-height, 1.35);
131
+ font-weight: 400;
132
+ letter-spacing: 0;
133
+ }
134
+
135
+ .nav-hover-surface {
136
+ @apply relative isolate hover:text-accent-foreground;
137
+ }
138
+
139
+ .nav-hover-surface::before {
140
+ content: '';
141
+ border-radius: inherit;
142
+ @apply pointer-events-none absolute inset-y-0 left-2 right-2 z-0 bg-transparent transition-colors;
143
+ }
144
+
145
+ .nav-hover-surface:hover::before {
146
+ @apply bg-accent;
147
+ }
148
+
149
+ .nav-hover-surface > * {
150
+ @apply relative z-10;
151
+ }
152
+
153
+ .nav-heading {
154
+ font-family: var(--nav-heading-font-family, var(--nav-font-family, var(--font-sans)));
155
+ font-size: var(--nav-heading-size, var(--text-sm));
156
+ line-height: var(--nav-heading-line-height, var(--text-sm--line-height));
157
+ font-weight: var(--nav-heading-weight, 600);
158
+ letter-spacing: var(--nav-heading-letter-spacing, 0.08em);
159
+ text-transform: uppercase;
160
+ }
161
+
162
+ .nav-badge {
163
+ font-family: var(--nav-badge-font-family, var(--nav-font-family, var(--font-sans)));
164
+ font-size: var(--nav-badge-size, var(--text-sm));
165
+ line-height: var(--nav-badge-line-height, var(--text-sm--line-height));
166
+ font-weight: var(--nav-badge-weight, 500);
167
+ font-variant-numeric: tabular-nums;
168
+ letter-spacing: 0;
169
+ }
170
+
171
+ /* Modal overlay backdrop shared by Dialog, Sheet, and Drawer. The element is
172
+ * rendered inside the CDK overlay container (outside component view
173
+ * encapsulation), so its styles must live in this global layer. The default
174
+ * `dim` surface uses the --overlay-backdrop token so it recolors with the
175
+ * active theme/mode; components opt into `blur`/`transparent` via a modifier
176
+ * class. Fade-in rides on CDK's .cdk-overlay-backdrop opacity transition. */
177
+ .dialog-backdrop {
178
+ background-color: hsl(var(--overlay-backdrop));
179
+ }
180
+
181
+ /* The gap between a menu trigger and the surface it opens.
182
+ *
183
+ * It is transparent padding on the CDK pane rather than a position offset,
184
+ * because CDK applies offsets as a `transform` AFTER it has clamped the pane
185
+ * to the viewport: the offset then pushes the panel straight back off screen
186
+ * by its own size, which on a 375px phone left the panel's top edge at minus
187
+ * four. Padding is part of the box CDK measures, so the clamp sees it.
188
+ *
189
+ * All four sides, because a menu can open to any of them, and the pane is
190
+ * transparent so the extra space is invisible on the other three. */
191
+ .menu-panel {
192
+ padding: var(--spacing-xs);
193
+ }
194
+
195
+ .dialog-backdrop.dialog-backdrop-blur {
196
+ backdrop-filter: blur(4px);
197
+ -webkit-backdrop-filter: blur(4px);
198
+ }
199
+
200
+ .dialog-backdrop.dialog-backdrop-transparent {
201
+ background-color: transparent;
202
+ backdrop-filter: none;
203
+ -webkit-backdrop-filter: none;
204
+ }
205
+
206
+ /* Layout `honeycomb` surface — a TRUE tessellated flat-top hexagon grid drawn
207
+ * as a token-colored mask layer, so it recolors with the active theme/neutral
208
+ * (light + dark) like the other `<Layout surface>` patterns. Adjacent hexagons
209
+ * SHARE a single edge (no gaps), and `vector-effect: non-scaling-stroke` pins
210
+ * every line to a fixed 1px regardless of cell size. The SVG tile is exactly
211
+ * one lattice period (width 3s × height s√3, s=24px) so `mask-repeat` tiles it
212
+ * seamlessly; the path is solid-stroke and color+faintness are owned by
213
+ * --layout-grid-color (the dense `grid` tier — pattern LINE tier at
214
+ * --layout-grid-line-opacity, since honeycomb is multi-axis; see the
215
+ * --layout-pattern-* system in base/theme.css). Tune cell size via
216
+ * --layout-hex-size — keep the √3 (≈1.732) width:height ratio or the hexagons
217
+ * stretch. Edit the pattern here, not per-theme. */
218
+ .layout-surface-honeycomb {
219
+ position: relative;
220
+ --layout-hex-size: 43.2px 24.941px;
221
+ --layout-hex-mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='72' height='41.569' viewBox='0 0 72 41.569'><path d='M-12 -62.354L-24 -83.138L-48 -83.138L-60 -62.354L-48 -41.569L-24 -41.569ZM-12 -20.785L-24 -41.569L-48 -41.569L-60 -20.785L-48 0L-24 0ZM-12 20.785L-24 0L-48 0L-60 20.785L-48 41.569L-24 41.569ZM-12 62.354L-24 41.569L-48 41.569L-60 62.354L-48 83.138L-24 83.138ZM-12 103.923L-24 83.138L-48 83.138L-60 103.923L-48 124.708L-24 124.708ZM-12 145.492L-24 124.708L-48 124.708L-60 145.492L-48 166.277L-24 166.277ZM24 -83.138L12 -103.923L-12 -103.923L-24 -83.138L-12 -62.354L12 -62.354ZM24 -41.569L12 -62.354L-12 -62.354L-24 -41.569L-12 -20.785L12 -20.785ZM24 0L12 -20.785L-12 -20.785L-24 0L-12 20.785L12 20.785ZM24 41.569L12 20.785L-12 20.785L-24 41.569L-12 62.354L12 62.354ZM24 83.138L12 62.354L-12 62.354L-24 83.138L-12 103.923L12 103.923ZM24 124.708L12 103.923L-12 103.923L-24 124.708L-12 145.492L12 145.492ZM60 -62.354L48 -83.138L24 -83.138L12 -62.354L24 -41.569L48 -41.569ZM60 -20.785L48 -41.569L24 -41.569L12 -20.785L24 0L48 0ZM60 20.785L48 0L24 0L12 20.785L24 41.569L48 41.569ZM60 62.354L48 41.569L24 41.569L12 62.354L24 83.138L48 83.138ZM60 103.923L48 83.138L24 83.138L12 103.923L24 124.708L48 124.708ZM60 145.492L48 124.708L24 124.708L12 145.492L24 166.277L48 166.277ZM96 -83.138L84 -103.923L60 -103.923L48 -83.138L60 -62.354L84 -62.354ZM96 -41.569L84 -62.354L60 -62.354L48 -41.569L60 -20.785L84 -20.785ZM96 0L84 -20.785L60 -20.785L48 0L60 20.785L84 20.785ZM96 41.569L84 20.785L60 20.785L48 41.569L60 62.354L84 62.354ZM96 83.138L84 62.354L60 62.354L48 83.138L60 103.923L84 103.923ZM96 124.708L84 103.923L60 103.923L48 124.708L60 145.492L84 145.492ZM132 -62.354L120 -83.138L96 -83.138L84 -62.354L96 -41.569L120 -41.569ZM132 -20.785L120 -41.569L96 -41.569L84 -20.785L96 0L120 0ZM132 20.785L120 0L96 0L84 20.785L96 41.569L120 41.569ZM132 62.354L120 41.569L96 41.569L84 62.354L96 83.138L120 83.138ZM132 103.923L120 83.138L96 83.138L84 103.923L96 124.708L120 124.708ZM132 145.492L120 124.708L96 124.708L84 145.492L96 166.277L120 166.277Z' fill='none' stroke='%23000' stroke-width='1' vector-effect='non-scaling-stroke'/></svg>");
222
+ }
223
+
224
+ .layout-surface-honeycomb::before {
225
+ content: '';
226
+ position: absolute;
227
+ inset: 0;
228
+ z-index: 0;
229
+ pointer-events: none;
230
+ background-color: var(--layout-grid-color);
231
+ -webkit-mask-image: var(--layout-hex-mask);
232
+ mask-image: var(--layout-hex-mask);
233
+ -webkit-mask-repeat: repeat;
234
+ mask-repeat: repeat;
235
+ -webkit-mask-position: center;
236
+ mask-position: center;
237
+ -webkit-mask-size: var(--layout-hex-size);
238
+ mask-size: var(--layout-hex-size);
239
+ }
240
+
241
+ /* Layout `matrix` surface — a scattered field of binary digits (0/1) at
242
+ * varied sizes with per-glyph opacity baked into the SVG, painted as a mask
243
+ * layer so it recolors with the active theme like the other `<Layout surface>`
244
+ * patterns. The glyphs paint with --layout-matrix-color — the pattern NODE
245
+ * tier (the active neutral family's hue; an achromatic node on
246
+ * theme-neutral='base') at --layout-matrix-opacity, the global faintness knob
247
+ * toned down for dark mode in base/tokens.css — giving a soft "digital"
248
+ * signature behind content. The SVG tile is one square period
249
+ * (--layout-matrix-size) and `mask-repeat` tiles it seamlessly; every glyph
250
+ * sits inside the tile so the seam never cuts a digit. Edit the field here,
251
+ * not per-theme. */
252
+ .layout-surface-matrix {
253
+ position: relative;
254
+ --layout-matrix-mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240' viewBox='0 0 240 240'><g font-family='monospace' fill='black' text-anchor='middle' dominant-baseline='middle'><text x='14' y='12' font-size='13' fill-opacity='.35'>0</text><text x='43' y='11' font-size='12' fill-opacity='.85'>0</text><text x='59' y='11' font-size='11' fill-opacity='.45'>0</text><text x='80' y='15' font-size='12' fill-opacity='.45'>0</text><text x='110' y='17' font-size='8' fill-opacity='.3'>1</text><text x='137' y='11' font-size='9' fill-opacity='.6'>1</text><text x='150' y='11' font-size='10' fill-opacity='.35'>0</text><text x='179' y='18' font-size='10' fill-opacity='.85'>0</text><text x='203' y='17' font-size='12' fill-opacity='.7'>0</text><text x='226' y='15' font-size='10' fill-opacity='1'>1</text><text x='21' y='37' font-size='10' fill-opacity='.45'>0</text><text x='34' y='37' font-size='11' fill-opacity='.7'>1</text><text x='60' y='45' font-size='9' fill-opacity='.4'>1</text><text x='88' y='35' font-size='11' fill-opacity='.3'>1</text><text x='114' y='34' font-size='12' fill-opacity='.55'>1</text><text x='134' y='40' font-size='12' fill-opacity='.35'>1</text><text x='159' y='44' font-size='11' fill-opacity='.3'>0</text><text x='181' y='37' font-size='12' fill-opacity='.5'>1</text><text x='203' y='44' font-size='10' fill-opacity='.7'>0</text><text x='222' y='40' font-size='11' fill-opacity='.45'>0</text><text x='19' y='58' font-size='10' fill-opacity='.6'>1</text><text x='44' y='62' font-size='9' fill-opacity='.6'>1</text><text x='63' y='67' font-size='11' fill-opacity='.6'>1</text><text x='91' y='64' font-size='11' fill-opacity='.4'>0</text><text x='103' y='58' font-size='13' fill-opacity='.3'>0</text><text x='131' y='63' font-size='10' fill-opacity='.3'>1</text><text x='150' y='63' font-size='12' fill-opacity='.4'>1</text><text x='180' y='62' font-size='12' fill-opacity='.7'>0</text><text x='206' y='66' font-size='13' fill-opacity='.6'>1</text><text x='223' y='57' font-size='13' fill-opacity='.3'>1</text><text x='12' y='91' font-size='11' fill-opacity='.35'>0</text><text x='37' y='80' font-size='8' fill-opacity='.85'>0</text><text x='57' y='84' font-size='8' fill-opacity='.45'>0</text><text x='87' y='81' font-size='10' fill-opacity='1'>1</text><text x='107' y='81' font-size='11' fill-opacity='.7'>1</text><text x='131' y='80' font-size='9' fill-opacity='.5'>1</text><text x='154' y='88' font-size='12' fill-opacity='.45'>0</text><text x='183' y='86' font-size='9' fill-opacity='.85'>0</text><text x='198' y='87' font-size='9' fill-opacity='.85'>1</text><text x='222' y='81' font-size='15' fill-opacity='.85'>0</text><text x='16' y='108' font-size='13' fill-opacity='1'>0</text><text x='43' y='114' font-size='10' fill-opacity='.6'>0</text><text x='65' y='105' font-size='12' fill-opacity='.55'>1</text><text x='88' y='114' font-size='15' fill-opacity='.7'>1</text><text x='106' y='111' font-size='10' fill-opacity='.55'>1</text><text x='137' y='107' font-size='10' fill-opacity='.45'>0</text><text x='154' y='106' font-size='11' fill-opacity='.7'>0</text><text x='183' y='107' font-size='13' fill-opacity='.35'>0</text><text x='206' y='112' font-size='15' fill-opacity='.7'>0</text><text x='229' y='108' font-size='13' fill-opacity='.35'>1</text><text x='20' y='137' font-size='11' fill-opacity='.6'>1</text><text x='42' y='127' font-size='9' fill-opacity='.4'>0</text><text x='57' y='133' font-size='11' fill-opacity='1'>0</text><text x='89' y='137' font-size='13' fill-opacity='.4'>1</text><text x='109' y='127' font-size='8' fill-opacity='.85'>0</text><text x='135' y='127' font-size='10' fill-opacity='.3'>0</text><text x='152' y='129' font-size='10' fill-opacity='.5'>1</text><text x='178' y='136' font-size='8' fill-opacity='.7'>1</text><text x='203' y='135' font-size='12' fill-opacity='.85'>1</text><text x='220' y='127' font-size='12' fill-opacity='.7'>0</text><text x='19' y='156' font-size='15' fill-opacity='.4'>0</text><text x='35' y='156' font-size='9' fill-opacity='.55'>0</text><text x='64' y='155' font-size='11' fill-opacity='.85'>0</text><text x='80' y='151' font-size='8' fill-opacity='.85'>0</text><text x='108' y='149' font-size='9' fill-opacity='.55'>1</text><text x='133' y='155' font-size='12' fill-opacity='.5'>0</text><text x='154' y='155' font-size='11' fill-opacity='.85'>0</text><text x='182' y='160' font-size='10' fill-opacity='.7'>0</text><text x='197' y='150' font-size='11' fill-opacity='.35'>1</text><text x='226' y='154' font-size='10' fill-opacity='.35'>1</text><text x='21' y='174' font-size='14' fill-opacity='.4'>1</text><text x='36' y='173' font-size='11' fill-opacity='.35'>0</text><text x='61' y='178' font-size='13' fill-opacity='.4'>0</text><text x='88' y='184' font-size='11' fill-opacity='.6'>1</text><text x='105' y='176' font-size='14' fill-opacity='.3'>1</text><text x='130' y='177' font-size='14' fill-opacity='.6'>0</text><text x='153' y='179' font-size='12' fill-opacity='.35'>0</text><text x='184' y='181' font-size='9' fill-opacity='.5'>0</text><text x='198' y='183' font-size='9' fill-opacity='.4'>1</text><text x='228' y='182' font-size='13' fill-opacity='.6'>1</text><text x='12' y='206' font-size='12' fill-opacity='.55'>1</text><text x='34' y='196' font-size='14' fill-opacity='.6'>0</text><text x='67' y='198' font-size='8' fill-opacity='.5'>0</text><text x='80' y='205' font-size='9' fill-opacity='.35'>1</text><text x='108' y='199' font-size='12' fill-opacity='.5'>1</text><text x='133' y='195' font-size='14' fill-opacity='.35'>0</text><text x='160' y='198' font-size='9' fill-opacity='.5'>0</text><text x='179' y='201' font-size='10' fill-opacity='.7'>1</text><text x='201' y='197' font-size='10' fill-opacity='.5'>0</text><text x='218' y='195' font-size='12' fill-opacity='.85'>0</text><text x='16' y='229' font-size='9' fill-opacity='.7'>1</text><text x='40' y='229' font-size='12' fill-opacity='.45'>1</text><text x='68' y='222' font-size='14' fill-opacity='.6'>0</text><text x='91' y='230' font-size='9' fill-opacity='.35'>0</text><text x='110' y='229' font-size='11' fill-opacity='.3'>0</text><text x='127' y='228' font-size='12' fill-opacity='1'>1</text><text x='152' y='222' font-size='11' fill-opacity='.4'>0</text><text x='175' y='218' font-size='10' fill-opacity='.85'>1</text><text x='199' y='218' font-size='10' fill-opacity='.55'>0</text><text x='220' y='222' font-size='9' fill-opacity='.5'>1</text></g></svg>");
255
+ /* Glow layer mask — ~10% of the digits (10 of 100), placed only in the tile's
256
+ * EDGE bands (never the center). Each is drawn twice through a `feGaussianBlur`
257
+ * filter (soft bloom halo) plus once sharp (lit core); painted brighter than the
258
+ * field via --layout-matrix-glow-opacity on `::after`. Static — no animation. */
259
+ --layout-matrix-glow-mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240' viewBox='0 0 240 240'><defs><filter id='g' x='-80%' y='-80%' width='260%' height='260%'><feGaussianBlur stdDeviation='2.2'/></filter></defs><g font-family='monospace' fill='black' text-anchor='middle' dominant-baseline='middle'><g filter='url(%23g)'><text x='43' y='11' font-size='12' fill-opacity='1'>0</text><text x='203' y='17' font-size='12' fill-opacity='1'>0</text><text x='12' y='91' font-size='11' fill-opacity='1'>0</text><text x='12' y='206' font-size='12' fill-opacity='1'>1</text><text x='226' y='154' font-size='10' fill-opacity='1'>1</text><text x='229' y='108' font-size='13' fill-opacity='1'>1</text><text x='40' y='229' font-size='12' fill-opacity='1'>1</text><text x='175' y='218' font-size='10' fill-opacity='1'>1</text><text x='179' y='18' font-size='10' fill-opacity='1'>0</text><text x='16' y='108' font-size='13' fill-opacity='1'>0</text></g><g filter='url(%23g)'><text x='43' y='11' font-size='12' fill-opacity='1'>0</text><text x='203' y='17' font-size='12' fill-opacity='1'>0</text><text x='12' y='91' font-size='11' fill-opacity='1'>0</text><text x='12' y='206' font-size='12' fill-opacity='1'>1</text><text x='226' y='154' font-size='10' fill-opacity='1'>1</text><text x='229' y='108' font-size='13' fill-opacity='1'>1</text><text x='40' y='229' font-size='12' fill-opacity='1'>1</text><text x='175' y='218' font-size='10' fill-opacity='1'>1</text><text x='179' y='18' font-size='10' fill-opacity='1'>0</text><text x='16' y='108' font-size='13' fill-opacity='1'>0</text></g><g><text x='43' y='11' font-size='12' fill-opacity='1'>0</text><text x='203' y='17' font-size='12' fill-opacity='1'>0</text><text x='12' y='91' font-size='11' fill-opacity='1'>0</text><text x='12' y='206' font-size='12' fill-opacity='1'>1</text><text x='226' y='154' font-size='10' fill-opacity='1'>1</text><text x='229' y='108' font-size='13' fill-opacity='1'>1</text><text x='40' y='229' font-size='12' fill-opacity='1'>1</text><text x='175' y='218' font-size='10' fill-opacity='1'>1</text><text x='179' y='18' font-size='10' fill-opacity='1'>0</text><text x='16' y='108' font-size='13' fill-opacity='1'>0</text></g></g></svg>");
260
+ }
261
+
262
+ .layout-surface-matrix::before {
263
+ content: '';
264
+ position: absolute;
265
+ inset: 0;
266
+ z-index: 0;
267
+ pointer-events: none;
268
+ background-color: var(--layout-matrix-color);
269
+ -webkit-mask-image: var(--layout-matrix-mask);
270
+ mask-image: var(--layout-matrix-mask);
271
+ -webkit-mask-repeat: repeat;
272
+ mask-repeat: repeat;
273
+ -webkit-mask-position: center;
274
+ mask-position: center;
275
+ -webkit-mask-size: var(--layout-matrix-size);
276
+ mask-size: var(--layout-matrix-size);
277
+ }
278
+
279
+ /* Sparse edge-glow accents: the glow glyph mask (repeating) intersected with a
280
+ * radial edge-vignette so the lit digits appear only toward the layout edges
281
+ * and fade out behind centered content (`hindari di tengah`). `intersect`
282
+ * (std) / `source-in` (-webkit-) keep both masks ANDed. */
283
+ .layout-surface-matrix::after {
284
+ content: '';
285
+ position: absolute;
286
+ inset: 0;
287
+ z-index: 0;
288
+ pointer-events: none;
289
+ background-color: var(--layout-matrix-glow-color);
290
+ -webkit-mask-image:
291
+ var(--layout-matrix-glow-mask),
292
+ radial-gradient(ellipse 78% 78% at center, transparent 36%, #000 80%);
293
+ mask-image:
294
+ var(--layout-matrix-glow-mask),
295
+ radial-gradient(ellipse 78% 78% at center, transparent 36%, #000 80%);
296
+ -webkit-mask-repeat: repeat, no-repeat;
297
+ mask-repeat: repeat, no-repeat;
298
+ -webkit-mask-position: center, center;
299
+ mask-position: center, center;
300
+ -webkit-mask-size:
301
+ var(--layout-matrix-size),
302
+ 100% 100%;
303
+ mask-size:
304
+ var(--layout-matrix-size),
305
+ 100% 100%;
306
+ -webkit-mask-composite: source-in;
307
+ mask-composite: intersect;
308
+ }
309
+
310
+ /* Layout `grid-line` surface — a dark mosaic of 2rem square cells; a richer
311
+ * cousin of `grid`. A faint uniform grid with scattered BRIGHT highlight
312
+ * squares + L-corners and a few subtly-lit cells, all painted as ONE
313
+ * token-colored mask layer (same mechanism as `.layout-surface-honeycomb` /
314
+ * `.layout-surface-matrix`). EVERYTHING lives in the single mask — base
315
+ * grid, glows, and cell fills — so the layers stay pixel-aligned. The glow
316
+ * paints with the pattern HIGHLIGHT tier (--layout-grid-highlight-color,
317
+ * base/theme.css): the active neutral family's hue, or the accent
318
+ * hue/saturation on theme-neutral='base' — with
319
+ * lightness pinned to --layout-grid-highlight-l either way, so brightness
320
+ * stays put. --layout-grid-highlight-opacity is the global faintness knob.
321
+ * Every fill /
322
+ * stroke is white (%23fff) and serves only as an ALPHA mask: low alpha = faint
323
+ * grid/cell, high alpha = bright glow. `vector-effect: non-scaling-stroke`
324
+ * pins every line to a fixed 1px regardless of cell size.
325
+ *
326
+ * The tile is 6x6 cells (viewBox 0 0 192 192 = 32 units/cell) so mask-size is
327
+ * 9.96rem (one cell ≈ 1.66rem — 17% smaller than the 2rem `grid` family size;
328
+ * tune via --layout-grid-line-size). SEAMLESS: the grid is drawn
329
+ * at 0..192 on BOTH edges. A 1px non-scaling stroke centered on a tile edge has
330
+ * its outer half clipped by the SVG viewBox, so under `mask-repeat: repeat` each
331
+ * seam gets one half-stroke from the tile on each side ([191.5,192] + [192,192.5])
332
+ * which combine into a single full 1px line — an even grid with no doubling and
333
+ * no thinned seam. Every highlight/fill stays in the interior (>=32, <=160) so
334
+ * no glow is ever clipped at a tile edge. Edit the pattern here, not per-theme. */
335
+ .layout-surface-grid-line {
336
+ position: relative;
337
+ --layout-grid-line-size: 9.96rem 9.96rem;
338
+ --layout-grid-line-mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='192' height='192' viewBox='0 0 192 192'><path d='M0 0V192M32 0V192M64 0V192M96 0V192M128 0V192M160 0V192M192 0V192M0 0H192M0 32H192M0 64H192M0 96H192M0 128H192M0 160H192M0 192H192' fill='none' stroke='%23fff' stroke-width='1' stroke-opacity='0.25' vector-effect='non-scaling-stroke'/><g fill='%23fff'><rect x='66' y='34' width='28' height='28' fill-opacity='0.1'/><rect x='130' y='34' width='28' height='28' fill-opacity='0.06'/><rect x='34' y='66' width='28' height='28' fill-opacity='0.12'/><rect x='98' y='66' width='28' height='28' fill-opacity='0.07'/><rect x='66' y='98' width='28' height='28' fill-opacity='0.09'/><rect x='130' y='98' width='28' height='28' fill-opacity='0.05'/><rect x='34' y='130' width='28' height='28' fill-opacity='0.11'/><rect x='98' y='130' width='28' height='28' fill-opacity='0.06'/></g><g fill='none' stroke='%23fff' stroke-width='1' vector-effect='non-scaling-stroke'><rect x='32' y='32' width='32' height='32' stroke-opacity='0.85'/><rect x='128' y='64' width='32' height='32' stroke-opacity='0.8'/><rect x='32' y='96' width='32' height='32' stroke-opacity='0.9'/><rect x='128' y='128' width='32' height='32' stroke-opacity='0.82'/><path d='M128 32L96 32L96 64' stroke-opacity='0.7'/><path d='M64 96L96 96L96 64' stroke-opacity='0.75'/><path d='M96 96L128 96L128 128' stroke-opacity='0.72'/><path d='M64 128L64 160L96 160' stroke-opacity='0.68'/></g></svg>");
339
+ }
340
+
341
+ .layout-surface-grid-line::before {
342
+ content: '';
343
+ position: absolute;
344
+ inset: 0;
345
+ z-index: 0;
346
+ pointer-events: none;
347
+ /* Tinted glow: the pattern HIGHLIGHT tier at --layout-grid-highlight-opacity
348
+ * — the active neutral family's hue, or the achromatic base neutral;
349
+ * its lightness is anchored by --layout-grid-highlight-l. */
350
+ background-color: var(--layout-grid-highlight-color);
351
+ -webkit-mask-image: var(--layout-grid-line-mask);
352
+ mask-image: var(--layout-grid-line-mask);
353
+ -webkit-mask-repeat: repeat;
354
+ mask-repeat: repeat;
355
+ -webkit-mask-position: center;
356
+ mask-position: center;
357
+ -webkit-mask-size: var(--layout-grid-line-size);
358
+ mask-size: var(--layout-grid-line-size);
359
+ }
360
+
361
+ /* Layout `circuit` surface — a tileable PCB / circuit-board texture: routed
362
+ * copper traces with 45° chamfered bends, via nodes, and concentric ring pads,
363
+ * echoing a printed circuit board. Built as the same kind of token-colored mask
364
+ * layer as `.layout-surface-honeycomb` / `.layout-surface-matrix`, but with TWO
365
+ * stacked layers because a mask only carries ALPHA (one color per layer):
366
+ * ::before — the copper TRACES, painted in --layout-circuit-trace-color (the
367
+ * pattern LINE tier the grid family uses, so the board recolors
368
+ * per neutral + dark mode; achromatic on theme-neutral='base').
369
+ * Faintness = --layout-circuit-opacity × the per-trace alpha baked
370
+ * into the SVG (ghost 0.22 · trace 0.55-0.6 · trunk 0.9), giving
371
+ * the copper-weight variation of a real board.
372
+ * ::after — the via NODES + concentric pads, painted in
373
+ * --layout-circuit-node-color (the pattern NODE tier, like
374
+ * `matrix`: the neutral family's hue, --primary on
375
+ * theme-neutral='base') so the connection points GLOW while the
376
+ * traces stay quiet. Faintness = --layout-circuit-node-opacity
377
+ * (toned down for dark mode in base/tokens.css, since the bright
378
+ * node color blooms on dark).
379
+ * Both layers share ONE tile geometry (--layout-circuit-size) and `mask-position:
380
+ * center`, so traces and nodes stay pixel-aligned. `vector-effect:
381
+ * non-scaling-stroke` pins every line to its authored px width at any scale.
382
+ *
383
+ * SEAMLESS BY CONSTRUCTION (240x240 tile): every horizontal bus enters at x=0
384
+ * and exits at x=240 at the SAME y (wraps left/right) and every vertical bus
385
+ * enters at y=0 / exits at y=240 at the SAME x (wraps top/bottom); the long
386
+ * buses bridge each seam so the board reads continuous. All interior branches,
387
+ * vias, and rings stay inside an 18px edge keep-out, so tiling never clips a
388
+ * node. Keep both SVG data URLs pixel-aligned and re-run the visual seam check
389
+ * whenever their geometry changes. */
390
+ .layout-surface-circuit {
391
+ position: relative;
392
+ --layout-circuit-size: 240px;
393
+ --layout-circuit-traces: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240' viewBox='0 0 240 240'><path d='M20 70L38 70L48.24 65.76L56 58' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.22' stroke-linejoin='round' stroke-linecap='round' vector-effect='non-scaling-stroke'/><path d='M210 150L210 172L205.76 182.24L196 192' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.22' stroke-linejoin='round' stroke-linecap='round' vector-effect='non-scaling-stroke'/><path d='M28 150L28 176' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.22' stroke-linejoin='round' stroke-linecap='round' vector-effect='non-scaling-stroke'/><path d='M212 40L224 40' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.22' stroke-linejoin='round' stroke-linecap='round' vector-effect='non-scaling-stroke'/><path d='M0 40L54 40L64.24 35.76L75.76 24.24L86 20L114 20L124.24 24.24L135.76 35.76L146 40L240 40' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.6' stroke-linejoin='round' stroke-linecap='round' vector-effect='non-scaling-stroke'/><path d='M0 120L34 120L44.24 115.76L55.76 104.24L66 100L94 100L104.24 104.24L115.76 115.76L126 120L154 120L164.24 124.24L175.76 135.76L186 140L194 140L204.24 135.76L215.76 124.24L226 120L240 120' fill='none' stroke='%23000' stroke-width='1.5' stroke-opacity='0.9' stroke-linejoin='round' stroke-linecap='round' vector-effect='non-scaling-stroke'/><path d='M0 200L94 200L104.24 204.24L115.76 215.76L126 220L154 220L164.24 215.76L175.76 204.24L186 200L240 200' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.6' stroke-linejoin='round' stroke-linecap='round' vector-effect='non-scaling-stroke'/><path d='M60 0L60 54L64.24 64.24L75.76 75.76L80 86L80 154L75.76 164.24L64.24 175.76L60 186L60 240' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.55' stroke-linejoin='round' stroke-linecap='round' vector-effect='non-scaling-stroke'/><path d='M180 0L180 64L175.76 74.24L164.24 85.76L160 96L160 144L164.24 154.24L175.76 165.76L180 176L180 240' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.55' stroke-linejoin='round' stroke-linecap='round' vector-effect='non-scaling-stroke'/><path d='M100 100L100 64' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.4' stroke-linejoin='round' stroke-linecap='round' vector-effect='non-scaling-stroke'/><path d='M160 120L194 120L200 114L200 84' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.4' stroke-linejoin='round' stroke-linecap='round' vector-effect='non-scaling-stroke'/><path d='M80 120L80 96' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.4' stroke-linejoin='round' stroke-linecap='round' vector-effect='non-scaling-stroke'/><path d='M140 200L140 164' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.4' stroke-linejoin='round' stroke-linecap='round' vector-effect='non-scaling-stroke'/></svg>");
394
+ --layout-circuit-nodes: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240' viewBox='0 0 240 240'><circle cx='60' cy='40' r='3' fill='%23000' fill-opacity='0.85'/><circle cx='140' cy='40' r='3' fill='%23000' fill-opacity='0.85'/><circle cx='100' cy='200' r='3' fill='%23000' fill-opacity='0.85'/><circle cx='180' cy='200' r='3' fill='%23000' fill-opacity='0.85'/><circle cx='60' cy='100' r='3' fill='%23000' fill-opacity='0.85'/><circle cx='120' cy='120' r='3.2' fill='%23000' fill-opacity='0.85'/><circle cx='180' cy='140' r='3' fill='%23000' fill-opacity='0.85'/><circle cx='80' cy='80' r='3' fill='%23000' fill-opacity='0.85'/><circle cx='80' cy='160' r='3' fill='%23000' fill-opacity='0.85'/><circle cx='160' cy='90' r='3' fill='%23000' fill-opacity='0.85'/><circle cx='160' cy='150' r='3' fill='%23000' fill-opacity='0.85'/><circle cx='100' cy='100' r='2.6' fill='%23000' fill-opacity='0.85'/><circle cx='200' cy='120' r='2.6' fill='%23000' fill-opacity='0.85'/><circle cx='140' cy='200' r='2.6' fill='%23000' fill-opacity='0.85'/><circle cx='100' cy='60' r='6' fill='none' stroke='%23000' stroke-width='1.2' stroke-opacity='0.7' vector-effect='non-scaling-stroke'/><circle cx='100' cy='60' r='2' fill='%23000' fill-opacity='0.85'/><circle cx='200' cy='80' r='6' fill='none' stroke='%23000' stroke-width='1.2' stroke-opacity='0.7' vector-effect='non-scaling-stroke'/><circle cx='200' cy='80' r='2' fill='%23000' fill-opacity='0.85'/><circle cx='140' cy='160' r='6' fill='none' stroke='%23000' stroke-width='1.2' stroke-opacity='0.7' vector-effect='non-scaling-stroke'/><circle cx='140' cy='160' r='2' fill='%23000' fill-opacity='0.85'/><circle cx='40' cy='160' r='4.5' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.55' vector-effect='non-scaling-stroke'/><circle cx='215' cy='40' r='4' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.55' vector-effect='non-scaling-stroke'/><circle cx='25' cy='200' r='4' fill='none' stroke='%23000' stroke-width='1' stroke-opacity='0.55' vector-effect='non-scaling-stroke'/></svg>");
395
+ }
396
+
397
+ .layout-surface-circuit::before,
398
+ .layout-surface-circuit::after {
399
+ content: '';
400
+ position: absolute;
401
+ inset: 0;
402
+ z-index: 0;
403
+ pointer-events: none;
404
+ -webkit-mask-repeat: repeat;
405
+ mask-repeat: repeat;
406
+ -webkit-mask-position: center;
407
+ mask-position: center;
408
+ -webkit-mask-size: var(--layout-circuit-size);
409
+ mask-size: var(--layout-circuit-size);
410
+ }
411
+
412
+ .layout-surface-circuit::before {
413
+ background-color: var(--layout-circuit-trace-color);
414
+ -webkit-mask-image: var(--layout-circuit-traces);
415
+ mask-image: var(--layout-circuit-traces);
416
+ }
417
+
418
+ .layout-surface-circuit::after {
419
+ background-color: var(--layout-circuit-node-color);
420
+ -webkit-mask-image: var(--layout-circuit-nodes);
421
+ mask-image: var(--layout-circuit-nodes);
422
+ }
423
+
424
+ /* Window-drag regions for the desktop shell titlebar (<ShellBar>).
425
+ *
426
+ * Every desktop runtime marks its drag surface differently and none of them
427
+ * can be expressed as a Tailwind utility, so the shell stamps both markers on
428
+ * one element: Tauri reads the `data-tauri-drag-region` attribute (set by the
429
+ * component), Electron reads the `-webkit-app-region` CSS property below. A
430
+ * drag surface must not smear a text selection or fire the native
431
+ * long-press/callout while the window is being moved.
432
+ */
433
+ .shell-drag-region {
434
+ -webkit-app-region: drag;
435
+ app-region: drag;
436
+ -webkit-user-select: none;
437
+ user-select: none;
438
+ -webkit-touch-callout: none;
439
+ }
440
+
441
+ /* Interactive children of a drag region opt back out, otherwise the runtime
442
+ * swallows their clicks as window drags. */
443
+ .shell-no-drag {
444
+ -webkit-app-region: no-drag;
445
+ app-region: no-drag;
446
+ }
447
+
448
+ /* Native app-region hit testing is not ordinary DOM z-index hit testing:
449
+ * Electron can still treat a lower drag rectangle as window chrome beneath a
450
+ * fixed overlay. Suspend the ancestor drag region while the desktop flyout is
451
+ * mounted; Tauri remains safe because its direct marker only reacts when that
452
+ * marked element itself is the click target. */
453
+ [data-shell-root].shell-drag-region:has([data-navigation-flyout-panel='true']) {
454
+ -webkit-app-region: no-drag;
455
+ app-region: no-drag;
456
+ }
457
+
458
+ /* The desktop shell owns a transparent drag layer behind the complete window
459
+ * frame. Foreground application content sits one stacking tier above it and
460
+ * opts out of Electron's inherited drag region, so exposed chrome/margins drag
461
+ * the window while Layout, buttons, fields, overlays, and routed content retain
462
+ * normal pointer interaction. Tauri only activates the directly marked layer,
463
+ * therefore foreground descendants need no blanket data attribute override. */
464
+ [data-shell-root] > :not([data-shell-frame-drag-region]):not([data-shell-bar]),
465
+ [data-shell-root] [data-layout-root] {
466
+ position: relative;
467
+ z-index: 10;
468
+ -webkit-app-region: no-drag;
469
+ app-region: no-drag;
470
+ }
471
+
472
+ /* <Layout> sizes itself from --layout-viewport-height (100dvh by default: it is
473
+ * normally the whole browser viewport). Inside a <Shell> it instead grows into
474
+ * whatever the titlebar left over: the shell is a column flexbox, so
475
+ * `height: auto` plus a zero flex-basis hands the layout the remaining space, and
476
+ * min-height:0 lets it shrink below its content so its own scroll regions keep
477
+ * working. Without this it would overflow the window by exactly the bar's height.
478
+ *
479
+ * Deliberately a DESCENDANT selector, not a child one: this design system wraps
480
+ * things in `display: contents` hosts (LayoutWrapperDefault, and consumers' own
481
+ * shells), so the layout root is almost never a DOM child of <Shell> even though
482
+ * `contents` makes it the shell's actual flex item. A child selector would miss
483
+ * every consumer using the recommended wrapper. A <Layout> nested inside another
484
+ * <Layout> is not a supported composition, so over-reach is not a concern. */
485
+ [data-shell-root] [data-layout-root] {
486
+ --layout-viewport-height: auto;
487
+ flex: 1 1 0%;
488
+ min-height: 0;
489
+ }
490
+
491
+ /* `frame='modern'`: inset the app so it floats as a panel inside the window
492
+ * instead of meeting its edges. No top margin — the panel meets the titlebar,
493
+ * which shares the surround's colour and drops its border, so the bar and the
494
+ * gap around the panel read as one continuous frame.
495
+ *
496
+ * Releasing the width is load-bearing, not tidying. <Layout> sizes itself to
497
+ * `--layout-viewport-width` (100% by default), which resolves against the shell's
498
+ * content box and IGNORES these margins — the panel would keep full width, shift
499
+ * over, and overflow the window by exactly the inset (clipped by the shell's
500
+ * overflow-hidden, so only the leading gap would show). At `auto` the flex line
501
+ * stretches it into the space left over, giving a real gap on both sides.
502
+ *
503
+ * It goes through the variable rather than a plain `width: auto` here because the
504
+ * layout's width is a Tailwind UTILITY: @layer utilities outranks
505
+ * @layer components no matter how specific this selector is.
506
+ *
507
+ * The inset is margin on the layout, not padding on <Shell>: the titlebar is the
508
+ * shell's other flex child, so padding would indent it too — breaking the
509
+ * full-bleed drag region and pulling the macOS traffic lights off the window
510
+ * corner. */
511
+ [data-shell-root][data-shell-frame='modern'] [data-layout-root] {
512
+ --layout-viewport-width: auto;
513
+ margin: 0 var(--shell-frame-inset) var(--shell-frame-inset);
514
+ }
515
+
516
+ /* Give the app inside a desktop window a panel edge: rounded to
517
+ * --shell-frame-radius (12px) and outlined with --shell-frame-border. The layout
518
+ * root already clips its own overflow, so the radius carries through to the frame
519
+ * and every surface painted inside it, and `box-border` keeps the outline from
520
+ * changing the panel's size.
521
+ *
522
+ * `classic` is flush against the titlebar, so its top edge stays square AND
523
+ * borderless: the app meets the bar there, and the bar already draws that seam
524
+ * with its own `border-b` — outlining it again would double the line, and rounding
525
+ * it would cut two notches of chrome into an otherwise continuous join. */
526
+ [data-shell-root][data-shell-mode='desktop'] [data-layout-root] {
527
+ border: 1px solid hsl(var(--shell-frame-border));
528
+ border-top-width: 0;
529
+ border-radius: 0;
530
+ }
531
+
532
+ /* `classic` is flush with the titlebar, so neither the shell layout nor its
533
+ * inner frame may cut rounded notches into the window edge. The inner frame
534
+ * carries a Tailwind radius utility, which is why this override is important. */
535
+ [data-shell-root][data-shell-mode='desktop'][data-shell-frame='classic'] [data-layout-frame] {
536
+ border-radius: 0 !important;
537
+ }
538
+
539
+ /* `modern` is a free-floating panel: closed and rounded on all four sides. Its
540
+ * titlebar drops the divider, so the panel's own top edge is what closes it. */
541
+ [data-shell-root][data-shell-mode='desktop'][data-shell-frame='modern'] [data-layout-root] {
542
+ border-top-width: 1px;
543
+ border-radius: var(--shell-frame-radius);
544
+ }
545
+ }
546
+
547
+ @layer utilities {
548
+ html[theme-space='compact'] NavigationSidebar [data-navigation-sidebar-subtitle],
549
+ html[theme-space='compact'] NavigationSidebar [data-navigation-group-subtitle],
550
+ html[theme-space='compact'] PageHeader[data-page-slot='header'] [data-page-subtitle] {
551
+ display: none;
552
+ }
553
+ }
@@ -0,0 +1,14 @@
1
+ /*
2
+ * Lightweight default theme stylesheet (exported as `@ojiepermana/angular/theme/theme.css`).
3
+ *
4
+ * Base only: core design tokens, light/dark, and component styles. It does NOT
5
+ * pull in the runtime theme axes (color palettes, neutral families, radius and
6
+ * space presets) so consumers ship a minimal stylesheet by default.
7
+ *
8
+ * Need the runtime axes? Either import the full sheet:
9
+ * @import '@ojiepermana/angular/theme/theme-full.css';
10
+ * or opt in to only the axes you use:
11
+ * @import '@ojiepermana/angular/theme/styles/css/color/index.css';
12
+ * @import '@ojiepermana/angular/theme/styles/css/neutral/index.css';
13
+ */
14
+ @import './package.css';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Internal grouped base theme stylesheet.
3
+ */
4
+ @import './theme.css';
5
+ @import './tokens.css';
6
+ @import './status.css';
7
+ @import './prefers-dark.css';
8
+ @import './components.css';
9
+ @import './print.css';