@dillingerstaffing/strand-vue 0.16.0 → 0.17.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 (292) hide show
  1. package/dist/components/CardSection/CardSection.vue.d.ts +27 -0
  2. package/dist/components/CardSection/CardSection.vue.d.ts.map +1 -0
  3. package/dist/components/CardSection/index.d.ts +2 -0
  4. package/dist/components/CardSection/index.d.ts.map +1 -0
  5. package/dist/components/ContainerScale/ContainerScale.vue.d.ts +23 -0
  6. package/dist/components/ContainerScale/ContainerScale.vue.d.ts.map +1 -0
  7. package/dist/components/ContainerScale/ContainerScaleAxis.vue.d.ts +23 -0
  8. package/dist/components/ContainerScale/ContainerScaleAxis.vue.d.ts.map +1 -0
  9. package/dist/components/ContainerScale/ContainerScaleBar.vue.d.ts +24 -0
  10. package/dist/components/ContainerScale/ContainerScaleBar.vue.d.ts.map +1 -0
  11. package/dist/components/ContainerScale/ContainerScaleCaption.vue.d.ts +23 -0
  12. package/dist/components/ContainerScale/ContainerScaleCaption.vue.d.ts.map +1 -0
  13. package/dist/components/ContainerScale/ContainerScaleLabel.vue.d.ts +23 -0
  14. package/dist/components/ContainerScale/ContainerScaleLabel.vue.d.ts.map +1 -0
  15. package/dist/components/ContainerScale/ContainerScalePx.vue.d.ts +23 -0
  16. package/dist/components/ContainerScale/ContainerScalePx.vue.d.ts.map +1 -0
  17. package/dist/components/ContainerScale/ContainerScaleRow.vue.d.ts +23 -0
  18. package/dist/components/ContainerScale/ContainerScaleRow.vue.d.ts.map +1 -0
  19. package/dist/components/ContainerScale/ContainerScaleTrack.vue.d.ts +23 -0
  20. package/dist/components/ContainerScale/ContainerScaleTrack.vue.d.ts.map +1 -0
  21. package/dist/components/ContainerScale/index.d.ts +9 -0
  22. package/dist/components/ContainerScale/index.d.ts.map +1 -0
  23. package/dist/components/KvEditorial/KvEditorial.vue.d.ts +32 -0
  24. package/dist/components/KvEditorial/KvEditorial.vue.d.ts.map +1 -0
  25. package/dist/components/KvEditorial/index.d.ts +2 -0
  26. package/dist/components/KvEditorial/index.d.ts.map +1 -0
  27. package/dist/components/LabFrame/LabFrame.vue.d.ts +23 -0
  28. package/dist/components/LabFrame/LabFrame.vue.d.ts.map +1 -0
  29. package/dist/components/LabFrame/LabFrameActions.vue.d.ts +23 -0
  30. package/dist/components/LabFrame/LabFrameActions.vue.d.ts.map +1 -0
  31. package/dist/components/LabFrame/LabFrameBody.vue.d.ts +23 -0
  32. package/dist/components/LabFrame/LabFrameBody.vue.d.ts.map +1 -0
  33. package/dist/components/LabFrame/LabFrameChrome.vue.d.ts +23 -0
  34. package/dist/components/LabFrame/LabFrameChrome.vue.d.ts.map +1 -0
  35. package/dist/components/LabFrame/LabFrameContent.vue.d.ts +25 -0
  36. package/dist/components/LabFrame/LabFrameContent.vue.d.ts.map +1 -0
  37. package/dist/components/LabFrame/LabFrameContentHead.vue.d.ts +23 -0
  38. package/dist/components/LabFrame/LabFrameContentHead.vue.d.ts.map +1 -0
  39. package/dist/components/LabFrame/LabFrameDot.vue.d.ts +9 -0
  40. package/dist/components/LabFrame/LabFrameDot.vue.d.ts.map +1 -0
  41. package/dist/components/LabFrame/LabFrameOverlay.vue.d.ts +23 -0
  42. package/dist/components/LabFrame/LabFrameOverlay.vue.d.ts.map +1 -0
  43. package/dist/components/LabFrame/LabFramePanel.vue.d.ts +23 -0
  44. package/dist/components/LabFrame/LabFramePanel.vue.d.ts.map +1 -0
  45. package/dist/components/LabFrame/LabFramePanelBody.vue.d.ts +23 -0
  46. package/dist/components/LabFrame/LabFramePanelBody.vue.d.ts.map +1 -0
  47. package/dist/components/LabFrame/LabFramePanelClose.vue.d.ts +25 -0
  48. package/dist/components/LabFrame/LabFramePanelClose.vue.d.ts.map +1 -0
  49. package/dist/components/LabFrame/LabFramePanelFooter.vue.d.ts +23 -0
  50. package/dist/components/LabFrame/LabFramePanelFooter.vue.d.ts.map +1 -0
  51. package/dist/components/LabFrame/LabFramePanelHeader.vue.d.ts +23 -0
  52. package/dist/components/LabFrame/LabFramePanelHeader.vue.d.ts.map +1 -0
  53. package/dist/components/LabFrame/LabFramePanelTitle.vue.d.ts +23 -0
  54. package/dist/components/LabFrame/LabFramePanelTitle.vue.d.ts.map +1 -0
  55. package/dist/components/LabFrame/LabFrameTitle.vue.d.ts +23 -0
  56. package/dist/components/LabFrame/LabFrameTitle.vue.d.ts.map +1 -0
  57. package/dist/components/LabFrame/index.d.ts +16 -0
  58. package/dist/components/LabFrame/index.d.ts.map +1 -0
  59. package/dist/components/LabGlassStage/LabGlassPanel.vue.d.ts +23 -0
  60. package/dist/components/LabGlassStage/LabGlassPanel.vue.d.ts.map +1 -0
  61. package/dist/components/LabGlassStage/LabGlassStage.vue.d.ts +23 -0
  62. package/dist/components/LabGlassStage/LabGlassStage.vue.d.ts.map +1 -0
  63. package/dist/components/LabGlassStage/index.d.ts +3 -0
  64. package/dist/components/LabGlassStage/index.d.ts.map +1 -0
  65. package/dist/components/LabRevealStage/LabRevealLine.vue.d.ts +23 -0
  66. package/dist/components/LabRevealStage/LabRevealLine.vue.d.ts.map +1 -0
  67. package/dist/components/LabRevealStage/LabRevealStage.vue.d.ts +23 -0
  68. package/dist/components/LabRevealStage/LabRevealStage.vue.d.ts.map +1 -0
  69. package/dist/components/LabRevealStage/index.d.ts +3 -0
  70. package/dist/components/LabRevealStage/index.d.ts.map +1 -0
  71. package/dist/components/LabShell/LabBrand.vue.d.ts +23 -0
  72. package/dist/components/LabShell/LabBrand.vue.d.ts.map +1 -0
  73. package/dist/components/LabShell/LabBrandMark.vue.d.ts +23 -0
  74. package/dist/components/LabShell/LabBrandMark.vue.d.ts.map +1 -0
  75. package/dist/components/LabShell/LabBrandSub.vue.d.ts +23 -0
  76. package/dist/components/LabShell/LabBrandSub.vue.d.ts.map +1 -0
  77. package/dist/components/LabShell/LabBrandTitle.vue.d.ts +23 -0
  78. package/dist/components/LabShell/LabBrandTitle.vue.d.ts.map +1 -0
  79. package/dist/components/LabShell/LabExample.vue.d.ts +23 -0
  80. package/dist/components/LabShell/LabExample.vue.d.ts.map +1 -0
  81. package/dist/components/LabShell/LabExampleCaption.vue.d.ts +23 -0
  82. package/dist/components/LabShell/LabExampleCaption.vue.d.ts.map +1 -0
  83. package/dist/components/LabShell/LabExampleCode.vue.d.ts +23 -0
  84. package/dist/components/LabShell/LabExampleCode.vue.d.ts.map +1 -0
  85. package/dist/components/LabShell/LabExampleDemo.vue.d.ts +27 -0
  86. package/dist/components/LabShell/LabExampleDemo.vue.d.ts.map +1 -0
  87. package/dist/components/LabShell/LabExampleLabel.vue.d.ts +23 -0
  88. package/dist/components/LabShell/LabExampleLabel.vue.d.ts.map +1 -0
  89. package/dist/components/LabShell/LabExampleMeta.vue.d.ts +23 -0
  90. package/dist/components/LabShell/LabExampleMeta.vue.d.ts.map +1 -0
  91. package/dist/components/LabShell/LabHeader.vue.d.ts +23 -0
  92. package/dist/components/LabShell/LabHeader.vue.d.ts.map +1 -0
  93. package/dist/components/LabShell/LabHeaderLead.vue.d.ts +23 -0
  94. package/dist/components/LabShell/LabHeaderLead.vue.d.ts.map +1 -0
  95. package/dist/components/LabShell/LabHeaderMeta.vue.d.ts +23 -0
  96. package/dist/components/LabShell/LabHeaderMeta.vue.d.ts.map +1 -0
  97. package/dist/components/LabShell/LabHeaderMetaItem.vue.d.ts +23 -0
  98. package/dist/components/LabShell/LabHeaderMetaItem.vue.d.ts.map +1 -0
  99. package/dist/components/LabShell/LabHeaderMetaLabel.vue.d.ts +23 -0
  100. package/dist/components/LabShell/LabHeaderMetaLabel.vue.d.ts.map +1 -0
  101. package/dist/components/LabShell/LabHeaderMetaValue.vue.d.ts +23 -0
  102. package/dist/components/LabShell/LabHeaderMetaValue.vue.d.ts.map +1 -0
  103. package/dist/components/LabShell/LabHeaderTitle.vue.d.ts +23 -0
  104. package/dist/components/LabShell/LabHeaderTitle.vue.d.ts.map +1 -0
  105. package/dist/components/LabShell/LabMain.vue.d.ts +23 -0
  106. package/dist/components/LabShell/LabMain.vue.d.ts.map +1 -0
  107. package/dist/components/LabShell/LabSection.vue.d.ts +23 -0
  108. package/dist/components/LabShell/LabSection.vue.d.ts.map +1 -0
  109. package/dist/components/LabShell/LabSectionBody.vue.d.ts +23 -0
  110. package/dist/components/LabShell/LabSectionBody.vue.d.ts.map +1 -0
  111. package/dist/components/LabShell/LabSectionHead.vue.d.ts +23 -0
  112. package/dist/components/LabShell/LabSectionHead.vue.d.ts.map +1 -0
  113. package/dist/components/LabShell/LabSectionHeadNote.vue.d.ts +23 -0
  114. package/dist/components/LabShell/LabSectionHeadNote.vue.d.ts.map +1 -0
  115. package/dist/components/LabShell/LabShell.vue.d.ts +23 -0
  116. package/dist/components/LabShell/LabShell.vue.d.ts.map +1 -0
  117. package/dist/components/LabShell/LabSidebar.vue.d.ts +23 -0
  118. package/dist/components/LabShell/LabSidebar.vue.d.ts.map +1 -0
  119. package/dist/components/LabShell/LabSidebarGroup.vue.d.ts +23 -0
  120. package/dist/components/LabShell/LabSidebarGroup.vue.d.ts.map +1 -0
  121. package/dist/components/LabShell/LabSidebarGroupDot.vue.d.ts +8 -0
  122. package/dist/components/LabShell/LabSidebarGroupDot.vue.d.ts.map +1 -0
  123. package/dist/components/LabShell/LabSidebarGroupLabel.vue.d.ts +23 -0
  124. package/dist/components/LabShell/LabSidebarGroupLabel.vue.d.ts.map +1 -0
  125. package/dist/components/LabShell/LabSidebarGroupLink.vue.d.ts +25 -0
  126. package/dist/components/LabShell/LabSidebarGroupLink.vue.d.ts.map +1 -0
  127. package/dist/components/LabShell/LabSidebarGroupList.vue.d.ts +23 -0
  128. package/dist/components/LabShell/LabSidebarGroupList.vue.d.ts.map +1 -0
  129. package/dist/components/LabShell/LabSidebarHead.vue.d.ts +23 -0
  130. package/dist/components/LabShell/LabSidebarHead.vue.d.ts.map +1 -0
  131. package/dist/components/LabShell/LabSidebarScroll.vue.d.ts +23 -0
  132. package/dist/components/LabShell/LabSidebarScroll.vue.d.ts.map +1 -0
  133. package/dist/components/LabShell/LabTaxonomy.vue.d.ts +23 -0
  134. package/dist/components/LabShell/LabTaxonomy.vue.d.ts.map +1 -0
  135. package/dist/components/LabShell/LabTaxonomyList.vue.d.ts +23 -0
  136. package/dist/components/LabShell/LabTaxonomyList.vue.d.ts.map +1 -0
  137. package/dist/components/LabShell/LabTaxonomyTitle.vue.d.ts +23 -0
  138. package/dist/components/LabShell/LabTaxonomyTitle.vue.d.ts.map +1 -0
  139. package/dist/components/LabShell/index.d.ts +35 -0
  140. package/dist/components/LabShell/index.d.ts.map +1 -0
  141. package/dist/components/LabTip/LabTip.vue.d.ts +25 -0
  142. package/dist/components/LabTip/LabTip.vue.d.ts.map +1 -0
  143. package/dist/components/LabTip/LabTipBubble.vue.d.ts +26 -0
  144. package/dist/components/LabTip/LabTipBubble.vue.d.ts.map +1 -0
  145. package/dist/components/LabTip/index.d.ts +3 -0
  146. package/dist/components/LabTip/index.d.ts.map +1 -0
  147. package/dist/components/LabUtilCell/LabUtilCell.vue.d.ts +23 -0
  148. package/dist/components/LabUtilCell/LabUtilCell.vue.d.ts.map +1 -0
  149. package/dist/components/LabUtilCell/LabUtilCellBlock.vue.d.ts +23 -0
  150. package/dist/components/LabUtilCell/LabUtilCellBlock.vue.d.ts.map +1 -0
  151. package/dist/components/LabUtilCell/LabUtilCellCaption.vue.d.ts +23 -0
  152. package/dist/components/LabUtilCell/LabUtilCellCaption.vue.d.ts.map +1 -0
  153. package/dist/components/LabUtilCell/LabUtilCellCode.vue.d.ts +23 -0
  154. package/dist/components/LabUtilCell/LabUtilCellCode.vue.d.ts.map +1 -0
  155. package/dist/components/LabUtilCell/LabUtilCellDemo.vue.d.ts +23 -0
  156. package/dist/components/LabUtilCell/LabUtilCellDemo.vue.d.ts.map +1 -0
  157. package/dist/components/LabUtilCell/LabUtilRow.vue.d.ts +23 -0
  158. package/dist/components/LabUtilCell/LabUtilRow.vue.d.ts.map +1 -0
  159. package/dist/components/LabUtilCell/index.d.ts +7 -0
  160. package/dist/components/LabUtilCell/index.d.ts.map +1 -0
  161. package/dist/components/Swatch/Swatch.vue.d.ts +12 -0
  162. package/dist/components/Swatch/Swatch.vue.d.ts.map +1 -0
  163. package/dist/components/Swatch/SwatchGrid.vue.d.ts +23 -0
  164. package/dist/components/Swatch/SwatchGrid.vue.d.ts.map +1 -0
  165. package/dist/components/Swatch/index.d.ts +3 -0
  166. package/dist/components/Swatch/index.d.ts.map +1 -0
  167. package/dist/components/TokenSpecimen/TokenSpecimen.vue.d.ts +23 -0
  168. package/dist/components/TokenSpecimen/TokenSpecimen.vue.d.ts.map +1 -0
  169. package/dist/components/TokenSpecimen/TokenSpecimenBox.vue.d.ts +10 -0
  170. package/dist/components/TokenSpecimen/TokenSpecimenBox.vue.d.ts.map +1 -0
  171. package/dist/components/TokenSpecimen/TokenSpecimenGrid.vue.d.ts +23 -0
  172. package/dist/components/TokenSpecimen/TokenSpecimenGrid.vue.d.ts.map +1 -0
  173. package/dist/components/TokenSpecimen/TokenSpecimenSpacer.vue.d.ts +9 -0
  174. package/dist/components/TokenSpecimen/TokenSpecimenSpacer.vue.d.ts.map +1 -0
  175. package/dist/components/TokenSpecimen/index.d.ts +5 -0
  176. package/dist/components/TokenSpecimen/index.d.ts.map +1 -0
  177. package/dist/components/TypeSpecimen/TypeSpecimen.vue.d.ts +23 -0
  178. package/dist/components/TypeSpecimen/TypeSpecimen.vue.d.ts.map +1 -0
  179. package/dist/components/TypeSpecimen/TypeSpecimenMeta.vue.d.ts +23 -0
  180. package/dist/components/TypeSpecimen/TypeSpecimenMeta.vue.d.ts.map +1 -0
  181. package/dist/components/TypeSpecimen/index.d.ts +3 -0
  182. package/dist/components/TypeSpecimen/index.d.ts.map +1 -0
  183. package/dist/css/strand-ui.css +1268 -87
  184. package/dist/index.d.ts +12 -0
  185. package/dist/index.d.ts.map +1 -1
  186. package/dist/index.js +1797 -756
  187. package/dist/index.js.map +1 -1
  188. package/package.json +2 -2
  189. package/src/components/CardSection/CardSection.test.ts +51 -0
  190. package/src/components/CardSection/CardSection.vue +42 -0
  191. package/src/components/CardSection/index.ts +1 -0
  192. package/src/components/ContainerScale/ContainerScale.test.ts +42 -0
  193. package/src/components/ContainerScale/ContainerScale.vue +8 -0
  194. package/src/components/ContainerScale/ContainerScaleAxis.vue +8 -0
  195. package/src/components/ContainerScale/ContainerScaleBar.vue +17 -0
  196. package/src/components/ContainerScale/ContainerScaleCaption.vue +8 -0
  197. package/src/components/ContainerScale/ContainerScaleLabel.vue +8 -0
  198. package/src/components/ContainerScale/ContainerScalePx.vue +8 -0
  199. package/src/components/ContainerScale/ContainerScaleRow.vue +8 -0
  200. package/src/components/ContainerScale/ContainerScaleTrack.vue +8 -0
  201. package/src/components/ContainerScale/index.ts +8 -0
  202. package/src/components/KvEditorial/KvEditorial.test.ts +43 -0
  203. package/src/components/KvEditorial/KvEditorial.vue +56 -0
  204. package/src/components/KvEditorial/index.ts +1 -0
  205. package/src/components/LabFrame/LabFrame.test.ts +89 -0
  206. package/src/components/LabFrame/LabFrame.vue +8 -0
  207. package/src/components/LabFrame/LabFrameActions.vue +8 -0
  208. package/src/components/LabFrame/LabFrameBody.vue +8 -0
  209. package/src/components/LabFrame/LabFrameChrome.vue +8 -0
  210. package/src/components/LabFrame/LabFrameContent.vue +17 -0
  211. package/src/components/LabFrame/LabFrameContentHead.vue +8 -0
  212. package/src/components/LabFrame/LabFrameDot.vue +15 -0
  213. package/src/components/LabFrame/LabFrameOverlay.vue +8 -0
  214. package/src/components/LabFrame/LabFramePanel.vue +11 -0
  215. package/src/components/LabFrame/LabFramePanelBody.vue +8 -0
  216. package/src/components/LabFrame/LabFramePanelClose.vue +26 -0
  217. package/src/components/LabFrame/LabFramePanelFooter.vue +8 -0
  218. package/src/components/LabFrame/LabFramePanelHeader.vue +8 -0
  219. package/src/components/LabFrame/LabFramePanelTitle.vue +8 -0
  220. package/src/components/LabFrame/LabFrameTitle.vue +8 -0
  221. package/src/components/LabFrame/index.ts +15 -0
  222. package/src/components/LabGlassStage/LabGlassPanel.vue +8 -0
  223. package/src/components/LabGlassStage/LabGlassStage.test.ts +16 -0
  224. package/src/components/LabGlassStage/LabGlassStage.vue +8 -0
  225. package/src/components/LabGlassStage/index.ts +2 -0
  226. package/src/components/LabRevealStage/LabRevealLine.vue +8 -0
  227. package/src/components/LabRevealStage/LabRevealStage.test.ts +16 -0
  228. package/src/components/LabRevealStage/LabRevealStage.vue +8 -0
  229. package/src/components/LabRevealStage/index.ts +2 -0
  230. package/src/components/LabShell/LabBrand.vue +8 -0
  231. package/src/components/LabShell/LabBrandMark.vue +8 -0
  232. package/src/components/LabShell/LabBrandSub.vue +8 -0
  233. package/src/components/LabShell/LabBrandTitle.vue +8 -0
  234. package/src/components/LabShell/LabExample.vue +8 -0
  235. package/src/components/LabShell/LabExampleCaption.vue +8 -0
  236. package/src/components/LabShell/LabExampleCode.vue +8 -0
  237. package/src/components/LabShell/LabExampleDemo.vue +30 -0
  238. package/src/components/LabShell/LabExampleLabel.vue +8 -0
  239. package/src/components/LabShell/LabExampleMeta.vue +8 -0
  240. package/src/components/LabShell/LabHeader.vue +8 -0
  241. package/src/components/LabShell/LabHeaderLead.vue +8 -0
  242. package/src/components/LabShell/LabHeaderMeta.vue +8 -0
  243. package/src/components/LabShell/LabHeaderMetaItem.vue +8 -0
  244. package/src/components/LabShell/LabHeaderMetaLabel.vue +8 -0
  245. package/src/components/LabShell/LabHeaderMetaValue.vue +8 -0
  246. package/src/components/LabShell/LabHeaderTitle.vue +8 -0
  247. package/src/components/LabShell/LabMain.vue +8 -0
  248. package/src/components/LabShell/LabSection.vue +8 -0
  249. package/src/components/LabShell/LabSectionBody.vue +8 -0
  250. package/src/components/LabShell/LabSectionHead.vue +8 -0
  251. package/src/components/LabShell/LabSectionHeadNote.vue +8 -0
  252. package/src/components/LabShell/LabShell.test.ts +166 -0
  253. package/src/components/LabShell/LabShell.vue +12 -0
  254. package/src/components/LabShell/LabSidebar.vue +8 -0
  255. package/src/components/LabShell/LabSidebarGroup.vue +8 -0
  256. package/src/components/LabShell/LabSidebarGroupDot.vue +8 -0
  257. package/src/components/LabShell/LabSidebarGroupLabel.vue +8 -0
  258. package/src/components/LabShell/LabSidebarGroupLink.vue +14 -0
  259. package/src/components/LabShell/LabSidebarGroupList.vue +8 -0
  260. package/src/components/LabShell/LabSidebarHead.vue +8 -0
  261. package/src/components/LabShell/LabSidebarScroll.vue +8 -0
  262. package/src/components/LabShell/LabTaxonomy.vue +8 -0
  263. package/src/components/LabShell/LabTaxonomyList.vue +8 -0
  264. package/src/components/LabShell/LabTaxonomyTitle.vue +8 -0
  265. package/src/components/LabShell/index.ts +34 -0
  266. package/src/components/LabTip/LabTip.test.ts +39 -0
  267. package/src/components/LabTip/LabTip.vue +18 -0
  268. package/src/components/LabTip/LabTipBubble.vue +19 -0
  269. package/src/components/LabTip/index.ts +2 -0
  270. package/src/components/LabUtilCell/LabUtilCell.test.ts +25 -0
  271. package/src/components/LabUtilCell/LabUtilCell.vue +8 -0
  272. package/src/components/LabUtilCell/LabUtilCellBlock.vue +8 -0
  273. package/src/components/LabUtilCell/LabUtilCellCaption.vue +8 -0
  274. package/src/components/LabUtilCell/LabUtilCellCode.vue +8 -0
  275. package/src/components/LabUtilCell/LabUtilCellDemo.vue +8 -0
  276. package/src/components/LabUtilCell/LabUtilRow.vue +8 -0
  277. package/src/components/LabUtilCell/index.ts +6 -0
  278. package/src/components/Swatch/Swatch.test.ts +29 -0
  279. package/src/components/Swatch/Swatch.vue +23 -0
  280. package/src/components/Swatch/SwatchGrid.vue +8 -0
  281. package/src/components/Swatch/index.ts +2 -0
  282. package/src/components/TokenSpecimen/TokenSpecimen.test.ts +41 -0
  283. package/src/components/TokenSpecimen/TokenSpecimen.vue +8 -0
  284. package/src/components/TokenSpecimen/TokenSpecimenBox.vue +23 -0
  285. package/src/components/TokenSpecimen/TokenSpecimenGrid.vue +8 -0
  286. package/src/components/TokenSpecimen/TokenSpecimenSpacer.vue +20 -0
  287. package/src/components/TokenSpecimen/index.ts +4 -0
  288. package/src/components/TypeSpecimen/TypeSpecimen.test.ts +17 -0
  289. package/src/components/TypeSpecimen/TypeSpecimen.vue +8 -0
  290. package/src/components/TypeSpecimen/TypeSpecimenMeta.vue +8 -0
  291. package/src/components/TypeSpecimen/index.ts +2 -0
  292. package/src/index.ts +18 -0
@@ -0,0 +1,15 @@
1
+ export { default as LabFrame } from './LabFrame.vue'
2
+ export { default as LabFrameChrome } from './LabFrameChrome.vue'
3
+ export { default as LabFrameDot } from './LabFrameDot.vue'
4
+ export { default as LabFrameTitle } from './LabFrameTitle.vue'
5
+ export { default as LabFrameBody } from './LabFrameBody.vue'
6
+ export { default as LabFrameContent } from './LabFrameContent.vue'
7
+ export { default as LabFrameContentHead } from './LabFrameContentHead.vue'
8
+ export { default as LabFrameActions } from './LabFrameActions.vue'
9
+ export { default as LabFrameOverlay } from './LabFrameOverlay.vue'
10
+ export { default as LabFramePanel } from './LabFramePanel.vue'
11
+ export { default as LabFramePanelHeader } from './LabFramePanelHeader.vue'
12
+ export { default as LabFramePanelTitle } from './LabFramePanelTitle.vue'
13
+ export { default as LabFramePanelClose } from './LabFramePanelClose.vue'
14
+ export { default as LabFramePanelBody } from './LabFramePanelBody.vue'
15
+ export { default as LabFramePanelFooter } from './LabFramePanelFooter.vue'
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-glass-panel', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,16 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { render } from '@testing-library/vue'
3
+ import LabGlassStage from './LabGlassStage.vue'
4
+ import LabGlassPanel from './LabGlassPanel.vue'
5
+
6
+ describe('LabGlassStage (Vue)', () => {
7
+ it('Stage base class', () => {
8
+ const { container } = render(LabGlassStage, { slots: { default: 'x' } })
9
+ expect(container.firstElementChild?.className).toContain('strand-ref-glass-stage')
10
+ })
11
+
12
+ it('Panel base class', () => {
13
+ const { container } = render(LabGlassPanel, { slots: { default: 'x' } })
14
+ expect(container.firstElementChild?.className).toContain('strand-ref-glass-panel')
15
+ })
16
+ })
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-glass-stage', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,2 @@
1
+ export { default as LabGlassStage } from './LabGlassStage.vue'
2
+ export { default as LabGlassPanel } from './LabGlassPanel.vue'
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-reveal-line', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,16 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { render } from '@testing-library/vue'
3
+ import LabRevealStage from './LabRevealStage.vue'
4
+ import LabRevealLine from './LabRevealLine.vue'
5
+
6
+ describe('LabRevealStage (Vue)', () => {
7
+ it('Stage base class', () => {
8
+ const { container } = render(LabRevealStage, { slots: { default: 'x' } })
9
+ expect(container.firstElementChild?.className).toContain('strand-ref-reveal-stage')
10
+ })
11
+
12
+ it('Line base class', () => {
13
+ const { container } = render(LabRevealLine, { slots: { default: 'x' } })
14
+ expect(container.firstElementChild?.className).toContain('strand-ref-reveal-line')
15
+ })
16
+ })
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-reveal-stage', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,2 @@
1
+ export { default as LabRevealStage } from './LabRevealStage.vue'
2
+ export { default as LabRevealLine } from './LabRevealLine.vue'
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-shell__brand', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-shell__brand-mark', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-shell__brand-sub', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><span :class="classes" v-bind="$attrs"><slot /></span></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-shell__brand-title', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><span :class="classes" v-bind="$attrs"><slot /></span></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-example', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-example__caption', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><p :class="classes" v-bind="$attrs"><slot /></p></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-example__code', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><span :class="classes" v-bind="$attrs"><slot /></span></template>
@@ -0,0 +1,30 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+
5
+ interface Props {
6
+ padNone?: boolean
7
+ recessed?: boolean
8
+ className?: string
9
+ }
10
+ const props = withDefaults(defineProps<Props>(), {
11
+ padNone: false,
12
+ recessed: false,
13
+ className: '',
14
+ })
15
+
16
+ const classes = computed(() =>
17
+ [
18
+ 'strand-ref-example__demo',
19
+ props.padNone ? 'strand-ref-example__demo--pad-none' : '',
20
+ props.recessed ? 'strand-ref-example__demo--recessed' : '',
21
+ props.className,
22
+ ]
23
+ .filter(Boolean)
24
+ .join(' '),
25
+ )
26
+ </script>
27
+
28
+ <template>
29
+ <div :class="classes" v-bind="$attrs"><slot /></div>
30
+ </template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-example__label', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><span :class="classes" v-bind="$attrs"><slot /></span></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-example__meta', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-header', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><header :class="classes" v-bind="$attrs"><slot /></header></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-header__lead', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><p :class="classes" v-bind="$attrs"><slot /></p></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-header__meta', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-header__meta-item', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-header__meta-label', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><span :class="classes" v-bind="$attrs"><slot /></span></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-header__meta-value', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><span :class="classes" v-bind="$attrs"><slot /></span></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-header__title', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><h1 :class="classes" v-bind="$attrs"><slot /></h1></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-shell__main', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><main :class="classes" v-bind="$attrs"><slot /></main></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-section', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><section :class="classes" v-bind="$attrs"><slot /></section></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-section__body', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-section__head', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-section__head-note', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><span :class="classes" v-bind="$attrs"><slot /></span></template>
@@ -0,0 +1,166 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { render } from '@testing-library/vue'
3
+ import LabShell from './LabShell.vue'
4
+ import LabSidebar from './LabSidebar.vue'
5
+ import LabSidebarHead from './LabSidebarHead.vue'
6
+ import LabSidebarScroll from './LabSidebarScroll.vue'
7
+ import LabBrand from './LabBrand.vue'
8
+ import LabBrandMark from './LabBrandMark.vue'
9
+ import LabBrandTitle from './LabBrandTitle.vue'
10
+ import LabBrandSub from './LabBrandSub.vue'
11
+ import LabSidebarGroup from './LabSidebarGroup.vue'
12
+ import LabSidebarGroupLabel from './LabSidebarGroupLabel.vue'
13
+ import LabSidebarGroupList from './LabSidebarGroupList.vue'
14
+ import LabSidebarGroupLink from './LabSidebarGroupLink.vue'
15
+ import LabSidebarGroupDot from './LabSidebarGroupDot.vue'
16
+ import LabMain from './LabMain.vue'
17
+ import LabHeader from './LabHeader.vue'
18
+ import LabHeaderTitle from './LabHeaderTitle.vue'
19
+ import LabHeaderLead from './LabHeaderLead.vue'
20
+ import LabHeaderMeta from './LabHeaderMeta.vue'
21
+ import LabHeaderMetaItem from './LabHeaderMetaItem.vue'
22
+ import LabHeaderMetaLabel from './LabHeaderMetaLabel.vue'
23
+ import LabHeaderMetaValue from './LabHeaderMetaValue.vue'
24
+ import LabTaxonomy from './LabTaxonomy.vue'
25
+ import LabTaxonomyTitle from './LabTaxonomyTitle.vue'
26
+ import LabTaxonomyList from './LabTaxonomyList.vue'
27
+ import LabSection from './LabSection.vue'
28
+ import LabSectionHead from './LabSectionHead.vue'
29
+ import LabSectionHeadNote from './LabSectionHeadNote.vue'
30
+ import LabSectionBody from './LabSectionBody.vue'
31
+ import LabExample from './LabExample.vue'
32
+ import LabExampleMeta from './LabExampleMeta.vue'
33
+ import LabExampleLabel from './LabExampleLabel.vue'
34
+ import LabExampleCode from './LabExampleCode.vue'
35
+ import LabExampleDemo from './LabExampleDemo.vue'
36
+ import LabExampleCaption from './LabExampleCaption.vue'
37
+
38
+ describe('LabShell family (Vue)', () => {
39
+ it('LabShell renders with base class', () => {
40
+ const { container } = render(LabShell, { slots: { default: 'x' } })
41
+ expect(container.firstElementChild?.className).toContain('strand-ref-shell')
42
+ })
43
+
44
+ it('LabSidebar renders an aside', () => {
45
+ const { container } = render(LabSidebar, { slots: { default: 'x' } })
46
+ expect(container.firstElementChild?.tagName).toBe('ASIDE')
47
+ expect(container.firstElementChild?.className).toContain('strand-ref-shell__sidebar')
48
+ })
49
+
50
+ it('LabSidebarHead + LabSidebarScroll render with scoped classes', () => {
51
+ const head = render(LabSidebarHead, { slots: { default: 'x' } })
52
+ expect(head.container.firstElementChild?.className).toContain('strand-ref-shell__sidebar-head')
53
+ const scroll = render(LabSidebarScroll, { slots: { default: 'x' } })
54
+ expect(scroll.container.firstElementChild?.className).toContain('strand-ref-shell__sidebar-scroll')
55
+ })
56
+
57
+ it('LabBrand + mark + title + sub compose', () => {
58
+ const brand = render(LabBrand, { slots: { default: 'x' } })
59
+ expect(brand.container.firstElementChild?.className).toContain('strand-ref-shell__brand')
60
+ const mark = render(LabBrandMark, { slots: { default: 'x' } })
61
+ expect(mark.container.firstElementChild?.className).toContain('strand-ref-shell__brand-mark')
62
+ const title = render(LabBrandTitle, { slots: { default: 'x' } })
63
+ expect(title.container.firstElementChild?.className).toContain('strand-ref-shell__brand-title')
64
+ const sub = render(LabBrandSub, { slots: { default: 'x' } })
65
+ expect(sub.container.firstElementChild?.className).toContain('strand-ref-shell__brand-sub')
66
+ })
67
+
68
+ it('LabSidebarGroup + label + list + link + dot render', () => {
69
+ const group = render(LabSidebarGroup, { slots: { default: 'x' } })
70
+ expect(group.container.firstElementChild?.className).toContain('strand-ref-shell__group')
71
+ const label = render(LabSidebarGroupLabel, { slots: { default: 'x' } })
72
+ expect(label.container.firstElementChild?.className).toContain('strand-ref-shell__group-label')
73
+ const list = render(LabSidebarGroupList, { slots: { default: 'x' } })
74
+ expect(list.container.firstElementChild?.tagName).toBe('NAV')
75
+ expect(list.container.firstElementChild?.className).toContain('strand-ref-shell__group-list')
76
+ const link = render(LabSidebarGroupLink, {
77
+ props: { href: '#typography' },
78
+ slots: { default: 'Typography' },
79
+ })
80
+ const a = link.container.firstElementChild as HTMLAnchorElement
81
+ expect(a.tagName).toBe('A')
82
+ expect(a.getAttribute('href')).toBe('#typography')
83
+ expect(a.className).toContain('strand-ref-shell__group-link')
84
+ expect(a.querySelector('.strand-ref-shell__group-dot')).toBeTruthy()
85
+ const dot = render(LabSidebarGroupDot)
86
+ expect(dot.container.firstElementChild?.tagName).toBe('SPAN')
87
+ expect(dot.container.firstElementChild?.className).toContain('strand-ref-shell__group-dot')
88
+ })
89
+
90
+ it('LabMain renders a <main>', () => {
91
+ const { container } = render(LabMain, { slots: { default: 'x' } })
92
+ expect(container.firstElementChild?.tagName).toBe('MAIN')
93
+ expect(container.firstElementChild?.className).toContain('strand-ref-shell__main')
94
+ })
95
+
96
+ it('LabHeader family renders correct tags + classes', () => {
97
+ const h = render(LabHeader, { slots: { default: 'x' } })
98
+ expect(h.container.firstElementChild?.tagName).toBe('HEADER')
99
+ const t = render(LabHeaderTitle, { slots: { default: 'x' } })
100
+ expect(t.container.firstElementChild?.tagName).toBe('H1')
101
+ const l = render(LabHeaderLead, { slots: { default: 'x' } })
102
+ expect(l.container.firstElementChild?.tagName).toBe('P')
103
+ const m = render(LabHeaderMeta, { slots: { default: 'x' } })
104
+ expect(m.container.firstElementChild?.className).toContain('strand-ref-header__meta')
105
+ const mi = render(LabHeaderMetaItem, { slots: { default: 'x' } })
106
+ expect(mi.container.firstElementChild?.className).toContain('strand-ref-header__meta-item')
107
+ const ml = render(LabHeaderMetaLabel, { slots: { default: 'x' } })
108
+ expect(ml.container.firstElementChild?.className).toContain('strand-ref-header__meta-label')
109
+ const mv = render(LabHeaderMetaValue, { slots: { default: 'x' } })
110
+ expect(mv.container.firstElementChild?.className).toContain('strand-ref-header__meta-value')
111
+ })
112
+
113
+ it('LabTaxonomy family renders correct tags + classes', () => {
114
+ const tx = render(LabTaxonomy, { slots: { default: 'x' } })
115
+ expect(tx.container.firstElementChild?.className).toContain('strand-ref-taxonomy')
116
+ const ti = render(LabTaxonomyTitle, { slots: { default: 'x' } })
117
+ expect(ti.container.firstElementChild?.className).toContain('strand-ref-taxonomy__title')
118
+ const ls = render(LabTaxonomyList, { slots: { default: 'x' } })
119
+ expect(ls.container.firstElementChild?.tagName).toBe('DL')
120
+ expect(ls.container.firstElementChild?.className).toContain('strand-ref-taxonomy__list')
121
+ })
122
+
123
+ it('LabSection family renders correct tags + classes', () => {
124
+ const s = render(LabSection, { slots: { default: 'x' } })
125
+ expect(s.container.firstElementChild?.tagName).toBe('SECTION')
126
+ expect(s.container.firstElementChild?.className).toContain('strand-ref-section')
127
+ const sh = render(LabSectionHead, { slots: { default: 'x' } })
128
+ expect(sh.container.firstElementChild?.className).toContain('strand-ref-section__head')
129
+ const shn = render(LabSectionHeadNote, { slots: { default: 'x' } })
130
+ expect(shn.container.firstElementChild?.className).toContain('strand-ref-section__head-note')
131
+ const sb = render(LabSectionBody, { slots: { default: 'x' } })
132
+ expect(sb.container.firstElementChild?.className).toContain('strand-ref-section__body')
133
+ })
134
+
135
+ it('LabExample family renders correct classes', () => {
136
+ const e = render(LabExample, { slots: { default: 'x' } })
137
+ expect(e.container.firstElementChild?.className).toContain('strand-ref-example')
138
+ const em = render(LabExampleMeta, { slots: { default: 'x' } })
139
+ expect(em.container.firstElementChild?.className).toContain('strand-ref-example__meta')
140
+ const el = render(LabExampleLabel, { slots: { default: 'x' } })
141
+ expect(el.container.firstElementChild?.className).toContain('strand-ref-example__label')
142
+ const ec = render(LabExampleCode, { slots: { default: 'x' } })
143
+ expect(ec.container.firstElementChild?.className).toContain('strand-ref-example__code')
144
+ const ed = render(LabExampleDemo, { slots: { default: 'x' } })
145
+ expect(ed.container.firstElementChild?.className).toContain('strand-ref-example__demo')
146
+ const ep = render(LabExampleCaption, { slots: { default: 'x' } })
147
+ expect(ep.container.firstElementChild?.tagName).toBe('P')
148
+ expect(ep.container.firstElementChild?.className).toContain('strand-ref-example__caption')
149
+ })
150
+
151
+ it('LabExampleDemo padNone adds --pad-none modifier', () => {
152
+ const { container } = render(LabExampleDemo, {
153
+ props: { padNone: true },
154
+ slots: { default: 'x' },
155
+ })
156
+ expect(container.firstElementChild?.className).toContain('strand-ref-example__demo--pad-none')
157
+ })
158
+
159
+ it('LabExampleDemo recessed adds --recessed modifier', () => {
160
+ const { container } = render(LabExampleDemo, {
161
+ props: { recessed: true },
162
+ slots: { default: 'x' },
163
+ })
164
+ expect(container.firstElementChild?.className).toContain('strand-ref-example__demo--recessed')
165
+ })
166
+ })
@@ -0,0 +1,12 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+
5
+ interface Props { className?: string }
6
+ const props = withDefaults(defineProps<Props>(), { className: '' })
7
+ const classes = computed(() => ['strand-ref-shell', props.className].filter(Boolean).join(' '))
8
+ </script>
9
+
10
+ <template>
11
+ <div :class="classes" v-bind="$attrs"><slot /></div>
12
+ </template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-shell__sidebar', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><aside :class="classes" v-bind="$attrs"><slot /></aside></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-shell__group', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-shell__group-dot', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><span :class="classes" v-bind="$attrs" /></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-shell__group-label', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><span :class="classes" v-bind="$attrs"><slot /></span></template>
@@ -0,0 +1,14 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { href?: string; className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { href: '#', className: '' })
6
+ const classes = computed(() => ['strand-ref-shell__group-link', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+
9
+ <template>
10
+ <a :class="classes" :href="props.href" v-bind="$attrs">
11
+ <span class="strand-ref-shell__group-dot"></span>
12
+ <slot />
13
+ </a>
14
+ </template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-shell__group-list', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><nav :class="classes" v-bind="$attrs"><slot /></nav></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-shell__sidebar-head', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-shell__sidebar-scroll', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>
@@ -0,0 +1,8 @@
1
+ <!--! Strand Vue | MIT License | dillingerstaffing.com -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+ interface Props { className?: string }
5
+ const props = withDefaults(defineProps<Props>(), { className: '' })
6
+ const classes = computed(() => ['strand-ref-taxonomy', props.className].filter(Boolean).join(' '))
7
+ </script>
8
+ <template><div :class="classes" v-bind="$attrs"><slot /></div></template>