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 @@
+
+
+
{{ getOutput }}
+
+
+
+
+
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,
+})