diff --git a/beam/src/components/SegmentedDisplay.vue b/beam/src/components/SegmentedDisplay.vue new file mode 100644 index 00000000..19b39651 --- /dev/null +++ b/beam/src/components/SegmentedDisplay.vue @@ -0,0 +1,52 @@ + + + + diff --git a/beam/src/index.ts b/beam/src/index.ts index 5bba3901..b46ceaab 100644 --- a/beam/src/index.ts +++ b/beam/src/index.ts @@ -20,6 +20,7 @@ import ListItem from './components/ListItem.vue' import ListView from './components/ListView.vue' import Navbar from './components/Navbar.vue' import ScanInput from './components/ScanInput.vue' +import SegmentedDisplay from './components/SegmentedDisplay.vue' import SplitColumn from './components/SplitColumn.vue' import ToggleArrow from './components/ToggleArrow.vue' import { useMqttStream } from './composables/mqtt' @@ -52,6 +53,7 @@ function install(app: App /* options */) { app.component('ListView', ListView) app.component('Navbar', Navbar) app.component('ScanInput', ScanInput) + app.component('SegmentedDisplay', SegmentedDisplay) app.component('SplitColumn', SplitColumn) app.component('ToggleArrow', ToggleArrow) } @@ -77,6 +79,7 @@ export { ListView, Navbar, ScanInput, + SegmentedDisplay, SplitColumn, ToggleArrow, install, diff --git a/beam/src/types/index.ts b/beam/src/types/index.ts index 0898c246..c7cd97b0 100644 --- a/beam/src/types/index.ts +++ b/beam/src/types/index.ts @@ -20,6 +20,13 @@ export type ListViewItem = { route?: string } +type RGB = `rgb(${number}, ${number}, ${number})` +type HSL = `hsl(${number}, ${number}%, ${number}%)` +type HSLA = `hsl(${number}, ${number}%, ${number}%), ${number}` +type RGBA = `rgba(${number}, ${number}, ${number}, ${number})` +type HEX = `#${string}` + +export type Color = RGB | RGBA | HEX | HSL | HSLA | string /** * MQTT stream options * @public diff --git a/beam/themes/Segment7Standard.otf b/beam/themes/Segment7Standard.otf new file mode 100644 index 00000000..7429b0d7 Binary files /dev/null and b/beam/themes/Segment7Standard.otf differ diff --git a/beam/themes/Segment7Standard.otf:Zone.Identifier b/beam/themes/Segment7Standard.otf:Zone.Identifier new file mode 100644 index 00000000..bb31b670 --- /dev/null +++ b/beam/themes/Segment7Standard.otf:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=https://fontlibrary.org/en/font/segment7 +HostUrl=https://fontlibrary.org/assets/downloads/segment7/4cc82137fc130708919bf201c0dc9aae/segment7.zip diff --git a/beam/themes/beam.css b/beam/themes/beam.css index 205a956c..53412415 100644 --- a/beam/themes/beam.css +++ b/beam/themes/beam.css @@ -1,5 +1,9 @@ @import url('https://fonts.googleapis.com/css2?family=Arimo:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap'); +@font-face { + font-family: 'Segment7'; + src: url('./Segment7Standard.otf'); +} /* Global Beam Styles */ :root { @@ -22,6 +26,10 @@ --sc-list-margin: 0.625rem; --sc-cell-changed-color: #d8edff; + + --sc-segemented-display-font-size: 4.5rem; + --sc-segmented-display-background: #404040; + --sc-segmented-display-color: #b0b0b0; } /* body { diff --git a/common/changes/@stonecrop/beam/feat-segmented-display_2024-12-20-17-29.json b/common/changes/@stonecrop/beam/feat-segmented-display_2024-12-20-17-29.json new file mode 100644 index 00000000..7d728b4a --- /dev/null +++ b/common/changes/@stonecrop/beam/feat-segmented-display_2024-12-20-17-29.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@stonecrop/beam", + "comment": "added SegementedDisplay component", + "type": "none" + } + ], + "packageName": "@stonecrop/beam" +} \ No newline at end of file diff --git a/common/reviews/api/beam.api.md b/common/reviews/api/beam.api.md index 9275ea6e..fab283ee 100644 --- a/common/reviews/api/beam.api.md +++ b/common/reviews/api/beam.api.md @@ -27,6 +27,7 @@ import ListView from './components/ListView.vue'; import Navbar from './components/Navbar.vue'; import { Ref } from 'vue'; import ScanInput from './components/ScanInput.vue'; +import SegmentedDisplay from './components/SegmentedDisplay.vue'; import SplitColumn from './components/SplitColumn.vue'; import ToggleArrow from './components/ToggleArrow.vue'; @@ -96,6 +97,8 @@ export { Navbar } export { ScanInput } +export { SegmentedDisplay } + export { SplitColumn } export { ToggleArrow } diff --git a/examples/beam/components.story.vue b/examples/beam/components.story.vue index 9367b217..dae2f478 100644 --- a/examples/beam/components.story.vue +++ b/examples/beam/components.story.vue @@ -68,6 +68,19 @@ + + + + @@ -77,4 +90,10 @@ import { reactive } from 'vue' const workOrder = reactive({ complete: false, }) +const displayOptions = reactive({ + displayColor: '--sc-segmented-display-background', + textColor: '--sc-segmented-display-color', + displayInput: 0, + decimalPlaces: 2, +})