snice 7.6.0 → 7.7.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 (183) hide show
  1. package/adapters/react/SniceProvider.js +1 -1
  2. package/adapters/react/SniceRouter.js +1 -1
  3. package/adapters/react/matchRoute.js +1 -1
  4. package/adapters/react/useRequestHandler.js +1 -1
  5. package/custom-elements.json +10 -0
  6. package/dist/cdn/accordion/snice-accordion.js +1 -1
  7. package/dist/cdn/action-bar/snice-action-bar.js +1 -1
  8. package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
  9. package/dist/cdn/alert/snice-alert.js +1 -1
  10. package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
  11. package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
  12. package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
  13. package/dist/cdn/availability/snice-availability.js +1 -1
  14. package/dist/cdn/avatar/snice-avatar.js +1 -1
  15. package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
  16. package/dist/cdn/badge/snice-badge.js +1 -1
  17. package/dist/cdn/banner/snice-banner.js +1 -1
  18. package/dist/cdn/binpack/snice-binpack.js +1 -1
  19. package/dist/cdn/book/snice-book.js +1 -1
  20. package/dist/cdn/booking/snice-booking.js +1 -1
  21. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
  22. package/dist/cdn/button/snice-button.js +2 -2
  23. package/dist/cdn/button/snice-button.js.map +1 -1
  24. package/dist/cdn/button/snice-button.min.js +1 -1
  25. package/dist/cdn/button/snice-button.min.js.map +1 -1
  26. package/dist/cdn/calendar/snice-calendar.js +1 -1
  27. package/dist/cdn/camera/snice-camera.js +1 -1
  28. package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
  29. package/dist/cdn/candlestick/snice-candlestick.js +1 -1
  30. package/dist/cdn/card/snice-card.js +1 -1
  31. package/dist/cdn/carousel/snice-carousel.js +1 -1
  32. package/dist/cdn/cart/snice-cart.js +1 -1
  33. package/dist/cdn/chart/snice-chart.js +1 -1
  34. package/dist/cdn/chat/snice-chat.js +1 -1
  35. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  36. package/dist/cdn/chip/snice-chip.js +1 -1
  37. package/dist/cdn/code-block/snice-code-block.js +1 -1
  38. package/dist/cdn/color-display/snice-color-display.js +1 -1
  39. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  40. package/dist/cdn/command-palette/snice-command-palette.js +1 -1
  41. package/dist/cdn/comments/snice-comments.js +1 -1
  42. package/dist/cdn/countdown/snice-countdown.js +1 -1
  43. package/dist/cdn/cropper/snice-cropper.js +1 -1
  44. package/dist/cdn/data-card/snice-data-card.js +1 -1
  45. package/dist/cdn/date-picker/snice-date-picker.js +1 -1
  46. package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
  47. package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
  48. package/dist/cdn/diff/snice-diff.js +1 -1
  49. package/dist/cdn/divider/snice-divider.js +1 -1
  50. package/dist/cdn/doc/snice-doc.js +1 -1
  51. package/dist/cdn/draw/snice-draw.js +1 -1
  52. package/dist/cdn/drawer/snice-drawer.js +1 -1
  53. package/dist/cdn/empty-state/snice-empty-state.js +1 -1
  54. package/dist/cdn/estimate/snice-estimate.js +1 -1
  55. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  56. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  57. package/dist/cdn/flip-card/snice-flip-card.js +1 -1
  58. package/dist/cdn/flow/snice-flow.js +1 -1
  59. package/dist/cdn/form-layout/snice-form-layout.js +1 -1
  60. package/dist/cdn/funnel/snice-funnel.js +1 -1
  61. package/dist/cdn/gantt/snice-gantt.js +1 -1
  62. package/dist/cdn/gauge/snice-gauge.js +1 -1
  63. package/dist/cdn/grid/snice-grid.js +1 -1
  64. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  65. package/dist/cdn/image/snice-image.js +1 -1
  66. package/dist/cdn/input/snice-input.js +1 -1
  67. package/dist/cdn/invoice/snice-invoice.js +1 -1
  68. package/dist/cdn/kanban/snice-kanban.js +1 -1
  69. package/dist/cdn/key-value/snice-key-value.js +1 -1
  70. package/dist/cdn/kpi/snice-kpi.js +1 -1
  71. package/dist/cdn/layout/snice-layout.js +1 -1
  72. package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
  73. package/dist/cdn/link/snice-link.js +1 -1
  74. package/dist/cdn/link-preview/snice-link-preview.js +1 -1
  75. package/dist/cdn/list/snice-list.js +1 -1
  76. package/dist/cdn/location/snice-location.js +1 -1
  77. package/dist/cdn/login/README.md +1 -1
  78. package/dist/cdn/login/snice-login.js +2 -2
  79. package/dist/cdn/login/snice-login.js.map +1 -1
  80. package/dist/cdn/login/snice-login.min.js +1 -1
  81. package/dist/cdn/login/snice-login.min.js.map +1 -1
  82. package/dist/cdn/map/snice-map.js +1 -1
  83. package/dist/cdn/markdown/snice-markdown.js +1 -1
  84. package/dist/cdn/masonry/snice-masonry.js +1 -1
  85. package/dist/cdn/menu/snice-menu.js +1 -1
  86. package/dist/cdn/message-strip/snice-message-strip.js +1 -1
  87. package/dist/cdn/modal/snice-modal.js +1 -1
  88. package/dist/cdn/music-player/snice-music-player.js +1 -1
  89. package/dist/cdn/nav/snice-nav.js +1 -1
  90. package/dist/cdn/network-graph/snice-network-graph.js +1 -1
  91. package/dist/cdn/notification-center/snice-notification-center.js +1 -1
  92. package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
  93. package/dist/cdn/org-chart/snice-org-chart.js +1 -1
  94. package/dist/cdn/pagination/snice-pagination.js +1 -1
  95. package/dist/cdn/paint/snice-paint.js +1 -1
  96. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
  97. package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
  98. package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
  99. package/dist/cdn/popover/snice-popover.js +1 -1
  100. package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
  101. package/dist/cdn/product-card/snice-product-card.js +1 -1
  102. package/dist/cdn/progress/snice-progress.js +1 -1
  103. package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
  104. package/dist/cdn/qr-code/snice-qr-code.js +1 -1
  105. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  106. package/dist/cdn/radio/snice-radio.js +1 -1
  107. package/dist/cdn/range-slider/snice-range-slider.js +1 -1
  108. package/dist/cdn/rating/snice-rating.js +1 -1
  109. package/dist/cdn/receipt/snice-receipt.js +1 -1
  110. package/dist/cdn/recipe/snice-recipe.js +1 -1
  111. package/dist/cdn/runtime/snice-runtime.esm.js +4 -4
  112. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  113. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  114. package/dist/cdn/runtime/snice-runtime.js +4 -4
  115. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  116. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  117. package/dist/cdn/sankey/snice-sankey.js +1 -1
  118. package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
  119. package/dist/cdn/select/snice-select.js +1 -1
  120. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  121. package/dist/cdn/slider/snice-slider.js +1 -1
  122. package/dist/cdn/sortable/snice-sortable.js +1 -1
  123. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  124. package/dist/cdn/spinner/snice-spinner.js +1 -1
  125. package/dist/cdn/split-button/snice-split-button.js +1 -1
  126. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  127. package/dist/cdn/spotlight/snice-spotlight.js +1 -1
  128. package/dist/cdn/stat-group/snice-stat-group.js +1 -1
  129. package/dist/cdn/step-input/snice-step-input.js +1 -1
  130. package/dist/cdn/stepper/snice-stepper.js +1 -1
  131. package/dist/cdn/switch/snice-switch.js +1 -1
  132. package/dist/cdn/table/README.md +2 -2
  133. package/dist/cdn/table/snice-table.esm.js +71 -4
  134. package/dist/cdn/table/snice-table.esm.js.map +1 -1
  135. package/dist/cdn/table/snice-table.esm.min.js +68 -47
  136. package/dist/cdn/table/snice-table.esm.min.js.map +1 -1
  137. package/dist/cdn/table/snice-table.js +70 -3
  138. package/dist/cdn/table/snice-table.js.map +1 -1
  139. package/dist/cdn/table/snice-table.min.js +53 -32
  140. package/dist/cdn/table/snice-table.min.js.map +1 -1
  141. package/dist/cdn/tabs/snice-tabs.js +1 -1
  142. package/dist/cdn/tag/snice-tag.js +1 -1
  143. package/dist/cdn/tag-input/snice-tag-input.js +1 -1
  144. package/dist/cdn/terminal/snice-terminal.js +1 -1
  145. package/dist/cdn/testimonial/snice-testimonial.js +1 -1
  146. package/dist/cdn/textarea/snice-textarea.js +1 -1
  147. package/dist/cdn/time-picker/snice-time-picker.js +1 -1
  148. package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
  149. package/dist/cdn/timeline/snice-timeline.js +1 -1
  150. package/dist/cdn/timer/snice-timer.js +1 -1
  151. package/dist/cdn/toast/snice-toast.js +1 -1
  152. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  153. package/dist/cdn/tree/snice-tree.js +1 -1
  154. package/dist/cdn/treemap/snice-treemap.js +1 -1
  155. package/dist/cdn/user-card/snice-user-card.js +1 -1
  156. package/dist/cdn/video-player/snice-video-player.js +1 -1
  157. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
  158. package/dist/cdn/waterfall/snice-waterfall.js +1 -1
  159. package/dist/cdn/weather/snice-weather.js +1 -1
  160. package/dist/cdn/work-order/snice-work-order.js +1 -1
  161. package/dist/components/button/snice-button.js +1 -1
  162. package/dist/components/button/snice-button.js.map +1 -1
  163. package/dist/components/table/snice-table.d.ts +9 -0
  164. package/dist/components/table/snice-table.js +68 -1
  165. package/dist/components/table/snice-table.js.map +1 -1
  166. package/dist/components/table/table-keyboard.js +1 -1
  167. package/dist/components/table/table-keyboard.js.map +1 -1
  168. package/dist/index.cjs +1 -1
  169. package/dist/index.esm.js +1 -1
  170. package/dist/index.iife.js +1 -1
  171. package/dist/react/SniceProvider.js +1 -1
  172. package/dist/react/SniceRouter.js +1 -1
  173. package/dist/react/index.js +1 -1
  174. package/dist/react/matchRoute.js +1 -1
  175. package/dist/react/useRequestHandler.js +1 -1
  176. package/dist/symbols.cjs +1 -1
  177. package/dist/symbols.esm.js +1 -1
  178. package/dist/testing-dom.cjs +1 -1
  179. package/dist/testing-dom.esm.js +1 -1
  180. package/dist/transitions.cjs +1 -1
  181. package/dist/transitions.esm.js +1 -1
  182. package/docs/ai/DEVELOPMENT.md +1 -1
  183. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * snice v7.5.1
2
+ * snice v7.6.0
3
3
  * A decorator-driven web component library with routing, controllers, daemons, and 130+ UI components. For better coding-agent results, run npx snice init-ai.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
@@ -3053,7 +3053,7 @@ if(typeof globalThis.Snice==="undefined"){console.warn("[snice] snice-runtime.mi
3053
3053
  return _classThis;
3054
3054
  })();
3055
3055
 
3056
- var cssContent$i = ":host([hidden]){display:none}:host{display:inline-block;position:relative;width:auto;cursor:pointer}:host([disabled]){cursor:not-allowed}:host([justify-text=start]) .button{justify-content:flex-start}:host([justify-text=end]) .button{justify-content:flex-end}:host([justify-text=center]) .button{justify-content:center}.button{display:inline-flex;align-items:center;justify-content:center;width:100%;border:1px solid;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);font-weight:var(--snice-font-weight-medium,500);text-decoration:none;user-select:none;white-space:nowrap;vertical-align:middle;padding:0;box-shadow:var(--snice-shadow-xs,0 1px 2px 0 rgb(0 0 0 / .03));transition:color var(--snice-transition-fast, 150ms) var(--snice-ease-out, cubic-bezier(.22,1,.36,1)),background-color var(--snice-transition-fast, 150ms) var(--snice-ease-out, cubic-bezier(.22,1,.36,1)),border-color var(--snice-transition-fast, 150ms) var(--snice-ease-out, cubic-bezier(.22,1,.36,1)),box-shadow var(--snice-transition-fast, 150ms) var(--snice-ease-out, cubic-bezier(.22,1,.36,1)),transform 180ms var(--snice-ease-spring, cubic-bezier(.34,1.56,.64,1));cursor:inherit;position:relative}.button::before{content:'';position:absolute;inset:0;border-radius:inherit;background:var(--snice-gradient-convex,none);pointer-events:none}.button:active:not(.button--disabled){transition:color 50ms var(--snice-ease-out, ease),background-color 50ms var(--snice-ease-out, ease),border-color 50ms var(--snice-ease-out, ease),box-shadow 50ms var(--snice-ease-out, ease),transform 80ms var(--snice-ease-out, ease);transform:translateY(0) scale(.97)}.button:focus-visible{outline:0;box-shadow:0 0 0 var(--snice-focus-ring-width,2px) var(--snice-focus-ring-color,rgb(59 130 246 / .5))}.button--disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.button--small{font-size:var(--snice-font-size-sm, .875rem);height:2rem;padding:0 var(--snice-spacing-sm,.75rem);border-radius:var(--snice-border-radius-md,.25rem)}.button--medium{font-size:var(--snice-font-size-md, 1rem);height:2.5rem;padding:0 var(--snice-spacing-md,1rem);border-radius:var(--snice-border-radius-md,.25rem)}.button--large{font-size:var(--snice-font-size-lg, 1.125rem);height:3rem;padding:0 var(--snice-spacing-lg,1.5rem);border-radius:var(--snice-border-radius-md,.25rem)}.button--default{background-color:var(--snice-color-surface,rgb(255 255 255));color:var(--snice-color-text,rgb(23 23 23));border-color:var(--snice-color-border,rgb(226 226 226))}.button--default:hover:not(.button--disabled){background-color:var(--snice-color-surface-container-low,rgb(250 250 250));border-color:var(--snice-color-border-hover,rgb(204 204 204));box-shadow:var(--snice-shadow-sm,0 1px 2px 0 rgb(0 0 0 / .05));transform:translateY(-1px)}.button--default:active:not(.button--disabled){background-color:var(--snice-color-surface-container,rgb(248 248 248));border-color:var(--snice-color-border-hover,rgb(204 204 204));box-shadow:var(--snice-shadow-inset-sm,inset 0 1px 2px rgb(0 0 0 / .05));transform:translateY(0) scale(.97)}.button--primary{background-color:var(--snice-color-primary,rgb(37 99 235));color:var(--snice-color-text-inverse,rgb(250 250 250));border-color:var(--snice-color-primary,rgb(37 99 235))}.button--primary:hover:not(.button--disabled){background-color:var(--snice-color-primary-hover,rgb(29 78 216));border-color:var(--snice-color-primary-hover,rgb(29 78 216));box-shadow:var(--snice-shadow-sm,0 1px 2px 0 rgb(0 0 0 / .05));transform:translateY(-1px)}.button--primary:active:not(.button--disabled){background-color:color-mix(in srgb,var(--snice-color-primary,rgb(37 99 235)) 85%,#fff);border-color:color-mix(in srgb,var(--snice-color-primary,rgb(37 99 235)) 85%,#fff);box-shadow:var(--snice-shadow-inset-sm,inset 0 1px 2px rgb(0 0 0 / .05));transform:translateY(0) scale(.97)}.button--success{background-color:var(--snice-color-success,rgb(22 163 74));color:var(--snice-color-text-inverse,rgb(250 250 250));border-color:var(--snice-color-success,rgb(22 163 74))}.button--success:hover:not(.button--disabled){background-color:var(--snice-color-success-hover,rgb(21 128 61));border-color:var(--snice-color-success-hover,rgb(21 128 61));box-shadow:var(--snice-shadow-sm,0 1px 2px 0 rgb(0 0 0 / .05));transform:translateY(-1px)}.button--success:active:not(.button--disabled){background-color:color-mix(in srgb,var(--snice-color-success,rgb(22 163 74)) 85%,#fff);border-color:color-mix(in srgb,var(--snice-color-success,rgb(22 163 74)) 85%,#fff);box-shadow:var(--snice-shadow-inset-sm,inset 0 1px 2px rgb(0 0 0 / .05));transform:translateY(0) scale(.97)}.button--warning{background-color:var(--snice-color-warning,rgb(202 138 4));color:var(--button-warning-text,rgb(69 26 3));border-color:var(--snice-color-warning,rgb(202 138 4))}.button--warning:hover:not(.button--disabled){background-color:var(--snice-color-warning-hover,rgb(161 98 7));border-color:var(--snice-color-warning-hover,rgb(161 98 7));box-shadow:var(--snice-shadow-sm,0 1px 2px 0 rgb(0 0 0 / .05));transform:translateY(-1px)}.button--warning:active:not(.button--disabled){background-color:color-mix(in srgb,var(--snice-color-warning,rgb(202 138 4)) 85%,#fff);border-color:color-mix(in srgb,var(--snice-color-warning,rgb(202 138 4)) 85%,#fff);box-shadow:var(--snice-shadow-inset-sm,inset 0 1px 2px rgb(0 0 0 / .05));transform:translateY(0) scale(.97)}.button--danger{background-color:var(--snice-color-danger,rgb(220 38 38));color:var(--snice-color-text-inverse,rgb(250 250 250));border-color:var(--snice-color-danger,rgb(220 38 38))}.button--danger:hover:not(.button--disabled){background-color:var(--snice-color-danger-hover,rgb(185 28 28));border-color:var(--snice-color-danger-hover,rgb(185 28 28));box-shadow:var(--snice-shadow-sm,0 1px 2px 0 rgb(0 0 0 / .05));transform:translateY(-1px)}.button--danger:active:not(.button--disabled){background-color:color-mix(in srgb,var(--snice-color-danger,rgb(220 38 38)) 85%,#fff);border-color:color-mix(in srgb,var(--snice-color-danger,rgb(220 38 38)) 85%,#fff);box-shadow:var(--snice-shadow-inset-sm,inset 0 1px 2px rgb(0 0 0 / .05));transform:translateY(0) scale(.97)}.button--text{background-color:transparent;color:var(--snice-color-primary,rgb(37 99 235));border-color:transparent;box-shadow:none}.button--text::before{display:none}.button--text:hover:not(.button--disabled){background-color:var(--snice-color-primary-alpha,rgb(37 99 235 / .1));color:var(--snice-color-primary-hover,rgb(29 78 216));box-shadow:none;transform:none}.button--text:active:not(.button--disabled){background-color:var(--snice-color-primary-alpha-strong,rgb(37 99 235 / .15));box-shadow:none;transform:none}.button--outline{box-shadow:none}.button--outline::before{display:none}.button--outline.button--default{background-color:transparent;color:var(--snice-color-text,rgb(23 23 23))}.button--outline.button--primary{background-color:transparent;color:var(--snice-color-primary,rgb(37 99 235))}.button--outline.button--success{background-color:transparent;color:var(--snice-color-success,rgb(22 163 74))}.button--outline.button--warning{background-color:transparent;color:var(--snice-color-warning,rgb(202 138 4))}.button--outline.button--danger{background-color:transparent;color:var(--snice-color-danger,rgb(220 38 38))}.button--outline.button--default:hover:not(.button--disabled){background-color:var(--snice-color-surface-hover,rgb(245 245 245));box-shadow:none;transform:none}.button--outline.button--primary:hover:not(.button--disabled){background-color:var(--snice-color-primary-subtle,rgb(239 246 255));color:var(--snice-color-primary-hover,rgb(29 78 216));box-shadow:none;transform:none}.button--outline.button--success:hover:not(.button--disabled){background-color:var(--snice-color-success-subtle,rgb(220 252 231));color:var(--snice-color-success-hover,rgb(21 128 61));box-shadow:none;transform:none}.button--outline.button--warning:hover:not(.button--disabled){background-color:var(--snice-color-warning-subtle,rgb(254 249 195));color:var(--snice-color-warning-hover,rgb(161 98 7));box-shadow:none;transform:none}.button--outline.button--danger:hover:not(.button--disabled){background-color:var(--snice-color-danger-subtle,rgb(254 226 226));color:var(--snice-color-danger-hover,rgb(185 28 28));box-shadow:none;transform:none}.button--outline:active:not(.button--disabled){background-color:var(--snice-color-primary-subtle-hover,var(--snice-color-surface-active,rgb(235 235 235)));box-shadow:none;transform:none}.button--pill{border-radius:var(--snice-border-radius-pill,9999px)}.button--circle{border-radius:var(--snice-border-radius-circle,50%);width:var(--size);padding:0}.button--small.button--circle{--size:2rem}.button--medium.button--circle{--size:2.5rem}.button--large.button--circle{--size:3rem}.button--loading{position:relative;cursor:wait}.button--loading .label{visibility:hidden}.spinner{display:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:1em;height:1em}.button--loading .spinner{display:block}.spinner::after{content:'';display:block;width:100%;height:100%;box-sizing:border-box;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.icon-slot{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.25em;height:1.25em;line-height:1}.icon-slot:empty{display:none}.icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.25em;height:1.25em;line-height:1}.icon img{width:100%;height:100%;object-fit:contain}.icon svg{width:100%;height:100%}.icon-slot ::slotted(*){display:flex;align-items:center;justify-content:center;font-size:1.25em;line-height:1}.icon-slot ::slotted(svg){width:1.25em;height:1.25em}.icon-slot ::slotted(img){width:1.25em;height:1.25em;object-fit:contain}.button--icon-start .icon,.button--icon-start .icon-slot{margin-right:.5em}.button--icon-end .icon,.button--icon-end .icon-slot{margin-left:.5em}.button--circle .icon,.button--circle .icon-slot{margin:0;transform:none;width:auto;height:auto}.button--circle .icon-slot ::slotted(*){font-size:1.25em;line-height:1;display:flex;align-items:center;justify-content:center}.button--circle .icon-slot ::slotted(svg){width:1.25em;height:1.25em}@media (prefers-reduced-motion:reduce){.icon-slot,.spinner,button,button:active{transition-duration:0s!important;animation-duration:0s!important}button:active{transform:none}}";
3056
+ var cssContent$i = ":host([hidden]){display:none}:host{display:inline-block;position:relative;width:auto;cursor:pointer}:host([disabled]){cursor:not-allowed}:host([justify-text=start]) .button{justify-content:flex-start}:host([justify-text=end]) .button{justify-content:flex-end}:host([justify-text=center]) .button{justify-content:center}.button{display:inline-flex;align-items:center;justify-content:center;width:100%;border:1px solid;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);font-weight:var(--snice-font-weight-medium,500);text-decoration:none;user-select:none;white-space:nowrap;vertical-align:middle;padding:0;box-shadow:var(--snice-shadow-xs,0 1px 2px 0 rgb(0 0 0 / .03));transition:color var(--snice-transition-fast, 150ms) var(--snice-ease-out, cubic-bezier(.22,1,.36,1)),background-color var(--snice-transition-fast, 150ms) var(--snice-ease-out, cubic-bezier(.22,1,.36,1)),border-color var(--snice-transition-fast, 150ms) var(--snice-ease-out, cubic-bezier(.22,1,.36,1)),box-shadow var(--snice-transition-fast, 150ms) var(--snice-ease-out, cubic-bezier(.22,1,.36,1)),transform 180ms var(--snice-ease-spring, cubic-bezier(.34,1.56,.64,1));cursor:inherit;position:relative}.button::before{content:'';position:absolute;inset:0;border-radius:inherit;background:var(--snice-gradient-convex,none);pointer-events:none}.button:active:not(.button--disabled){transition:color 50ms var(--snice-ease-out, ease),background-color 50ms var(--snice-ease-out, ease),border-color 50ms var(--snice-ease-out, ease),box-shadow 50ms var(--snice-ease-out, ease),transform 80ms var(--snice-ease-out, ease);transform:translateY(0) scale(.97)}.button:focus-visible{outline:0;box-shadow:0 0 0 var(--snice-focus-ring-width,2px) var(--snice-focus-ring-color,rgb(59 130 246 / .5))}.button--disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.button--small{font-size:var(--snice-font-size-sm, .875rem);height:2rem;padding:0 var(--snice-spacing-sm,.75rem);border-radius:var(--snice-border-radius-md,.25rem)}.button--medium{font-size:var(--snice-font-size-md, 1rem);height:2.5rem;padding:0 var(--snice-spacing-md,1rem);border-radius:var(--snice-border-radius-md,.25rem)}.button--large{font-size:var(--snice-font-size-lg, 1.125rem);height:3rem;padding:0 var(--snice-spacing-lg,1.5rem);border-radius:var(--snice-border-radius-md,.25rem)}.button--default{background-color:var(--snice-color-surface,rgb(255 255 255));color:var(--snice-color-text,rgb(23 23 23));border-color:var(--snice-color-border,rgb(226 226 226))}.button--default:hover:not(.button--disabled){background-color:var(--snice-color-surface-container-low,rgb(250 250 250));border-color:var(--snice-color-border-hover,rgb(204 204 204));box-shadow:var(--snice-shadow-sm,0 1px 2px 0 rgb(0 0 0 / .05));transform:translateY(-1px)}.button--default:active:not(.button--disabled){background-color:var(--snice-color-surface-container,rgb(248 248 248));border-color:var(--snice-color-border-hover,rgb(204 204 204));box-shadow:var(--snice-shadow-inset-sm,inset 0 1px 2px rgb(0 0 0 / .05));transform:translateY(0) scale(.97)}.button--primary{background-color:var(--snice-color-primary,rgb(37 99 235));color:var(--snice-color-text-inverse,rgb(250 250 250));border-color:var(--snice-color-primary,rgb(37 99 235))}.button--primary:hover:not(.button--disabled){background-color:var(--snice-color-primary-hover,rgb(29 78 216));border-color:var(--snice-color-primary-hover,rgb(29 78 216));box-shadow:var(--snice-shadow-sm,0 1px 2px 0 rgb(0 0 0 / .05));transform:translateY(-1px)}.button--primary:active:not(.button--disabled){background-color:color-mix(in srgb,var(--snice-color-primary,rgb(37 99 235)) 85%,#fff);border-color:color-mix(in srgb,var(--snice-color-primary,rgb(37 99 235)) 85%,#fff);box-shadow:var(--snice-shadow-inset-sm,inset 0 1px 2px rgb(0 0 0 / .05));transform:translateY(0) scale(.97)}.button--success{background-color:var(--snice-color-success,rgb(22 163 74));color:var(--snice-color-text-inverse,rgb(250 250 250));border-color:var(--snice-color-success,rgb(22 163 74))}.button--success:hover:not(.button--disabled){background-color:var(--snice-color-success-hover,rgb(21 128 61));border-color:var(--snice-color-success-hover,rgb(21 128 61));box-shadow:var(--snice-shadow-sm,0 1px 2px 0 rgb(0 0 0 / .05));transform:translateY(-1px)}.button--success:active:not(.button--disabled){background-color:color-mix(in srgb,var(--snice-color-success,rgb(22 163 74)) 85%,#fff);border-color:color-mix(in srgb,var(--snice-color-success,rgb(22 163 74)) 85%,#fff);box-shadow:var(--snice-shadow-inset-sm,inset 0 1px 2px rgb(0 0 0 / .05));transform:translateY(0) scale(.97)}.button--warning{background-color:var(--snice-color-warning,rgb(202 138 4));color:var(--button-warning-text,rgb(69 26 3));border-color:var(--snice-color-warning,rgb(202 138 4))}.button--warning:hover:not(.button--disabled){background-color:var(--snice-color-warning-hover,rgb(161 98 7));border-color:var(--snice-color-warning-hover,rgb(161 98 7));box-shadow:var(--snice-shadow-sm,0 1px 2px 0 rgb(0 0 0 / .05));transform:translateY(-1px)}.button--warning:active:not(.button--disabled){background-color:color-mix(in srgb,var(--snice-color-warning,rgb(202 138 4)) 85%,#fff);border-color:color-mix(in srgb,var(--snice-color-warning,rgb(202 138 4)) 85%,#fff);box-shadow:var(--snice-shadow-inset-sm,inset 0 1px 2px rgb(0 0 0 / .05));transform:translateY(0) scale(.97)}.button--danger{background-color:var(--snice-color-danger,rgb(220 38 38));color:var(--snice-color-text-inverse,rgb(250 250 250));border-color:var(--snice-color-danger,rgb(220 38 38))}.button--danger:hover:not(.button--disabled){background-color:var(--snice-color-danger-hover,rgb(185 28 28));border-color:var(--snice-color-danger-hover,rgb(185 28 28));box-shadow:var(--snice-shadow-sm,0 1px 2px 0 rgb(0 0 0 / .05));transform:translateY(-1px)}.button--danger:active:not(.button--disabled){background-color:color-mix(in srgb,var(--snice-color-danger,rgb(220 38 38)) 85%,#fff);border-color:color-mix(in srgb,var(--snice-color-danger,rgb(220 38 38)) 85%,#fff);box-shadow:var(--snice-shadow-inset-sm,inset 0 1px 2px rgb(0 0 0 / .05));transform:translateY(0) scale(.97)}.button--text{background-color:transparent;color:var(--snice-color-primary,rgb(37 99 235));border-color:transparent;box-shadow:none}.button--text::before{display:none}.button--text:hover:not(.button--disabled){background-color:var(--snice-color-primary-alpha,rgb(37 99 235 / .1));color:var(--snice-color-primary-hover,rgb(29 78 216));box-shadow:none;transform:none}.button--text:active:not(.button--disabled){background-color:var(--snice-color-primary-alpha-strong,rgb(37 99 235 / .15));box-shadow:none;transform:none}.button--outline{box-shadow:none}.button--outline::before{display:none}.button--outline.button--default{background-color:transparent;color:var(--snice-color-text,rgb(23 23 23))}.button--outline.button--primary{background-color:transparent;color:var(--snice-color-primary,rgb(37 99 235))}.button--outline.button--success{background-color:transparent;color:var(--snice-color-success,rgb(22 163 74))}.button--outline.button--warning{background-color:transparent;color:var(--snice-color-warning,rgb(202 138 4))}.button--outline.button--danger{background-color:transparent;color:var(--snice-color-danger,rgb(220 38 38))}.button--outline.button--default:hover:not(.button--disabled){background-color:var(--snice-color-surface-hover,rgb(245 245 245));box-shadow:none;transform:none}.button--outline.button--primary:hover:not(.button--disabled){background-color:var(--snice-color-primary-subtle,rgb(239 246 255));color:var(--snice-color-primary-hover,rgb(29 78 216));box-shadow:none;transform:none}.button--outline.button--success:hover:not(.button--disabled){background-color:var(--snice-color-success-subtle,rgb(220 252 231));color:var(--snice-color-success-hover,rgb(21 128 61));box-shadow:none;transform:none}.button--outline.button--warning:hover:not(.button--disabled){background-color:var(--snice-color-warning-subtle,rgb(254 249 195));color:var(--snice-color-warning-hover,rgb(161 98 7));box-shadow:none;transform:none}.button--outline.button--danger:hover:not(.button--disabled){background-color:var(--snice-color-danger-subtle,rgb(254 226 226));color:var(--snice-color-danger-hover,rgb(185 28 28));box-shadow:none;transform:none}.button--outline:active:not(.button--disabled){background-color:var(--snice-color-primary-subtle-hover,var(--snice-color-surface-active,rgb(235 235 235)));box-shadow:none;transform:none}.button--pill{border-radius:var(--snice-border-radius-pill,9999px)}.button--circle{border-radius:var(--snice-border-radius-circle,50%);width:var(--size);padding:0}.button--small.button--circle{--size:2rem}.button--medium.button--circle{--size:2.5rem}.button--large.button--circle{--size:3rem}.button--loading{position:relative;cursor:wait}.button--loading .label{visibility:hidden}.spinner{display:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:1em;height:1em}.button--loading .spinner{display:block}.spinner::after{content:'';display:block;width:100%;height:100%;box-sizing:border-box;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.icon-slot{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.25em;height:1.25em;line-height:1}.icon-slot:empty{display:none}.icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.25em;height:1.25em;line-height:1}.icon img{width:100%;height:100%;object-fit:contain}.icon svg{width:100%;height:100%}.icon-slot ::slotted(*){display:flex;align-items:center;justify-content:center;font-size:1.25em;line-height:1}.icon-slot ::slotted(svg){width:1.25em;height:1.25em}.icon-slot ::slotted(img){width:1.25em;height:1.25em;object-fit:contain}.button--icon-start .icon,.button--icon-start .icon-slot{margin-right:.5em}.button--icon-end .icon,.button--icon-end .icon-slot{margin-left:.5em}.button--circle .icon,.button--circle .icon-slot{margin:0;transform:none;width:auto;height:auto}.button--circle .icon svg{width:1.25em;height:1.25em}.button--circle .icon-slot ::slotted(*){font-size:1.25em;line-height:1;display:flex;align-items:center;justify-content:center}.button--circle .icon-slot ::slotted(svg){width:1.25em;height:1.25em}@media (prefers-reduced-motion:reduce){.icon-slot,.spinner,button,button:active{transition-duration:0s!important;animation-duration:0s!important}button:active{transform:none}}";
3057
3057
 
3058
3058
  (() => {
3059
3059
  let _classDecorators = [snice.element('snice-button', { formAssociated: true, delegatesFocus: true })];
@@ -10937,7 +10937,7 @@ if(typeof globalThis.Snice==="undefined"){console.warn("[snice] snice-runtime.mi
10937
10937
  });
10938
10938
  }
10939
10939
  // Body rows
10940
- const bodyRows = table.querySelectorAll('tbody tr:not(.virtual-spacer)');
10940
+ const bodyRows = table.querySelectorAll('tbody tr:not(.virtual-spacer):not(.table-fill-row)');
10941
10941
  bodyRows.forEach((row, i) => {
10942
10942
  row.setAttribute('role', 'row');
10943
10943
  row.setAttribute('aria-rowindex', String(this.ariaRowOffset + i + 2)); // +2 for 1-based + header
@@ -13193,6 +13193,7 @@ if(typeof globalThis.Snice==="undefined"){console.warn("[snice] snice-runtime.mi
13193
13193
  let _getTableData_decorators;
13194
13194
  let _styles_decorators;
13195
13195
  let _render_decorators;
13196
+ let _handleFrameResize_decorators;
13196
13197
  let _initialize_decorators;
13197
13198
  let _handleDeclarativeColumnChange_decorators;
13198
13199
  let _handleSelectorOptionsChange_decorators;
@@ -13290,6 +13291,7 @@ if(typeof globalThis.Snice==="undefined"){console.warn("[snice] snice-runtime.mi
13290
13291
  _getTableData_decorators = [snice.request('table/data')];
13291
13292
  _styles_decorators = [snice.styles()];
13292
13293
  _render_decorators = [snice.render()];
13294
+ _handleFrameResize_decorators = [snice.observe('resize', '.table-frame')];
13293
13295
  _initialize_decorators = [snice.ready()];
13294
13296
  _handleDeclarativeColumnChange_decorators = [snice.on('column-changed')];
13295
13297
  _handleSelectorOptionsChange_decorators = [snice.watch('selectorOptions')];
@@ -13338,6 +13340,7 @@ if(typeof globalThis.Snice==="undefined"){console.warn("[snice] snice-runtime.mi
13338
13340
  __esDecorate(this, null, _getTableData_decorators, { kind: "method", name: "getTableData", static: false, private: false, access: { has: obj => "getTableData" in obj, get: obj => obj.getTableData }, metadata: _metadata }, null, _instanceExtraInitializers);
13339
13341
  __esDecorate(this, null, _styles_decorators, { kind: "method", name: "styles", static: false, private: false, access: { has: obj => "styles" in obj, get: obj => obj.styles }, metadata: _metadata }, null, _instanceExtraInitializers);
13340
13342
  __esDecorate(this, null, _render_decorators, { kind: "method", name: "render", static: false, private: false, access: { has: obj => "render" in obj, get: obj => obj.render }, metadata: _metadata }, null, _instanceExtraInitializers);
13343
+ __esDecorate(this, null, _handleFrameResize_decorators, { kind: "method", name: "handleFrameResize", static: false, private: false, access: { has: obj => "handleFrameResize" in obj, get: obj => obj.handleFrameResize }, metadata: _metadata }, null, _instanceExtraInitializers);
13341
13344
  __esDecorate(this, null, _initialize_decorators, { kind: "method", name: "initialize", static: false, private: false, access: { has: obj => "initialize" in obj, get: obj => obj.initialize }, metadata: _metadata }, null, _instanceExtraInitializers);
13342
13345
  __esDecorate(this, null, _handleDeclarativeColumnChange_decorators, { kind: "method", name: "handleDeclarativeColumnChange", static: false, private: false, access: { has: obj => "handleDeclarativeColumnChange" in obj, get: obj => obj.handleDeclarativeColumnChange }, metadata: _metadata }, null, _instanceExtraInitializers);
13343
13346
  __esDecorate(this, null, _handleSelectorOptionsChange_decorators, { kind: "method", name: "handleSelectorOptionsChange", static: false, private: false, access: { has: obj => "handleSelectorOptionsChange" in obj, get: obj => obj.handleSelectorOptionsChange }, metadata: _metadata }, null, _instanceExtraInitializers);
@@ -13656,6 +13659,27 @@ if(typeof globalThis.Snice==="undefined"){console.warn("[snice] snice-runtime.mi
13656
13659
  border-bottom: none;
13657
13660
  }
13658
13661
 
13662
+ /* Height fill: when the host is taller than its rows, an inert filler
13663
+ row (cloned from the last data row, so column widths and pinning
13664
+ track the table engine) keeps the column grid running to the bottom
13665
+ edge instead of the borders cutting off where the rows end. */
13666
+ tbody tr.table-fill-row {
13667
+ pointer-events: none;
13668
+ }
13669
+
13670
+ tbody tr.table-fill-row td {
13671
+ border-bottom: none;
13672
+ padding: 0;
13673
+ }
13674
+
13675
+ :host([striped]) tbody tr.table-fill-row {
13676
+ background: transparent;
13677
+ }
13678
+
13679
+ :host([hoverable]) tbody tr.table-fill-row:hover {
13680
+ background: transparent;
13681
+ }
13682
+
13659
13683
  th {
13660
13684
  padding: var(--snice-spacing-sm, 0.75rem) var(--snice-spacing-sm, 0.75rem);
13661
13685
  }
@@ -14679,6 +14703,11 @@ if(typeof globalThis.Snice==="undefined"){console.warn("[snice] snice-runtime.mi
14679
14703
  }
14680
14704
  container.appendChild(controlsDiv);
14681
14705
  }
14706
+ // Re-derive the fill row whenever the frame's box changes (host resized,
14707
+ // fullscreen toggled) — the leftover space below the rows changes with it.
14708
+ handleFrameResize() {
14709
+ this.updateFillRow();
14710
+ }
14682
14711
  async initialize() {
14683
14712
  // Listen for controller attached event
14684
14713
  this.addEventListener('controller-attached', this.onAttached);
@@ -15657,6 +15686,44 @@ if(typeof globalThis.Snice==="undefined"){console.warn("[snice] snice-runtime.mi
15657
15686
  if (this.pagination) {
15658
15687
  this.renderPagination();
15659
15688
  }
15689
+ this.updateFillRow();
15690
+ }
15691
+ /**
15692
+ * When the host is taller than its rows, append an inert filler row so the
15693
+ * column grid runs to the bottom edge of the frame. Cloned from the last
15694
+ * data row, so column widths, pinning, and alignment track the table
15695
+ * engine natively. Removed entirely when content fills (or overflows) the
15696
+ * frame, restoring the plain last-row styling.
15697
+ */
15698
+ updateFillRow() {
15699
+ const frame = this.shadowRoot?.querySelector('.table-frame');
15700
+ const tableEl = frame?.querySelector('table');
15701
+ const tbody = tableEl?.querySelector('tbody');
15702
+ if (!frame || !tableEl || !tbody)
15703
+ return;
15704
+ tbody.querySelector('tr.table-fill-row')?.remove();
15705
+ if (this.list && this.listRenderer)
15706
+ return;
15707
+ const rows = tbody.querySelectorAll('tr[data-index]');
15708
+ const lastRow = rows[rows.length - 1];
15709
+ if (!lastRow)
15710
+ return;
15711
+ const leftover = Math.floor(frame.clientHeight - tableEl.offsetHeight);
15712
+ if (leftover <= 1)
15713
+ return;
15714
+ const fill = lastRow.cloneNode(true);
15715
+ fill.className = 'table-fill-row';
15716
+ for (const attr of ['data-index', 'data-selected', 'role', 'aria-rowindex', 'aria-selected', 'tabindex', 'id']) {
15717
+ fill.removeAttribute(attr);
15718
+ }
15719
+ fill.setAttribute('aria-hidden', 'true');
15720
+ fill.querySelectorAll('td').forEach(td => {
15721
+ td.replaceChildren();
15722
+ for (const attr of ['role', 'aria-colindex', 'tabindex', 'aria-selected'])
15723
+ td.removeAttribute(attr);
15724
+ });
15725
+ fill.style.height = `${leftover}px`;
15726
+ tbody.appendChild(fill);
15660
15727
  }
15661
15728
  // ── Task B: render-path reconciler ──────────────────────────────────────
15662
15729
  //