@rijkshuisstijl-community/components-angular 1.0.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 (96) hide show
  1. package/.eslintrc.json +5 -0
  2. package/CHANGELOG.md +15 -0
  3. package/LICENSE.md +288 -0
  4. package/README.md +10 -0
  5. package/angular.json +37 -0
  6. package/dist/README.md +10 -0
  7. package/dist/action-group/action-group.component.d.ts +6 -0
  8. package/dist/button/button.component.d.ts +8 -0
  9. package/dist/fesm2022/rijkshuisstijl-community-components-angular.mjs +335 -0
  10. package/dist/fesm2022/rijkshuisstijl-community-components-angular.mjs.map +1 -0
  11. package/dist/heading/heading.component.d.ts +11 -0
  12. package/dist/icon/RHCIconIDs.d.ts +2 -0
  13. package/dist/icon/dutch-map-icon/dutch-map-icon.component.d.ts +5 -0
  14. package/dist/icon/flag-icons/bg-flag/bg-flag.component.d.ts +5 -0
  15. package/dist/icon/flag-icons/de-flag/de-flag.component.d.ts +5 -0
  16. package/dist/icon/flag-icons/es-flag/es-flag.component.d.ts +5 -0
  17. package/dist/icon/flag-icons/fr-flag/fr-flag.component.d.ts +5 -0
  18. package/dist/icon/flag-icons/gr-flag/gr-flag.component.d.ts +5 -0
  19. package/dist/icon/flag-icons/hu-flag/hu-flag.component.d.ts +5 -0
  20. package/dist/icon/flag-icons/it-flag/it-flag.component.d.ts +5 -0
  21. package/dist/icon/flag-icons/lv-flag/lv-flag.component.d.ts +5 -0
  22. package/dist/icon/flag-icons/nl-flag/nl-flag.component.d.ts +5 -0
  23. package/dist/icon/flag-icons/pl-flag/pl-flag.component.d.ts +5 -0
  24. package/dist/icon/flag-icons/pt-flag/pt-flag.component.d.ts +5 -0
  25. package/dist/icon/flag-icons/ro-flag/ro-flag.component.d.ts +5 -0
  26. package/dist/icon/flag-icons/sk-flag/sk-flag.component.d.ts +5 -0
  27. package/dist/icon/flag-icons/uk-flag/uk-flag.component.d.ts +5 -0
  28. package/dist/icon/icon.component.d.ts +10 -0
  29. package/dist/icon/public-api.d.ts +16 -0
  30. package/dist/index.d.ts +5 -0
  31. package/dist/link/link.component.d.ts +6 -0
  32. package/dist/paragraph/paragraph.component.d.ts +9 -0
  33. package/dist/public-api.d.ts +6 -0
  34. package/jest.config.js +5 -0
  35. package/ng-package.json +7 -0
  36. package/package.json +57 -0
  37. package/setup-jest.ts +3 -0
  38. package/src/action-group/action-group.component.html +9 -0
  39. package/src/action-group/action-group.component.spec.ts +46 -0
  40. package/src/action-group/action-group.component.ts +10 -0
  41. package/src/button/button.component.html +3 -0
  42. package/src/button/button.component.spec.ts +41 -0
  43. package/src/button/button.component.ts +14 -0
  44. package/src/heading/heading.component.css +1 -0
  45. package/src/heading/heading.component.html +31 -0
  46. package/src/heading/heading.component.spec.ts +54 -0
  47. package/src/heading/heading.component.ts +19 -0
  48. package/src/icon/RHCIconIDs.ts +1182 -0
  49. package/src/icon/dutch-map-icon/dutch-map-icon.component.html +6 -0
  50. package/src/icon/dutch-map-icon/dutch-map-icon.component.ts +8 -0
  51. package/src/icon/flag-icons/bg-flag/bg-flag.component.html +5 -0
  52. package/src/icon/flag-icons/bg-flag/bg-flag.component.ts +8 -0
  53. package/src/icon/flag-icons/de-flag/de-flag.component.html +6 -0
  54. package/src/icon/flag-icons/de-flag/de-flag.component.ts +8 -0
  55. package/src/icon/flag-icons/es-flag/es-flag.component.html +2233 -0
  56. package/src/icon/flag-icons/es-flag/es-flag.component.ts +8 -0
  57. package/src/icon/flag-icons/fr-flag/fr-flag.component.html +5 -0
  58. package/src/icon/flag-icons/fr-flag/fr-flag.component.ts +8 -0
  59. package/src/icon/flag-icons/gr-flag/gr-flag.component.html +4 -0
  60. package/src/icon/flag-icons/gr-flag/gr-flag.component.ts +8 -0
  61. package/src/icon/flag-icons/hu-flag/hu-flag.component.html +5 -0
  62. package/src/icon/flag-icons/hu-flag/hu-flag.component.ts +8 -0
  63. package/src/icon/flag-icons/it-flag/it-flag.component.html +5 -0
  64. package/src/icon/flag-icons/it-flag/it-flag.component.ts +8 -0
  65. package/src/icon/flag-icons/lv-flag/lv-flag.component.html +4 -0
  66. package/src/icon/flag-icons/lv-flag/lv-flag.component.ts +8 -0
  67. package/src/icon/flag-icons/nl-flag/nl-flag.component.html +5 -0
  68. package/src/icon/flag-icons/nl-flag/nl-flag.component.ts +8 -0
  69. package/src/icon/flag-icons/pl-flag/pl-flag.component.html +4 -0
  70. package/src/icon/flag-icons/pl-flag/pl-flag.component.ts +8 -0
  71. package/src/icon/flag-icons/pt-flag/pt-flag.component.html +156 -0
  72. package/src/icon/flag-icons/pt-flag/pt-flag.component.ts +8 -0
  73. package/src/icon/flag-icons/ro-flag/ro-flag.component.html +5 -0
  74. package/src/icon/flag-icons/ro-flag/ro-flag.component.ts +8 -0
  75. package/src/icon/flag-icons/sk-flag/sk-flag.component.html +34 -0
  76. package/src/icon/flag-icons/sk-flag/sk-flag.component.ts +8 -0
  77. package/src/icon/flag-icons/uk-flag/uk-flag.component.html +15 -0
  78. package/src/icon/flag-icons/uk-flag/uk-flag.component.ts +8 -0
  79. package/src/icon/icon.component.css +3 -0
  80. package/src/icon/icon.component.html +6 -0
  81. package/src/icon/icon.component.spec.ts +61 -0
  82. package/src/icon/icon.component.ts +105 -0
  83. package/src/icon/public-api.ts +16 -0
  84. package/src/link/link.component.css +1 -0
  85. package/src/link/link.component.html +3 -0
  86. package/src/link/link.component.spec.ts +33 -0
  87. package/src/link/link.component.ts +11 -0
  88. package/src/paragraph/paragraph.component.css +1 -0
  89. package/src/paragraph/paragraph.component.html +3 -0
  90. package/src/paragraph/paragraph.component.spec.ts +45 -0
  91. package/src/paragraph/paragraph.component.ts +23 -0
  92. package/src/public-api.ts +9 -0
  93. package/tsconfig.json +28 -0
  94. package/tsconfig.lib.json +11 -0
  95. package/tsconfig.lib.prod.json +9 -0
  96. package/tsconfig.spec.json +11 -0
@@ -0,0 +1,11 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare const headingLevels: readonly [1, 2, 3, 4, 5];
3
+ export type HeadingLevel = (typeof headingLevels)[number];
4
+ export declare class HeadingComponent {
5
+ level: HeadingLevel;
6
+ appearanceLevel?: HeadingLevel;
7
+ stylingLevel: () => 1 | 2 | 3 | 4 | 5;
8
+ computedClasses: () => string;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<HeadingComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<HeadingComponent, "rhc-heading", never, { "level": { "alias": "level"; "required": true; }; "appearanceLevel": { "alias": "appearanceLevel"; "required": false; }; }, {}, never, ["*"], true, never>;
11
+ }
@@ -0,0 +1,2 @@
1
+ export declare const rhcIconIDs: readonly ["aangifte-ondernemers", "aanrecht-met-kraan-en-koffiekan", "aar", "aar-met-bladeren", "accijns", "accu", "actieve-gevel", "activiteit", "adl-woning", "advocaat", "afbrokkelend-schild-met-capsule", "afhaaleten", "afhaalpunt", "afrit", "afsprakenstelsel", "afstand-houden", "afstand-houden-armen", "afvalcontainer-plastic", "agile-werken", "alert-circle", "alert-triangle", "algemeen-alarm", "ambassade-consulaat", "ambtenaar", "ambulance", "anker", "api-inrichting", "applicatie", "aquaduct", "aren", "arrows-sort", "arts", "atoom-wetenschap", "audio", "auto", "auto-", "auto-hulpdiensten-", "auto-met-3-personen", "auto-met-parkeermeter", "auto-met-pijlen-linksaf-en-rechtsaf", "auto-met-stekker", "auto-met-zender-op-dak", "auto-met-zender-voor", "auto-met-zenders-opzij", "auto-met-zenders-voor-en-opzij", "auto-onder-overkapping", "auto-onder-overkapping-met-broodje", "auto-op-zijn-kant-met-barst", "auto-op-zijn-kant-voor-vrachtauto-met-barst", "auto-voor-bestelbus", "auto-vooraanzicht", "autos-achter-elkaar", "autos-met-waarschuwingsbord", "avondklok-negen-uur", "baby", "baby-torso", "babypop", "backpack", "bacterie-dodende-gel", "baggeren", "bakfiets", "bakkerijketens", "ballonnen", "ballonstokjes", "baret", "basis-kantoorgebouw", "basisregistratie", "batterij", "beeldbellen", "beeldscherm-met-hart", "beeldscherm-met-streep-erdoor", "bel", "belegd-broodje", "benauwdheid", "benzinepomp", "beroepsvisser", "beschermde-woonomgeving", "bestelbus", "bestelbus-2", "bestelbus-rijdend", "beveiligingscamera", "beveiligingsscan", "bevestiging", "beweegbare-brug", "beweegbare-brugtijden", "bewerken", "bezoekersruimte-gedetineerden", "biddende-handen", "big-ben", "biobrandstof", "blad-met-wereldbol", "bloeddrukmeter", "bloem-met-uitroepteken", "blog", "blok-met-druppel", "boei", "boek", "boek-opengeslagen", "boeken-achter-elkaar", "boeket", "boer", "boerin", "bokaal", "bol-met-rasterpatroon", "bom", "bommelding", "boom-en-struiken", "boom-lachend", "boom-met-bank", "boom-met-picknicktafel", "boos", "boot-vol-mensen-op-water", "bord-15-km", "bord-30-km", "bord-40-km", "bord-5-km", "bord-50-km", "bord-met-grafieken", "bord-provincie", "bout-met-hap-eruit", "brandalarm", "brandblusser", "brandende-lamp-met-copyright-teken", "brandslang", "brandweerauto-met-klok", "brein", "brein-boven-uitgestoken-hand", "briefcase", "brievenbus-met-envelop", "brood", "brood-met-pijl-omhoog", "broodje-en-appel", "broodje-met-keurmerk", "btw-betalen", "budget", "buitenlandse-handel", "buitenzwembad", "bureaulamp", "bureaustoel", "bureaustoel-en-loep", "bureaustoel-met-tekst-arbo", "bureaustoel-met-thermometer", "burgemeester-voor-2-personen", "bus", "bushalte", "capsule-boven-uitgestoken-hand", "capsule-met-pijl-omhoog", "capsule-met-vinkje", "capsules", "car", "caribisch-nederland", "cateringbedrijven", "chevron-right", "chili-bonen-en-peper", "chip", "chirurg", "circle-check", "circulaire-bouw", "circulaire-economie", "coffeeshop", "coffeeshop-in-wijk", "colosseum", "comment", "communicatie", "computer", "computercode", "conducteur", "contactloos-betalen", "coronavaccin", "coupure", "crisisoverleg", "cruiseschip", "currency-euro", "cybersecurity", "dansen", "database", "datalek", "dataverkeer", "defensie", "delen", "delta-naar-links", "delta-naar-rechts", "delta-omhoog", "delta-omlaag", "diagonale-pijl", "dienblad-op-uitgestoken-hand", "dierentuin", "digitaal-onderzoek", "digitale-uitwisseling", "digitalisering", "dijk", "dijkversterking", "diploma-certificaat", "dna", "dna-op-beeldscherm", "docent-voor-klas", "document-blanco", "document-en-telefoon-met-vinkje", "document-en-telefoon-met-vinkjes", "document-met-golvende-lijnen-en-lint", "document-met-grafiek-boven-uitgestoken-hand", "document-met-lijnen", "document-met-lijnen-en-lint", "document-met-locatiemarker", "document-met-ontevreden-gezicht", "document-met-persoon", "document-met-potlood", "document-met-tekst-csv", "document-met-vinkje", "document-met-vinkje-en-persoon", "document-met-vinkjes-en-lijnen", "document-met-vlakken-en-lijnen-erop", "document-wisselen", "documenten-met-elkaar-verbonden", "doel-met-drie-circels", "doel-met-vijf-circels", "doos-met-pijlen-op-zijkant", "doosje-met-ce-keurmerk", "doping", "dorp", "douane", "douches", "downloaden", "draaideurlinks", "draaideurrechts", "draairichting-deur-naar-je-toe", "draairichting-deur-van-je-af", "drankverpakkingen", "dreiging-van-buitenaf", "drie-personen-in-huis", "drijvende-kraan", "drinkbeker", "drone", "drugs", "drugs-pillen", "druppel", "druppel-met-uitroepteken", "duim-omhoog", "duim-omlaag", "duurzaam-waterbeheer", "ecoduct", "eencelligen-onder-loep", "eend-zwemmend-bij-riet", "ehbo-aed", "ehbo-ruimte", "elektriciteit", "elleboognies", "enkelband", "enthousiast", "envelop", "erlenmeyer-chemie", "esculaap", "eurobiljetten", "evenement", "evenemententent", "excellente-scholen", "externe-link", "fabriek-aan-water", "fabriek-met-stapel-munten", "favoriet", "fazant", "festival-ehbo", "fiets", "fiets-met-krat", "fiets-met-stekker", "film-projector", "filmstrip-met-plusteken", "financien", "finish-vlag", "fiod", "flat", "fles-met-beer-en-tube", "fles-met-mes-en-vork", "fles-zuivel-sap", "flesje-met-tatoeage-inkt", "foto-met-plusteken", "foto-vergroten", "fotocamera", "foutmelding", "fruitschaal", "fysiotherapeut", "ga-naar-www", "gamecontroller", "gaspit-aan", "gaspit-uit", "gebouw-cak", "gebouw-cjib", "gebouw-cvz", "gebouw-ggz", "gebouw-igz", "gebouw-met-busje", "gebouw-nvwa", "gebouw-vws", "gebouw-zini", "gebouwenbeheer", "gedeelde-douche", "geen-handen-schudden", "geen-spatscherm", "gegevensuitwisseling", "geit", "geleidehond", "geluid-aan", "geluid-uit", "gemaal", "gemeente-en-provinciefonds", "gemeentehuis", "genderneutraal", "geplandoverleg", "gesprek-over-welzijn", "getij", "gevaarlijke-stoffen", "gevangene", "gevangenisdeur", "gevouwen-document", "gevouwen-document-met-kruis", "gevuld-wijnglas", "gewicht", "gewichtheffer-staand", "gezinszorg", "gezinszorg-met-oudere", "gijzeling", "glazen-op-tafel", "golven", "golvende-pijlen", "grafiek", "grafieken-op-beeldscherm", "grijparm", "groene-energie", "groep-3-personen", "groep-3-personen-torso", "groep-5-personen", "groep-personen-op-verhoging", "grootstedelijk", "grote-brand", "gum", "haakse-pijl", "haakse-pijl-linksboven", "haakse-pijl-linksonder", "haakse-pijl-rechtsboven", "haakse-pijl-rechtsonder", "haan", "haan-en-fazant", "half-tandwiel-half-brein", "halter", "hand", "hand-2-vingers-opgestoken", "hand-achter-oor", "hand-met-pen-", "hand-met-rekening", "hand-met-snee-en-druppel", "hand-met-vlek", "hand-met-wond", "hand-v-teken-voor-prikkeldraad", "handboeien", "handel", "handen-schudden", "handen-schudden-hartvorm", "handen-wassen", "handmicrofoon", "hangend-alarmsysteem", "hangende-plant-op-gebarsten-grond", "hangende-spot", "hanger-hart", "hangkaart-met-hand-erop", "hangslot-dicht", "hangslot-dicht-met-hart-erop", "harddrugs", "hart", "hart-met-oudere", "hart-met-vinkje-erin", "hart-onder-microscoop", "hart-tussen-2-uitgestoken-handen", "hashtag", "heffen-en-innen", "helikopter", "hert", "hijskraan", "hockeyer", "hoge-auto-voor-rolstoel", "hoge-gebouwen-met-pijl-naar-rechts", "hoge-golf-langs-vuurtoren", "home", "hond", "hond-met-kluif-en-klok", "hond-uitlaten", "hoofd-hoesten", "hoofd-met-brandende-lamp", "hoofd-met-brein", "hoofd-met-doolhof", "hoofd-met-krabbels", "hoofd-met-schedel", "hoofd-met-vinkje-en-wattenstaafje", "hoofd-met-wattenstaafje-bij-mond", "hoofd-met-wattenstaafje-bij-neus", "hoofd-met-zuidwester", "hoog-huis", "hoogbouw-transitie", "hoogspanningsmast", "hoogwater", "horecaketens", "huis-auditief-gehandicapten", "huis-lichamelijk-gehandicapten", "huis-psychiatrische-patienten", "huis-verstandelijk-gehandicapten", "huis-visueel-gehandicapten", "huisarts", "huiselijk-geweld", "huisvesting", "hulpverleners", "huurtoeslag", "huurwoning", "hybride-laptop", "iconen-toevoegen", "ict", "immigratie", "importtarief-verlaging", "inbox", "inclusiviteit", "industrie", "industrie-met-druppel-water", "info", "info-circle", "info-square", "informatie-op-internet", "injectienaald", "inkomstenbelasting", "inloggen", "instellingen", "instortingsgevaar", "interne-link", "internet", "internet-archief", "iris", "ius-opvang", "jacht-op-water", "jaloezie", "jeugdzorg", "jonge-plant-komt-uit-grond", "jonge-plant-op-hoop-aarde", "jonge-plant-op-uitgestoken-hand", "jongen-torso", "kaars-voor-grafsteen", "kaars-voor-grafsteen-wo2", "kade", "kalender", "kalender-met-2-personen", "kalender-met-bliksemschicht", "kalender-met-vinkje", "kalender-met-virus", "kalender-met-vlakken", "kan-met-druppel", "kantoor-vol-energie", "kapperbezoek", "kartonnen-doos", "kassa", "kat-en-hond", "kerncentrale", "kernongeval", "kernreactorgebouw-naast-schoorsteen", "ketting", "kikker", "kind-in-kinderstoel", "kind-springend-op-trampoline", "kind-vrouw-en-man", "kind-vrouw-en-man-met-wandelstok", "kind-vrouw-met-koffer-en-man-met-wandelstok", "kinderbescherming", "kinderen-springend-naar-bal", "kinderopvang", "kinderwagen", "kist-met-hamer-en-moersleutel", "klantencontactcenter", "kledinghanger", "kleedkamer", "kleedkamer-man", "kleedkamer-vrouw", "kleinschalig-wonen", "klembord-met-lijnen-met-kruis", "klembord-met-loep", "klembord-met-vinkje", "klembord-met-vinkjes-en-lijnen", "kleurenwaaier", "kliko", "kliko-dicht", "klimaatverandering", "klok", "klok-op-hand", "koe", "koe-gevlekt", "koe-met-tekst-co2", "koets", "koffer", "koffer-met-kruis", "koffiekan-met-beamer", "koffiezetapparaat", "kolfruimte", "kompas", "koninkrijk", "kookbrander", "koopwoning", "koorts", "kop-warme-drank", "kopieerapparaat", "koptelefoon", "koptelefoon-over-microfoon", "kraan-met-druppel-water", "kring-3-personen-torso", "kring-5-personen-staand", "kroon", "kroon-boven-uitgestoken-hand", "krop-sla-en-wortel", "kruis", "kruis-met-vergrootglas", "kwast-en-hark", "laag-huis", "laag-water", "laarzen", "label", "lachend-gezicht", "lade-archiefkast", "lamp", "landmacht", "landschapselement", "langdurige-zorg", "laptop", "laptop-met-huis", "ledikant", "leefbaarheid", "leegstand", "leegstand-en-tijdelijk-gebruik", "leren-handschoen", "let-op", "let-op-met-loep", "literfles", "locatiemarker", "locatiemarker-boven-uitgestoken-hand", "locatiemarker-met-blad", "locatiemarker-met-vinkje", "loep-en-water", "lokaal-welzijnswerk", "loonheffingen", "lopende-personen-met-koffer", "lorrie-gevuld", "loungewerkplek", "louvreluiken", "luchtmacht", "maandverband", "mail", "maiskolf", "man-en-vrouw-achter-buro-met-gordijn", "man-gelijk-aan-vrouw", "man-hoofd", "man-hoofd-leunend-op-hand", "man-lopend", "man-met-bril-torso", "man-met-cirkel-van-2-pijlen", "man-met-dubbele-pijl", "man-met-gebouw", "man-met-gebouwen", "man-met-hart", "man-met-headset-voor-raam-scherm", "man-met-laptop", "man-met-loep", "man-met-medicatie", "man-met-mondkapje", "man-met-nekkraag-en-munten", "man-met-puzzelstuk", "man-met-stropdas-en-sleutelbos", "man-met-stropdas-torso", "man-met-stropdas-voor-2-personen", "man-met-stropdas-voor-persoon-met-helm", "man-met-tekst-zzp", "man-met-wandelstok", "man-staand", "man-torso", "man-torso-voor-hoogbouw", "mantelzorg", "map", "map-met-loep", "map-vol-documenten", "marechaussee", "matrixbord-met-maximumsnelheid", "matroos", "medaille-met-hart-erop", "medisch-beroepsgeheim", "mee-eens", "meer", "megafoon", "megastallen", "meisje-torso", "menu", "metalen-vat-in-water", "microfoon", "mier", "milieu", "mobiel-in-hand", "moersleutel", "moersleutel-en-moer", "moersleutel-en-pen", "moersleutel-en-schroevendraaier", "molecuul", "mondkapje", "monument", "moskee", "motor", "motor-hulpdiensten", "motorrijtuigenbelasting", "muis", "nederland", "nederland-map", "nederland-met-auto", "nederland-met-locatie-grote-steden", "nederland-met-pijl-naar-rechts-beneden", "nederland-met-schip", "nederland-met-stapel-munten", "nederland-met-water", "nerts", "net-boven-vis", "netwerk", "neushoorn-met-uitroepteken", "neusverkoudheid", "nietmachine", "nieuwe-computer", "nieuws", "nl-alert", "noodopvang", "nooduitgang", "oever-met-rietkraag", "omgevallen-pot-met-capsules", "omzetbelasting", "ondernemingen", "ondernemingsklimaat", "ongeoorloofde-afwezigheid", "ongepland-overleg", "ongeval", "online-groepstraining", "online-leren", "ontruiming", "ontvluchting", "ontwerp", "oog", "oog-met-traan", "oogcremes", "oor", "oor-met-gehoorbeschermer", "oordopjes", "open-raam-met-pijlen", "opendeur-met-pijl-sluiten", "openraam-met-pijl-sluiten", "oprit", "opsomming", "opvang-en-nazorg", "oude-computer", "ouderenzorg", "overlijden-in-detentie", "overstroming-dreiging-1", "overstroming-dreiging-2", "overstroming-dreiging-3", "overval", "pagode", "pallet-met-dozen", "palmboom-met-weegschaal", "paperclip", "paspoort", "pauw", "pcm", "permanent-beta", "persconferentie", "personen-arm-op-schouder", "personen-armen-om-schouders", "personen-gooien-auto-omver", "personen-hand-op-rug", "personen-hand-op-schouder", "personen-in-gesprek", "personen-in-lift", "personen-staand-voor-auto", "personen-staand-voor-fiets", "personen-staand-voor-scooter", "personenweegschaal", "persoon-aan-balie", "persoon-achter-stuur", "persoon-armen-en-benen-gespreid", "persoon-bij-motorkap-auto", "persoon-boven-3-pijlen", "persoon-gooit-afval-weg", "persoon-handen-in-zij", "persoon-headset-voor-beeldschermen", "persoon-in-lift-1", "persoon-in-lift-2", "persoon-in-niqab-torso", "persoon-in-rolstoel", "persoon-in-rolstoel-en-munten", "persoon-in-starthouding-sprint", "persoon-in-stoel-bij-raam-scherm", "persoon-in-uniform-en-doos", "persoon-in-water", "persoon-kaal-in-gestreept-shirt-torso", "persoon-loopt-naar-trein", "persoon-lopend-met-koffer", "persoon-lopend-met-koffer-en-rolkoffer", "persoon-lopend-met-tassen", "persoon-lopend-op-zebrapad", "persoon-met-bedekt-gezicht-en-geweer", "persoon-met-bivakmuts-torso", "persoon-met-blinddoek", "persoon-met-bouwhelm-en-stapel-munten", "persoon-met-cape", "persoon-met-capuchon-en-slot", "persoon-met-capuchon-op-met-laptop", "persoon-met-capuchon-voor-persoon", "persoon-met-dicht-hangslot", "persoon-met-drone-besturing", "persoon-met-haarband", "persoon-met-hoofddoek-en-bloem", "persoon-met-hoofddoek-torso", "persoon-met-hoofddoek-voor-persoon-met-punthoed", "persoon-met-integraalhelm-torso", "persoon-met-kromme-pijl", "persoon-met-kronkelpijlen", "persoon-met-rugpijn", "persoon-met-schep-en-berg-aarde", "persoon-met-stapel-munten", "persoon-met-stethoscoop-voor-mensen", "persoon-met-verstelbaar-bureau", "persoon-met-vinkje", "persoon-met-weegschaal", "persoon-onder-tafel", "persoon-op-erepodium", "persoon-op-hoverboard", "persoon-op-loopband", "persoon-op-zonnebank", "persoon-rent-naar-bal", "persoon-rent-op-blades", "persoon-springend-naar-bal", "persoon-staand-met-hart", "persoon-staand-naast-auto-met-bestuurder", "persoon-stilte", "persoon-torso-onder-loep", "persoon-torso-tussen-2-personen", "persoon-tussen-4-pijlen", "persoon-voor-beeldschermen", "persoon-zittend-in-stoel", "pieper", "pijl-met-lijnen", "pijl-naar-rechts", "pijl-naar-rechtsboven", "pijl-omhoog", "pijl-omlaag", "pijlen-in-cirkel-om-document", "pillendoosje", "pistool", "plant-in-pot-met-kaartje", "plastic-fles", "plofkip", "pluim", "plumeau", "plus", "politieacademie-man", "politieacademie-vrouw", "politieagent", "politieagent-voor-personen", "politieagente", "politieagente-voor-personen", "pols-vastgrijpen", "pompfles-en-pot-met-deksel", "portemonnee", "pot-met-capsule", "potlood-en-liniaal", "prei-en-appel", "presentatie-voor-groep", "pretpark", "printer", "prop-papier", "psychologische-hulp", "puber-met-mondkapje", "publicatie", "puzzel", "pylon", "pyramides", "radiator", "radio", "radioactiviteit", "raket", "reageerbuis", "reageerbuis-met-wattenstaafje", "rechtbank", "rechte-pijl", "recycle-om-blad", "refresh", "refund", "regenboog-boven-wolk", "regievoerder", "rekening", "rekenmachine", "rennend-kind", "rennend-persoon-met-rugzak", "rentelasten", "restaurant", "richtingwijzer", "ridderzaal", "rij-mensen", "rijtjeshuis", "ring-met-gebroken-ring-erdoor", "ringband-met-silhouet", "rivierverruiming", "rokende-filtersigaret", "rol-papier-met-lijnen-en-veer", "rol-papier-met-punten-en-lijnen", "rol-papier-met-tekst-amvb", "rolkoffer", "rollator-bij-trap", "rolmaat", "rolstoel-toegankelijke-woning", "roltrap-omhoog", "roltrap-omlaag", "ronde-pijl-op-hand", "route-met-locatiemarker", "route-met-ster", "route-met-vlag", "rouw-met-mondkapje", "rouw-met-mondkapje-en-naald", "rozet-met-vinkje", "rss", "rubberen-handschoenen", "rugzak", "ruimtelijke-ordening", "rups", "samen-op-trap", "sauna", "save", "scan-document", "scan-gezicht", "scan-vingerafdruk", "schaap", "schaatser", "schade", "schade-wegdek", "schap-leeg", "schelp", "schelpdier", "scherm-navigatiesysteem", "schietschijf-met-pijl", "schild-met-vinkje-erop", "schilderij-met-bloemen-in-vaas", "schilderij-met-vrouw-met-stapel-munten", "schip-en-schuine-oever", "schip-hulpdiensten", "schip-in-sluis", "schip-in-sluis-met-klok", "schip-langs-dam", "schip-langs-kade", "schip-langs-kade-met-hijskraan", "schip-langs-kade-met-maan", "schip-met-waarschuwingsbord", "schip-op-water", "schip-op-water-boven-vaargeul", "schip-op-water-met-schuine-oevers-en-pijlen", "schip-scheef-in-water", "schip-spuit-zand-op", "schip-tussen-ijsschotsen", "schommelstoel-met-stapel-munten", "schone-handen", "schone-industrie", "school", "schoolbord", "schoolbord-met-puzzelstuk", "schoonmaakfles", "schoonmaakmiddel", "schuur-met-silo-erachter", "scooter", "scooter-met-stekker", "scootmobiel", "sector-speciaal-onderwijs", "secure-link", "server", "server-met-document", "servicedesk-ict", "servicedesk-telefonie", "shirt-met-label", "shirt-uv", "silhouet-met-schildklier", "silhouet-voor-beeldscherm", "silhouet-voor-scherm-raam-met-silhouet", "slagboom-halfopen", "slang", "slapend-persoon", "sleutel", "sleutelbos", "sluis-open", "smartphone", "smartphone-bedienen-met-vinger", "smartphone-met-streep-erdoor", "smoking-op-hanger", "snee-brood-met-hap-eruit", "snel-lopende-vrouw", "snelweg", "snelweg-met-boom", "snelweg-met-waarschuwingsbord", "snoepje-in-wikkel", "softijs", "sort-ascending", "sort-descending", "sourcing", "specialist", "speelgoedblokken", "speelgoedtrein", "speelkaarten", "spelend-kind-en-klimrek-onder-dak", "spitsstrook", "splitsen-perceel", "splitsen-water", "spray-en-bezem", "spray-en-kaas", "spreker-voor-publiek", "sprinkler", "stacaravan", "stapel-fotos", "stapel-kaarten", "stapel-munten", "stapel-munten-met-vinkje", "steekwagen-met-dozen", "stembiljet", "stemmen", "step", "ster", "stethoscoop", "stofzuiger", "storm", "straatroof", "strooibus", "strooiwagen", "strooiwagen-rijdend", "strooiwagen-strooiend", "stroomsnelheid", "stuk-vlees", "stuur", "stuurwiel", "suikerpot", "supermarktketens", "tablet", "tabletten", "takel-met-balk", "takel-met-container", "takelwagen", "tandarts", "tandwiel-met-vinkje", "tandwielen", "tank", "taxi", "technisch-manager", "teddybeer", "teddybeer-met-ce", "tegelweergave", "tekstballon-met-hart", "tekstballon-met-potlood", "tekstballon-met-wereldbol", "tekstballonnen", "tekstballonnen-met-internationaal-gesprek", "tekstballonnen-met-krul", "tekstballonnen-met-punten", "tekstballonnen-met-vraagteken", "telefoon", "televisie", "telraam", "tent-bij-boom", "terug", "teruggave-dividendbelasting", "thuisonderwijs", "thuiswerken", "tissuebox", "toegangspas", "toegankelijkheid", "toelichting", "toiletborstel", "toiletten", "toren", "touchdown-werkplek", "touringcar", "tractor", "tram", "trap-omhoog", "trap-omlaag", "traplift", "traplift-met-kruis", "traplift-met-vinkje", "trechter", "trein", "trein-met-stapel-munten", "trein-met-vinkje", "trein-op-spoorwegovergang", "trompet", "trouwen", "tuinder", "tulp", "tunnel", "twee-maskers", "twee-pijlen", "twee-vissen", "twee-zwembandjes", "tweede-kamer", "uil", "uit-aanknop", "uitgang", "uitval-persoon", "uitval-persoon-ziekte", "uitval-stroomvoorziening", "uitvoering", "upload", "usb-lader", "user", "ux-design", "vaantje", "vaas", "varken", "varken-en-koe", "vaste-brug", "veerpont-op-water", "veiligheidsspeld-open", "vennootschapsbelasting", "ventilatierooster", "verbod-fiets", "verbod-fotografie", "verbod-hond", "verbod-kinderwagen", "verbod-rolstoel", "verbod-softdrugs", "verbod-wapens", "verbodbellen", "verboden-te-roken", "verdrietig", "vergadertafel-met-stoelen", "verhuisdoos", "verhuurderheffing", "verloskundige", "vermindering-papier", "verpleeghuis", "verpleegkundige", "verrekijker", "versleutelen", "verwijderen", "verzenden", "verzorgingstehuis", "viaduct", "video", "videocamera", "vijzel-met-kruis", "villa", "vingerafdruk-1", "vingerafdruk-2", "vingerafdruk-3", "vinkje", "viool", "virtual-reality", "virus", "vis", "vis-met-klok", "visgraat-in-water", "vistrap", "vlag-canada", "vlag-driehoekig", "vlag-europese-unie", "vliegbelasting", "vliegtuig", "vliegtuig-en-auto", "vliegtuig-vliegt-bij-verkeerstoren", "vn-soldaat", "voedselverpakking", "voeten", "voor-elkaar-zorgen", "vork-en-mes", "vouwkaart", "vouwkaart-met-kruis", "vraagteken", "vrachtauto", "vrachtauto-in-gebouw-met-bel", "vrachtauto-met-lekke-band-en-barst-in-voorruit", "vrouw-achter-katheder", "vrouw-en-persoon-in-rolstoel", "vrouw-hoofd", "vrouw-lopend", "vrouw-met-blinddoek-en-weegschaal", "vrouw-met-halsketting-om-torso", "vrouw-met-ketting-om-torso", "vrouw-met-knot-en-bril-torso", "vrouw-met-knot-en-lipstick-voor-2-personen", "vrouw-met-laptop", "vrouw-met-medicatie", "vrouw-met-portemonnee", "vrouw-met-rollator", "vrouw-staand", "vrouw-torso", "vrouwelijke-arts", "vuilniszak", "vuist", "vuist-slaand", "vuurpijl", "vuurtoren", "waarschuwing", "waarschuwing-radioactiviteit-in-water", "waarschuwingsbord-met-schip-op-water", "waarschuwingsbord-met-snelweg", "waarschuwingsbord-radioactiviteit", "waarschuwingsbord-werkzaamheden", "wachtend-persoon", "warmte", "wasmachine", "water-en-begroeid-duin", "waterafvoer", "waterkering-dicht", "waterkering-open", "wateroverlast", "waterpijp", "waterschildpad", "waterstanden", "watertemperatuur", "waterwaarschuwing", "wattenstaafjes", "website", "webwinkel", "weegschaal", "weg-langs-huis", "weg-met-dichte-slagboom", "weg-met-halfopen-slagboom", "wegwerpaansteker", "welzijnswerk-ouderen", "wensballon", "wereldbol", "wereldbol-met-loep", "wereldbol-tussen-2-uitgestoken-handen", "werkdruk", "werkeloosheid-ww", "wervelwind", "wetboek", "wielrenner", "wiet", "wifi", "wijkagent", "wijkagente", "wijkverpleegkundige", "wijsvinger-en-deurbel", "wijzerplaat", "wiki", "windenergie", "windsurfer", "windvaan", "winkelwagen", "wolk", "wolk-met-regen-en-bliksem", "wolk-met-regen-voor-zon", "woning-gelijkvloers-wel-rollator", "woning-met-traplift", "woning-met-verdieping", "woninginbraak", "woordenboek", "worst-en-broodje", "worst-en-kaas", "worst-en-wortel", "zak-met-envelop", "zak-met-geld", "zandloper", "zeeleeuw", "zeilboot-op-water", "zelftest", "zendmast", "ziekenhuis", "zittend-persoon-achter-laptop", "zoek", "zon", "zon-boven-oppervlaktewater", "zon-boven-wolk", "zon-met-afbrokkelende-fles", "zonnepaneel", "zorgkantoor", "zoutgehalte-in-water", "zwaailicht", "zwangere-vooraanzicht", "zwangere-zijaanzicht", "zwitsers-zakmes"];
2
+ export type RHCIconID = (typeof rhcIconIDs)[number];
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class DutchMapIconComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<DutchMapIconComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<DutchMapIconComponent, "rhc-dutch-map-icon", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class BgFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<BgFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<BgFlagComponent, "rhc-bg-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class DeFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<DeFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<DeFlagComponent, "rhc-de-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class EsFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<EsFlagComponent, "rhc-es-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class FrFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<FrFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<FrFlagComponent, "rhc-fr-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class GrFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<GrFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<GrFlagComponent, "rhc-gr-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class HuFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<HuFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<HuFlagComponent, "rhc-hu-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class ItFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<ItFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<ItFlagComponent, "rhc-it-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class LvFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<LvFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<LvFlagComponent, "rhc-lv-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class NlFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<NlFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<NlFlagComponent, "rhc-nl-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class PlFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<PlFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<PlFlagComponent, "rhc-pl-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class PtFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<PtFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<PtFlagComponent, "rhc-pt-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class RoFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<RoFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<RoFlagComponent, "rhc-ro-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class SkFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<SkFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkFlagComponent, "rhc-sk-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class UkFlagComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<UkFlagComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<UkFlagComponent, "rhc-uk-flag", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,10 @@
1
+ import { RHCIconID } from './RHCIconIDs';
2
+ import * as i0 from "@angular/core";
3
+ export declare class IconComponent {
4
+ icon?: string;
5
+ static iconSet: Partial<Record<RHCIconID, string>>;
6
+ computedIconRender: () => string;
7
+ static iconSetKeys(): RHCIconID[];
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<IconComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "rhc-icon", never, { "icon": { "alias": "icon"; "required": false; }; }, {}, never, ["*"], true, never>;
10
+ }
@@ -0,0 +1,16 @@
1
+ export * from './flag-icons/bg-flag/bg-flag.component';
2
+ export * from './flag-icons/de-flag/de-flag.component';
3
+ export * from './flag-icons/es-flag/es-flag.component';
4
+ export * from './flag-icons/fr-flag/fr-flag.component';
5
+ export * from './flag-icons/gr-flag/gr-flag.component';
6
+ export * from './flag-icons/hu-flag/hu-flag.component';
7
+ export * from './flag-icons/it-flag/it-flag.component';
8
+ export * from './flag-icons/lv-flag/lv-flag.component';
9
+ export * from './flag-icons/nl-flag/nl-flag.component';
10
+ export * from './flag-icons/pl-flag/pl-flag.component';
11
+ export * from './flag-icons/pt-flag/pt-flag.component';
12
+ export * from './flag-icons/ro-flag/ro-flag.component';
13
+ export * from './flag-icons/sk-flag/sk-flag.component';
14
+ export * from './flag-icons/uk-flag/uk-flag.component';
15
+ export * from './dutch-map-icon/dutch-map-icon.component';
16
+ export * from './icon.component';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@rijkshuisstijl-community/components-angular" />
5
+ export * from './public-api';
@@ -0,0 +1,6 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class LinkComponent {
3
+ href: string;
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<LinkComponent, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<LinkComponent, "rhc-link", never, { "href": { "alias": "href"; "required": true; }; }, {}, never, ["*"], true, never>;
6
+ }
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare const appearanceOptions: readonly [undefined, "lead"];
3
+ export type AppearanceType = (typeof appearanceOptions)[number];
4
+ export declare class ParagraphComponent {
5
+ appearance?: AppearanceType;
6
+ computedClass: () => "nl-paragraph nl-paragraph--lead" | "nl-paragraph";
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<ParagraphComponent, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<ParagraphComponent, "rhc-paragraph", never, { "appearance": { "alias": "appearance"; "required": false; }; }, {}, never, ["*"], true, never>;
9
+ }
@@ -0,0 +1,6 @@
1
+ export * from './heading/heading.component';
2
+ export * from './paragraph/paragraph.component';
3
+ export * from './link/link.component';
4
+ export * from './button/button.component';
5
+ export * from './action-group/action-group.component';
6
+ export * from './icon/public-api';
package/jest.config.js ADDED
@@ -0,0 +1,5 @@
1
+ export default {
2
+ preset: 'jest-preset-angular',
3
+ setupFilesAfterEnv: ['<rootDir>/setup-jest.ts'],
4
+ globalSetup: 'jest-preset-angular/global-setup',
5
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "./node_modules/ng-packagr/ng-package.schema.json",
3
+ "dest": "dist",
4
+ "lib": {
5
+ "entryFile": "./src/public-api.ts"
6
+ }
7
+ }
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@rijkshuisstijl-community/components-angular",
3
+ "version": "1.0.0",
4
+ "author": "Community for NL Design System",
5
+ "description": "Angular component library for the Rijkshuisstijl Community repository, based on the NL Design System architecture",
6
+ "license": "EUPL-1.2",
7
+ "keywords": [
8
+ "nl-design-system"
9
+ ],
10
+ "private": false,
11
+ "type": "module",
12
+ "publishConfig": {
13
+ "access": "public",
14
+ "registry": "https://registry.npmjs.org/"
15
+ },
16
+ "repository": {
17
+ "type": "git+ssh",
18
+ "url": "git@github.com:nl-design-system/rijkshuisstijl-community.git",
19
+ "directory": "packages/components-angular"
20
+ },
21
+ "dependencies": {
22
+ "tslib": "2.3.0"
23
+ },
24
+ "devDependencies": {
25
+ "@angular-devkit/build-angular": "19.2.0",
26
+ "@angular/cli": "19.2.3",
27
+ "@angular/common": "19.2.0",
28
+ "@angular/compiler": "19.2.0",
29
+ "@angular/compiler-cli": "19.2.0",
30
+ "@angular/core": "19.2.0",
31
+ "@angular/forms": "19.2.0",
32
+ "@angular/platform-browser": "19.2.0",
33
+ "@angular/platform-browser-dynamic": "19.2.0",
34
+ "@angular/router": "19.2.0",
35
+ "@nl-design-system-candidate/heading-css": "1.0.0",
36
+ "@nl-design-system-candidate/link-css": "1.0.1",
37
+ "@nl-design-system-candidate/paragraph-css": "2.0.1",
38
+ "@testing-library/jest-dom": "5.17.0",
39
+ "@types/jest": "29.5.14",
40
+ "@types/testing-library__jest-dom": "5.14.9",
41
+ "angular-tabler-icons": "3.26.0",
42
+ "jest": "29.7.0",
43
+ "jest-preset-angular": "14.5.4",
44
+ "ng-packagr": "19.2.0",
45
+ "rxjs": "7.8.0",
46
+ "typescript": "5.7.2",
47
+ "zone.js": "0.15.0",
48
+ "@rijkshuisstijl-community/components-css": "1.1.0"
49
+ },
50
+ "scripts": {
51
+ "ng": "ng",
52
+ "build": "ng build",
53
+ "watch": "ng build --watch --configuration development",
54
+ "test-results": "jest --json --outputFile=dist/.jest-test-results.json --silent",
55
+ "test": "jest --coverage --verbose"
56
+ }
57
+ }
package/setup-jest.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone';
2
+ setupZoneTestEnv();
3
+ import '@testing-library/jest-dom';
@@ -0,0 +1,9 @@
1
+ <div
2
+ [class]="{
3
+ 'utrecht-button-group': true,
4
+ 'utrecht-button-group--column': direction === 'column',
5
+ 'utrecht-button-group--row': direction === 'row',
6
+ }"
7
+ >
8
+ <ng-content />
9
+ </div>
@@ -0,0 +1,46 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { By } from '@angular/platform-browser';
3
+ import { ActionGroupComponent } from './action-group.component';
4
+
5
+ describe('ActionGroupComponent', () => {
6
+ let component: ActionGroupComponent;
7
+ let fixture: ComponentFixture<ActionGroupComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ imports: [ActionGroupComponent],
12
+ }).compileComponents();
13
+
14
+ fixture = TestBed.createComponent(ActionGroupComponent);
15
+ component = fixture.componentInstance;
16
+ fixture.detectChanges();
17
+ });
18
+
19
+ it('should create', () => {
20
+ expect(component).toBeTruthy();
21
+ });
22
+
23
+ it('should have "utrecht-button-group--row" class by default', () => {
24
+ const divEl = fixture.debugElement.query(By.css('div')).nativeElement;
25
+ expect(divEl.classList).toContain('utrecht-button-group--row');
26
+ expect(divEl.classList).not.toContain('utrecht-button-group--column');
27
+ });
28
+
29
+ it('should apply "column" direction class when input is column', () => {
30
+ component.direction = 'column';
31
+ fixture.detectChanges();
32
+
33
+ const divEl = fixture.debugElement.query(By.css('div')).nativeElement;
34
+ expect(divEl.classList).toContain('utrecht-button-group--column');
35
+ expect(divEl.classList).not.toContain('utrecht-button-group--row');
36
+ });
37
+
38
+ it('should apply "row" direction class when input is row', () => {
39
+ component.direction = 'row';
40
+ fixture.detectChanges();
41
+
42
+ const divEl = fixture.debugElement.query(By.css('div')).nativeElement;
43
+ expect(divEl.classList).toContain('utrecht-button-group--row');
44
+ expect(divEl.classList).not.toContain('utrecht-button-group--column');
45
+ });
46
+ });
@@ -0,0 +1,10 @@
1
+ import { Component, Input } from '@angular/core';
2
+
3
+ @Component({
4
+ selector: 'rhc-action-group',
5
+ imports: [],
6
+ templateUrl: './action-group.component.html',
7
+ })
8
+ export class ActionGroupComponent {
9
+ @Input() direction: 'column' | 'row' = 'row';
10
+ }
@@ -0,0 +1,3 @@
1
+ <button class="{{ computedClasses() }}" [disabled]="disabled">
2
+ <ng-content></ng-content>
3
+ </button>
@@ -0,0 +1,41 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { ButtonComponent } from './button.component';
3
+
4
+ describe('ButtonComponent', () => {
5
+ let component: ButtonComponent;
6
+ let fixture: ComponentFixture<ButtonComponent>;
7
+
8
+ beforeEach(async () => {
9
+ await TestBed.configureTestingModule({
10
+ imports: [ButtonComponent],
11
+ }).compileComponents();
12
+
13
+ fixture = TestBed.createComponent(ButtonComponent);
14
+ component = fixture.componentInstance;
15
+ fixture.detectChanges();
16
+ });
17
+
18
+ it('should create', () => {
19
+ expect(component).toBeTruthy();
20
+ });
21
+
22
+ it('should render a native <button>', () => {
23
+ const button = fixture.nativeElement.querySelector('button');
24
+ expect(button).toBeTruthy();
25
+ expect(button.tagName.toLowerCase()).toBe('button');
26
+ });
27
+
28
+ it('should apply the primary-action class', () => {
29
+ component.appearance = 'primary-action';
30
+ fixture.detectChanges();
31
+ const button = fixture.nativeElement.querySelector('button');
32
+ expect(button.classList).toContain('utrecht-button--primary-action');
33
+ });
34
+
35
+ it('should be disabled when the disabled input is true', () => {
36
+ component.disabled = true;
37
+ fixture.detectChanges();
38
+ const button = fixture.nativeElement.querySelector('button');
39
+ expect(button.disabled).toBe(true);
40
+ });
41
+ });
@@ -0,0 +1,14 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+
4
+ @Component({
5
+ selector: 'rhc-button',
6
+ imports: [CommonModule],
7
+ templateUrl: './button.component.html',
8
+ })
9
+ export class ButtonComponent {
10
+ @Input() appearance?: '' | 'primary-action' | 'secondary-action' | 'subtle' = '';
11
+ @Input() disabled?: boolean = false;
12
+
13
+ computedClasses = () => `utrecht-button utrecht-button--${this.appearance}`;
14
+ }
@@ -0,0 +1 @@
1
+ @import "@nl-design-system-candidate/heading-css/heading.css";
@@ -0,0 +1,31 @@
1
+ @switch (level) {
2
+ @case (1) {
3
+ <h1 class="{{ computedClasses() }}">
4
+ <ng-container [ngTemplateOutlet]="content"></ng-container>
5
+ </h1>
6
+ }
7
+ @case (2) {
8
+ <h2 class="{{ computedClasses() }}">
9
+ <ng-container [ngTemplateOutlet]="content"></ng-container>
10
+ </h2>
11
+ }
12
+ @case (3) {
13
+ <h3 class="{{ computedClasses() }}">
14
+ <ng-container [ngTemplateOutlet]="content"></ng-container>
15
+ </h3>
16
+ }
17
+ @case (4) {
18
+ <h4 class="{{ computedClasses() }}">
19
+ <ng-container [ngTemplateOutlet]="content"></ng-container>
20
+ </h4>
21
+ }
22
+ @case (5) {
23
+ <h5 class="{{ computedClasses() }}">
24
+ <ng-container [ngTemplateOutlet]="content"></ng-container>
25
+ </h5>
26
+ }
27
+ }
28
+
29
+ <ng-template #content>
30
+ <ng-content></ng-content>
31
+ </ng-template>
@@ -0,0 +1,54 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { By } from '@angular/platform-browser';
3
+ import { HeadingComponent, HeadingLevel } from './heading.component';
4
+
5
+ describe('HeadingComponent', () => {
6
+ let component: HeadingComponent;
7
+ let fixture: ComponentFixture<HeadingComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ imports: [HeadingComponent],
12
+ }).compileComponents();
13
+
14
+ fixture = TestBed.createComponent(HeadingComponent);
15
+ component = fixture.componentInstance;
16
+ fixture.detectChanges();
17
+ });
18
+
19
+ it('should create', () => {
20
+ expect(component).toBeTruthy();
21
+ });
22
+
23
+ it('should use the correct heading level', () => {
24
+ for (let level of [1, 2, 3, 4, 5] as HeadingLevel[]) {
25
+ component.level = level;
26
+ fixture.detectChanges();
27
+ const element = fixture.nativeElement.querySelector(`h${level}`);
28
+ expect(element).toBeTruthy();
29
+ }
30
+ });
31
+
32
+ it('should apply the css class according to appearance level', () => {
33
+ component.level = 5;
34
+ component.appearanceLevel = 2;
35
+ fixture.detectChanges();
36
+ const element = fixture.debugElement.query(By.css('.nl-heading--level-2'));
37
+ expect(element).toBeTruthy();
38
+ });
39
+
40
+ it('should contain the nl-heading class', () => {
41
+ component.level = 3;
42
+ fixture.detectChanges();
43
+ const element = fixture.debugElement.query(By.css('.nl-heading'));
44
+ expect(element).toBeTruthy();
45
+ });
46
+
47
+ it('should render rich text content', () => {
48
+ component.level = 1;
49
+ fixture.detectChanges();
50
+ const headingDebugElement = fixture.debugElement.query(By.css('.nl-heading--level-1'));
51
+ headingDebugElement.nativeElement.innerHTML = '<strong>Breaking</strong> news';
52
+ expect(fixture.nativeElement).toContainHTML('strong');
53
+ });
54
+ });
@@ -0,0 +1,19 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+
4
+ export const headingLevels = [1, 2, 3, 4, 5] as const;
5
+ export type HeadingLevel = (typeof headingLevels)[number];
6
+
7
+ @Component({
8
+ selector: 'rhc-heading',
9
+ imports: [CommonModule],
10
+ templateUrl: './heading.component.html',
11
+ styleUrl: './heading.component.css',
12
+ })
13
+ export class HeadingComponent {
14
+ @Input({ required: true }) level!: HeadingLevel;
15
+ @Input() appearanceLevel?: HeadingLevel;
16
+
17
+ stylingLevel = () => this.appearanceLevel ?? this.level;
18
+ computedClasses = () => `nl-heading nl-heading--level-${this.stylingLevel()}`;
19
+ }