fluent-svelte-extra 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/.prettierignore +1 -0
  2. package/.prettierrc +7 -0
  3. package/CHANGELOG.md +7 -0
  4. package/LICENSE +21 -0
  5. package/README.md +33 -0
  6. package/package.json +83 -0
  7. package/src/app.html +12 -0
  8. package/src/global.d.ts +1 -0
  9. package/src/lib/AutoSuggestBox/AutoSuggestBox.scss +44 -0
  10. package/src/lib/AutoSuggestBox/AutoSuggestBox.svelte +173 -0
  11. package/src/lib/Button/Button.scss +94 -0
  12. package/src/lib/Button/Button.svelte +48 -0
  13. package/src/lib/CalendarDatePicker/CalendarDatePicker.scss +15 -0
  14. package/src/lib/CalendarDatePicker/CalendarDatePicker.svelte +86 -0
  15. package/src/lib/CalendarView/CalendarView.scss +156 -0
  16. package/src/lib/CalendarView/CalendarView.svelte +753 -0
  17. package/src/lib/CalendarView/CalendarViewItem.scss +130 -0
  18. package/src/lib/CalendarView/CalendarViewItem.svelte +33 -0
  19. package/src/lib/Checkbox/Checkbox.scss +117 -0
  20. package/src/lib/Checkbox/Checkbox.svelte +81 -0
  21. package/src/lib/ComboBox/ComboBox.scss +152 -0
  22. package/src/lib/ComboBox/ComboBox.svelte +360 -0
  23. package/src/lib/ComboBox/ComboBoxItem.scss +80 -0
  24. package/src/lib/ComboBox/ComboBoxItem.svelte +30 -0
  25. package/src/lib/ContentDialog/ContentDialog.scss +68 -0
  26. package/src/lib/ContentDialog/ContentDialog.svelte +123 -0
  27. package/src/lib/ContextMenu/ContextMenu.scss +11 -0
  28. package/src/lib/ContextMenu/ContextMenu.svelte +104 -0
  29. package/src/lib/Expander/Expander.scss +134 -0
  30. package/src/lib/Expander/Expander.svelte +123 -0
  31. package/src/lib/Flipper/Flipper.svelte +49 -0
  32. package/src/lib/Flyout/FlyoutSurface.scss +14 -0
  33. package/src/lib/Flyout/FlyoutSurface.svelte +21 -0
  34. package/src/lib/Flyout/FlyoutWrapper.scss +81 -0
  35. package/src/lib/Flyout/FlyoutWrapper.svelte +126 -0
  36. package/src/lib/IconButton/IconButton.scss +31 -0
  37. package/src/lib/IconButton/IconButton.svelte +49 -0
  38. package/src/lib/InfoBadge/InfoBadge.scss +39 -0
  39. package/src/lib/InfoBadge/InfoBadge.svelte +81 -0
  40. package/src/lib/InfoBar/InfoBar.scss +122 -0
  41. package/src/lib/InfoBar/InfoBar.svelte +133 -0
  42. package/src/lib/ListItem/ListItem.scss +74 -0
  43. package/src/lib/ListItem/ListItem.svelte +88 -0
  44. package/src/lib/MenuBar/MenuBar.scss +10 -0
  45. package/src/lib/MenuBar/MenuBar.svelte +49 -0
  46. package/src/lib/MenuBar/MenuBarItem.scss +38 -0
  47. package/src/lib/MenuBar/MenuBarItem.svelte +135 -0
  48. package/src/lib/MenuBar/flyoutState.ts +5 -0
  49. package/src/lib/MenuFlyout/MenuFlyoutDivider.scss +7 -0
  50. package/src/lib/MenuFlyout/MenuFlyoutDivider.svelte +14 -0
  51. package/src/lib/MenuFlyout/MenuFlyoutItem.scss +147 -0
  52. package/src/lib/MenuFlyout/MenuFlyoutItem.svelte +239 -0
  53. package/src/lib/MenuFlyout/MenuFlyoutSurface.scss +42 -0
  54. package/src/lib/MenuFlyout/MenuFlyoutSurface.svelte +28 -0
  55. package/src/lib/MenuFlyout/MenuFlyoutWrapper.scss +64 -0
  56. package/src/lib/MenuFlyout/MenuFlyoutWrapper.svelte +114 -0
  57. package/src/lib/NavigationView/NavigationView.scss +0 -0
  58. package/src/lib/NavigationView/NavigationView.svelte +82 -0
  59. package/src/lib/NumberBox/NumberBox.scss +31 -0
  60. package/src/lib/NumberBox/NumberBox.svelte +267 -0
  61. package/src/lib/PersonPicture/PersonPicture.scss +35 -0
  62. package/src/lib/PersonPicture/PersonPicture.svelte +62 -0
  63. package/src/lib/ProgressBar/ProgressBar.scss +83 -0
  64. package/src/lib/ProgressBar/ProgressBar.svelte +60 -0
  65. package/src/lib/ProgressRing/ProgressRing.scss +37 -0
  66. package/src/lib/ProgressRing/ProgressRing.svelte +73 -0
  67. package/src/lib/RadioButton/RadioButton.scss +114 -0
  68. package/src/lib/RadioButton/RadioButton.svelte +67 -0
  69. package/src/lib/RangeSlider/RangeSlider.svelte +91 -0
  70. package/src/lib/ScrollView/ScrollView.svelte +9 -0
  71. package/src/lib/Slider/Slider.scss +263 -0
  72. package/src/lib/Slider/Slider.svelte +261 -0
  73. package/src/lib/TextBlock/TextBlock.scss +62 -0
  74. package/src/lib/TextBlock/TextBlock.svelte +70 -0
  75. package/src/lib/TextBox/TextBox.scss +108 -0
  76. package/src/lib/TextBox/TextBox.svelte +225 -0
  77. package/src/lib/TextBox/TextBoxButton.scss +34 -0
  78. package/src/lib/TextBox/TextBoxButton.svelte +27 -0
  79. package/src/lib/ToggleSwitch/ToggleSwitch.scss +118 -0
  80. package/src/lib/ToggleSwitch/ToggleSwitch.svelte +55 -0
  81. package/src/lib/Tooltip/TooltipSurface.scss +16 -0
  82. package/src/lib/Tooltip/TooltipSurface.svelte +27 -0
  83. package/src/lib/Tooltip/TooltipWrapper.scss +66 -0
  84. package/src/lib/Tooltip/TooltipWrapper.svelte +117 -0
  85. package/src/lib/_mixins.scss +130 -0
  86. package/src/lib/index.ts +33 -0
  87. package/src/lib/internal.ts +213 -0
  88. package/src/lib/svelte-jsx.d.ts +14 -0
  89. package/src/lib/theme.css +414 -0
  90. package/src/routes/__layout.svelte +48 -0
  91. package/src/routes/docs/__layout.svelte +122 -0
  92. package/src/routes/docs/components/button.md +43 -0
  93. package/src/routes/docs/components/calendarview.md +188 -0
  94. package/src/routes/docs/components/checkbox.md +87 -0
  95. package/src/routes/docs/components/contentdialog.md +155 -0
  96. package/src/routes/docs/components/expander.md +115 -0
  97. package/src/routes/docs/components/flyout.md +107 -0
  98. package/src/routes/docs/components/iconbutton.md +39 -0
  99. package/src/routes/docs/components/infobadge.md +54 -0
  100. package/src/routes/docs/components/infobar.md +102 -0
  101. package/src/routes/docs/components/listitem.md +87 -0
  102. package/src/routes/docs/components/personpicture.md +125 -0
  103. package/src/routes/docs/components/progressring.md +83 -0
  104. package/src/routes/docs/components/radiobutton.md +88 -0
  105. package/src/routes/docs/components/slider.md +165 -0
  106. package/src/routes/docs/components/textblock.md +46 -0
  107. package/src/routes/docs/components/textbox.md +124 -0
  108. package/src/routes/docs/components/toggleswitch.md +73 -0
  109. package/src/routes/docs/getting-started.md +116 -0
  110. package/src/routes/docs/index.md +37 -0
  111. package/src/routes/docs/internals/index.md +0 -0
  112. package/src/routes/index.svelte +121 -0
  113. package/src/routes/test/__layout-test.svelte +1 -0
  114. package/src/routes/test/index.svelte +757 -0
  115. package/src/routes/test/nav.svelte +7 -0
  116. package/src/site/data/docs.ts +176 -0
  117. package/src/site/data/home.ts +12 -0
  118. package/src/site/lib/APIDocs/APIDocs.svelte +178 -0
  119. package/src/site/lib/APIDocs/ParsedComponent.d.ts +85 -0
  120. package/src/site/lib/CopyBox/CopyBox.svelte +23 -0
  121. package/src/site/lib/Example/Example.scss +33 -0
  122. package/src/site/lib/Example/Example.svelte +18 -0
  123. package/src/site/lib/HeroCard/HeroCard.scss +24 -0
  124. package/src/site/lib/HeroCard/HeroCard.svelte +36 -0
  125. package/src/site/lib/Metadata/Metadata.svelte +14 -0
  126. package/src/site/lib/Navbar/Navbar.scss +92 -0
  127. package/src/site/lib/Navbar/Navbar.svelte +47 -0
  128. package/src/site/lib/PageSection/PageSection.scss +57 -0
  129. package/src/site/lib/PageSection/PageSection.svelte +10 -0
  130. package/src/site/lib/Showcase/Showcase.scss +53 -0
  131. package/src/site/lib/Showcase/Showcase.svelte +67 -0
  132. package/src/site/lib/Toc/Toc.scss +18 -0
  133. package/src/site/lib/Toc/Toc.svelte +59 -0
  134. package/src/site/lib/TreeView/TreeView.svelte +89 -0
  135. package/src/site/lib/index.ts +9 -0
  136. package/src/site/styles/_markdown.scss +260 -0
  137. package/src/site/styles/_mixins.scss +319 -0
  138. package/src/site/styles/global.scss +40 -0
  139. package/src/site/styles/pages/docs.scss +74 -0
  140. package/src/site/styles/pages/home.scss +134 -0
  141. package/static/bloom-mica-dark.png +0 -0
  142. package/static/bloom-mica-light.png +0 -0
  143. package/static/logo.svg +11 -0
  144. package/svelte.config.js +57 -0
  145. package/tsconfig.json +38 -0
@@ -0,0 +1,414 @@
1
+ /* Global Variables */
2
+ :root {
3
+ /* Accent Colors */
4
+ --fds-accent-light-3: 191, 98%, 80%;
5
+ --fds-accent-light-2: 199, 99%, 69%;
6
+ --fds-accent-light-1: 205, 100%, 49%;
7
+ --fds-accent-base: 206, 100%, 42%;
8
+ --fds-accent-dark-1: 209, 100%, 36%;
9
+ --fds-accent-dark-2: 215, 100%, 29%;
10
+ --fds-accent-dark-3: 226, 100%, 20%;
11
+
12
+ /* Font Families */
13
+ --fds-font-family-fallback: "Segoe UI", -apple-system, ui-sans-serif, system-ui,
14
+ BlinkMacSystemFont, Helvetica, Arial, sans-serif;
15
+ --fds-font-family-text: "Segoe UI Variable Text", "Seoge UI Variable Static Text",
16
+ var(--fds-font-family-fallback);
17
+ --fds-font-family-small: "Segoe UI Variable Small", "Seoge UI Variable Static Small",
18
+ var(--fds-font-family-fallback);
19
+ --fds-font-family-display: "Segoe UI Variable Display", "Seoge UI Variable Static Display",
20
+ var(--fds-font-family-fallback);
21
+
22
+ /* Font Size */
23
+ --fds-caption-font-size: 12px;
24
+ --fds-body-font-size: 14px;
25
+ --fds-body-large-font-size: 18px;
26
+ --fds-subtitle-font-size: 20px;
27
+ --fds-title-font-size: 28px;
28
+ --fds-title-large-font-size: 40px;
29
+ --fds-display-font-size: 68px;
30
+
31
+ /* Roundness */
32
+ --fds-control-corner-radius: 4px;
33
+ --fds-overlay-corner-radius: 8px;
34
+
35
+ /* Duration */
36
+ --fds-control-slow-duration: 333ms;
37
+ --fds-control-normal-duration: 250ms;
38
+ --fds-control-fast-duration: 167ms;
39
+ /* --fds-control-fast-after-duration: 168ms; */
40
+ --fds-control-faster-duration: 83ms;
41
+
42
+ /* Easing */
43
+ --fds-control-fast-out-slow-in-easing: cubic-bezier(0, 0, 0, 1);
44
+
45
+ /* Focus Stroke */
46
+ --fds-focus-stroke: 0 0 0 1px var(--fds-focus-stroke-inner),
47
+ 0 0 0 3px var(--fds-focus-stroke-outer);
48
+
49
+ /* Acrylic */
50
+ --fds-acrylic-noise-asset: url("data:image/png;base64,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");
51
+ --fds-acrylic-blur-factor: blur(60px);
52
+ }
53
+
54
+ /* Reduced Motion Support */
55
+ @media (prefers-reduced-motion: reduce) {
56
+ :root {
57
+ --fds-control-slow-duration: 0ms;
58
+ --fds-control-normal-duration: 0ms;
59
+ --fds-control-fast-duration: 0ms;
60
+ /* --fds-control-fast-after-duration: 0ms; */
61
+ --fds-control-faster-duration: 0ms;
62
+ }
63
+ }
64
+
65
+ /* Dark Theme Colors */
66
+ @media (prefers-color-scheme: light) {
67
+ :root {
68
+ /* Text */
69
+ --fds-text-primary: hsla(0, 0%, 100%, 100%);
70
+ --fds-text-secondary: hsla(0, 0%, 100%, 78.6%);
71
+ --fds-text-tertiary: hsla(0, 0%, 100%, 54.42%);
72
+ --fds-text-disabled: hsla(0, 0%, 100%, 36.28%);
73
+
74
+ /* Accent */
75
+ --fds-accent-default: hsla(var(--fds-accent-light-2));
76
+ --fds-accent-secondary: hsla(var(--fds-accent-light-2), 90%);
77
+ --fds-accent-tertiary: hsla(var(--fds-accent-light-2), 80%);
78
+ --fds-accent-disabled: hsla(0, 0%, 100%, 15.81%);
79
+
80
+ /* Accent Text */
81
+ --fds-accent-text-primary: hsl(var(--fds-accent-light-3));
82
+ --fds-accent-text-secondary: hsl(var(--fds-accent-light-3));
83
+ --fds-accent-text-tertiary: hsl(var(--fds-accent-light-2));
84
+ --fds-accent-text-disabled: hsla(0, 0%, 100%, 36.28%);
85
+
86
+ /* Text on Accent */
87
+ --fds-text-on-accent-primary: hsl(0, 0%, 0%);
88
+ --fds-text-on-accent-secondary: hsla(0, 0%, 0%, 0.5);
89
+ --fds-text-on-accent-disabled: hsla(0, 0%, 100%, 0.53);
90
+ --fds-text-on-accent-selected: hsl(0, 0%, 100%);
91
+
92
+ /* Control Fill */
93
+ --fds-control-fill-transparent: transparent;
94
+ --fds-control-fill-default: hsla(0, 0%, 100%, 0.061);
95
+ --fds-control-fill-secondary: hsla(0, 0%, 100%, 0.084);
96
+ --fds-control-fill-tertiary: hsla(0, 0%, 100%, 0.033);
97
+ --fds-control-fill-disabled: hsla(0, 0%, 100%, 0.042);
98
+ --fds-control-fill-input-active: hsla(0, 0%, 12%, 70%);
99
+
100
+ /* Control Strong Fill */
101
+ --fds-control-strong-fill-default: hsla(0, 0%, 100%, 54.42%);
102
+ --fds-control-strong-fill-disabled: hsla(0, 0%, 100%, 24.65%);
103
+
104
+ /* Control Solid Fill */
105
+ --fds-control-solid-fill-default: hsl(0, 0%, 27%);
106
+
107
+ /* Control Alt Fill */
108
+ --fds-control-alt-fill-transparent: transparent;
109
+ --fds-control-alt-fill-secondary: hsla(0, 0%, 0%, 0.1);
110
+ --fds-control-alt-fill-tertiary: hsla(0, 0%, 100%, 0.042);
111
+ --fds-control-alt-fill-quarternary: hsla(0, 0%, 100%, 0.07);
112
+ --fds-control-alt-fill-disabled: var(--fds-control-fill-transparent);
113
+
114
+ /* Control on Image Fill */
115
+ --fds-control-on-image-fill-default: hsla(0, 0%, 11%, 70%);
116
+ --fds-control-on-image-fill-secondary: hsl(0, 0%, 10%);
117
+ --fds-control-on-image-fill-tertiary: hsl(0, 0%, 7%);
118
+ --fds-control-on-image-fill-disabled: transparent;
119
+
120
+ /* Subtle Fill */
121
+ --fds-subtle-fill-transparent: transparent;
122
+ --fds-subtle-fill-secondary: hsla(0, 0%, 100%, 6.05%);
123
+ --fds-subtle-fill-tertiary: hsla(0, 0%, 100%, 4.19%);
124
+ --fds-subtle-fill-disabled: transparent;
125
+
126
+ /* Control Stroke */
127
+ --fds-control-stroke-default: hsla(0, 0%, 100%, 6.98%);
128
+ --fds-control-stroke-secondary: hsla(0, 0%, 100%, 9.3%);
129
+
130
+ /* Control Strong Stroke */
131
+ --fds-control-strong-stroke-default: hsla(0, 0%, 100%, 54.42%);
132
+ --fds-control-strong-stroke-disabled: hsla(0, 0%, 100%, 15.81%);
133
+
134
+ /* Control Stroke on Accent */
135
+ --fds-control-stroke-on-accent-default: hsla(0, 0%, 100%, 8%);
136
+ --fds-control-stroke-on-accent-secondary: hsla(0, 0%, 0%, 14%);
137
+ --fds-control-stroke-on-accent-tertiary: hsla(0, 0%, 0%, 21.69%);
138
+ --fds-control-stroke-on-accent-disabled: hsla(0, 0%, 0%, 20%);
139
+
140
+ /* Control Strong Stroke on Image */
141
+ --fds-control-strong-stroke-on-image-default: hsla(0, 0%, 0%, 42%);
142
+
143
+ /* Card Stroke */
144
+ --fds-card-stroke-default: hsla(0, 0%, 0%, 10%);
145
+ --fds-card-stroke-default-solid: hsl(0, 0%, 11%);
146
+
147
+ /* Surface Stroke */
148
+ --fds-surface-stroke-default: hsla(0, 0%, 46%, 40%);
149
+ --fds-surface-stroke-flyout: hsla(0, 0%, 0%, 20%);
150
+
151
+ /* Divider Stroke */
152
+ --fds-divider-stroke-default: hsla(0, 0%, 100%, 8.37%);
153
+
154
+ /* Focus Stroke */
155
+ --fds-focus-stroke-outer: hsl(0, 0%, 100%);
156
+ --fds-focus-stroke-inner: hsla(0, 0%, 0%, 70%);
157
+
158
+ /* Card Background */
159
+ --fds-card-background-default: hsla(0, 0%, 100%, 5.12%);
160
+ --fds-card-background-secondary: hsla(0, 0%, 100%, 3.26%);
161
+ /* --fds-card-background-tertiary: unset; */
162
+
163
+ /* Smoke Background */
164
+ --fds-smoke-background-default: hsla(0, 0%, 0%, 30%);
165
+
166
+ /* Layer */
167
+ --fds-layer-background-default: hsla(0, 0%, 23%, 30%);
168
+ --fds-layer-background-alt: hsla(0, 0%, 100%, 5.38%);
169
+
170
+ /* Layer on Acrylic */
171
+ --fds-layer-on-acrylic-background-default: hsla(0, 0%, 100%, 3.59%);
172
+ --fds-layer-on-accent-background-default: var(--fds-layer-on-acrylic-background-default);
173
+
174
+ /* Solid Background */
175
+ --fds-solid-background-base: hsl(0, 0%, 13%);
176
+ --fds-solid-background-secondary: hsl(0, 0%, 11%);
177
+ --fds-solid-background-tertiary: hsl(0, 0%, 16%);
178
+ --fds-solid-background-quarternary: hsl(0, 0%, 17%);
179
+
180
+ /* Mica Background */
181
+ /* --fds-mica-background-base: linear-gradient(0deg, rgb(32, 32, 32, 0.8), rgb(32, 32, 32, 0.8)), #202020; */
182
+
183
+ /* Acrylic Background */
184
+ --fds-acrylic-background-default: linear-gradient(
185
+ 0deg,
186
+ rgb(44, 44, 44, 15%),
187
+ rgb(44, 44, 44, 15%)
188
+ ),
189
+ rgba(44, 44, 44, 96%);
190
+ --fds-acrylic-background-base: linear-gradient(
191
+ 0deg,
192
+ rgb(32, 32, 32, 50%),
193
+ rgb(32, 32, 32, 50%)
194
+ ),
195
+ rgba(32, 32, 32, 96%);
196
+
197
+ /* Accent Acrylic Background */
198
+ /* --fds-accent-acrylic-background-default: url("NoiseAsset_256.png"), linear-gradient(0deg, rgb(0, 120, 212, 80%), rgb(0, 120, 212, 80%)), rgb(0, 120, 212, 80%); */
199
+ /* --fds-accent-acrylic-background-base: url("NoiseAsset_256.png"), linear-gradient(0deg, rgba(0, 63, 255, 80%), rgba(0, 63, 255, 80%)), rgb(0, 63, 255, 80%); */
200
+
201
+ /* System */
202
+ --fds-system-attention: hsl(199, 100%, 69%);
203
+ --fds-system-success: hsl(113, 51%, 58%);
204
+ --fds-system-caution: hsl(54, 100%, 49%);
205
+ --fds-system-critical: hsl(354, 100%, 80%);
206
+ --fds-system-neutral: hsla(0, 0%, 100%, 54.42%);
207
+
208
+ /* System Solid */
209
+ --fds-system-solid-neutral: hsl(0, 0%, 62%);
210
+
211
+ /* System Background */
212
+ --fds-system-background-attention: hsla(0, 0%, 100%, 3.26%);
213
+ --fds-system-background-success: hsl(67, 39%, 17%);
214
+ --fds-system-background-caution: hsl(40, 46%, 18%);
215
+ --fds-system-background-critical: hsl(2, 28%, 21%);
216
+
217
+ /* System Background Solid */
218
+ --fds-system-background-solid-attention: hsl(0, 0%, 18%);
219
+ --fds-system-background-solid-neutral: hsl(0, 0%, 62%);
220
+
221
+ /* Borders */
222
+ --fds-control-border-default: var(--fds-control-stroke-secondary)
223
+ var(--fds-control-stroke-default) var(--fds-control-stroke-default)
224
+ var(--fds-control-stroke-default);
225
+
226
+ /* Shadows */
227
+ --fds-card-shadow: 0px 2px 4px hsla(0, 0%, 0%, 0.13);
228
+ --fds-tooltip-shadow: 0px 4px 8px hsla(0, 0%, 0%, 0.26);
229
+ --fds-flyout-shadow: 0px 8px 16px hsla(0, 0%, 0%, 0.14);
230
+ --fds-dialog-shadow: 0px 32px 64px hsla(0, 0%, 0%, 0.37), 0px 2px 21px hsla(0, 0%, 0%, 0.37);
231
+
232
+ /* Shell Shadows */
233
+ --fds-inactive-window-shadow: 0px 16px 32px hsla(0, 0%, 0%, 0.37),
234
+ 0px 2px 10.67px hsla(0, 0%, 0%, 0.37);
235
+ --fds-active-window-shadow: 0px 32px 64px hsla(0, 0%, 0%, 0.56),
236
+ 0px 2px 21px hsla(0, 0%, 0%, 0.55);
237
+ }
238
+ }
239
+
240
+
241
+ /* Dark Theme Colors */
242
+ @media (prefers-color-scheme: dark) {
243
+ :root {
244
+ /* Text */
245
+ --fds-text-primary: hsla(0, 0%, 100%, 100%);
246
+ --fds-text-secondary: hsla(0, 0%, 100%, 78.6%);
247
+ --fds-text-tertiary: hsla(0, 0%, 100%, 54.42%);
248
+ --fds-text-disabled: hsla(0, 0%, 100%, 36.28%);
249
+
250
+ /* Accent */
251
+ --fds-accent-default: hsla(var(--fds-accent-light-2));
252
+ --fds-accent-secondary: hsla(var(--fds-accent-light-2), 90%);
253
+ --fds-accent-tertiary: hsla(var(--fds-accent-light-2), 80%);
254
+ --fds-accent-disabled: hsla(0, 0%, 100%, 15.81%);
255
+
256
+ /* Accent Text */
257
+ --fds-accent-text-primary: hsl(var(--fds-accent-light-3));
258
+ --fds-accent-text-secondary: hsl(var(--fds-accent-light-3));
259
+ --fds-accent-text-tertiary: hsl(var(--fds-accent-light-2));
260
+ --fds-accent-text-disabled: hsla(0, 0%, 100%, 36.28%);
261
+
262
+ /* Text on Accent */
263
+ --fds-text-on-accent-primary: hsl(0, 0%, 0%);
264
+ --fds-text-on-accent-secondary: hsla(0, 0%, 0%, 0.5);
265
+ --fds-text-on-accent-disabled: hsla(0, 0%, 100%, 0.53);
266
+ --fds-text-on-accent-selected: hsl(0, 0%, 100%);
267
+
268
+ /* Control Fill */
269
+ --fds-control-fill-transparent: transparent;
270
+ --fds-control-fill-default: hsla(0, 0%, 100%, 0.061);
271
+ --fds-control-fill-secondary: hsla(0, 0%, 100%, 0.084);
272
+ --fds-control-fill-tertiary: hsla(0, 0%, 100%, 0.033);
273
+ --fds-control-fill-disabled: hsla(0, 0%, 100%, 0.042);
274
+ --fds-control-fill-input-active: hsla(0, 0%, 12%, 70%);
275
+
276
+ /* Control Strong Fill */
277
+ --fds-control-strong-fill-default: hsla(0, 0%, 100%, 54.42%);
278
+ --fds-control-strong-fill-disabled: hsla(0, 0%, 100%, 24.65%);
279
+
280
+ /* Control Solid Fill */
281
+ --fds-control-solid-fill-default: hsl(0, 0%, 27%);
282
+
283
+ /* Control Alt Fill */
284
+ --fds-control-alt-fill-transparent: transparent;
285
+ --fds-control-alt-fill-secondary: hsla(0, 0%, 0%, 0.1);
286
+ --fds-control-alt-fill-tertiary: hsla(0, 0%, 100%, 0.042);
287
+ --fds-control-alt-fill-quarternary: hsla(0, 0%, 100%, 0.07);
288
+ --fds-control-alt-fill-disabled: var(--fds-control-fill-transparent);
289
+
290
+ /* Control on Image Fill */
291
+ --fds-control-on-image-fill-default: hsla(0, 0%, 11%, 70%);
292
+ --fds-control-on-image-fill-secondary: hsl(0, 0%, 10%);
293
+ --fds-control-on-image-fill-tertiary: hsl(0, 0%, 7%);
294
+ --fds-control-on-image-fill-disabled: transparent;
295
+
296
+ /* Subtle Fill */
297
+ --fds-subtle-fill-transparent: transparent;
298
+ --fds-subtle-fill-secondary: hsla(0, 0%, 100%, 6.05%);
299
+ --fds-subtle-fill-tertiary: hsla(0, 0%, 100%, 4.19%);
300
+ --fds-subtle-fill-disabled: transparent;
301
+
302
+ /* Control Stroke */
303
+ --fds-control-stroke-default: hsla(0, 0%, 100%, 6.98%);
304
+ --fds-control-stroke-secondary: hsla(0, 0%, 100%, 9.3%);
305
+
306
+ /* Control Strong Stroke */
307
+ --fds-control-strong-stroke-default: hsla(0, 0%, 100%, 54.42%);
308
+ --fds-control-strong-stroke-disabled: hsla(0, 0%, 100%, 15.81%);
309
+
310
+ /* Control Stroke on Accent */
311
+ --fds-control-stroke-on-accent-default: hsla(0, 0%, 100%, 8%);
312
+ --fds-control-stroke-on-accent-secondary: hsla(0, 0%, 0%, 14%);
313
+ --fds-control-stroke-on-accent-tertiary: hsla(0, 0%, 0%, 21.69%);
314
+ --fds-control-stroke-on-accent-disabled: hsla(0, 0%, 0%, 20%);
315
+
316
+ /* Control Strong Stroke on Image */
317
+ --fds-control-strong-stroke-on-image-default: hsla(0, 0%, 0%, 42%);
318
+
319
+ /* Card Stroke */
320
+ --fds-card-stroke-default: hsla(0, 0%, 0%, 10%);
321
+ --fds-card-stroke-default-solid: hsl(0, 0%, 11%);
322
+
323
+ /* Surface Stroke */
324
+ --fds-surface-stroke-default: hsla(0, 0%, 46%, 40%);
325
+ --fds-surface-stroke-flyout: hsla(0, 0%, 0%, 20%);
326
+
327
+ /* Divider Stroke */
328
+ --fds-divider-stroke-default: hsla(0, 0%, 100%, 8.37%);
329
+
330
+ /* Focus Stroke */
331
+ --fds-focus-stroke-outer: hsl(0, 0%, 100%);
332
+ --fds-focus-stroke-inner: hsla(0, 0%, 0%, 70%);
333
+
334
+ /* Card Background */
335
+ --fds-card-background-default: hsla(0, 0%, 100%, 5.12%);
336
+ --fds-card-background-secondary: hsla(0, 0%, 100%, 3.26%);
337
+ /* --fds-card-background-tertiary: unset; */
338
+
339
+ /* Smoke Background */
340
+ --fds-smoke-background-default: hsla(0, 0%, 0%, 30%);
341
+
342
+ /* Layer */
343
+ --fds-layer-background-default: hsla(0, 0%, 23%, 30%);
344
+ --fds-layer-background-alt: hsla(0, 0%, 100%, 5.38%);
345
+
346
+ /* Layer on Acrylic */
347
+ --fds-layer-on-acrylic-background-default: hsla(0, 0%, 100%, 3.59%);
348
+ --fds-layer-on-accent-background-default: var(--fds-layer-on-acrylic-background-default);
349
+
350
+ /* Solid Background */
351
+ --fds-solid-background-base: hsl(0, 0%, 13%);
352
+ --fds-solid-background-secondary: hsl(0, 0%, 11%);
353
+ --fds-solid-background-tertiary: hsl(0, 0%, 16%);
354
+ --fds-solid-background-quarternary: hsl(0, 0%, 17%);
355
+
356
+ /* Mica Background */
357
+ /* --fds-mica-background-base: linear-gradient(0deg, rgb(32, 32, 32, 0.8), rgb(32, 32, 32, 0.8)), #202020; */
358
+
359
+ /* Acrylic Background */
360
+ --fds-acrylic-background-default: linear-gradient(
361
+ 0deg,
362
+ rgb(44, 44, 44, 15%),
363
+ rgb(44, 44, 44, 15%)
364
+ ),
365
+ rgba(44, 44, 44, 96%);
366
+ --fds-acrylic-background-base: linear-gradient(
367
+ 0deg,
368
+ rgb(32, 32, 32, 50%),
369
+ rgb(32, 32, 32, 50%)
370
+ ),
371
+ rgba(32, 32, 32, 96%);
372
+
373
+ /* Accent Acrylic Background */
374
+ /* --fds-accent-acrylic-background-default: url("NoiseAsset_256.png"), linear-gradient(0deg, rgb(0, 120, 212, 80%), rgb(0, 120, 212, 80%)), rgb(0, 120, 212, 80%); */
375
+ /* --fds-accent-acrylic-background-base: url("NoiseAsset_256.png"), linear-gradient(0deg, rgba(0, 63, 255, 80%), rgba(0, 63, 255, 80%)), rgb(0, 63, 255, 80%); */
376
+
377
+ /* System */
378
+ --fds-system-attention: hsl(199, 100%, 69%);
379
+ --fds-system-success: hsl(113, 51%, 58%);
380
+ --fds-system-caution: hsl(54, 100%, 49%);
381
+ --fds-system-critical: hsl(354, 100%, 80%);
382
+ --fds-system-neutral: hsla(0, 0%, 100%, 54.42%);
383
+
384
+ /* System Solid */
385
+ --fds-system-solid-neutral: hsl(0, 0%, 62%);
386
+
387
+ /* System Background */
388
+ --fds-system-background-attention: hsla(0, 0%, 100%, 3.26%);
389
+ --fds-system-background-success: hsl(67, 39%, 17%);
390
+ --fds-system-background-caution: hsl(40, 46%, 18%);
391
+ --fds-system-background-critical: hsl(2, 28%, 21%);
392
+
393
+ /* System Background Solid */
394
+ --fds-system-background-solid-attention: hsl(0, 0%, 18%);
395
+ --fds-system-background-solid-neutral: hsl(0, 0%, 62%);
396
+
397
+ /* Borders */
398
+ --fds-control-border-default: var(--fds-control-stroke-secondary)
399
+ var(--fds-control-stroke-default) var(--fds-control-stroke-default)
400
+ var(--fds-control-stroke-default);
401
+
402
+ /* Shadows */
403
+ --fds-card-shadow: 0px 2px 4px hsla(0, 0%, 0%, 0.13);
404
+ --fds-tooltip-shadow: 0px 4px 8px hsla(0, 0%, 0%, 0.26);
405
+ --fds-flyout-shadow: 0px 8px 16px hsla(0, 0%, 0%, 0.14);
406
+ --fds-dialog-shadow: 0px 32px 64px hsla(0, 0%, 0%, 0.37), 0px 2px 21px hsla(0, 0%, 0%, 0.37);
407
+
408
+ /* Shell Shadows */
409
+ --fds-inactive-window-shadow: 0px 16px 32px hsla(0, 0%, 0%, 0.37),
410
+ 0px 2px 10.67px hsla(0, 0%, 0%, 0.37);
411
+ --fds-active-window-shadow: 0px 32px 64px hsla(0, 0%, 0%, 0.56),
412
+ 0px 2px 21px hsla(0, 0%, 0%, 0.55);
413
+ }
414
+ }
@@ -0,0 +1,48 @@
1
+ <script lang="ts">
2
+ import { Navbar } from "$site/lib";
3
+ import { IconButton, Tooltip } from "$lib";
4
+
5
+ import { dev } from "$app/env";
6
+
7
+ import "$lib/theme.css";
8
+
9
+ import News from "@fluentui/svg-icons/icons/news_24_regular.svg?raw";
10
+ import Wrench from "@fluentui/svg-icons/icons/wrench_24_regular.svg?raw";
11
+
12
+ let items = [
13
+ {
14
+ name: "Docs",
15
+ href: "/docs",
16
+ icon: News
17
+ }
18
+ ];
19
+
20
+ if (dev) {
21
+ items.push({
22
+ name: "test",
23
+ href: "/test",
24
+ icon: Wrench
25
+ });
26
+ items = items;
27
+ }
28
+ </script>
29
+
30
+ <Navbar {items}>
31
+ <Tooltip slot="buttons" placement="left" offset={8} text="View GitHub">
32
+ <IconButton href="https://github.com/tropix126/fluent-svelte/" rel="noreferrer noopener">
33
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">
34
+ <path
35
+ fill-rule="evenodd"
36
+ d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"
37
+ />
38
+ </svg>
39
+ </IconButton>
40
+ </Tooltip>
41
+ </Navbar>
42
+ <main>
43
+ <slot />
44
+ </main>
45
+
46
+ <style lang="scss">
47
+ @use "src/site/styles/global";
48
+ </style>
@@ -0,0 +1,122 @@
1
+ <script context="module" lang="ts">
2
+ import type { Load } from "@sveltejs/kit";
3
+ import { docsPages } from "$site/data/docs";
4
+
5
+ export const prerender = true;
6
+
7
+ export const load: Load = async ({ url }) => {
8
+ const path = url.pathname
9
+ .replace(/\/$/gi, "") // remove trailing slash
10
+ .replace("/docs", ""); // remove /docs
11
+
12
+ const currentPage = docsPages.find(p => p.path === path);
13
+
14
+ return {
15
+ props: {
16
+ currentPage
17
+ }
18
+ };
19
+ };
20
+ </script>
21
+
22
+ <script lang="ts">
23
+ import { goto } from "$app/navigation";
24
+
25
+ import { Metadata, TreeView, Toc } from "$site/lib";
26
+ import { docsMap } from "$site/data/docs";
27
+
28
+ import { Button, TextBlock, AutoSuggestBox, ListItem } from "$lib";
29
+
30
+ export let currentPage: DocsMap;
31
+
32
+ let article;
33
+ let searchMatches = [];
34
+ let searchValue = "";
35
+ let searchSelection = 0;
36
+ let searchFlyoutOpen = false;
37
+ let searchItems = docsPages.map(page => page.name);
38
+
39
+ function handleKeyDown({ key }: KeyboardEvent) {
40
+ if (key === "Enter") {
41
+ searchValue = "";
42
+ goto(
43
+ `/docs${
44
+ docsPages.filter(page => searchMatches.some(match => page.name === match))[
45
+ searchSelection
46
+ ].path
47
+ }`
48
+ );
49
+ }
50
+ }
51
+
52
+ function handleSelection(index) {
53
+ searchValue = searchItems[index];
54
+ searchSelection = index;
55
+ searchFlyoutOpen = false;
56
+ }
57
+ </script>
58
+
59
+ <Metadata title="Fluent Svelte - Docs - {currentPage?.name}" description="" />
60
+
61
+ <main class="docs-container">
62
+ <div class="docs-container-inner">
63
+ <aside>
64
+ <div class="docs-search">
65
+ <AutoSuggestBox
66
+ placeholder="Search Docs"
67
+ on:keydown={handleKeyDown}
68
+ bind:open={searchFlyoutOpen}
69
+ bind:value={searchValue}
70
+ bind:selection={searchSelection}
71
+ bind:matches={searchMatches}
72
+ bind:items={searchItems}
73
+ >
74
+ <svelte:fragment slot="item-template" let:matches let:index let:id let:item>
75
+ <ListItem
76
+ on:click={() => handleSelection(index)}
77
+ tabindex={-1}
78
+ selected={searchSelection === index}
79
+ href="/docs{docsPages.filter(page =>
80
+ matches.some(match => page.name === match)
81
+ )[index].path}"
82
+ {id}
83
+ >
84
+ {item}
85
+ <svelte:fragment slot="icon">
86
+ {#if docsPages.filter( page => matches.some(match => page.name === match) )[index].name}
87
+ {@html docsPages.filter(page =>
88
+ matches.some(match => page.name === match)
89
+ )[index].icon}
90
+ {/if}
91
+ </svelte:fragment>
92
+ </ListItem>
93
+ </svelte:fragment>
94
+ </AutoSuggestBox>
95
+ </div>
96
+ <TreeView tree={docsMap} />
97
+ </aside>
98
+
99
+ <article class="markdown-body" bind:this={article}>
100
+ <header>
101
+ <h1 id={currentPage?.name}>{currentPage?.name}</h1>
102
+ <Button
103
+ href="https://github.com/tropix126/fluent-svelte/edit/main/src/routes/docs{currentPage?.path ||
104
+ '/index'}.md"
105
+ rel="noreferrer noopener"
106
+ target="_blank"
107
+ variant="hyperlink">Edit This Page</Button
108
+ >
109
+ </header>
110
+ <slot />
111
+ </article>
112
+
113
+ <aside>
114
+ <TextBlock variant="bodyStrong">On This Page</TextBlock>
115
+ <Toc target={article} />
116
+ </aside>
117
+ </div>
118
+ </main>
119
+
120
+ <style global lang="scss">
121
+ @use "src/site/styles/pages/docs";
122
+ </style>
@@ -0,0 +1,43 @@
1
+ <script lang="ts">
2
+ import { Button, InfoBar } from "$lib";
3
+ import { Showcase, APIDocs } from "$site/lib";
4
+
5
+ import data from "$lib/Button/Button.svelte?sveld&raw";
6
+ </script>
7
+
8
+ A button gives the user a way to trigger an immediate action. Some buttons are specialized for particular tasks, such as navigation, repeated actions, or presenting menus.
9
+
10
+ ```ts
11
+ import { Button } from "fluent-svelte";
12
+ ```
13
+
14
+ <Showcase columns={3} repl="0c6ca42e2c5c4868a7a8c1a1a45759eb">
15
+ <Button variant="standard">Button</Button>
16
+ <Button variant="accent">Button</Button>
17
+ <Button variant="hyperlink">Button</Button>
18
+ <Button variant="standard" disabled>Button</Button>
19
+ <Button variant="accent" disabled>Button</Button>
20
+ <Button variant="hyperlink" disabled>Button</Button>
21
+ </Showcase>
22
+
23
+ ## Usage
24
+
25
+ A button can either be a clickable action or a link. By default, a button will be rendered as a standard HTML `<button>` element. If an `href` property is provided, the button will be converted into an `<a>` tag.
26
+
27
+ ### Styles
28
+
29
+ Buttons come in three possible _variants_ - `standard`, `accent` and `hyperlink`. Variants can be specified using the `variant` property.
30
+
31
+ | Variant | Preview | Usage |
32
+ | ----------- | ----------------------------------------------------- | ---------------------------------------------------------------------------- |
33
+ | `standard` | <Button variant="standard">Standard Button</Button> | Secondary or alternative actions that are not important to the user. |
34
+ | `accent` | <Button variant="accent">Accent Button</Button> | Actions that are important to the user, or are the primary focus a decision. |
35
+ | `hyperlink` | <Button variant="hyperlink">Hyperlink Button</Button> | Low-emphasis, tertiary actions that link to an external resource. |
36
+
37
+ ### Disabled Buttons
38
+
39
+ If the button is not meant to be clicked, you can use the `disabled` property to visually indicate this. If a button is disabled, it will be unclickable and the `href` property will be ignored.
40
+
41
+ ## Component API
42
+
43
+ <APIDocs {data} />