snice 7.0.2 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/.agents/skills/snice/SKILL.md +4 -0
  2. package/.agents/skills/snice/references/core-kitchen-sink.ts +39 -1
  3. package/README.md +59 -14
  4. package/adapters/react/SniceProvider.js +2 -2
  5. package/adapters/react/SniceRouter.js +2 -2
  6. package/adapters/react/matchRoute.js +2 -2
  7. package/adapters/react/useRequestHandler.js +2 -2
  8. package/bin/analyzer-contracts.js +6 -1
  9. package/bin/postinstall.js +59 -0
  10. package/bin/project-analyzer.js +466 -5
  11. package/bin/snice.js +3 -0
  12. package/dist/app-context.d.ts +11 -0
  13. package/dist/cdn/accordion/snice-accordion.js +2 -2
  14. package/dist/cdn/action-bar/snice-action-bar.js +2 -2
  15. package/dist/cdn/activity-feed/snice-activity-feed.js +2 -2
  16. package/dist/cdn/alert/snice-alert.js +2 -2
  17. package/dist/cdn/app-tiles/snice-app-tiles.js +2 -2
  18. package/dist/cdn/approval-flow/snice-approval-flow.js +2 -2
  19. package/dist/cdn/audio-recorder/snice-audio-recorder.js +2 -2
  20. package/dist/cdn/availability/snice-availability.js +2 -2
  21. package/dist/cdn/avatar/snice-avatar.js +2 -2
  22. package/dist/cdn/avatar-group/snice-avatar-group.js +2 -2
  23. package/dist/cdn/badge/snice-badge.js +2 -2
  24. package/dist/cdn/banner/snice-banner.js +2 -2
  25. package/dist/cdn/binpack/snice-binpack.js +2 -2
  26. package/dist/cdn/book/snice-book.js +2 -2
  27. package/dist/cdn/booking/snice-booking.js +2 -2
  28. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +2 -2
  29. package/dist/cdn/button/snice-button.js +2 -2
  30. package/dist/cdn/calendar/snice-calendar.js +2 -2
  31. package/dist/cdn/camera/snice-camera.js +2 -2
  32. package/dist/cdn/camera-annotate/snice-camera-annotate.js +2 -2
  33. package/dist/cdn/candlestick/snice-candlestick.js +2 -2
  34. package/dist/cdn/card/snice-card.js +2 -2
  35. package/dist/cdn/carousel/snice-carousel.js +2 -2
  36. package/dist/cdn/cart/snice-cart.js +2 -2
  37. package/dist/cdn/chart/snice-chart.js +2 -2
  38. package/dist/cdn/chat/snice-chat.js +2 -2
  39. package/dist/cdn/checkbox/snice-checkbox.js +2 -2
  40. package/dist/cdn/chip/snice-chip.js +2 -2
  41. package/dist/cdn/code-block/snice-code-block.js +2 -2
  42. package/dist/cdn/color-display/snice-color-display.js +2 -2
  43. package/dist/cdn/color-picker/snice-color-picker.js +2 -2
  44. package/dist/cdn/command-palette/snice-command-palette.js +2 -2
  45. package/dist/cdn/comments/snice-comments.js +2 -2
  46. package/dist/cdn/countdown/snice-countdown.js +2 -2
  47. package/dist/cdn/cropper/snice-cropper.js +2 -2
  48. package/dist/cdn/data-card/snice-data-card.js +2 -2
  49. package/dist/cdn/date-picker/snice-date-picker.js +2 -2
  50. package/dist/cdn/date-range-picker/snice-date-range-picker.js +2 -2
  51. package/dist/cdn/date-time-picker/snice-date-time-picker.js +2 -2
  52. package/dist/cdn/diff/snice-diff.js +2 -2
  53. package/dist/cdn/divider/snice-divider.js +2 -2
  54. package/dist/cdn/doc/snice-doc.js +2 -2
  55. package/dist/cdn/draw/snice-draw.js +2 -2
  56. package/dist/cdn/drawer/snice-drawer.js +2 -2
  57. package/dist/cdn/empty-state/snice-empty-state.js +2 -2
  58. package/dist/cdn/estimate/snice-estimate.js +2 -2
  59. package/dist/cdn/file-gallery/snice-file-gallery.js +2 -2
  60. package/dist/cdn/file-upload/snice-file-upload.js +2 -2
  61. package/dist/cdn/flip-card/snice-flip-card.js +2 -2
  62. package/dist/cdn/flow/snice-flow.js +2 -2
  63. package/dist/cdn/form-layout/snice-form-layout.js +2 -2
  64. package/dist/cdn/funnel/snice-funnel.js +2 -2
  65. package/dist/cdn/gantt/snice-gantt.js +2 -2
  66. package/dist/cdn/gauge/snice-gauge.js +2 -2
  67. package/dist/cdn/grid/snice-grid.js +2 -2
  68. package/dist/cdn/heatmap/snice-heatmap.js +2 -2
  69. package/dist/cdn/image/snice-image.js +2 -2
  70. package/dist/cdn/input/snice-input.js +2 -2
  71. package/dist/cdn/invoice/snice-invoice.js +2 -2
  72. package/dist/cdn/kanban/snice-kanban.js +2 -2
  73. package/dist/cdn/key-value/snice-key-value.js +2 -2
  74. package/dist/cdn/kpi/snice-kpi.js +2 -2
  75. package/dist/cdn/layout/README.md +17 -2
  76. package/dist/cdn/layout/snice-layout.js +1656 -11
  77. package/dist/cdn/layout/snice-layout.js.map +1 -1
  78. package/dist/cdn/layout/snice-layout.min.js +379 -2
  79. package/dist/cdn/layout/snice-layout.min.js.map +1 -1
  80. package/dist/cdn/leaderboard/snice-leaderboard.js +2 -2
  81. package/dist/cdn/link/snice-link.js +2 -2
  82. package/dist/cdn/link-preview/snice-link-preview.js +2 -2
  83. package/dist/cdn/list/snice-list.js +2 -2
  84. package/dist/cdn/location/snice-location.js +2 -2
  85. package/dist/cdn/login/snice-login.js +2 -2
  86. package/dist/cdn/map/snice-map.js +2 -2
  87. package/dist/cdn/markdown/snice-markdown.js +2 -2
  88. package/dist/cdn/masonry/snice-masonry.js +2 -2
  89. package/dist/cdn/menu/snice-menu.js +2 -2
  90. package/dist/cdn/message-strip/snice-message-strip.js +2 -2
  91. package/dist/cdn/modal/snice-modal.js +2 -2
  92. package/dist/cdn/music-player/snice-music-player.js +2 -2
  93. package/dist/cdn/nav/snice-nav.js +2 -2
  94. package/dist/cdn/network-graph/snice-network-graph.js +2 -2
  95. package/dist/cdn/notification-center/snice-notification-center.js +2 -2
  96. package/dist/cdn/order-tracker/snice-order-tracker.js +2 -2
  97. package/dist/cdn/org-chart/snice-org-chart.js +2 -2
  98. package/dist/cdn/pagination/snice-pagination.js +2 -2
  99. package/dist/cdn/paint/snice-paint.js +2 -2
  100. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +2 -2
  101. package/dist/cdn/permission-matrix/snice-permission-matrix.js +2 -2
  102. package/dist/cdn/podcast-player/snice-podcast-player.js +2 -2
  103. package/dist/cdn/popover/snice-popover.js +2 -2
  104. package/dist/cdn/pricing-table/snice-pricing-table.js +2 -2
  105. package/dist/cdn/product-card/snice-product-card.js +2 -2
  106. package/dist/cdn/progress/snice-progress.js +2 -2
  107. package/dist/cdn/progress-ring/snice-progress-ring.js +2 -2
  108. package/dist/cdn/qr-code/snice-qr-code.js +2 -2
  109. package/dist/cdn/qr-reader/snice-qr-reader.js +2 -2
  110. package/dist/cdn/radio/snice-radio.js +2 -2
  111. package/dist/cdn/range-slider/snice-range-slider.js +2 -2
  112. package/dist/cdn/rating/snice-rating.js +2 -2
  113. package/dist/cdn/receipt/snice-receipt.js +2 -2
  114. package/dist/cdn/recipe/snice-recipe.js +3 -3
  115. package/dist/cdn/recipe/snice-recipe.js.map +1 -1
  116. package/dist/cdn/recipe/snice-recipe.min.js +1 -1
  117. package/dist/cdn/recipe/snice-recipe.min.js.map +1 -1
  118. package/dist/cdn/runtime/README.md +2 -2
  119. package/dist/cdn/runtime/snice-runtime.esm.js +3725 -3336
  120. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  121. package/dist/cdn/runtime/snice-runtime.esm.min.js +1 -1
  122. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  123. package/dist/cdn/runtime/snice-runtime.js +3727 -3335
  124. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  125. package/dist/cdn/runtime/snice-runtime.min.js +1 -1
  126. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  127. package/dist/cdn/sankey/snice-sankey.js +2 -2
  128. package/dist/cdn/segmented-control/snice-segmented-control.js +2 -2
  129. package/dist/cdn/select/snice-select.js +2 -2
  130. package/dist/cdn/skeleton/snice-skeleton.js +2 -2
  131. package/dist/cdn/slider/snice-slider.js +2 -2
  132. package/dist/cdn/sortable/snice-sortable.js +2 -2
  133. package/dist/cdn/sparkline/snice-sparkline.js +2 -2
  134. package/dist/cdn/spinner/snice-spinner.js +2 -2
  135. package/dist/cdn/split-button/snice-split-button.js +2 -2
  136. package/dist/cdn/split-pane/snice-split-pane.js +2 -2
  137. package/dist/cdn/spotlight/snice-spotlight.js +2 -2
  138. package/dist/cdn/stat-group/snice-stat-group.js +2 -2
  139. package/dist/cdn/step-input/snice-step-input.js +2 -2
  140. package/dist/cdn/stepper/snice-stepper.js +2 -2
  141. package/dist/cdn/switch/snice-switch.js +2 -2
  142. package/dist/cdn/table/README.md +6 -2
  143. package/dist/cdn/table/snice-table.esm.js +366 -56
  144. package/dist/cdn/table/snice-table.esm.js.map +1 -1
  145. package/dist/cdn/table/snice-table.esm.min.js +107 -46
  146. package/dist/cdn/table/snice-table.esm.min.js.map +1 -1
  147. package/dist/cdn/table/snice-table.js +367 -59
  148. package/dist/cdn/table/snice-table.js.map +1 -1
  149. package/dist/cdn/table/snice-table.min.js +155 -94
  150. package/dist/cdn/table/snice-table.min.js.map +1 -1
  151. package/dist/cdn/tabs/snice-tabs.js +2 -2
  152. package/dist/cdn/tag/snice-tag.js +2 -2
  153. package/dist/cdn/tag-input/snice-tag-input.js +2 -2
  154. package/dist/cdn/terminal/snice-terminal.js +3 -2
  155. package/dist/cdn/terminal/snice-terminal.js.map +1 -1
  156. package/dist/cdn/terminal/snice-terminal.min.js +1 -0
  157. package/dist/cdn/terminal/snice-terminal.min.js.map +1 -1
  158. package/dist/cdn/testimonial/snice-testimonial.js +2 -2
  159. package/dist/cdn/textarea/snice-textarea.js +2 -2
  160. package/dist/cdn/time-picker/snice-time-picker.js +2 -2
  161. package/dist/cdn/time-range-picker/snice-time-range-picker.js +2 -2
  162. package/dist/cdn/timeline/snice-timeline.js +2 -2
  163. package/dist/cdn/timer/snice-timer.js +2 -2
  164. package/dist/cdn/toast/snice-toast.js +2 -2
  165. package/dist/cdn/tooltip/snice-tooltip.js +2 -2
  166. package/dist/cdn/tree/snice-tree.js +2 -2
  167. package/dist/cdn/treemap/snice-treemap.js +2 -2
  168. package/dist/cdn/user-card/snice-user-card.js +2 -2
  169. package/dist/cdn/video-player/README.md +1 -1
  170. package/dist/cdn/video-player/snice-video-player.js +3 -2
  171. package/dist/cdn/video-player/snice-video-player.js.map +1 -1
  172. package/dist/cdn/video-player/snice-video-player.min.js +1 -0
  173. package/dist/cdn/video-player/snice-video-player.min.js.map +1 -1
  174. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +2 -2
  175. package/dist/cdn/waterfall/snice-waterfall.js +2 -2
  176. package/dist/cdn/weather/snice-weather.js +2 -2
  177. package/dist/cdn/work-order/snice-work-order.js +2 -2
  178. package/dist/components/recipe/snice-recipe.js +1 -1
  179. package/dist/components/recipe/snice-recipe.js.map +1 -1
  180. package/dist/components/table/snice-table.d.ts +1 -0
  181. package/dist/components/table/snice-table.js +18 -2
  182. package/dist/components/table/snice-table.js.map +1 -1
  183. package/dist/components/table/table-tree-data.js +1 -0
  184. package/dist/components/table/table-tree-data.js.map +1 -1
  185. package/dist/components/terminal/snice-terminal.js +1 -0
  186. package/dist/components/terminal/snice-terminal.js.map +1 -1
  187. package/dist/components/video-player/snice-video-player.js +1 -0
  188. package/dist/components/video-player/snice-video-player.js.map +1 -1
  189. package/dist/context-provider.d.ts +16 -0
  190. package/dist/daemon-target.d.ts +10 -0
  191. package/dist/daemon.d.ts +10 -0
  192. package/dist/index.cjs +3721 -3329
  193. package/dist/index.cjs.map +1 -1
  194. package/dist/index.d.ts +3 -0
  195. package/dist/index.esm.js +3719 -3330
  196. package/dist/index.esm.js.map +1 -1
  197. package/dist/index.iife.js +3721 -3329
  198. package/dist/index.iife.js.map +1 -1
  199. package/dist/keyboard-filter.d.ts +25 -0
  200. package/dist/on.d.ts +1 -1
  201. package/dist/parts.d.ts +0 -17
  202. package/dist/react/SniceProvider.js +2 -2
  203. package/dist/react/SniceRouter.js +2 -2
  204. package/dist/react/index.js +2 -2
  205. package/dist/react/matchRoute.js +2 -2
  206. package/dist/react/useRequestHandler.js +2 -2
  207. package/dist/request-response.d.ts +9 -1
  208. package/dist/symbols.cjs +11 -2
  209. package/dist/symbols.cjs.map +1 -1
  210. package/dist/symbols.d.ts +3 -0
  211. package/dist/symbols.esm.js +9 -3
  212. package/dist/symbols.esm.js.map +1 -1
  213. package/dist/testing.d.ts +1 -1
  214. package/dist/transitions.cjs +2 -2
  215. package/dist/transitions.esm.js +2 -2
  216. package/dist/types/app-context.d.ts +9 -58
  217. package/dist/types/daemon.d.ts +8 -0
  218. package/dist/types/dispatch-options.d.ts +2 -0
  219. package/dist/types/index.d.ts +1 -0
  220. package/dist/types/on-options.d.ts +5 -0
  221. package/dist/types/request-options.d.ts +2 -0
  222. package/dist/types/respond-options.d.ts +2 -0
  223. package/docs/ai/DEVELOPMENT.md +15 -1
  224. package/docs/ai/README.md +5 -1
  225. package/docs/ai/api.md +13 -4
  226. package/docs/ai/architecture.md +50 -1
  227. package/docs/ai/cli.md +9 -0
  228. package/docs/ai/components/avatar.md +8 -8
  229. package/docs/ai/components/breadcrumbs.md +2 -1
  230. package/docs/ai/components/button.md +2 -7
  231. package/docs/ai/components/calendar.md +1 -1
  232. package/docs/ai/components/camera.md +1 -1
  233. package/docs/ai/components/chart.md +3 -1
  234. package/docs/ai/components/code-block.md +2 -2
  235. package/docs/ai/components/date-picker.md +5 -19
  236. package/docs/ai/components/date-range-picker.md +4 -12
  237. package/docs/ai/components/draw.md +5 -5
  238. package/docs/ai/components/drawer.md +4 -4
  239. package/docs/ai/components/form-layout.md +2 -0
  240. package/docs/ai/components/icons.md +7 -16
  241. package/docs/ai/components/key-value.md +3 -22
  242. package/docs/ai/components/layout.md +8 -12
  243. package/docs/ai/components/leaderboard.md +2 -2
  244. package/docs/ai/components/link-preview.md +4 -3
  245. package/docs/ai/components/login.md +11 -0
  246. package/docs/ai/components/markdown.md +7 -0
  247. package/docs/ai/components/masonry.md +6 -0
  248. package/docs/ai/components/menu.md +1 -1
  249. package/docs/ai/components/modal.md +7 -0
  250. package/docs/ai/components/notification-center.md +5 -4
  251. package/docs/ai/components/radio.md +7 -0
  252. package/docs/ai/components/rating.md +3 -3
  253. package/docs/ai/components/select.md +4 -13
  254. package/docs/ai/components/spotlight.md +2 -0
  255. package/docs/ai/components/table.md +1 -4
  256. package/docs/ai/components/tag-input.md +6 -0
  257. package/docs/ai/components/terminal.md +6 -0
  258. package/docs/ai/components/tooltip.md +10 -16
  259. package/docs/ai/components/tree.md +2 -2
  260. package/docs/ai/components/video-player.md +5 -0
  261. package/docs/ai/components/waterfall.md +7 -0
  262. package/docs/ai/daemons.md +80 -0
  263. package/docs/ai/decorators.md +6 -4
  264. package/docs/ai/events.md +35 -0
  265. package/docs/ai/patterns.md +45 -1
  266. package/docs/ai/request-response.md +26 -9
  267. package/docs/ai/routing.md +16 -1
  268. package/docs/cli.md +7 -0
  269. package/docs/components/breadcrumbs.md +2 -1
  270. package/docs/components/calendar.md +1 -1
  271. package/docs/components/camera.md +1 -1
  272. package/docs/components/chart.md +1 -1
  273. package/docs/components/code-block.md +13 -4
  274. package/docs/components/color-picker.md +6 -5
  275. package/docs/components/date-time-picker.md +14 -0
  276. package/docs/components/diff.md +2 -1
  277. package/docs/components/draw.md +5 -5
  278. package/docs/components/drawer.md +4 -4
  279. package/docs/components/input.md +1 -0
  280. package/docs/components/layout.md +20 -22
  281. package/docs/components/leaderboard.md +10 -3
  282. package/docs/components/link-preview.md +11 -9
  283. package/docs/components/login.md +4 -0
  284. package/docs/components/menu.md +1 -1
  285. package/docs/components/modal.md +1 -0
  286. package/docs/components/nav.md +1 -0
  287. package/docs/components/network-graph.md +1 -0
  288. package/docs/components/notification-center.md +2 -1
  289. package/docs/components/product-card.md +1 -0
  290. package/docs/components/qr-reader.md +1 -0
  291. package/docs/components/rating.md +4 -4
  292. package/docs/components/select.md +1 -0
  293. package/docs/components/spotlight.md +2 -0
  294. package/docs/components/tabs.md +1 -0
  295. package/docs/components/terminal.md +3 -0
  296. package/docs/components/textarea.md +1 -1
  297. package/docs/components/time-picker.md +14 -0
  298. package/docs/components/tooltip.md +2 -0
  299. package/docs/components/tree.md +2 -2
  300. package/docs/daemons.md +200 -0
  301. package/docs/events.md +92 -2
  302. package/docs/request-response.md +20 -13
  303. package/docs/routing.md +25 -1
  304. package/package.json +6 -4
@@ -123,11 +123,12 @@ Set `show-presets` to display a row of preset color swatches for quick selection
123
123
  Use the `presets` property to provide your own set of preset colors.
124
124
 
125
125
  ```html
126
- <snice-color-picker
127
- label="Brand Colors"
128
- show-presets
129
- presets='["#ff0000", "#00ff00", "#0000ff", "#ffcc00"]'
130
- ></snice-color-picker>
126
+ <snice-color-picker id="brand" label="Brand Colors" show-presets></snice-color-picker>
127
+ ```
128
+
129
+ ```typescript
130
+ // presets is a JS-only property -- there is no presets attribute
131
+ document.getElementById('brand').presets = ['#ff0000', '#00ff00', '#0000ff', '#ffcc00'];
131
132
  ```
132
133
 
133
134
  ### Without Text Input
@@ -4,6 +4,20 @@
4
4
 
5
5
  `<snice-date-time-picker>` combines an editable local date-time field, calendar, and time selectors. It is a form-associated custom element with native reset, disabled-fieldset, state-restoration, and constraint-validation behavior.
6
6
 
7
+ ## Table of Contents
8
+
9
+ - [Basic usage](#basic-usage)
10
+ - [Local datetime contract](#local-datetime-contract)
11
+ - [Input and display](#input-and-display)
12
+ - [Labels and composite names](#labels-and-composite-names)
13
+ - [Validation](#validation)
14
+ - [Disabled, readonly, and loading states](#disabled-readonly-and-loading-states)
15
+ - [Properties](#properties)
16
+ - [Methods](#methods)
17
+ - [Events](#events)
18
+ - [CSS parts](#css-parts)
19
+ - [Accessibility](#accessibility)
20
+
7
21
  ## Basic usage
8
22
 
9
23
  ```typescript
@@ -200,7 +200,8 @@ When comparing large files, unchanged sections beyond the `context-lines` thresh
200
200
 
201
201
  - Dark mode support via `[data-theme="dark"]` and `prefers-color-scheme: dark`
202
202
  - Line numbers provide clear reference points for discussing specific changes
203
- - Color coding: added lines highlighted green, removed lines red
203
+ - Added and removed lines carry `+`/`-` gutter markers, so the distinction does not rely on color alone
204
+ - Color coding reinforces the markers: added lines green, removed lines red
204
205
  - Word-level diffs highlight the specific words that differ within changed lines
205
206
  - Collapsible sections reduce noise; click to expand
206
207
  - Stats header provides an immediate +N/-N overview of change scope
@@ -67,11 +67,11 @@ interface DrawStroke {
67
67
 
68
68
  | Event | Detail | Description |
69
69
  |-------|--------|-------------|
70
- | `draw-start` | -- | Drawing started |
71
- | `draw-end` | `{ stroke }` | Drawing ended (stroke complete) |
72
- | `draw-clear` | -- | Canvas cleared |
73
- | `draw-undo` | -- | Undo performed |
74
- | `draw-redo` | -- | Redo performed |
70
+ | `draw-start` | `{ draw, point }` | Drawing started |
71
+ | `draw-end` | `{ draw, stroke }` | Drawing ended (stroke complete) |
72
+ | `draw-clear` | `{ draw }` | Canvas cleared |
73
+ | `draw-undo` | `{ draw }` | Undo performed |
74
+ | `draw-redo` | `{ draw }` | Redo performed |
75
75
 
76
76
  ## CSS Parts
77
77
 
@@ -77,10 +77,10 @@ Slide-out panel from any viewport side with focus trap and dismissal options. Su
77
77
  | `--drawer-height-xl` | XL drawer height (top/bottom) | `70vh` |
78
78
  | `--drawer-height-xxl` | XXL drawer height (top/bottom) | `80vh` |
79
79
  | `--drawer-height-xxxl` | XXXL drawer height (top/bottom) | `90vh` |
80
- | `--drawer-bg` | Drawer background color | `var(--snice-color-surface, white)` |
81
- | `--drawer-shadow` | Drawer shadow | `var(--snice-shadow-lg)` |
82
- | `--drawer-backdrop` | Backdrop color | `rgba(0, 0, 0, 0.5)` |
83
- | `--drawer-transition` | Transition timing | `transform 250ms cubic-bezier(0.4, 0, 0.2, 1)` |
80
+ | `--drawer-bg` | Drawer background color | `var(--snice-color-surface-container-highest, var(--snice-color-surface, white))` |
81
+ | `--drawer-shadow` | Drawer shadow | `var(--snice-shadow-2xl, ...)` |
82
+ | `--drawer-backdrop` | Backdrop color | `var(--snice-drawer-backdrop, rgb(0 0 0 / 0.6))` |
83
+ | `--drawer-transition` | Transition timing | `transform 320ms var(--snice-ease-out, cubic-bezier(0.22, 1, 0.36, 1))` |
84
84
  | `--drawer-z-index` | Z-index | `var(--snice-z-overlay, 1050)` |
85
85
 
86
86
  ## CSS Parts
@@ -14,6 +14,7 @@ Text input field with validation, icons, and form association.
14
14
  - [Basic Usage](#basic-usage)
15
15
  - [Examples](#examples)
16
16
  - [Keyboard Navigation](#keyboard-navigation)
17
+ - [Accessibility](#accessibility)
17
18
 
18
19
  ## Properties
19
20
 
@@ -9,6 +9,7 @@ Application layout with header navigation, main content area, and footer.
9
9
  - [Methods](#methods)
10
10
  - [Slots](#slots)
11
11
  - [CSS Parts](#css-parts)
12
+ - [CSS Custom Properties](#css-custom-properties)
12
13
  - [Basic Usage](#basic-usage)
13
14
  - [Examples](#examples)
14
15
  - [Shell variants](#shell-variants)
@@ -68,6 +69,24 @@ snice-layout::part(footer) {
68
69
  }
69
70
  ```
70
71
 
72
+ ## CSS Custom Properties
73
+
74
+ | Property | Default | Applies to |
75
+ |----------|---------|------------|
76
+ | `--snice-layout-sidebar-width` | `16rem` | Expanded sidebar |
77
+ | `--snice-layout-rail-collapsed-width` | `3rem` | Collapsed rail |
78
+ | `--snice-layout-rail-width` | `18rem` | Dashboard right rail |
79
+ | `--snice-layout-measure` | `65ch` | Blog reading measure |
80
+ | `--snice-layout-container` | `80rem` | Landing band inner width |
81
+ | `--snice-layout-list-width` | `20rem` | Master-detail list pane |
82
+ | `--snice-layout-docs-nav-width` | `18.75rem` | Documentation navigation tree |
83
+ | `--snice-layout-docs-toc-width` | `18.75rem` | Documentation on-this-page rail |
84
+ | `--snice-layout-docs-header-height` | `4rem` | Documentation sticky header |
85
+ | `--snice-layout-docs-header-height-compact` | `3.5rem` | Documentation header below 768px |
86
+ | `--snice-layout-auth-width` | `24rem` | Auth split form column |
87
+ | `--snice-layout-auth-panel-bg` | `var(--snice-color-surface-container)` | Auth split decorative panel |
88
+ | `--snice-layout-control-size` | `2rem` | Sidebar and drawer toggle buttons |
89
+
71
90
  ## Basic Usage
72
91
 
73
92
  ```typescript
@@ -118,15 +137,6 @@ Use the `update()` method to sync navigation with the router.
118
137
  layout.update(appContext, placards, currentRoute, routeParams);
119
138
  ```
120
139
 
121
- ## CSS Custom Properties
122
-
123
- | Property | Description |
124
- |----------|-------------|
125
- | `--snice-layout-auth-panel-bg` | Layout auth panel background |
126
- | `--snice-layout-control-size` | Layout control size |
127
- | `--snice-layout-docs-header-height` | Layout docs header height |
128
- | `--snice-layout-docs-header-height-compact` | Layout docs header height compact |
129
-
130
140
  ## Shell variants
131
141
 
132
142
  `<snice-layout>` is the stacked shell (header / main / footer). These siblings cover the
@@ -266,16 +276,4 @@ it to the leading side.
266
276
  | `snice-layout-master-detail` | `selected` | boolean | `false` | A detail is open; drives the single-pane view below 641px |
267
277
  | `snice-layout-auth-split` | `panel-position` | `start`, `end` | `end` | Side the brand panel sits on |
268
278
 
269
- ### Sizing hooks
270
-
271
- | Custom property | Default | Applies to |
272
- |-----------------|---------|------------|
273
- | `--snice-layout-sidebar-width` | `16rem` | Expanded sidebar |
274
- | `--snice-layout-rail-collapsed-width` | `3rem` | Collapsed rail |
275
- | `--snice-layout-rail-width` | `18rem` | Dashboard right rail |
276
- | `--snice-layout-measure` | `65ch` | Blog reading measure |
277
- | `--snice-layout-container` | `80rem` | Landing band inner width |
278
- | `--snice-layout-list-width` | `20rem` | Master-detail list pane |
279
- | `--snice-layout-docs-nav-width` | `18.75rem` | Documentation navigation tree |
280
- | `--snice-layout-docs-toc-width` | `18.75rem` | Documentation on-this-page rail |
281
- | `--snice-layout-auth-width` | `24rem` | Auth split form column |
279
+ Shell sizing hooks are listed under [CSS Custom Properties](#css-custom-properties).
@@ -39,7 +39,7 @@ A ranked list of entries with optional avatars, change indicators, and podium hi
39
39
  |----------|------|---------|-------------|
40
40
  | `variant` | `'default' \| 'podium' \| 'compact'` | `'default'` | Display variant |
41
41
  | `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Entry size |
42
- | `title` | `string` | `''` | Optional title displayed above the list |
42
+ | `title` | `string` | `''` | Optional title above the list (JS-only; a `title` attribute is the native tooltip) |
43
43
 
44
44
  ## Methods
45
45
 
@@ -108,12 +108,19 @@ import 'snice/components/leaderboard/snice-leaderboard';
108
108
  ```
109
109
 
110
110
  ```html
111
- <snice-leaderboard title="Top Players">
111
+ <snice-leaderboard id="board">
112
112
  <snice-leaderboard-entry rank="1" name="Alice" score="2500"></snice-leaderboard-entry>
113
113
  <snice-leaderboard-entry rank="2" name="Bob" score="2100"></snice-leaderboard-entry>
114
114
  </snice-leaderboard>
115
115
  ```
116
116
 
117
+ `title` is a JS-only property. A `title` attribute is the native HTML tooltip and does
118
+ not set the heading.
119
+
120
+ ```typescript
121
+ document.getElementById('board').title = 'Top Players';
122
+ ```
123
+
117
124
  ## Examples
118
125
 
119
126
  ### Declarative API (Child Elements)
@@ -121,7 +128,7 @@ import 'snice/components/leaderboard/snice-leaderboard';
121
128
  Use `<snice-leaderboard-entry>` elements as children. The parent reads attributes and renders the full UI.
122
129
 
123
130
  ```html
124
- <snice-leaderboard variant="podium" title="Season Rankings">
131
+ <snice-leaderboard variant="podium">
125
132
  <snice-leaderboard-entry rank="1" name="Alice" score="2,500" avatar="alice.jpg" change="3" highlighted></snice-leaderboard-entry>
126
133
  <snice-leaderboard-entry rank="2" name="Bob" score="2,100" change="-1"></snice-leaderboard-entry>
127
134
  <snice-leaderboard-entry rank="3" name="Charlie" score="1,800" change="2"></snice-leaderboard-entry>
@@ -18,7 +18,7 @@ Displays a rich preview card for a URL with image, title, description, and site
18
18
  | Property | Type | Default | Description |
19
19
  |----------|------|---------|-------------|
20
20
  | `url` | `string` | `''` | Target URL (opens on click) |
21
- | `title` | `string` | `''` | Preview title (clamped to 2 lines) |
21
+ | `title` | `string` | `''` | Preview title, clamped to 2 lines (JS-only; a `title` attribute is the native tooltip) |
22
22
  | `description` | `string` | `''` | Preview description (clamped to 3 lines) |
23
23
  | `image` | `string` | `''` | Preview image URL |
24
24
  | `siteName` (attr: `site-name`) | `string` | `''` | Site name shown in footer |
@@ -62,13 +62,20 @@ import 'snice/components/link-preview/snice-link-preview';
62
62
 
63
63
  ```html
64
64
  <snice-link-preview
65
+ id="preview"
65
66
  url="https://example.com"
66
- title="Example Website"
67
67
  description="An example website for demonstration."
68
68
  image="https://example.com/og-image.jpg">
69
69
  </snice-link-preview>
70
70
  ```
71
71
 
72
+ `title` is a JS-only property. A `title` attribute is the native HTML tooltip and does
73
+ not set the preview heading.
74
+
75
+ ```typescript
76
+ document.getElementById('preview').title = 'Example Website';
77
+ ```
78
+
72
79
  ## Examples
73
80
 
74
81
  ### Vertical Card
@@ -78,7 +85,6 @@ The default layout stacks the image above the content.
78
85
  ```html
79
86
  <snice-link-preview
80
87
  url="https://snice.dev"
81
- title="Snice - Beautiful Decorators for Custom Elements"
82
88
  description="Write clean, reactive web components with TypeScript decorators."
83
89
  image="https://picsum.photos/600/300"
84
90
  site-name="snice.dev">
@@ -93,7 +99,6 @@ Use `variant="horizontal"` to display the image beside the content.
93
99
  <snice-link-preview
94
100
  variant="horizontal"
95
101
  url="https://snice.dev/guide"
96
- title="Getting Started Guide"
97
102
  description="Learn to build elements step by step."
98
103
  site-name="snice.dev">
99
104
  </snice-link-preview>
@@ -104,8 +109,8 @@ Use `variant="horizontal"` to display the image beside the content.
104
109
  Use the `size` attribute to adjust padding, font sizes, and image dimensions.
105
110
 
106
111
  ```html
107
- <snice-link-preview size="small" url="https://example.com" title="Compact Card" description="A short summary."></snice-link-preview>
108
- <snice-link-preview size="large" url="https://example.com" title="Expanded Card" description="A longer description with more room for content." image="https://picsum.photos/800/400"></snice-link-preview>
112
+ <snice-link-preview size="small" url="https://example.com" description="A short summary."></snice-link-preview>
113
+ <snice-link-preview size="large" url="https://example.com" description="A longer description with more room for content." image="https://picsum.photos/800/400"></snice-link-preview>
109
114
  ```
110
115
 
111
116
  ### Without Image
@@ -115,7 +120,6 @@ When no image is provided, a placeholder link icon is shown.
115
120
  ```html
116
121
  <snice-link-preview
117
122
  url="https://example.com"
118
- title="Text-Only Preview"
119
123
  description="When no image is provided, a placeholder icon is shown."
120
124
  site-name="example.com">
121
125
  </snice-link-preview>
@@ -126,7 +130,6 @@ When no image is provided, a placeholder link icon is shown.
126
130
  ```html
127
131
  <snice-link-preview
128
132
  url="https://example.com/article"
129
- title="Article with Favicon"
130
133
  description="Shows the site favicon next to the site name."
131
134
  image="https://picsum.photos/600/300"
132
135
  site-name="example.com"
@@ -139,7 +142,6 @@ When no image is provided, a placeholder link icon is shown.
139
142
  ```html
140
143
  <snice-link-preview
141
144
  id="preview"
142
- title="Clickable Preview"
143
145
  description="Listen for click events."
144
146
  url="https://example.com">
145
147
  </snice-link-preview>
@@ -28,6 +28,8 @@ A complete authentication form with username/password fields, using Snice's @req
28
28
  | `showRememberMe` (attr: `show-remember-me`) | `boolean` | `true` | Show "Remember me" checkbox |
29
29
  | `showForgotPassword` (attr: `show-forgot-password`) | `boolean` | `true` | Show "Forgot password" link |
30
30
  | `actionText` (attr: `action-text`) | `string` | `'Sign In'` | Submit button text |
31
+ | `alertMessage` | `string` | `''` | Inline alert text; set from JS to show a message above the form |
32
+ | `alertVariant` | `'error' \| 'success' \| ''` | `''` | Styling for `alertMessage` |
31
33
 
32
34
  ## Methods
33
35
 
@@ -38,6 +40,8 @@ A complete authentication form with username/password fields, using Snice's @req
38
40
  | `setError()` | `message: string` | Display an error message |
39
41
  | `clearError()` | -- | Remove error message |
40
42
  | `setCredentials()` | `credentials: Partial<LoginCredentials>` | Set form field values |
43
+ | `showAlert()` | `message: string, variant: 'error' \| 'success'` | Show an inline alert above the form; `setError()` is the error-only shorthand |
44
+ | `clearAlert()` | -- | Remove the inline alert |
41
45
 
42
46
  ## Requests
43
47
 
@@ -112,7 +112,7 @@ A dropdown menu with composable items, dividers, icons, and keyboard shortcut hi
112
112
  | `--menu-border` | Panel border color | `var(--snice-color-border, #e5e7eb)` |
113
113
  | `--menu-shadow` | Panel box shadow | `var(--snice-shadow-lg)` |
114
114
  | `--menu-z-index` | Panel z-index | `var(--snice-z-floating, 1000)` |
115
- | `--menu-border-radius` | Panel border radius | `var(--snice-radius-md, 0.375rem)` |
115
+ | `--menu-border-radius` | Panel border radius | `var(--snice-border-radius-md, 0.25rem)` |
116
116
  | `--menu-min-width` | Minimum panel width | `10rem` |
117
117
 
118
118
  ## Basic Usage
@@ -14,6 +14,7 @@ A dialog overlay with focus trapping, backdrop dismiss, and keyboard navigation.
14
14
  - [Basic Usage](#basic-usage)
15
15
  - [Examples](#examples)
16
16
  - [Keyboard Navigation](#keyboard-navigation)
17
+ - [CSS Custom Properties](#css-custom-properties)
17
18
  - [Accessibility](#accessibility)
18
19
 
19
20
  ## Properties
@@ -13,6 +13,7 @@ A navigation menu that renders from placard configurations and integrates with S
13
13
  - [Basic Usage](#basic-usage)
14
14
  - [Examples](#examples)
15
15
  - [Accessibility](#accessibility)
16
+ - [Placard Structure](#placard-structure)
16
17
 
17
18
  ## Properties
18
19
 
@@ -12,6 +12,7 @@ An SVG-based force-directed graph visualization for displaying relationships bet
12
12
  - [Basic Usage](#basic-usage)
13
13
  - [Examples](#examples)
14
14
  - [Accessibility](#accessibility)
15
+ - [Data Types](#data-types)
15
16
 
16
17
  ## Properties
17
18
 
@@ -24,6 +24,7 @@ A bell icon with a dropdown notification panel. Displays an unread count badge,
24
24
  | `notifications` | `NotificationItem[]` | `[]` | Array of notification objects to display (set via JS) |
25
25
  | `open` | `boolean` | `false` | Whether the dropdown panel is visible |
26
26
  | `icon` | `string` | `''` | Custom bell icon (URL, image file, or emoji). Use slot for icon fonts. |
27
+ | `placement` | `'start' \| 'end'` | `'end'` | Side the dropdown panel aligns to |
27
28
 
28
29
  ## Methods
29
30
 
@@ -74,7 +75,7 @@ snice-notification-center::part(panel) {
74
75
  | Property | Description |
75
76
  |----------|-------------|
76
77
  | `--snice-color-primary` | Mark-all-read link color and unread highlight |
77
- | `--snice-color-primary-subtle` | Unread item background |
78
+ | `--snice-color-primary-subtle-hover` | Unread item background on hover (the base unread tint derives from `--snice-color-primary`) |
78
79
  | `--snice-color-danger` | Badge background and dismiss hover color |
79
80
  | `--snice-color-text-secondary` | Message text color |
80
81
  | `--snice-color-text-tertiary` | Timestamp, empty state text, and dismiss icon color |
@@ -12,6 +12,7 @@ A product display card with image gallery, pricing, star ratings, variant select
12
12
  - [Basic Usage](#basic-usage)
13
13
  - [Examples](#examples)
14
14
  - [Accessibility](#accessibility)
15
+ - [CSS Custom Properties](#css-custom-properties)
15
16
  - [Data Types](#data-types)
16
17
 
17
18
  ## Properties
@@ -12,6 +12,7 @@ A QR code scanner using device cameras with real-time detection.
12
12
  - [CSS Custom Properties](#css-custom-properties)
13
13
  - [Basic Usage](#basic-usage)
14
14
  - [Examples](#examples)
15
+ - [CSS Parts](#css-parts)
15
16
  - [Accessibility](#accessibility)
16
17
 
17
18
  ## Properties
@@ -21,8 +21,8 @@ An interactive star rating input with configurable precision, custom icons, and
21
21
  |----------|------|---------|-------------|
22
22
  | `value` | `number` | `0` | Current rating value |
23
23
  | `max` | `number` | `5` | Maximum number of stars |
24
- | `icon` | `string` | `''` | Character used for each rating item |
25
- | `emptyIcon` (attr: `empty-icon`) | `string` | `''` | Optional character for the unfilled layer; empty uses `icon` |
24
+ | `icon` | `string` | `'star'` | Icon for each item: built-in catalogue name, emoji, URL, or image file |
25
+ | `emptyIcon` (attr: `empty-icon`) | `string` | `''` | Optional icon for the unfilled layer; empty uses `icon` |
26
26
  | `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Display size |
27
27
  | `readonly` | `boolean` | `false` | Disable user interaction |
28
28
  | `precision` | `'full' \| 'half'` | `'full'` | Click precision (full or half star increments) |
@@ -37,8 +37,8 @@ An interactive star rating input with configurable precision, custom icons, and
37
37
 
38
38
  | Property | Description | Default |
39
39
  |----------|-------------|---------|
40
- | `--rating-color` | Filled star color | `var(--snice-color-warning, rgb(234 179 8))` |
41
- | `--rating-color-empty` | Empty star color | `var(--snice-color-border, rgb(226 226 226))` |
40
+ | `--rating-color` | Filled star color | `rgb(245 158 11)` (not theme-derived) |
41
+ | `--rating-color-empty` | Empty star color | `var(--snice-color-text-tertiary, rgb(115 115 115))` |
42
42
  | `--rating-size` | Star size (set automatically by `size` property) | `1.5rem` |
43
43
 
44
44
  ## CSS Parts
@@ -16,6 +16,7 @@ A customizable dropdown selection with single/multiple selection, search filteri
16
16
  - [External Labels and Accessible Naming](#external-labels-and-accessible-naming)
17
17
  - [Form Integration](#form-integration)
18
18
  - [Keyboard Navigation](#keyboard-navigation)
19
+ - [CSS Custom Properties](#css-custom-properties)
19
20
  - [Accessibility](#accessibility)
20
21
 
21
22
  ## Components
@@ -12,6 +12,7 @@ A guided tour and onboarding component that highlights elements on the page with
12
12
  - [CSS Custom Properties](#css-custom-properties)
13
13
  - [Basic Usage](#basic-usage)
14
14
  - [Examples](#examples)
15
+ - [CSS Parts](#css-parts)
15
16
  - [Accessibility](#accessibility)
16
17
 
17
18
  ## Properties
@@ -49,6 +50,7 @@ interface SpotlightStep {
49
50
  | `spotlight-step` | `{ index: number, step: SpotlightStep }` | Navigated to a new step |
50
51
  | `spotlight-end` | `void` | Tour ended (completed or ended programmatically) |
51
52
  | `spotlight-skip` | `{ index: number }` | User skipped the tour at the given step |
53
+ | `spotlight-target-missing` | `{ index: number, step: SpotlightStep }` | A step's target element is no longer in the DOM (e.g. a route change removed it). The popover stops rather than pointing at nothing. |
52
54
 
53
55
  ## CSS Custom Properties
54
56
 
@@ -13,6 +13,7 @@ A tabbed interface for organizing content into separate panels, using `<snice-ta
13
13
  - [Slots](#slots)
14
14
  - [CSS Parts](#css-parts)
15
15
  - [Basic Usage](#basic-usage)
16
+ - [CSS Custom Properties](#css-custom-properties)
16
17
  - [Examples](#examples)
17
18
 
18
19
  ## Components
@@ -37,6 +37,9 @@ A shell terminal emulator with command execution, history navigation, and ANSI c
37
37
  | `focus()` | -- | Focus the input |
38
38
  | `getHistory()` | -- | Get command history, returns `string[]` |
39
39
  | `clearHistory()` | -- | Clear command history |
40
+ | `appendChunk()` | `chunk: string, type?: TerminalLineType` | Feed a raw chunk without splitting on newlines; a trailing partial line stays live and grows as more chunks arrive |
41
+ | `pipeFrom()` | `source: AsyncIterable<string> \| ReadableStream<string \| Uint8Array>, type?: TerminalLineType` | Stream a source to the terminal until it ends. Returns `Promise<void>` |
42
+ | `commitLiveLine()` | -- | Force the current live (un-newlined) buffer to be treated as a finished line |
40
43
 
41
44
  ## Events
42
45
 
@@ -49,7 +49,7 @@ A multi-line text input with validation, character counting, and optional auto-g
49
49
 
50
50
  | Method | Arguments | Description |
51
51
  |--------|-----------|-------------|
52
- | `focus()` | `options?: FocusOptions` | Focus the textarea |
52
+ | `focus()` | -- | Focus the textarea |
53
53
  | `blur()` | -- | Remove focus |
54
54
  | `select()` | -- | Select all text |
55
55
  | `checkValidity()` | -- | Check validation, returns `boolean` |
@@ -4,6 +4,20 @@
4
4
 
5
5
  `<snice-time-picker>` is an editable, form-associated time control with 12-hour and 24-hour displays, dropdown or inline selectors, optional seconds, range and step constraints, native reset and restoration, and constraint validation.
6
6
 
7
+ ## Table of Contents
8
+
9
+ - [Basic usage](#basic-usage)
10
+ - [Time and form-value contract](#time-and-form-value-contract)
11
+ - [Live value and reset default](#live-value-and-reset-default)
12
+ - [Native form lifecycle](#native-form-lifecycle)
13
+ - [External labels and accessible naming](#external-labels-and-accessible-naming)
14
+ - [Validation](#validation)
15
+ - [Display and interaction](#display-and-interaction)
16
+ - [Properties](#properties)
17
+ - [Methods](#methods)
18
+ - [Events](#events)
19
+ - [CSS parts](#css-parts)
20
+
7
21
  ## Basic usage
8
22
 
9
23
  ```ts
@@ -12,6 +12,7 @@ Provides contextual information when users hover, click, or focus an element. Su
12
12
  - [CSS Parts](#css-parts)
13
13
  - [Basic Usage](#basic-usage)
14
14
  - [Examples](#examples)
15
+ - [CSS Custom Properties](#css-custom-properties)
15
16
  - [Attribute-Based Tooltips](#attribute-based-tooltips)
16
17
 
17
18
  ## Properties
@@ -231,6 +232,7 @@ This is the primary use case -- adding tooltips without disrupting component str
231
232
  | `--tooltip-hide-delay` | `0` | Hide delay in milliseconds |
232
233
  | `--tooltip-offset` | `12` | Distance from trigger element in pixels |
233
234
  | `--tooltip-arrow` | *(shown)* | Set to `none` to hide the arrow |
235
+ | `--tooltip-arrow-size` | `6px` | Arrow width and height |
234
236
  | `--tooltip-max-width` | `250` | Maximum tooltip width in pixels |
235
237
  | `--tooltip-z-index` | `10000` | Z-index stacking order |
236
238
  | `--tooltip-strict-positioning` | *(false)* | Set to `true` to disable auto-flip |
@@ -24,8 +24,8 @@ Displays hierarchical data with expandable/collapsible nodes, selection, checkbo
24
24
  | `showIcons` (attr: `show-icons`) | `boolean` | `true` | Display node icons |
25
25
  | `expandOnClick` (attr: `expand-on-click`) | `boolean` | `false` | Expand/collapse on node click |
26
26
  | `nodes` | `TreeNode[]` | `[]` | Array of tree nodes |
27
- | `selectedNodes` (attr: `selected-nodes`) | `string[]` | `[]` | Selected node IDs |
28
- | `checkedNodes` (attr: `checked-nodes`) | `string[]` | `[]` | Checked node IDs |
27
+ | `selectedNodes` | `string[]` | `[]` | Selected node IDs (JS-only; no attribute) |
28
+ | `checkedNodes` | `string[]` | `[]` | Checked node IDs (JS-only; no attribute) |
29
29
 
30
30
  ### TreeNode Interface
31
31