@5voltfx/design-system 0.1.0 → 0.2.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.
- package/dist/chunk-2KHDM6UP.js +58 -0
- package/dist/chunk-2KHDM6UP.js.map +1 -0
- package/dist/chunk-3LTHHL5C.js +11 -0
- package/dist/chunk-3LTHHL5C.js.map +1 -0
- package/dist/chunk-45346SXP.js +65 -0
- package/dist/chunk-45346SXP.js.map +1 -0
- package/dist/chunk-5KN5TPGG.js +30 -0
- package/dist/chunk-5KN5TPGG.js.map +1 -0
- package/dist/chunk-AYAMNHNF.js +1 -0
- package/dist/chunk-AYAMNHNF.js.map +1 -0
- package/dist/chunk-BAISLPWP.js +14 -0
- package/dist/chunk-BAISLPWP.js.map +1 -0
- package/dist/chunk-BOPVPQLB.js +25 -0
- package/dist/chunk-BOPVPQLB.js.map +1 -0
- package/dist/chunk-CT2TMR44.js +1 -0
- package/dist/chunk-CT2TMR44.js.map +1 -0
- package/dist/chunk-DD5VKG3L.js +22 -0
- package/dist/chunk-DD5VKG3L.js.map +1 -0
- package/dist/chunk-EW3S3GK6.js +41 -0
- package/dist/chunk-EW3S3GK6.js.map +1 -0
- package/dist/chunk-HLP2MPQ6.js +110 -0
- package/dist/chunk-HLP2MPQ6.js.map +1 -0
- package/dist/chunk-HPOL5NKF.js +22 -0
- package/dist/chunk-HPOL5NKF.js.map +1 -0
- package/dist/chunk-I3NS5MAC.js +23 -0
- package/dist/chunk-I3NS5MAC.js.map +1 -0
- package/dist/chunk-LPEUQ2DE.js +48 -0
- package/dist/chunk-LPEUQ2DE.js.map +1 -0
- package/dist/chunk-LY5MPGW2.js +129 -0
- package/dist/chunk-LY5MPGW2.js.map +1 -0
- package/dist/chunk-NE25337V.js +1 -0
- package/dist/chunk-NE25337V.js.map +1 -0
- package/dist/chunk-R42A3ZCY.js +16 -0
- package/dist/chunk-R42A3ZCY.js.map +1 -0
- package/dist/chunk-SFECTSQP.js +68 -0
- package/dist/chunk-SFECTSQP.js.map +1 -0
- package/dist/chunk-SUYKOWXJ.js +1219 -0
- package/dist/chunk-SUYKOWXJ.js.map +1 -0
- package/dist/chunk-TNWQQ56F.js +19 -0
- package/dist/chunk-TNWQQ56F.js.map +1 -0
- package/dist/chunk-U6JTDANG.js +22 -0
- package/dist/chunk-U6JTDANG.js.map +1 -0
- package/dist/chunk-VRGTUKSJ.js +20 -0
- package/dist/chunk-VRGTUKSJ.js.map +1 -0
- package/dist/chunk-YCZXDQJZ.js +41 -0
- package/dist/chunk-YCZXDQJZ.js.map +1 -0
- package/dist/chunk-ZVUDPTFZ.js +76 -0
- package/dist/chunk-ZVUDPTFZ.js.map +1 -0
- package/dist/components/Accordion/Accordion.d.ts +29 -0
- package/dist/components/Accordion/Accordion.d.ts.map +1 -0
- package/dist/components/Accordion/index.css +58 -0
- package/dist/components/Accordion/index.css.map +1 -0
- package/dist/components/Accordion/index.d.ts +2 -0
- package/dist/components/Accordion/index.d.ts.map +1 -0
- package/dist/components/Accordion/index.js +7 -0
- package/dist/components/Accordion/index.js.map +1 -0
- package/dist/components/Button/Button.d.ts +8 -0
- package/dist/components/Button/Button.d.ts.map +1 -0
- package/{src/components/Button/Button.css → dist/components/Button/index.css} +2 -11
- package/dist/components/Button/index.css.map +1 -0
- package/{src/components/Button/index.js → dist/components/Button/index.d.ts} +1 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Button/index.js +7 -0
- package/dist/components/Button/index.js.map +1 -0
- package/dist/components/Card/Card.d.ts +6 -0
- package/dist/components/Card/Card.d.ts.map +1 -0
- package/{src/components/Card/Card.css → dist/components/Card/index.css} +3 -3
- package/dist/components/Card/index.css.map +1 -0
- package/{src/components/Card/index.js → dist/components/Card/index.d.ts} +1 -0
- package/dist/components/Card/index.d.ts.map +1 -0
- package/dist/components/Card/index.js +7 -0
- package/dist/components/Card/index.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +15 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/index.css +57 -0
- package/dist/components/Checkbox/index.css.map +1 -0
- package/dist/components/Checkbox/index.d.ts +2 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/Checkbox/index.js +7 -0
- package/dist/components/Checkbox/index.js.map +1 -0
- package/dist/components/Footer/Footer.d.ts +15 -0
- package/dist/components/Footer/Footer.d.ts.map +1 -0
- package/{src/components/Footer/Footer.css → dist/components/Footer/index.css} +28 -7
- package/dist/components/Footer/index.css.map +1 -0
- package/{src/components/Footer/index.js → dist/components/Footer/index.d.ts} +1 -0
- package/dist/components/Footer/index.d.ts.map +1 -0
- package/dist/components/Footer/index.js +8 -0
- package/dist/components/Footer/index.js.map +1 -0
- package/dist/components/FormField/FormField.d.ts +27 -0
- package/dist/components/FormField/FormField.d.ts.map +1 -0
- package/dist/components/FormField/index.css +31 -0
- package/dist/components/FormField/index.css.map +1 -0
- package/dist/components/FormField/index.d.ts +2 -0
- package/dist/components/FormField/index.d.ts.map +1 -0
- package/dist/components/FormField/index.js +8 -0
- package/dist/components/FormField/index.js.map +1 -0
- package/dist/components/Header/Header.d.ts +15 -0
- package/dist/components/Header/Header.d.ts.map +1 -0
- package/dist/components/Header/index.css +98 -0
- package/dist/components/Header/index.css.map +1 -0
- package/{src/components/Header/index.js → dist/components/Header/index.d.ts} +1 -0
- package/dist/components/Header/index.d.ts.map +1 -0
- package/dist/components/Header/index.js +8 -0
- package/dist/components/Header/index.js.map +1 -0
- package/dist/components/Input/Input.d.ts +16 -0
- package/dist/components/Input/Input.d.ts.map +1 -0
- package/dist/components/Input/index.css +45 -0
- package/dist/components/Input/index.css.map +1 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Input/index.d.ts.map +1 -0
- package/dist/components/Input/index.js +7 -0
- package/dist/components/Input/index.js.map +1 -0
- package/dist/components/Label/Label.d.ts +15 -0
- package/dist/components/Label/Label.d.ts.map +1 -0
- package/dist/components/Label/index.css +14 -0
- package/dist/components/Label/index.css.map +1 -0
- package/dist/components/Label/index.d.ts +2 -0
- package/dist/components/Label/index.d.ts.map +1 -0
- package/dist/components/Label/index.js +8 -0
- package/dist/components/Label/index.js.map +1 -0
- package/dist/components/Layout/Container.d.ts +6 -0
- package/dist/components/Layout/Container.d.ts.map +1 -0
- package/dist/components/Layout/Grid.d.ts +9 -0
- package/dist/components/Layout/Grid.d.ts.map +1 -0
- package/dist/components/Layout/Stack.d.ts +10 -0
- package/dist/components/Layout/Stack.d.ts.map +1 -0
- package/{src/components/Layout/Layout.css → dist/components/Layout/index.css} +2 -4
- package/dist/components/Layout/index.css.map +1 -0
- package/{src/components/Layout/index.js → dist/components/Layout/index.d.ts} +1 -0
- package/dist/components/Layout/index.d.ts.map +1 -0
- package/dist/components/Layout/index.js +11 -0
- package/dist/components/Layout/index.js.map +1 -0
- package/dist/components/Menu/Menu.d.ts +30 -0
- package/dist/components/Menu/Menu.d.ts.map +1 -0
- package/dist/components/Menu/index.css +77 -0
- package/dist/components/Menu/index.css.map +1 -0
- package/dist/components/Menu/index.d.ts +2 -0
- package/dist/components/Menu/index.d.ts.map +1 -0
- package/dist/components/Menu/index.js +7 -0
- package/dist/components/Menu/index.js.map +1 -0
- package/dist/components/Modal/Modal.d.ts +24 -0
- package/dist/components/Modal/Modal.d.ts.map +1 -0
- package/dist/components/Modal/index.css +101 -0
- package/dist/components/Modal/index.css.map +1 -0
- package/dist/components/Modal/index.d.ts +2 -0
- package/dist/components/Modal/index.d.ts.map +1 -0
- package/dist/components/Modal/index.js +7 -0
- package/dist/components/Modal/index.js.map +1 -0
- package/dist/components/Nav/Nav.d.ts +10 -0
- package/dist/components/Nav/Nav.d.ts.map +1 -0
- package/{src/components/Nav/Nav.css → dist/components/Nav/index.css} +2 -8
- package/dist/components/Nav/index.css.map +1 -0
- package/dist/components/Nav/index.d.ts +2 -0
- package/dist/components/Nav/index.d.ts.map +1 -0
- package/dist/components/Nav/index.js +8 -0
- package/dist/components/Nav/index.js.map +1 -0
- package/dist/components/Radio/Radio.d.ts +17 -0
- package/dist/components/Radio/Radio.d.ts.map +1 -0
- package/dist/components/Radio/RadioGroup.d.ts +25 -0
- package/dist/components/Radio/RadioGroup.d.ts.map +1 -0
- package/dist/components/Radio/RadioGroupContext.d.ts +7 -0
- package/dist/components/Radio/RadioGroupContext.d.ts.map +1 -0
- package/dist/components/Radio/index.css +57 -0
- package/dist/components/Radio/index.css.map +1 -0
- package/dist/components/Radio/index.d.ts +3 -0
- package/dist/components/Radio/index.d.ts.map +1 -0
- package/dist/components/Radio/index.js +9 -0
- package/dist/components/Radio/index.js.map +1 -0
- package/dist/components/Select/Select.d.ts +18 -0
- package/dist/components/Select/Select.d.ts.map +1 -0
- package/dist/components/Select/index.css +52 -0
- package/dist/components/Select/index.css.map +1 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Select/index.d.ts.map +1 -0
- package/dist/components/Select/index.js +7 -0
- package/dist/components/Select/index.js.map +1 -0
- package/dist/components/SlideRuleNav/SlideRuleNav.d.ts +54 -0
- package/dist/components/SlideRuleNav/SlideRuleNav.d.ts.map +1 -0
- package/dist/components/SlideRuleNav/geometry.d.ts +168 -0
- package/dist/components/SlideRuleNav/geometry.d.ts.map +1 -0
- package/dist/components/SlideRuleNav/index.css +196 -0
- package/dist/components/SlideRuleNav/index.css.map +1 -0
- package/dist/components/SlideRuleNav/index.d.ts +2 -0
- package/dist/components/SlideRuleNav/index.d.ts.map +1 -0
- package/dist/components/SlideRuleNav/index.js +7 -0
- package/dist/components/SlideRuleNav/index.js.map +1 -0
- package/dist/components/SlideRuleNav/variants/CursorRule.d.ts +11 -0
- package/dist/components/SlideRuleNav/variants/CursorRule.d.ts.map +1 -0
- package/dist/components/SlideRuleNav/variants/SlideStator.d.ts +13 -0
- package/dist/components/SlideRuleNav/variants/SlideStator.d.ts.map +1 -0
- package/dist/components/SlideRuleNav/variants/VernierCarriage.d.ts +13 -0
- package/dist/components/SlideRuleNav/variants/VernierCarriage.d.ts.map +1 -0
- package/dist/components/Switch/Switch.d.ts +15 -0
- package/dist/components/Switch/Switch.d.ts.map +1 -0
- package/dist/components/Switch/index.css +49 -0
- package/dist/components/Switch/index.css.map +1 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Switch/index.d.ts.map +1 -0
- package/dist/components/Switch/index.js +7 -0
- package/dist/components/Switch/index.js.map +1 -0
- package/dist/components/Tabs/Tabs.d.ts +34 -0
- package/dist/components/Tabs/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs/index.css +54 -0
- package/dist/components/Tabs/index.css.map +1 -0
- package/dist/components/Tabs/index.d.ts +2 -0
- package/dist/components/Tabs/index.d.ts.map +1 -0
- package/dist/components/Tabs/index.js +7 -0
- package/dist/components/Tabs/index.js.map +1 -0
- package/dist/components/Textarea/Textarea.d.ts +16 -0
- package/dist/components/Textarea/Textarea.d.ts.map +1 -0
- package/dist/components/Textarea/index.css +36 -0
- package/dist/components/Textarea/index.css.map +1 -0
- package/dist/components/Textarea/index.d.ts +2 -0
- package/dist/components/Textarea/index.d.ts.map +1 -0
- package/dist/components/Textarea/index.js +7 -0
- package/dist/components/Textarea/index.js.map +1 -0
- package/dist/components/ThemeSwitcher/ThemeSwitcher.d.ts +4 -0
- package/dist/components/ThemeSwitcher/ThemeSwitcher.d.ts.map +1 -0
- package/{src/components/ThemeSwitcher/ThemeSwitcher.css → dist/components/ThemeSwitcher/index.css} +3 -7
- package/dist/components/ThemeSwitcher/index.css.map +1 -0
- package/{src/components/ThemeSwitcher/index.js → dist/components/ThemeSwitcher/index.d.ts} +1 -0
- package/dist/components/ThemeSwitcher/index.d.ts.map +1 -0
- package/dist/components/ThemeSwitcher/index.js +8 -0
- package/dist/components/ThemeSwitcher/index.js.map +1 -0
- package/dist/components/Typography/Heading.d.ts +9 -0
- package/dist/components/Typography/Heading.d.ts.map +1 -0
- package/dist/components/Typography/Text.d.ts +9 -0
- package/dist/components/Typography/Text.d.ts.map +1 -0
- package/dist/components/Typography/index.css +50 -0
- package/dist/components/Typography/index.css.map +1 -0
- package/{src/components/Typography/index.js → dist/components/Typography/index.d.ts} +1 -0
- package/dist/components/Typography/index.d.ts.map +1 -0
- package/dist/components/Typography/index.js +9 -0
- package/dist/components/Typography/index.js.map +1 -0
- package/dist/components/_shared/useDetentTravel.d.ts +87 -0
- package/dist/components/_shared/useDetentTravel.d.ts.map +1 -0
- package/dist/components/_shared/usePointerDrag.d.ts +24 -0
- package/dist/components/_shared/usePointerDrag.d.ts.map +1 -0
- package/dist/components/_shared/useReducedMotion.d.ts +7 -0
- package/dist/components/_shared/useReducedMotion.d.ts.map +1 -0
- package/dist/components/_shared/validateStationCount.d.ts +13 -0
- package/dist/components/_shared/validateStationCount.d.ts.map +1 -0
- package/dist/index.css +1398 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +171 -0
- package/dist/index.js.map +1 -0
- package/dist/theme/ThemeContext.d.ts +2 -0
- package/dist/theme/ThemeContext.d.ts.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +12 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/themeConstants.d.ts +8 -0
- package/dist/theme/themeConstants.d.ts.map +1 -0
- package/dist/theme/useTheme.d.ts +2 -0
- package/dist/theme/useTheme.d.ts.map +1 -0
- package/package.json +35 -6
- package/vite-plugin.js +13 -10
- package/src/components/Button/Button.jsx +0 -20
- package/src/components/Card/Card.jsx +0 -6
- package/src/components/Footer/Footer.jsx +0 -37
- package/src/components/Header/Header.css +0 -47
- package/src/components/Header/Header.jsx +0 -30
- package/src/components/Layout/Container.jsx +0 -10
- package/src/components/Layout/Grid.jsx +0 -22
- package/src/components/Layout/Stack.jsx +0 -24
- package/src/components/Nav/Nav.jsx +0 -29
- package/src/components/Nav/index.js +0 -1
- package/src/components/ThemeSwitcher/ThemeSwitcher.jsx +0 -26
- package/src/components/Typography/Heading.jsx +0 -29
- package/src/components/Typography/Text.jsx +0 -20
- package/src/components/Typography/Typography.css +0 -35
- package/src/index.js +0 -12
- package/src/theme/ThemeContext.js +0 -3
- package/src/theme/ThemeProvider.jsx +0 -66
- package/src/theme/themeConstants.js +0 -12
- package/src/theme/useTheme.js +0 -10
- package/src/tokens/base.css +0 -21
- package/src/tokens/colors.css +0 -29
- package/src/tokens/elevation.css +0 -10
- package/src/tokens/index.css +0 -8
- package/src/tokens/motion.css +0 -6
- package/src/tokens/radius.css +0 -6
- package/src/tokens/spacing.css +0 -10
- package/src/tokens/themes.css +0 -156
- package/src/tokens/typography.css +0 -29
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/* src/components/Radio/Radio.css */
|
|
2
|
+
.ds-radio-group {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
gap: var(--ds-space-2);
|
|
6
|
+
}
|
|
7
|
+
.ds-radio {
|
|
8
|
+
display: inline-flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
gap: var(--ds-space-2);
|
|
11
|
+
font-family: var(--ds-font-body);
|
|
12
|
+
font-size: var(--ds-font-size-200);
|
|
13
|
+
color: var(--ds-color-font-0);
|
|
14
|
+
cursor: pointer;
|
|
15
|
+
}
|
|
16
|
+
.ds-radio__input {
|
|
17
|
+
position: absolute;
|
|
18
|
+
width: 1px;
|
|
19
|
+
height: 1px;
|
|
20
|
+
opacity: 0;
|
|
21
|
+
margin: 0;
|
|
22
|
+
}
|
|
23
|
+
.ds-radio__dot {
|
|
24
|
+
display: inline-flex;
|
|
25
|
+
align-items: center;
|
|
26
|
+
justify-content: center;
|
|
27
|
+
width: 1.15rem;
|
|
28
|
+
height: 1.15rem;
|
|
29
|
+
flex-shrink: 0;
|
|
30
|
+
border: 1px solid var(--ds-color-field-border);
|
|
31
|
+
border-radius: var(--ds-radius-pill);
|
|
32
|
+
background-color: var(--ds-color-field-bg);
|
|
33
|
+
transition: border-color var(--ds-motion-duration-fast) var(--ds-motion-ease-standard);
|
|
34
|
+
}
|
|
35
|
+
.ds-radio__dot::after {
|
|
36
|
+
content: "";
|
|
37
|
+
width: 0.6rem;
|
|
38
|
+
height: 0.6rem;
|
|
39
|
+
border-radius: var(--ds-radius-pill);
|
|
40
|
+
background-color: var(--ds-color-bg-2);
|
|
41
|
+
transform: scale(0);
|
|
42
|
+
transition: transform var(--ds-motion-duration-fast) var(--ds-motion-ease-standard);
|
|
43
|
+
}
|
|
44
|
+
.ds-radio__input:checked + .ds-radio__dot {
|
|
45
|
+
border-color: var(--ds-color-bg-2);
|
|
46
|
+
}
|
|
47
|
+
.ds-radio__input:checked + .ds-radio__dot::after {
|
|
48
|
+
transform: scale(1);
|
|
49
|
+
}
|
|
50
|
+
.ds-radio__input:focus-visible + .ds-radio__dot {
|
|
51
|
+
outline: 2px solid var(--ds-color-focus-ring);
|
|
52
|
+
outline-offset: 2px;
|
|
53
|
+
}
|
|
54
|
+
.ds-radio__input:disabled ~ * {
|
|
55
|
+
opacity: 0.5;
|
|
56
|
+
}
|
|
57
|
+
/*# sourceMappingURL=index.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Radio/Radio.css"],"sourcesContent":[".ds-radio-group {\n display: flex;\n flex-direction: column;\n gap: var(--ds-space-2);\n}\n\n.ds-radio {\n display: inline-flex;\n align-items: center;\n gap: var(--ds-space-2);\n font-family: var(--ds-font-body);\n font-size: var(--ds-font-size-200);\n color: var(--ds-color-font-0);\n cursor: pointer;\n}\n\n.ds-radio__input {\n position: absolute;\n width: 1px;\n height: 1px;\n opacity: 0;\n margin: 0;\n}\n\n.ds-radio__dot {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.15rem;\n height: 1.15rem;\n flex-shrink: 0;\n border: 1px solid var(--ds-color-field-border);\n border-radius: var(--ds-radius-pill);\n background-color: var(--ds-color-field-bg);\n transition: border-color var(--ds-motion-duration-fast) var(--ds-motion-ease-standard);\n}\n\n.ds-radio__dot::after {\n content: \"\";\n width: 0.6rem;\n height: 0.6rem;\n border-radius: var(--ds-radius-pill);\n background-color: var(--ds-color-bg-2);\n transform: scale(0);\n transition: transform var(--ds-motion-duration-fast) var(--ds-motion-ease-standard);\n}\n\n.ds-radio__input:checked + .ds-radio__dot {\n border-color: var(--ds-color-bg-2);\n}\n\n.ds-radio__input:checked + .ds-radio__dot::after {\n transform: scale(1);\n}\n\n.ds-radio__input:focus-visible + .ds-radio__dot {\n outline: 2px solid var(--ds-color-focus-ring);\n outline-offset: 2px;\n}\n\n.ds-radio__input:disabled ~ * {\n opacity: 0.5;\n}\n"],"mappings":";AAAA,CAAC;AACC,WAAS;AACT,kBAAgB;AAChB,OAAK,IAAI;AACX;AAEA,CAAC;AACC,WAAS;AACT,eAAa;AACb,OAAK,IAAI;AACT,eAAa,IAAI;AACjB,aAAW,IAAI;AACf,SAAO,IAAI;AACX,UAAQ;AACV;AAEA,CAAC;AACC,YAAU;AACV,SAAO;AACP,UAAQ;AACR,WAAS;AACT,UAAQ;AACV;AAEA,CAAC;AACC,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,SAAO;AACP,UAAQ;AACR,eAAa;AACb,UAAQ,IAAI,MAAM,IAAI;AACtB,iBAAe,IAAI;AACnB,oBAAkB,IAAI;AACtB,cAAY,aAAa,IAAI,2BAA2B,IAAI;AAC9D;AAEA,CAbC,aAaa;AACZ,WAAS;AACT,SAAO;AACP,UAAQ;AACR,iBAAe,IAAI;AACnB,oBAAkB,IAAI;AACtB,aAAW,MAAM;AACjB,cAAY,UAAU,IAAI,2BAA2B,IAAI;AAC3D;AAEA,CA/BC,eA+Be,SAAS,EAAE,CAvB1B;AAwBC,gBAAc,IAAI;AACpB;AAEA,CAnCC,eAmCe,SAAS,EAAE,CA3B1B,aA2BwC;AACvC,aAAW,MAAM;AACnB;AAEA,CAvCC,eAuCe,eAAe,EAAE,CA/BhC;AAgCC,WAAS,IAAI,MAAM,IAAI;AACvB,kBAAgB;AAClB;AAEA,CA5CC,eA4Ce,UAAU,EAAE;AAC1B,WAAS;AACX;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Radio/index.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native <select> styled to match Input. Keeping it native avoids a
|
|
3
|
+
* dependency and stays accessible for free. Pass <option> children.
|
|
4
|
+
*
|
|
5
|
+
* @param {object} props
|
|
6
|
+
* @param {"sm"|"md"|"lg"} [props.size] - Control height/padding. Default "md".
|
|
7
|
+
* @param {boolean} [props.invalid] - Applies error styling + aria-invalid.
|
|
8
|
+
* @param {import("react").ReactNode} [props.children]
|
|
9
|
+
* @param {string} [props.className]
|
|
10
|
+
* @returns {import("react").ReactElement}
|
|
11
|
+
*/
|
|
12
|
+
export function Select({ size, invalid, className, children, ...rest }: {
|
|
13
|
+
size?: "md" | "sm" | "lg" | undefined;
|
|
14
|
+
invalid?: boolean | undefined;
|
|
15
|
+
children?: import("react").ReactNode;
|
|
16
|
+
className?: string | undefined;
|
|
17
|
+
}): import("react").ReactElement;
|
|
18
|
+
//# sourceMappingURL=Select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Select.jsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,wEANG;IAA+B,IAAI;IACX,OAAO;IACW,QAAQ,GAA1C,OAAO,OAAO,EAAE,SAAS;IACV,SAAS;CAChC,GAAU,OAAO,OAAO,EAAE,YAAY,CAuBxC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/* src/components/Select/Select.css */
|
|
2
|
+
.ds-select {
|
|
3
|
+
display: block;
|
|
4
|
+
width: 100%;
|
|
5
|
+
font-family: var(--ds-font-body);
|
|
6
|
+
font-size: var(--ds-font-size-200);
|
|
7
|
+
line-height: var(--ds-line-height-normal);
|
|
8
|
+
color: var(--ds-color-font-0);
|
|
9
|
+
background-color: var(--ds-color-field-bg);
|
|
10
|
+
border: 1px solid var(--ds-color-field-border);
|
|
11
|
+
border-radius: var(--ds-radius-md);
|
|
12
|
+
cursor: pointer;
|
|
13
|
+
appearance: none;
|
|
14
|
+
background-image:
|
|
15
|
+
linear-gradient(
|
|
16
|
+
45deg,
|
|
17
|
+
transparent 50%,
|
|
18
|
+
var(--ds-color-font-1) 50%),
|
|
19
|
+
linear-gradient(
|
|
20
|
+
135deg,
|
|
21
|
+
var(--ds-color-font-1) 50%,
|
|
22
|
+
transparent 50%);
|
|
23
|
+
background-position: calc(100% - 20px) center, calc(100% - 15px) center;
|
|
24
|
+
background-size: 5px 5px, 5px 5px;
|
|
25
|
+
background-repeat: no-repeat;
|
|
26
|
+
padding-right: var(--ds-space-7);
|
|
27
|
+
transition: border-color var(--ds-motion-duration-base) var(--ds-motion-ease-standard), box-shadow var(--ds-motion-duration-base) var(--ds-motion-ease-standard);
|
|
28
|
+
}
|
|
29
|
+
.ds-select--sm {
|
|
30
|
+
padding: var(--ds-space-2) var(--ds-space-7) var(--ds-space-2) var(--ds-space-3);
|
|
31
|
+
font-size: var(--ds-font-size-100);
|
|
32
|
+
}
|
|
33
|
+
.ds-select--md {
|
|
34
|
+
padding: var(--ds-space-3) var(--ds-space-7) var(--ds-space-3) var(--ds-space-4);
|
|
35
|
+
}
|
|
36
|
+
.ds-select--lg {
|
|
37
|
+
padding: var(--ds-space-4) var(--ds-space-7) var(--ds-space-4) var(--ds-space-5);
|
|
38
|
+
font-size: var(--ds-font-size-300);
|
|
39
|
+
}
|
|
40
|
+
.ds-select:focus-visible {
|
|
41
|
+
outline: none;
|
|
42
|
+
border-color: var(--ds-color-focus-ring);
|
|
43
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--ds-color-focus-ring) 30%, transparent);
|
|
44
|
+
}
|
|
45
|
+
.ds-select--invalid {
|
|
46
|
+
border-color: var(--ds-color-danger);
|
|
47
|
+
}
|
|
48
|
+
.ds-select:disabled {
|
|
49
|
+
opacity: 0.5;
|
|
50
|
+
cursor: not-allowed;
|
|
51
|
+
}
|
|
52
|
+
/*# sourceMappingURL=index.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Select/Select.css"],"sourcesContent":[".ds-select {\n display: block;\n width: 100%;\n font-family: var(--ds-font-body);\n font-size: var(--ds-font-size-200);\n line-height: var(--ds-line-height-normal);\n color: var(--ds-color-font-0);\n background-color: var(--ds-color-field-bg);\n border: 1px solid var(--ds-color-field-border);\n border-radius: var(--ds-radius-md);\n cursor: pointer;\n /* Custom chevron so the control matches across browsers */\n appearance: none;\n background-image: linear-gradient(\n 45deg,\n transparent 50%,\n var(--ds-color-font-1) 50%\n ),\n linear-gradient(135deg, var(--ds-color-font-1) 50%, transparent 50%);\n background-position:\n calc(100% - 20px) center,\n calc(100% - 15px) center;\n background-size:\n 5px 5px,\n 5px 5px;\n background-repeat: no-repeat;\n padding-right: var(--ds-space-7);\n transition:\n border-color var(--ds-motion-duration-base) var(--ds-motion-ease-standard),\n box-shadow var(--ds-motion-duration-base) var(--ds-motion-ease-standard);\n}\n\n.ds-select--sm {\n padding: var(--ds-space-2) var(--ds-space-7) var(--ds-space-2)\n var(--ds-space-3);\n font-size: var(--ds-font-size-100);\n}\n\n.ds-select--md {\n padding: var(--ds-space-3) var(--ds-space-7) var(--ds-space-3)\n var(--ds-space-4);\n}\n\n.ds-select--lg {\n padding: var(--ds-space-4) var(--ds-space-7) var(--ds-space-4)\n var(--ds-space-5);\n font-size: var(--ds-font-size-300);\n}\n\n.ds-select:focus-visible {\n outline: none;\n border-color: var(--ds-color-focus-ring);\n box-shadow: 0 0 0 3px\n color-mix(in srgb, var(--ds-color-focus-ring) 30%, transparent);\n}\n\n.ds-select--invalid {\n border-color: var(--ds-color-danger);\n}\n\n.ds-select:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n"],"mappings":";AAAA,CAAC;AACC,WAAS;AACT,SAAO;AACP,eAAa,IAAI;AACjB,aAAW,IAAI;AACf,eAAa,IAAI;AACjB,SAAO,IAAI;AACX,oBAAkB,IAAI;AACtB,UAAQ,IAAI,MAAM,IAAI;AACtB,iBAAe,IAAI;AACnB,UAAQ;AAER,cAAY;AACZ;AAAA,IAAkB;AAAA,MACd,KAAK;AAAA,MACL,YAAY,GAAG;AAAA,MACf,IAAI,mBAAmB,IACxB;AAAA,IACD;AAAA,MAAgB,MAAM;AAAA,MAAE,IAAI,mBAAmB,GAAG;AAAA,MAAE,YAAY;AAClE,uBACE,KAAK,KAAK,EAAE,MAAM,MAAM,EACxB,KAAK,KAAK,EAAE,MAAM;AACpB,mBACE,IAAI,GAAG,EACP,IAAI;AACN,qBAAmB;AACnB,iBAAe,IAAI;AACnB,cACE,aAAa,IAAI,2BAA2B,IAAI,0BAA0B,EAC1E,WAAW,IAAI,2BAA2B,IAAI;AAClD;AAEA,CAAC;AACC,WAAS,IAAI,cAAc,IAAI,cAAc,IAAI,cAC/C,IAAI;AACN,aAAW,IAAI;AACjB;AAEA,CAAC;AACC,WAAS,IAAI,cAAc,IAAI,cAAc,IAAI,cAC/C,IAAI;AACR;AAEA,CAAC;AACC,WAAS,IAAI,cAAc,IAAI,cAAc,IAAI,cAC/C,IAAI;AACN,aAAW,IAAI;AACjB;AAEA,CAjDC,SAiDS;AACR,WAAS;AACT,gBAAc,IAAI;AAClB,cAAY,EAAE,EAAE,EAAE,IAChB,UAAU,GAAG,IAAI,EAAE,IAAI,uBAAuB,GAAG,EAAE;AACvD;AAEA,CAAC;AACC,gBAAc,IAAI;AACpB;AAEA,CA5DC,SA4DS;AACR,WAAS;AACT,UAAQ;AACV;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Select/index.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Navigation built on a linear slide rule. Travel is quantized to quarter-tick
|
|
3
|
+
* detents: the mechanism ratchets between stations while you drag it and
|
|
4
|
+
* settles onto one when you let go.
|
|
5
|
+
*
|
|
6
|
+
* Items carrying `to` render as NavLinks and the router drives the cursor;
|
|
7
|
+
* items without one render as buttons and the component tracks its own
|
|
8
|
+
* selection. Both forms may be mixed.
|
|
9
|
+
*
|
|
10
|
+
* The engraved chrome is decorative and hidden from assistive technology — the
|
|
11
|
+
* navigation itself is an ordinary list of links, fully operable by keyboard.
|
|
12
|
+
*
|
|
13
|
+
* @param {object} props
|
|
14
|
+
* @param {"cursor"|"slide"|"vernier"} [props.variant]
|
|
15
|
+
* @param {SlideRuleItem[]} props.items
|
|
16
|
+
* @param {string} [props.value] - Selected item id (controlled).
|
|
17
|
+
* @param {string} [props.defaultValue] - Initial item id (uncontrolled).
|
|
18
|
+
* @param {(id: string) => void} [props.onChange]
|
|
19
|
+
* @param {boolean} [props.readout] - Show the instrument readout strip.
|
|
20
|
+
* @param {string} [props.label] - Accessible name for the nav landmark.
|
|
21
|
+
* @param {string} [props.className]
|
|
22
|
+
* @returns {import("react").ReactElement}
|
|
23
|
+
*/
|
|
24
|
+
export function SlideRuleNav({ variant, items, value, defaultValue, onChange, readout, label, className, }: {
|
|
25
|
+
variant?: "cursor" | "slide" | "vernier" | undefined;
|
|
26
|
+
items: SlideRuleItem[];
|
|
27
|
+
value?: string | undefined;
|
|
28
|
+
defaultValue?: string | undefined;
|
|
29
|
+
onChange?: ((id: string) => void) | undefined;
|
|
30
|
+
readout?: boolean | undefined;
|
|
31
|
+
label?: string | undefined;
|
|
32
|
+
className?: string | undefined;
|
|
33
|
+
}): import("react").ReactElement;
|
|
34
|
+
export type SlideRuleItem = {
|
|
35
|
+
id: string;
|
|
36
|
+
label: import("react").ReactNode;
|
|
37
|
+
/**
|
|
38
|
+
* - Route path. Renders a NavLink; requires a Router.
|
|
39
|
+
*/
|
|
40
|
+
to?: string | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* - Passed to NavLink for exact matching.
|
|
43
|
+
*/
|
|
44
|
+
end?: boolean | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* - Used when the item has no `to`.
|
|
47
|
+
*/
|
|
48
|
+
onSelect?: (() => void) | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* - Scarlet scale numeral. Defaults to `i.toFixed(2)`.
|
|
51
|
+
*/
|
|
52
|
+
value?: string | undefined;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=SlideRuleNav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlideRuleNav.d.ts","sourceRoot":"","sources":["../../../src/components/SlideRuleNav/SlideRuleNav.jsx"],"names":[],"mappings":"AAoEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,4GAVG;IAA2C,OAAO;IACnB,KAAK,EAA5B,aAAa,EAAE;IACA,KAAK;IACL,YAAY;IACE,QAAQ,SAAhC,MAAM,KAAK,IAAI;IACJ,OAAO;IACR,KAAK;IACL,SAAS;CAChC,GAAU,OAAO,OAAO,EAAE,YAAY,CA+NxC;;QA3Sa,MAAM;WACN,OAAO,OAAO,EAAE,SAAS;;;;;;;;;;;;sBAGnB,IAAI"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Distance between adjacent stations, in viewBox units.
|
|
3
|
+
*
|
|
4
|
+
* @param {{x0: number, x1: number}} spec
|
|
5
|
+
* @param {number} count
|
|
6
|
+
* @returns {number}
|
|
7
|
+
*/
|
|
8
|
+
export function pitchFor(spec: {
|
|
9
|
+
x0: number;
|
|
10
|
+
x1: number;
|
|
11
|
+
}, count: number): number;
|
|
12
|
+
/**
|
|
13
|
+
* How many main-scale minor divisions fill one station gap.
|
|
14
|
+
*
|
|
15
|
+
* Always a multiple of 4, so a quarter-pitch detent is always a whole number
|
|
16
|
+
* of minor divisions and the vernier's zero line coincides exactly when the
|
|
17
|
+
* pawl seats. Without this the carriage scales with pitch: at 3 stations a
|
|
18
|
+
* naive `pitch / 4` gives a vernier half the width of the rule.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} pitch
|
|
21
|
+
* @returns {{minorsPerPitch: number, minor: number, vdiv: number,
|
|
22
|
+
* minorsPerDetent: number}}
|
|
23
|
+
*/
|
|
24
|
+
export function minorDivisions(pitch: number): {
|
|
25
|
+
minorsPerPitch: number;
|
|
26
|
+
minor: number;
|
|
27
|
+
vdiv: number;
|
|
28
|
+
minorsPerDetent: number;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Which vernier line currently coincides with a main-scale line — the whole
|
|
32
|
+
* trick of L-III. Five carriage divisions span four rail divisions, so at any
|
|
33
|
+
* offset exactly one line pair lines up, and which one gives the fraction.
|
|
34
|
+
*
|
|
35
|
+
* @param {object} options
|
|
36
|
+
* @param {number} options.pos - Travel, 0…count-1.
|
|
37
|
+
* @param {number} options.count
|
|
38
|
+
* @param {{x0: number, x1: number}} [options.spec]
|
|
39
|
+
* @returns {{k: number, d: number, lit: boolean}} Coinciding line index, its
|
|
40
|
+
* distance from the main line, and whether it is close enough to light.
|
|
41
|
+
*/
|
|
42
|
+
export function coincidence({ pos, count, spec }: {
|
|
43
|
+
pos: number;
|
|
44
|
+
count: number;
|
|
45
|
+
spec?: {
|
|
46
|
+
x0: number;
|
|
47
|
+
x1: number;
|
|
48
|
+
} | undefined;
|
|
49
|
+
}): {
|
|
50
|
+
k: number;
|
|
51
|
+
d: number;
|
|
52
|
+
lit: boolean;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Slide-local x for continuous travel. Linear *between* stops, so each gap's
|
|
56
|
+
* quarter-detents inherit that gap's own width — wide at the left of the rule,
|
|
57
|
+
* tight at the right. The unevenness is the point.
|
|
58
|
+
*
|
|
59
|
+
* @param {number[]} stops
|
|
60
|
+
* @param {number} pos
|
|
61
|
+
* @returns {number}
|
|
62
|
+
*/
|
|
63
|
+
export function localAt(stops: number[], pos: number): number;
|
|
64
|
+
/**
|
|
65
|
+
* Inverse of {@link localAt} — needed to turn a pointer position back into
|
|
66
|
+
* travel while dragging the slide.
|
|
67
|
+
*
|
|
68
|
+
* @param {number[]} stops
|
|
69
|
+
* @param {number} want - Slide-local x.
|
|
70
|
+
* @returns {number}
|
|
71
|
+
*/
|
|
72
|
+
export function posFromLocal(stops: number[], want: number): number;
|
|
73
|
+
/** Preferred main-scale minor division, in viewBox units. */
|
|
74
|
+
export const MINOR_TARGET: 38;
|
|
75
|
+
export const LINEAR: Readonly<{
|
|
76
|
+
/**
|
|
77
|
+
* L-I — fixed scale, cursor travels.
|
|
78
|
+
*
|
|
79
|
+
* The stock runs from `x0 - cursorBox.w / 2` to `x1 + cursorBox.w / 2` for
|
|
80
|
+
* the same reason as L-III: the cursor is centred on the station it reads,
|
|
81
|
+
* so the stock has to extend past the end graduations for it to sit on the
|
|
82
|
+
* instrument at station 0 and at the last station.
|
|
83
|
+
*/
|
|
84
|
+
cursor: Readonly<{
|
|
85
|
+
viewBox: readonly number[];
|
|
86
|
+
x0: 62;
|
|
87
|
+
x1: 838;
|
|
88
|
+
railX0: 30;
|
|
89
|
+
railX1: 870;
|
|
90
|
+
top: 40;
|
|
91
|
+
bot: 112;
|
|
92
|
+
labelY: 24;
|
|
93
|
+
cursorBox: Readonly<{
|
|
94
|
+
w: 60;
|
|
95
|
+
h: 100;
|
|
96
|
+
y: 28;
|
|
97
|
+
}>;
|
|
98
|
+
settleMs: 420;
|
|
99
|
+
}>;
|
|
100
|
+
/** L-II — fixed index, slide travels, true log10 station spacing. */
|
|
101
|
+
slide: Readonly<{
|
|
102
|
+
viewBox: readonly number[];
|
|
103
|
+
l0: 60;
|
|
104
|
+
lw: 1400;
|
|
105
|
+
index: 450;
|
|
106
|
+
clip: readonly number[];
|
|
107
|
+
statorL0: 40;
|
|
108
|
+
statorLw: 800;
|
|
109
|
+
slideY: 46;
|
|
110
|
+
slideH: 58;
|
|
111
|
+
labelY: 88;
|
|
112
|
+
settleMs: 460;
|
|
113
|
+
}>;
|
|
114
|
+
/**
|
|
115
|
+
* L-III — notched rail, vernier carriage. Reference plate.
|
|
116
|
+
*
|
|
117
|
+
* The station span is 772 units, exactly as drawn in the artboards, but it
|
|
118
|
+
* is inset 124 units from the left rather than 64. The carriage is centred
|
|
119
|
+
* on the station it reads, and its widest form (5 stations) is 224 units
|
|
120
|
+
* across — so at station 0 a 64-unit inset put half the vernier off the end
|
|
121
|
+
* of the rule. The artboards never showed it because they opened on station
|
|
122
|
+
* 2. Keeping the span identical preserves every derived division.
|
|
123
|
+
*
|
|
124
|
+
* The rail then runs from `x0 - maxCarriageHalf` to `x1 + maxCarriageHalf`,
|
|
125
|
+
* because a real stock extends past its scale far enough for the cursor to
|
|
126
|
+
* reach the end graduations without hanging off the instrument.
|
|
127
|
+
*/
|
|
128
|
+
vernier: Readonly<{
|
|
129
|
+
viewBox: readonly number[];
|
|
130
|
+
x0: 124;
|
|
131
|
+
x1: 896;
|
|
132
|
+
railX0: 12;
|
|
133
|
+
railX1: 1008;
|
|
134
|
+
railY: 46;
|
|
135
|
+
railH: 42;
|
|
136
|
+
labelY: 26;
|
|
137
|
+
vernierDivisions: 5;
|
|
138
|
+
mainDivisionsSpanned: 4;
|
|
139
|
+
/** Widest half-carriage across all supported counts; the inset floor. */
|
|
140
|
+
maxCarriageHalf: 112;
|
|
141
|
+
settleMs: 380;
|
|
142
|
+
}>;
|
|
143
|
+
}>;
|
|
144
|
+
/**
|
|
145
|
+
* Station scale values for L-II, per station count.
|
|
146
|
+
*
|
|
147
|
+
* The point of L-II is that the gaps are *uneven* — stations sit at true
|
|
148
|
+
* log10 positions, so travel compresses toward the right of the rule. Spacing
|
|
149
|
+
* values evenly in log space would make the gaps equal and collapse L-II into
|
|
150
|
+
* L-I, so each count gets a hand-picked set of slide-rule gradations. The
|
|
151
|
+
* six-station row is the artboards', unchanged.
|
|
152
|
+
*/
|
|
153
|
+
export const SLIDE_VALUES: Readonly<{
|
|
154
|
+
2: readonly number[];
|
|
155
|
+
3: readonly number[];
|
|
156
|
+
4: readonly number[];
|
|
157
|
+
5: readonly number[];
|
|
158
|
+
6: readonly number[];
|
|
159
|
+
7: readonly number[];
|
|
160
|
+
8: readonly number[];
|
|
161
|
+
}>;
|
|
162
|
+
export function pct(v: any, extent: any): string;
|
|
163
|
+
export function travelX(spec: any, count: any, pos: any): any;
|
|
164
|
+
export function logX(spec: any, v: any): any;
|
|
165
|
+
export function slideValues(count: any): any;
|
|
166
|
+
export function logStops(spec: any, count: any): any;
|
|
167
|
+
export function statorX(spec: any, v: any): any;
|
|
168
|
+
//# sourceMappingURL=geometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../../src/components/SlideRuleNav/geometry.js"],"names":[],"mappings":"AAsGA;;;;;;GAMG;AACH,+BAJW;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAC,SACxB,MAAM,GACJ,MAAM,CAIlB;AAMD;;;;;;;;;;;GAWG;AACH,sCAJW,MAAM,GACJ;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAC7D,eAAe,EAAE,MAAM,CAAA;CAAC,CAY5B;AAED;;;;;;;;;;;GAWG;AACH,kDANG;IAAwB,GAAG,EAAnB,MAAM;IACU,KAAK,EAArB,MAAM;IAC6B,IAAI;YAAlC,MAAM;YAAM,MAAM;;CAC/B,GAAU;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAC,CAwBhD;AAmBD;;;;;;;;GAQG;AACH,+BAJW,MAAM,EAAE,OACR,MAAM,GACJ,MAAM,CAOlB;AAED;;;;;;;GAOG;AACH,oCAJW,MAAM,EAAE,QACR,MAAM,GACJ,MAAM,CAYlB;AA1ND,6DAA6D;AAC7D,2BAA4B,EAAE,CAAC;AAE/B;IACE;;;;;;;OAOG;;;;;;;;;;;;;;;;;IAaH,qEAAqE;;;;;;;;;;;;;;IAcrE;;;;;;;;;;;;;OAaG;;;;;;;;;;;;QAYD,yEAAyE;;;;GAI1E;AAEH;;;;;;;;GAQG;AACH;;;;;;;;GAQG;AAGI,iDAAmD;AAgBnD,8DACgC;AAgEhC,6CAA2D;AAG3D,6CACiC;AAGjC,qDACuC;AAGvC,gDACwC"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/* src/components/SlideRuleNav/SlideRuleNav.css */
|
|
2
|
+
.ds-rule {
|
|
3
|
+
overflow-x: auto;
|
|
4
|
+
overflow-y: hidden;
|
|
5
|
+
}
|
|
6
|
+
.ds-rule__stage {
|
|
7
|
+
position: relative;
|
|
8
|
+
min-width: 640px;
|
|
9
|
+
}
|
|
10
|
+
.ds-rule__chrome {
|
|
11
|
+
display: block;
|
|
12
|
+
width: 100%;
|
|
13
|
+
height: auto;
|
|
14
|
+
overflow: visible;
|
|
15
|
+
touch-action: none;
|
|
16
|
+
user-select: none;
|
|
17
|
+
-webkit-user-select: none;
|
|
18
|
+
}
|
|
19
|
+
.ds-rule__rail {
|
|
20
|
+
fill: var(--ds-rule-plate);
|
|
21
|
+
stroke: var(--ds-rule-edge);
|
|
22
|
+
stroke-width: 1;
|
|
23
|
+
}
|
|
24
|
+
.ds-rule__rivet {
|
|
25
|
+
fill: var(--ds-rule-brass);
|
|
26
|
+
stroke: var(--ds-rule-brass);
|
|
27
|
+
stroke-width: 0.5;
|
|
28
|
+
}
|
|
29
|
+
.ds-rule__tick {
|
|
30
|
+
stroke: var(--ds-rule-tick);
|
|
31
|
+
stroke-width: 1;
|
|
32
|
+
shape-rendering: crispEdges;
|
|
33
|
+
}
|
|
34
|
+
.ds-rule__tick--half {
|
|
35
|
+
opacity: 0.75;
|
|
36
|
+
}
|
|
37
|
+
.ds-rule__tick--quarter {
|
|
38
|
+
opacity: 0.5;
|
|
39
|
+
}
|
|
40
|
+
.ds-rule__numeral {
|
|
41
|
+
font-family: var(--ds-font-body);
|
|
42
|
+
font-size: 8px;
|
|
43
|
+
font-variant-numeric: tabular-nums;
|
|
44
|
+
letter-spacing: 0.04em;
|
|
45
|
+
fill: var(--ds-rule-ink-soft);
|
|
46
|
+
}
|
|
47
|
+
.ds-rule__numeral--accent {
|
|
48
|
+
fill: var(--ds-rule-hair);
|
|
49
|
+
}
|
|
50
|
+
.ds-rule__caption {
|
|
51
|
+
font-family: var(--ds-font-body);
|
|
52
|
+
font-size: 8px;
|
|
53
|
+
letter-spacing: 0.16em;
|
|
54
|
+
fill: var(--ds-rule-ink-soft);
|
|
55
|
+
}
|
|
56
|
+
.ds-rule__carriage {
|
|
57
|
+
cursor: grab;
|
|
58
|
+
}
|
|
59
|
+
.ds-rule__carriage:active {
|
|
60
|
+
cursor: grabbing;
|
|
61
|
+
}
|
|
62
|
+
.ds-rule__glass {
|
|
63
|
+
fill: var(--ds-rule-glass);
|
|
64
|
+
stroke: var(--ds-rule-glass-edge);
|
|
65
|
+
stroke-width: 0.75;
|
|
66
|
+
}
|
|
67
|
+
.ds-rule__frame {
|
|
68
|
+
fill: none;
|
|
69
|
+
stroke: var(--ds-rule-glass-edge);
|
|
70
|
+
stroke-width: 2.4;
|
|
71
|
+
stroke-linejoin: round;
|
|
72
|
+
opacity: 0.7;
|
|
73
|
+
}
|
|
74
|
+
.ds-rule__hairline {
|
|
75
|
+
stroke: var(--ds-rule-hair);
|
|
76
|
+
stroke-width: 1.1;
|
|
77
|
+
}
|
|
78
|
+
.ds-rule__pawl {
|
|
79
|
+
fill: var(--ds-rule-brass);
|
|
80
|
+
}
|
|
81
|
+
.ds-rule__pawl-spring {
|
|
82
|
+
fill: var(--ds-rule-brass);
|
|
83
|
+
opacity: 0.45;
|
|
84
|
+
}
|
|
85
|
+
.ds-rule__vernier-line {
|
|
86
|
+
stroke: var(--ds-rule-tick);
|
|
87
|
+
stroke-width: 1;
|
|
88
|
+
shape-rendering: crispEdges;
|
|
89
|
+
}
|
|
90
|
+
.ds-rule__vernier-line--lit {
|
|
91
|
+
stroke: var(--ds-rule-hair);
|
|
92
|
+
stroke-width: 2;
|
|
93
|
+
}
|
|
94
|
+
.ds-rule__stations {
|
|
95
|
+
position: absolute;
|
|
96
|
+
inset: 0;
|
|
97
|
+
margin: 0;
|
|
98
|
+
padding: 0;
|
|
99
|
+
list-style: none;
|
|
100
|
+
pointer-events: none;
|
|
101
|
+
}
|
|
102
|
+
.ds-rule__station {
|
|
103
|
+
position: absolute;
|
|
104
|
+
left: var(--station-x);
|
|
105
|
+
top: var(--station-y);
|
|
106
|
+
transform: translate(-50%, -100%);
|
|
107
|
+
pointer-events: auto;
|
|
108
|
+
}
|
|
109
|
+
.ds-rule__link {
|
|
110
|
+
display: inline-block;
|
|
111
|
+
padding: var(--ds-space-1) var(--ds-space-2);
|
|
112
|
+
border: none;
|
|
113
|
+
border-bottom: 2px solid transparent;
|
|
114
|
+
border-radius: var(--ds-radius-sm);
|
|
115
|
+
background: transparent;
|
|
116
|
+
font-family: var(--ds-font-body);
|
|
117
|
+
font-size: var(--ds-font-size-100);
|
|
118
|
+
font-weight: var(--ds-font-weight-semibold);
|
|
119
|
+
letter-spacing: 0.13em;
|
|
120
|
+
text-transform: uppercase;
|
|
121
|
+
text-decoration: none;
|
|
122
|
+
white-space: nowrap;
|
|
123
|
+
color: var(--ds-rule-ink-soft);
|
|
124
|
+
cursor: pointer;
|
|
125
|
+
transition: color var(--ds-motion-duration-base) var(--ds-motion-ease-standard);
|
|
126
|
+
}
|
|
127
|
+
.ds-rule__link:hover {
|
|
128
|
+
color: var(--ds-rule-ink);
|
|
129
|
+
}
|
|
130
|
+
.ds-rule__link:focus-visible {
|
|
131
|
+
outline: 2px solid var(--ds-color-focus-ring);
|
|
132
|
+
outline-offset: 2px;
|
|
133
|
+
}
|
|
134
|
+
.ds-rule__link--active {
|
|
135
|
+
color: var(--ds-rule-ink);
|
|
136
|
+
border-bottom-color: var(--ds-rule-hair);
|
|
137
|
+
}
|
|
138
|
+
.ds-rule__readout {
|
|
139
|
+
margin-top: var(--ds-space-3);
|
|
140
|
+
font-family: var(--ds-font-body);
|
|
141
|
+
font-size: var(--ds-font-size-100);
|
|
142
|
+
letter-spacing: 0.13em;
|
|
143
|
+
text-transform: uppercase;
|
|
144
|
+
color: var(--ds-rule-ink-soft);
|
|
145
|
+
}
|
|
146
|
+
.ds-rule__readout-key {
|
|
147
|
+
opacity: 0.7;
|
|
148
|
+
}
|
|
149
|
+
.ds-rule__readout-val {
|
|
150
|
+
color: var(--ds-rule-ink);
|
|
151
|
+
border-bottom: 1.5px solid var(--ds-rule-hair);
|
|
152
|
+
}
|
|
153
|
+
.ds-rule__readout-num {
|
|
154
|
+
color: var(--ds-rule-hair);
|
|
155
|
+
font-variant-numeric: tabular-nums;
|
|
156
|
+
}
|
|
157
|
+
.ds-rule__sr-only {
|
|
158
|
+
position: absolute;
|
|
159
|
+
width: 1px;
|
|
160
|
+
height: 1px;
|
|
161
|
+
padding: 0;
|
|
162
|
+
margin: -1px;
|
|
163
|
+
overflow: hidden;
|
|
164
|
+
clip-path: inset(50%);
|
|
165
|
+
white-space: nowrap;
|
|
166
|
+
border: 0;
|
|
167
|
+
}
|
|
168
|
+
@media (prefers-reduced-motion: reduce) {
|
|
169
|
+
.ds-rule__link {
|
|
170
|
+
transition-duration: 0.01ms;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
.ds-rule__shoe {
|
|
174
|
+
fill: var(--ds-rule-glass-edge);
|
|
175
|
+
}
|
|
176
|
+
.ds-rule__slide {
|
|
177
|
+
fill: var(--ds-rule-plate-2);
|
|
178
|
+
stroke: var(--ds-rule-edge);
|
|
179
|
+
stroke-width: 1;
|
|
180
|
+
}
|
|
181
|
+
.ds-rule__index {
|
|
182
|
+
fill: var(--ds-rule-hair);
|
|
183
|
+
}
|
|
184
|
+
.ds-rule__caption--accent {
|
|
185
|
+
fill: var(--ds-rule-hair);
|
|
186
|
+
}
|
|
187
|
+
.ds-rule__window {
|
|
188
|
+
pointer-events: none;
|
|
189
|
+
}
|
|
190
|
+
.ds-rule--slide .ds-rule__stations {
|
|
191
|
+
clip-path: inset(0 3.33% 0 3.33%);
|
|
192
|
+
}
|
|
193
|
+
.ds-rule--slide .ds-rule__stage {
|
|
194
|
+
overflow: hidden;
|
|
195
|
+
}
|
|
196
|
+
/*# sourceMappingURL=index.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SlideRuleNav/SlideRuleNav.css"],"sourcesContent":["/*\n Linear slide-rule navigation. The engraved chrome is an aria-hidden SVG; the\n navigation itself is the HTML list positioned over it, so focus rings, hit\n areas, routing and screen-reader semantics all behave normally.\n\n Component tokens (--ds-rule-*) live in src/tokens/rule.css, since DialNav\n shares them.\n*/\n\n.ds-rule {\n /* A rule too long for the desk scrolls, rather than shrinking its engraving\n into illegibility. Deliberately never degrades to a plain nav. */\n overflow-x: auto;\n overflow-y: hidden;\n}\n\n.ds-rule__stage {\n position: relative;\n min-width: 640px;\n}\n\n.ds-rule__chrome {\n display: block;\n width: 100%;\n height: auto;\n overflow: visible;\n touch-action: none;\n user-select: none;\n -webkit-user-select: none;\n}\n\n/* ── engraved chrome ─────────────────────────────────────────────────── */\n\n.ds-rule__rail {\n fill: var(--ds-rule-plate);\n stroke: var(--ds-rule-edge);\n stroke-width: 1;\n}\n\n.ds-rule__rivet {\n fill: var(--ds-rule-brass);\n stroke: var(--ds-rule-brass);\n stroke-width: 0.5;\n}\n\n.ds-rule__tick {\n stroke: var(--ds-rule-tick);\n stroke-width: 1;\n shape-rendering: crispEdges;\n}\n.ds-rule__tick--half {\n opacity: 0.75;\n}\n.ds-rule__tick--quarter {\n opacity: 0.5;\n}\n\n.ds-rule__numeral {\n font-family: var(--ds-font-body);\n font-size: 8px;\n font-variant-numeric: tabular-nums;\n letter-spacing: 0.04em;\n fill: var(--ds-rule-ink-soft);\n}\n.ds-rule__numeral--accent {\n fill: var(--ds-rule-hair);\n}\n\n.ds-rule__caption {\n font-family: var(--ds-font-body);\n font-size: 8px;\n letter-spacing: 0.16em;\n fill: var(--ds-rule-ink-soft);\n}\n\n/* ── carriage ────────────────────────────────────────────────────────── */\n\n.ds-rule__carriage {\n cursor: grab;\n}\n.ds-rule__carriage:active {\n cursor: grabbing;\n}\n\n.ds-rule__glass {\n fill: var(--ds-rule-glass);\n stroke: var(--ds-rule-glass-edge);\n stroke-width: 0.75;\n}\n\n.ds-rule__frame {\n fill: none;\n stroke: var(--ds-rule-glass-edge);\n stroke-width: 2.4;\n stroke-linejoin: round;\n opacity: 0.7;\n}\n\n.ds-rule__hairline {\n stroke: var(--ds-rule-hair);\n stroke-width: 1.1;\n}\n\n.ds-rule__pawl {\n fill: var(--ds-rule-brass);\n}\n.ds-rule__pawl-spring {\n fill: var(--ds-rule-brass);\n opacity: 0.45;\n}\n\n.ds-rule__vernier-line {\n stroke: var(--ds-rule-tick);\n stroke-width: 1;\n shape-rendering: crispEdges;\n}\n.ds-rule__vernier-line--lit {\n stroke: var(--ds-rule-hair);\n stroke-width: 2;\n}\n\n/* ── stations (the actual navigation) ────────────────────────────────── */\n\n.ds-rule__stations {\n position: absolute;\n inset: 0;\n margin: 0;\n padding: 0;\n list-style: none;\n pointer-events: none;\n}\n\n.ds-rule__station {\n position: absolute;\n left: var(--station-x);\n top: var(--station-y);\n transform: translate(-50%, -100%);\n pointer-events: auto;\n}\n\n.ds-rule__link {\n display: inline-block;\n padding: var(--ds-space-1) var(--ds-space-2);\n border: none;\n /* Reserved on every state so marking the active station shifts nothing. */\n border-bottom: 2px solid transparent;\n border-radius: var(--ds-radius-sm);\n background: transparent;\n font-family: var(--ds-font-body);\n font-size: var(--ds-font-size-100);\n font-weight: var(--ds-font-weight-semibold);\n letter-spacing: 0.13em;\n text-transform: uppercase;\n text-decoration: none;\n white-space: nowrap;\n color: var(--ds-rule-ink-soft);\n cursor: pointer;\n transition: color var(--ds-motion-duration-base)\n var(--ds-motion-ease-standard);\n}\n\n.ds-rule__link:hover {\n color: var(--ds-rule-ink);\n}\n\n.ds-rule__link:focus-visible {\n outline: 2px solid var(--ds-color-focus-ring);\n outline-offset: 2px;\n}\n\n/*\n The active station is marked by full-contrast ink *and* an accent rule, not\n by hue alone. The theme accent is a bg-family token: as label text it falls\n to 1.6:1 on sage and harvest, far below AA. It reads fine as a 2px rule.\n*/\n.ds-rule__link--active {\n color: var(--ds-rule-ink);\n border-bottom-color: var(--ds-rule-hair);\n}\n\n/* ── readout ─────────────────────────────────────────────────────────── */\n\n.ds-rule__readout {\n margin-top: var(--ds-space-3);\n font-family: var(--ds-font-body);\n font-size: var(--ds-font-size-100);\n letter-spacing: 0.13em;\n text-transform: uppercase;\n color: var(--ds-rule-ink-soft);\n}\n\n.ds-rule__readout-key {\n opacity: 0.7;\n}\n\n.ds-rule__readout-val {\n color: var(--ds-rule-ink);\n border-bottom: 1.5px solid var(--ds-rule-hair);\n}\n\n.ds-rule__readout-num {\n color: var(--ds-rule-hair);\n font-variant-numeric: tabular-nums;\n}\n\n.ds-rule__sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .ds-rule__link {\n transition-duration: 0.01ms;\n }\n}\n\n/* ── L-I cursor shoes ────────────────────────────────────────────────── */\n\n.ds-rule__shoe {\n fill: var(--ds-rule-glass-edge);\n}\n\n/* ── L-II slide and index ────────────────────────────────────────────── */\n\n.ds-rule__slide {\n fill: var(--ds-rule-plate-2);\n stroke: var(--ds-rule-edge);\n stroke-width: 1;\n}\n\n.ds-rule__index {\n fill: var(--ds-rule-hair);\n}\n\n.ds-rule__caption--accent {\n fill: var(--ds-rule-hair);\n}\n\n/* The window is instrument furniture, not a drag handle — let pointers\n through to the slide underneath it. */\n.ds-rule__window {\n pointer-events: none;\n}\n\n/* L-II's labels ride the slide, so they must be clipped to the same window the\n engraved slide is. clip-path trims them to the window's edges. */\n.ds-rule--slide .ds-rule__stations {\n clip-path: inset(0 3.33% 0 3.33%);\n}\n\n/* The label rail is moved with a transform, which does not affect layout but\n *does* extend an ancestor's scrollable area — so `overflow` on the rail\n itself cannot contain it and the nav grows a stray horizontal scrollbar.\n The stage has to do the clipping. Only L-II needs this; the other plates\n hold their labels still. */\n.ds-rule--slide .ds-rule__stage {\n overflow: hidden;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SlideRuleNav/index.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* L-I — Cursor Rule.
|
|
3
|
+
*
|
|
4
|
+
* The scale is fixed and the cursor travels: a glass runner with a scarlet
|
|
5
|
+
* hairline, brass shoes at each end. Mechanically the simplest of the three
|
|
6
|
+
* linear plates, and a strict subset of L-III.
|
|
7
|
+
*
|
|
8
|
+
* Decorative only — the navigation is the HTML list the parent renders above.
|
|
9
|
+
*/
|
|
10
|
+
export const CursorRule: import("react").ForwardRefExoticComponent<import("react").RefAttributes<any>>;
|
|
11
|
+
//# sourceMappingURL=CursorRule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CursorRule.d.ts","sourceRoot":"","sources":["../../../../src/components/SlideRuleNav/variants/CursorRule.jsx"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,uGAgLG"}
|