@norconsult-digital-public/isypixel 2.0.2 → 2.0.4-canary.1

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 (241) hide show
  1. package/LICENSE.md +11 -0
  2. package/dist/docs/web-components/ip-avatar/llm.md +176 -0
  3. package/dist/docs/web-components/ip-avatar-stack/llm.md +171 -0
  4. package/dist/{web-components/components → docs/web-components}/ip-button/llm.md +17 -10
  5. package/dist/docs/web-components/ip-card/llm.md +209 -0
  6. package/dist/docs/web-components/ip-chip/llm.md +157 -0
  7. package/dist/docs/web-components/ip-chip-group/llm.md +165 -0
  8. package/dist/docs/web-components/ip-date-display/llm.md +161 -0
  9. package/dist/docs/web-components/ip-exp-data-grid/llm.md +598 -0
  10. package/dist/docs/web-components/ip-exp-data-grid-action/llm.md +193 -0
  11. package/dist/docs/web-components/ip-exp-data-grid-card/llm.md +133 -0
  12. package/dist/docs/web-components/ip-exp-data-grid-column/llm.md +178 -0
  13. package/dist/docs/web-components/ip-exp-data-grid-column-group/llm.md +181 -0
  14. package/dist/docs/web-components/ip-exp-date-picker/llm.md +287 -0
  15. package/dist/docs/web-components/ip-exp-dialog/llm.md +188 -0
  16. package/dist/docs/web-components/ip-exp-dropdown-menu/llm.md +232 -0
  17. package/dist/docs/web-components/ip-exp-dropdown-menu-item/llm.md +177 -0
  18. package/dist/docs/web-components/ip-exp-filter-builder/llm.md +212 -0
  19. package/dist/docs/web-components/ip-exp-split-button/llm.md +211 -0
  20. package/dist/docs/web-components/ip-exp-switch/llm.md +143 -0
  21. package/dist/docs/web-components/ip-exp-value-list/llm.md +175 -0
  22. package/dist/docs/web-components/ip-icon-button/llm.md +114 -0
  23. package/dist/docs/web-components/ip-icon-count/llm.md +126 -0
  24. package/dist/docs/web-components/ip-main-menu/llm.md +219 -0
  25. package/dist/docs/web-components/ip-main-menu-group/llm.md +114 -0
  26. package/dist/docs/web-components/ip-main-menu-item/llm.md +104 -0
  27. package/dist/docs/web-components/ip-main-menu-section/llm.md +95 -0
  28. package/dist/docs/web-components/ip-main-menu-toggle/llm.md +106 -0
  29. package/dist/docs/web-components/ip-status-marker/llm.md +87 -0
  30. package/dist/docs/web-components/ip-tooltip/llm.md +174 -0
  31. package/dist/docs/web-components/services/i18n/llm.md +151 -0
  32. package/dist/docs/web-components/services/locale/llm.md +62 -0
  33. package/dist/llm.md +68 -10
  34. package/dist/types/components/ip-avatar/ip-avatar.d.ts +105 -0
  35. package/dist/types/components/ip-avatar-stack/ip-avatar-stack.d.ts +102 -0
  36. package/dist/types/components/ip-button/ip-button.d.ts +2 -0
  37. package/dist/types/components/ip-card/ip-card.d.ts +56 -0
  38. package/dist/types/components/ip-chip/ip-chip.d.ts +67 -0
  39. package/dist/types/components/ip-chip-group/ip-chip-group.d.ts +80 -0
  40. package/dist/types/components/ip-date-display/i18n.d.ts +4 -0
  41. package/dist/types/components/ip-date-display/ip-date-display.d.ts +29 -0
  42. package/dist/types/components/ip-icon-button/ip-icon-button.d.ts +35 -0
  43. package/dist/types/components/ip-icon-count/ip-icon-count.d.ts +14 -0
  44. package/dist/types/components/ip-main-menu/i18n.d.ts +8 -0
  45. package/dist/types/components/ip-main-menu/ip-main-menu-drawer-styles.d.ts +1 -0
  46. package/dist/types/components/ip-main-menu/ip-main-menu-state-store.d.ts +24 -0
  47. package/dist/types/components/ip-main-menu/ip-main-menu.d.ts +81 -0
  48. package/dist/types/components/ip-main-menu-group/ip-main-menu-group.d.ts +20 -0
  49. package/dist/types/components/ip-main-menu-item/ip-main-menu-item.d.ts +21 -0
  50. package/dist/types/components/ip-main-menu-section/ip-main-menu-section.d.ts +7 -0
  51. package/dist/types/components/ip-main-menu-toggle/i18n.d.ts +4 -0
  52. package/dist/types/components/ip-main-menu-toggle/ip-main-menu-toggle.d.ts +18 -0
  53. package/dist/types/components/ip-status-marker/ip-status-marker.d.ts +11 -0
  54. package/dist/types/components/ip-tooltip/ip-tooltip.d.ts +146 -0
  55. package/dist/types/components.d.ts +3725 -37
  56. package/dist/types/experimental/components/ip-exp-data-grid/i18n.d.ts +183 -0
  57. package/dist/types/experimental/components/ip-exp-data-grid/ip-exp-data-grid-dataset.d.ts +63 -0
  58. package/dist/types/experimental/components/ip-exp-data-grid/ip-exp-data-grid-date-format.d.ts +20 -0
  59. package/dist/types/experimental/components/ip-exp-data-grid/ip-exp-data-grid-filter-text.d.ts +25 -0
  60. package/dist/types/experimental/components/ip-exp-data-grid/ip-exp-data-grid-setup.d.ts +187 -0
  61. package/dist/types/experimental/components/ip-exp-data-grid/ip-exp-data-grid-template.d.ts +78 -0
  62. package/dist/types/experimental/components/ip-exp-data-grid/ip-exp-data-grid-value-type.d.ts +29 -0
  63. package/dist/types/experimental/components/ip-exp-data-grid/ip-exp-data-grid.d.ts +1262 -0
  64. package/dist/types/experimental/components/ip-exp-data-grid-action/ip-exp-data-grid-action.d.ts +37 -0
  65. package/dist/types/experimental/components/ip-exp-data-grid-card/ip-exp-data-grid-card.d.ts +38 -0
  66. package/dist/types/experimental/components/ip-exp-data-grid-column/ip-exp-data-grid-column.d.ts +72 -0
  67. package/dist/types/experimental/components/ip-exp-data-grid-column-group/ip-exp-data-grid-column-group.d.ts +21 -0
  68. package/dist/types/experimental/components/ip-exp-date-picker/date-picker-model.d.ts +113 -0
  69. package/dist/types/experimental/components/ip-exp-date-picker/i18n.d.ts +44 -0
  70. package/dist/types/experimental/components/ip-exp-date-picker/ip-exp-date-picker.d.ts +307 -0
  71. package/dist/types/experimental/components/ip-exp-dialog/i18n.d.ts +7 -0
  72. package/dist/types/experimental/components/ip-exp-dialog/ip-exp-dialog.d.ts +92 -0
  73. package/dist/types/experimental/components/ip-exp-dropdown-menu/ip-exp-dropdown-menu.d.ts +113 -0
  74. package/dist/types/experimental/components/ip-exp-dropdown-menu-item/ip-exp-dropdown-menu-item.d.ts +33 -0
  75. package/dist/types/experimental/components/ip-exp-filter-builder/i18n.d.ts +65 -0
  76. package/dist/types/experimental/components/ip-exp-filter-builder/ip-exp-filter-builder.d.ts +152 -0
  77. package/dist/types/experimental/components/ip-exp-split-button/i18n.d.ts +7 -0
  78. package/dist/types/experimental/components/ip-exp-split-button/ip-exp-split-button.d.ts +69 -0
  79. package/dist/types/experimental/components/ip-exp-switch/ip-exp-switch.d.ts +74 -0
  80. package/dist/types/experimental/components/ip-exp-value-list/i18n.d.ts +17 -0
  81. package/dist/types/experimental/components/ip-exp-value-list/ip-exp-value-list.d.ts +48 -0
  82. package/dist/types/experimental/grid-engine/aggregate.d.ts +30 -0
  83. package/dist/types/experimental/grid-engine/bitset.d.ts +50 -0
  84. package/dist/types/experimental/grid-engine/collation.d.ts +19 -0
  85. package/dist/types/experimental/grid-engine/column-builder.d.ts +27 -0
  86. package/dist/types/experimental/grid-engine/column-expression.d.ts +40 -0
  87. package/dist/types/experimental/grid-engine/column-store.d.ts +71 -0
  88. package/dist/types/experimental/grid-engine/display-store.d.ts +39 -0
  89. package/dist/types/experimental/grid-engine/facets.d.ts +27 -0
  90. package/dist/types/experimental/grid-engine/filter-ast.d.ts +40 -0
  91. package/dist/types/experimental/grid-engine/filter-builder-model.d.ts +117 -0
  92. package/dist/types/experimental/grid-engine/filter-eval.d.ts +15 -0
  93. package/dist/types/experimental/grid-engine/grouping.d.ts +62 -0
  94. package/dist/types/experimental/grid-engine/highlight.d.ts +29 -0
  95. package/dist/types/experimental/grid-engine/line-metrics.d.ts +37 -0
  96. package/dist/types/experimental/grid-engine/naive-search.d.ts +29 -0
  97. package/dist/types/experimental/grid-engine/query-parser.d.ts +51 -0
  98. package/dist/types/experimental/grid-engine/search.d.ts +35 -0
  99. package/dist/types/experimental/grid-engine/sort.d.ts +34 -0
  100. package/dist/types/experimental/index.d.ts +33 -0
  101. package/dist/types/experimental/shared/field/field-frame.d.ts +43 -0
  102. package/dist/types/experimental/shared/field/i18n.d.ts +14 -0
  103. package/dist/types/home/runner/work/pixel/pixel/.stencil/utils/abbreviate-name.d.ts +2 -0
  104. package/dist/types/home/runner/work/pixel/pixel/.stencil/utils/get-initials.d.ts +2 -0
  105. package/dist/types/home/runner/work/pixel/pixel/.stencil/utils/icons.d.ts +102 -0
  106. package/dist/types/home/runner/work/pixel/pixel/.stencil/utils/media-query.d.ts +2 -0
  107. package/dist/types/home/runner/work/pixel/pixel/.stencil/utils/xlsx.d.ts +36 -0
  108. package/dist/types/home/runner/work/pixel/pixel/.stencil/utils/zip.d.ts +18 -0
  109. package/dist/types/index.d.ts +21 -0
  110. package/dist/types/services/i18n/i18n.d.ts +134 -0
  111. package/dist/types/services/index.d.ts +5 -0
  112. package/dist/types/services/locale/locale.d.ts +23 -0
  113. package/dist/types/stencil-public-runtime.d.ts +74 -55
  114. package/dist/web-components/components/experimental.js +19 -0
  115. package/dist/web-components/components/index.js +1 -1
  116. package/dist/web-components/components/ip-avatar-stack.d.ts +11 -0
  117. package/dist/web-components/components/ip-avatar-stack.js +1 -0
  118. package/dist/web-components/components/ip-avatar.d.ts +11 -0
  119. package/dist/web-components/components/ip-avatar.js +1 -0
  120. package/dist/web-components/components/ip-button.js +1 -1
  121. package/dist/web-components/components/ip-card.d.ts +11 -0
  122. package/dist/web-components/components/ip-card.js +1 -0
  123. package/dist/web-components/components/ip-chip-group.d.ts +11 -0
  124. package/dist/web-components/components/ip-chip-group.js +1 -0
  125. package/dist/web-components/components/ip-chip.d.ts +11 -0
  126. package/dist/web-components/components/ip-chip.js +1 -0
  127. package/dist/web-components/components/ip-date-display.d.ts +11 -0
  128. package/dist/web-components/components/ip-date-display.js +1 -0
  129. package/dist/web-components/components/ip-exp-data-grid-action.d.ts +11 -0
  130. package/dist/web-components/components/ip-exp-data-grid-action.js +1 -0
  131. package/dist/web-components/components/ip-exp-data-grid-card.d.ts +11 -0
  132. package/dist/web-components/components/ip-exp-data-grid-card.js +1 -0
  133. package/dist/web-components/components/ip-exp-data-grid-column-group.d.ts +11 -0
  134. package/dist/web-components/components/ip-exp-data-grid-column-group.js +1 -0
  135. package/dist/web-components/components/ip-exp-data-grid-column.d.ts +11 -0
  136. package/dist/web-components/components/ip-exp-data-grid-column.js +1 -0
  137. package/dist/web-components/components/ip-exp-data-grid.d.ts +11 -0
  138. package/dist/web-components/components/ip-exp-data-grid.js +1 -0
  139. package/dist/web-components/components/ip-exp-date-picker.d.ts +11 -0
  140. package/dist/web-components/components/ip-exp-date-picker.js +1 -0
  141. package/dist/web-components/components/ip-exp-dialog.d.ts +11 -0
  142. package/dist/web-components/components/ip-exp-dialog.js +1 -0
  143. package/dist/web-components/components/ip-exp-dropdown-menu-item.d.ts +11 -0
  144. package/dist/web-components/components/ip-exp-dropdown-menu-item.js +1 -0
  145. package/dist/web-components/components/ip-exp-dropdown-menu.d.ts +11 -0
  146. package/dist/web-components/components/ip-exp-dropdown-menu.js +1 -0
  147. package/dist/web-components/components/ip-exp-filter-builder.d.ts +11 -0
  148. package/dist/web-components/components/ip-exp-filter-builder.js +1 -0
  149. package/dist/web-components/components/ip-exp-split-button.d.ts +11 -0
  150. package/dist/web-components/components/ip-exp-split-button.js +1 -0
  151. package/dist/web-components/components/ip-exp-switch.d.ts +11 -0
  152. package/dist/web-components/components/ip-exp-switch.js +1 -0
  153. package/dist/web-components/components/ip-exp-value-list.d.ts +11 -0
  154. package/dist/web-components/components/ip-exp-value-list.js +1 -0
  155. package/dist/web-components/components/ip-icon-button.d.ts +11 -0
  156. package/dist/web-components/components/ip-icon-button.js +1 -0
  157. package/dist/web-components/components/ip-icon-count.d.ts +11 -0
  158. package/dist/web-components/components/ip-icon-count.js +1 -0
  159. package/dist/web-components/components/ip-main-menu-group.d.ts +11 -0
  160. package/dist/web-components/components/ip-main-menu-group.js +1 -0
  161. package/dist/web-components/components/ip-main-menu-item.d.ts +11 -0
  162. package/dist/web-components/components/ip-main-menu-item.js +1 -0
  163. package/dist/web-components/components/ip-main-menu-section.d.ts +11 -0
  164. package/dist/web-components/components/ip-main-menu-section.js +1 -0
  165. package/dist/web-components/components/ip-main-menu-toggle.d.ts +11 -0
  166. package/dist/web-components/components/ip-main-menu-toggle.js +1 -0
  167. package/dist/web-components/components/ip-main-menu.d.ts +11 -0
  168. package/dist/web-components/components/ip-main-menu.js +1 -0
  169. package/dist/web-components/components/ip-status-marker.d.ts +11 -0
  170. package/dist/web-components/components/ip-status-marker.js +1 -0
  171. package/dist/web-components/components/ip-tooltip.d.ts +11 -0
  172. package/dist/web-components/components/ip-tooltip.js +1 -0
  173. package/dist/web-components/components/p-02Eg1K7Q.js +1 -0
  174. package/dist/web-components/components/p-5lZKL5pU.js +1 -0
  175. package/dist/web-components/components/p-AtiL0xkH.js +1 -0
  176. package/dist/web-components/components/p-B2RTQjbv.js +1 -0
  177. package/dist/web-components/components/p-B7Q0nRIB.js +1 -0
  178. package/dist/web-components/components/p-B8cVaSkf.js +1 -0
  179. package/dist/web-components/components/p-BAVZt5eT.js +1 -0
  180. package/dist/web-components/components/p-BTJLJGxK.js +1 -0
  181. package/dist/web-components/components/p-BaH0ljF8.js +1 -0
  182. package/dist/web-components/components/p-BoqD_XeW.js +1 -0
  183. package/dist/web-components/components/p-BwPaf8qV.js +1 -0
  184. package/dist/web-components/components/p-C-Yd0XyR.js +1 -0
  185. package/dist/web-components/components/p-CFslB2MQ.js +1 -0
  186. package/dist/web-components/components/p-CQV0Bd67.js +1 -0
  187. package/dist/web-components/components/p-CRSkf66C.js +1 -0
  188. package/dist/web-components/components/p-CTPpnp37.js +1 -0
  189. package/dist/web-components/components/p-CXYeHWa6.js +1 -0
  190. package/dist/web-components/components/p-D3ETab0i.js +1 -0
  191. package/dist/web-components/components/p-D71ISsQB.js +3 -0
  192. package/dist/web-components/components/p-DF5j2lnn.js +1 -0
  193. package/dist/web-components/components/p-DYQlk5p6.js +1 -0
  194. package/dist/web-components/components/p-DbAi7XJ5.js +1 -0
  195. package/dist/web-components/components/p-Ddl5OmIu.js +1 -0
  196. package/dist/web-components/components/p-DeFo15B6.js +1 -0
  197. package/dist/web-components/components/p-DefPpKsB.js +1 -0
  198. package/dist/web-components/components/p-RuitbCll.js +1 -0
  199. package/dist/web-components/components/p-VIl8XMWC.js +1 -0
  200. package/dist/web-components/components/p-W1LNEheS.js +1 -0
  201. package/dist/web-components/components/p-i-bxsOWr.js +1 -0
  202. package/dist/web-components/components/p-rLlqXPAQ.js +1 -0
  203. package/dist/web-components/components/p-vAp9QwI5.js +1 -0
  204. package/dist/web-components/generated/angular/angular-component-lib/boolean-attribute.d.ts +35 -0
  205. package/dist/web-components/generated/angular/angular-component-lib/boolean-attribute.js +42 -0
  206. package/dist/web-components/generated/angular/angular-component-lib/boolean-attribute.ts +43 -0
  207. package/dist/web-components/generated/angular/boolean-value-accessor.d.ts +9 -0
  208. package/dist/web-components/generated/angular/boolean-value-accessor.js +37 -0
  209. package/dist/web-components/generated/angular/components.d.ts +1435 -2
  210. package/dist/web-components/generated/angular/components.js +2106 -6
  211. package/dist/web-components/generated/angular/experimental.d.ts +9 -0
  212. package/dist/web-components/generated/angular/experimental.js +9 -0
  213. package/dist/web-components/generated/angular/index.d.ts +1 -1
  214. package/dist/web-components/generated/angular/index.js +29 -1
  215. package/dist/web-components/generated/angular/stable.d.ts +6 -0
  216. package/dist/web-components/generated/angular/stable.js +6 -0
  217. package/dist/web-components/generated/angular/text-value-accessor.d.ts +8 -0
  218. package/dist/web-components/generated/angular/text-value-accessor.js +34 -0
  219. package/dist/web-components/generated/angular/value-accessor.d.ts +18 -0
  220. package/dist/web-components/generated/angular/value-accessor.js +41 -0
  221. package/dist/web-components/generated/react/components.d.ts +151 -2
  222. package/dist/web-components/generated/react/components.js +271 -6
  223. package/dist/web-components/generated/react/experimental.d.ts +8 -0
  224. package/dist/web-components/generated/react/experimental.js +7 -0
  225. package/dist/web-components/generated/react/stable.d.ts +7 -0
  226. package/dist/web-components/generated/react/stable.js +6 -0
  227. package/dist/web-components/generated/svelte/components.d.ts +56 -0
  228. package/dist/web-components/generated/vue/components.d.ts +28 -0
  229. package/dist/web-components/generated/vue/components.js +363 -0
  230. package/dist/web-components/generated/vue/experimental.d.ts +7 -0
  231. package/dist/web-components/generated/vue/experimental.js +7 -0
  232. package/dist/web-components/generated/vue/stable.d.ts +6 -0
  233. package/dist/web-components/generated/vue/stable.js +6 -0
  234. package/llms.txt +61 -0
  235. package/package.json +64 -36
  236. package/dist/web-components/generated/angular/components.ts +0 -56
  237. package/dist/web-components/generated/angular/index.ts +0 -6
  238. package/dist/web-components/generated/react/components.ts +0 -24
  239. package/dist/web-components/generated/vue/components.ts +0 -21
  240. /package/dist/{migrations → docs/migrations}/v1-to-v2.md +0 -0
  241. /package/dist/{esm → docs}/services/theme-service/llm.md +0 -0
@@ -0,0 +1,161 @@
1
+ # ip-date-display
2
+
3
+ A presentational component that displays a date formatted for reading. It supports a selectable date detail level (`dateFormat`), optional time (`timeFormat`), and a `variant` that sets the text colour: three neutral emphasis levels or three semantic colours. An optional leading `icon` slot lets the consumer add an indicator. Use it for deadlines, completion dates, and other dates that should be emphasised by state.
4
+
5
+ The component is purely presentational: it is not interactive, emits no events, and does not participate in forms. The `variant` is set by the consumer, not computed internally.
6
+
7
+ The locale is read reactively from `PixelLocaleService`. There is no `locale` prop. Calling `PixelLocaleService.setLocale(...)` re-renders the date in the new locale automatically.
8
+
9
+ **Storybook:** https://pixel.isy.no/storybook/?path=/docs/core-ui-ip-date-display-usage--docs
10
+
11
+ > This component requires ISY Pixel global styles to render correctly. Always remind the user to verify that styles are imported in their global stylesheet. See `llm.md` in the package root for style import options.
12
+
13
+ ## Attributes
14
+
15
+ | Attribute | Type | Default | Values | Description |
16
+ | ------------ | ------ | ----------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
17
+ | `date` | string | `""` | ISO 8601 date or datetime | The date to display, e.g. `"2025-08-19"` or `"2025-08-19T14:30"`. Formatted internally. An empty value renders nothing; an unparseable value renders a localized "Invalid date" fallback. |
18
+ | `dateFormat` | string | `"short"` | `"short"`, `"medium"`, `"long"` | Date detail level. Maps to the `Intl.DateTimeFormat` `dateStyle` option. |
19
+ | `timeFormat` | string | `"none"` | `"none"`, `"short"`, `"medium"` | Whether and how detailed the time is shown. Maps to `Intl.DateTimeFormat` `timeStyle`; `"none"` shows no time. Only applies when `date` has a time component. |
20
+ | `variant` | string | `"primary"` | `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"error"` | Visual treatment. `primary`/`secondary`/`tertiary` are neutral emphasis levels; `success`/`warning`/`error` colour the date. The slotted icon inherits this colour. The semantic colour is generic: use `label` to convey its meaning. |
21
+ | `label` | string | `""` | Any string | Optional accessible label describing what a semantic variant means, e.g. `"Overdue"` or `"Do not start before"`. Rendered as visually hidden text. |
22
+
23
+ ## Slots
24
+
25
+ | Slot | Description |
26
+ | ------ | ------------------------------------------------------------------------------------------------------------------------ |
27
+ | `icon` | Optional leading icon shown before the date. Decorative (`aria-hidden`); inherits the variant colour via `currentColor`. |
28
+
29
+ ## Events
30
+
31
+ None. Purely presentational.
32
+
33
+ ## Formatting
34
+
35
+ The date is formatted with `Intl.DateTimeFormat(PixelLocaleService.getLocale(), { dateStyle, timeStyle })`.
36
+
37
+ | `dateFormat` / `timeFormat` | `nb-NO` | `en-US` |
38
+ | --------------------------- | --------------------------- | ---------------------------- |
39
+ | `short` / `none` | `19.08.2025` | `8/19/25` |
40
+ | `short` / `short` | `19.08.2025, 14:30` | `8/19/25, 2:30 PM` |
41
+ | `long` / `short` | `19. august 2025 kl. 14:30` | `August 19, 2025 at 2:30 PM` |
42
+
43
+ - `timeFormat` only has an effect when `date` carries a time component (an ISO datetime such as `2025-08-19T14:30`). A date-only value ignores `timeFormat`.
44
+ - Date-only values are formatted in UTC so a timezone-shifted midnight cannot move the displayed calendar day.
45
+ - An empty `date` renders nothing. A non-empty but unparseable `date` renders a localized "Invalid date" fallback.
46
+
47
+ ## Accessibility
48
+
49
+ - The date renders inside a `<time datetime="...">` element. The `datetime` attribute reflects the full ISO value passed in `date`, including the time when present.
50
+ - A semantic variant's colour is generic and not conveyed to assistive tech on its own. Set `label` to describe what it means (e.g. "Overdue"); it is announced as visually hidden text. Without a `label`, a semantic colour carries no meaning for screen readers.
51
+ - The slotted `icon` is decorative and marked `aria-hidden`. It reinforces the variant visually but carries no meaning for screen readers.
52
+ - When `date` is unparseable, the fallback renders only the localized "Invalid date" text: neither the slotted `icon` nor a `label` is shown, since neither applies to an error state.
53
+
54
+ ## Localisation
55
+
56
+ The visible "Invalid date" fallback ships in English and Norwegian (`nb-NO`) and is resolved through `PixelI18nService`, the same mechanism as other Pixel components. Override it with `PixelI18nService.setCustomLanguage({ 'ip-date-display': { ... } })`. The `label` is not localised by the component: the consumer supplies it in the correct language.
57
+
58
+ | Key | `en` | `nb-NO` |
59
+ | ------------- | ------------ | ------------ |
60
+ | `invalidDate` | Invalid date | Ugyldig dato |
61
+
62
+ ## Design tokens
63
+
64
+ > The `success`, `warning`, and `error` variants use temporary non-adaptive primitive stand-ins. No contrast-approved semantic tokens for these exist in Figma yet, so suitable `extended/*` shades are used and marked `//TODO` in the SCSS. The final tokens and WCAG contrast are resolved in the post-summer design cleanup.
65
+
66
+ | SCSS variable | Role |
67
+ | ----------------------------------------- | ----------------------------------------------- |
68
+ | `$ip_color_text_primary_black` | Text colour for `variant="primary"` |
69
+ | `$ip_color_text_secondary_default` | Text colour for `variant="secondary"` |
70
+ | `$ip_color_text_tertiary_default` | Text colour for `variant="tertiary"` |
71
+ | `$ip_color_extended_green-950` | Text colour for `variant="success"` (temporary) |
72
+ | `$ip_color_extended_yellow-950` | Text colour for `variant="warning"` (temporary) |
73
+ | `$ip_color_extended_red-600` | Text colour for `variant="error"` (temporary) |
74
+ | `$ip_typography_body_font_family_default` | Date font family |
75
+ | `$ip_typography_body_font_size_small` | Date font size |
76
+ | `$ip_typography_body_font_weight_default` | Date font weight |
77
+ | `$ip_spacing_space_100` | Gap between a slotted icon and the date |
78
+
79
+ ## Usage
80
+
81
+ ### HTML
82
+
83
+ ```js
84
+ import '@norconsult-digital-public/isypixel/web-components/ip-date-display.js';
85
+ ```
86
+
87
+ ```html
88
+ <ip-date-display date="2025-08-19" date-format="long" variant="error" label="Overdue">
89
+ <i slot="icon" class="fas fa-triangle-exclamation"></i>
90
+ </ip-date-display>
91
+ ```
92
+
93
+ ### React
94
+
95
+ ```tsx
96
+ import { IpDateDisplay } from '@norconsult-digital-public/isypixel/web-components/react';
97
+
98
+ <IpDateDisplay date='2025-08-19' dateFormat='long' variant='error' label='Overdue'>
99
+ <i slot='icon' className='fas fa-triangle-exclamation' />
100
+ </IpDateDisplay>;
101
+ ```
102
+
103
+ ### Vue
104
+
105
+ ```vue
106
+ <script setup lang="ts">
107
+ import { IpDateDisplay } from '@norconsult-digital-public/isypixel/web-components/vue';
108
+ </script>
109
+
110
+ <template>
111
+ <IpDateDisplay date="2025-08-19" date-format="long" variant="error" label="Overdue">
112
+ <i slot="icon" class="fas fa-triangle-exclamation" />
113
+ </IpDateDisplay>
114
+ </template>
115
+ ```
116
+
117
+ ### Angular
118
+
119
+ ```ts
120
+ import { IpDateDisplay } from '@norconsult-digital-public/isypixel/web-components/angular';
121
+ ```
122
+
123
+ ```html
124
+ <ip-date-display date="2025-08-19" date-format="long" variant="error" label="Overdue">
125
+ <i slot="icon" class="fas fa-triangle-exclamation"></i>
126
+ </ip-date-display>
127
+ ```
128
+
129
+ ### Svelte
130
+
131
+ ```svelte
132
+ <script lang="ts">
133
+ import '@norconsult-digital-public/isypixel/web-components/ip-date-display.js';
134
+ </script>
135
+
136
+ <ip-date-display date="2025-08-19" date-format="long" variant="error" label="Overdue">
137
+ <i slot="icon" class="fas fa-triangle-exclamation"></i>
138
+ </ip-date-display>
139
+ ```
140
+
141
+ ### Blazor
142
+
143
+ > Attribute names must be **kebab-case** in Blazor HTML.
144
+
145
+ Copy `ip-date-display.js` to `wwwroot/lib/isypixel/components/` at build time. See `llm.md` in the package root for the MSBuild target.
146
+
147
+ ```html
148
+ <script type="module" src="lib/isypixel/components/ip-date-display.js"></script>
149
+
150
+ <ip-date-display date="2025-08-19" date-format="long" variant="error" label="Overdue">
151
+ <i slot="icon" class="fas fa-triangle-exclamation"></i>
152
+ </ip-date-display>
153
+ ```
154
+
155
+ ### Set the locale
156
+
157
+ ```ts
158
+ import { PixelLocaleService } from '@norconsult-digital-public/isypixel/web-components/services';
159
+
160
+ PixelLocaleService.setLocale('nb-NO'); // all mounted ip-date-display elements re-render
161
+ ```