@daffodil/design 0.91.0 → 0.92.3-rc.1

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 (142) hide show
  1. package/accordion/README.md +26 -38
  2. package/accordion/index.d.ts +2 -2
  3. package/article/README.md +66 -46
  4. package/article/index.d.ts +22 -1
  5. package/article/src/article-theme.scss +12 -0
  6. package/breadcrumb/README.md +6 -1
  7. package/breadcrumb/index.d.ts +65 -11
  8. package/breadcrumb/src/breadcrumb-theme.scss +1 -1
  9. package/button/README.md +36 -33
  10. package/button/index.d.ts +26 -5
  11. package/button/src/button/basic/button-theme.scss +4 -2
  12. package/button/src/button/button-base.scss +26 -3
  13. package/button/src/button/icon/icon-theme.scss +10 -6
  14. package/button/src/button/raised/raised-theme.scss +4 -2
  15. package/callout/README.md +15 -27
  16. package/card/README.md +36 -61
  17. package/container/README.md +18 -23
  18. package/fesm2022/daffodil-design-accordion.mjs +13 -13
  19. package/fesm2022/daffodil-design-accordion.mjs.map +1 -1
  20. package/fesm2022/daffodil-design-article.mjs +168 -26
  21. package/fesm2022/daffodil-design-article.mjs.map +1 -1
  22. package/fesm2022/daffodil-design-breadcrumb.mjs +180 -28
  23. package/fesm2022/daffodil-design-breadcrumb.mjs.map +1 -1
  24. package/fesm2022/daffodil-design-button.mjs +83 -42
  25. package/fesm2022/daffodil-design-button.mjs.map +1 -1
  26. package/fesm2022/daffodil-design-callout.mjs +23 -23
  27. package/fesm2022/daffodil-design-callout.mjs.map +1 -1
  28. package/fesm2022/daffodil-design-card.mjs +33 -33
  29. package/fesm2022/daffodil-design-card.mjs.map +1 -1
  30. package/fesm2022/daffodil-design-checkbox.mjs +13 -13
  31. package/fesm2022/daffodil-design-checkbox.mjs.map +1 -1
  32. package/fesm2022/daffodil-design-container.mjs +8 -8
  33. package/fesm2022/daffodil-design-container.mjs.map +1 -1
  34. package/fesm2022/daffodil-design-form-field.mjs +26 -26
  35. package/fesm2022/daffodil-design-form-field.mjs.map +1 -1
  36. package/fesm2022/daffodil-design-form.mjs +9 -9
  37. package/fesm2022/daffodil-design-form.mjs.map +1 -1
  38. package/fesm2022/daffodil-design-hero.mjs +23 -23
  39. package/fesm2022/daffodil-design-hero.mjs.map +1 -1
  40. package/fesm2022/daffodil-design-image.mjs +8 -8
  41. package/fesm2022/daffodil-design-image.mjs.map +1 -1
  42. package/fesm2022/daffodil-design-input.mjs +18 -14
  43. package/fesm2022/daffodil-design-input.mjs.map +1 -1
  44. package/fesm2022/daffodil-design-link-set.mjs +25 -17
  45. package/fesm2022/daffodil-design-link-set.mjs.map +1 -1
  46. package/fesm2022/daffodil-design-list.mjs +16 -16
  47. package/fesm2022/daffodil-design-list.mjs.map +1 -1
  48. package/fesm2022/daffodil-design-loading-icon.mjs +8 -8
  49. package/fesm2022/daffodil-design-loading-icon.mjs.map +1 -1
  50. package/fesm2022/daffodil-design-media-gallery.mjs +13 -13
  51. package/fesm2022/daffodil-design-media-gallery.mjs.map +1 -1
  52. package/fesm2022/daffodil-design-menu.mjs +223 -60
  53. package/fesm2022/daffodil-design-menu.mjs.map +1 -1
  54. package/fesm2022/daffodil-design-modal.mjs +33 -29
  55. package/fesm2022/daffodil-design-modal.mjs.map +1 -1
  56. package/fesm2022/daffodil-design-native-select.mjs +47 -41
  57. package/fesm2022/daffodil-design-native-select.mjs.map +1 -1
  58. package/fesm2022/daffodil-design-navbar.mjs +25 -21
  59. package/fesm2022/daffodil-design-navbar.mjs.map +1 -1
  60. package/fesm2022/daffodil-design-notification.mjs +16 -16
  61. package/fesm2022/daffodil-design-notification.mjs.map +1 -1
  62. package/fesm2022/daffodil-design-paginator.mjs +7 -7
  63. package/fesm2022/daffodil-design-paginator.mjs.map +1 -1
  64. package/fesm2022/daffodil-design-progress-bar.mjs +10 -10
  65. package/fesm2022/daffodil-design-progress-bar.mjs.map +1 -1
  66. package/fesm2022/daffodil-design-quantity-field.mjs +17 -14
  67. package/fesm2022/daffodil-design-quantity-field.mjs.map +1 -1
  68. package/fesm2022/daffodil-design-radio.mjs +16 -16
  69. package/fesm2022/daffodil-design-radio.mjs.map +1 -1
  70. package/fesm2022/daffodil-design-select.mjs +6 -6
  71. package/fesm2022/daffodil-design-select.mjs.map +1 -1
  72. package/fesm2022/daffodil-design-sidebar.mjs +25 -25
  73. package/fesm2022/daffodil-design-sidebar.mjs.map +1 -1
  74. package/fesm2022/daffodil-design-spinner.mjs +99 -0
  75. package/fesm2022/daffodil-design-spinner.mjs.map +1 -0
  76. package/fesm2022/daffodil-design-switch.mjs +3 -3
  77. package/fesm2022/daffodil-design-switch.mjs.map +1 -1
  78. package/fesm2022/daffodil-design-tabs.mjs +15 -15
  79. package/fesm2022/daffodil-design-tabs.mjs.map +1 -1
  80. package/fesm2022/daffodil-design-tag.mjs +7 -7
  81. package/fesm2022/daffodil-design-tag.mjs.map +1 -1
  82. package/fesm2022/daffodil-design-text-snippet.mjs +6 -8
  83. package/fesm2022/daffodil-design-text-snippet.mjs.map +1 -1
  84. package/fesm2022/daffodil-design-textarea.mjs +6 -3
  85. package/fesm2022/daffodil-design-textarea.mjs.map +1 -1
  86. package/fesm2022/daffodil-design-toast.mjs +23 -25
  87. package/fesm2022/daffodil-design-toast.mjs.map +1 -1
  88. package/fesm2022/daffodil-design-tree.mjs +152 -103
  89. package/fesm2022/daffodil-design-tree.mjs.map +1 -1
  90. package/fesm2022/daffodil-design-youtube-player.mjs +6 -6
  91. package/fesm2022/daffodil-design-youtube-player.mjs.map +1 -1
  92. package/fesm2022/daffodil-design.mjs +385 -326
  93. package/fesm2022/daffodil-design.mjs.map +1 -1
  94. package/form-field/README.md +50 -85
  95. package/form-field/index.d.ts +11 -9
  96. package/hero/README.md +5 -5
  97. package/image/README.md +2 -2
  98. package/index.d.ts +184 -270
  99. package/input/README.md +4 -4
  100. package/input/index.d.ts +4 -3
  101. package/link-set/index.d.ts +9 -1
  102. package/list/README.md +2 -2
  103. package/loading-icon/README.md +1 -1
  104. package/loading-icon/index.d.ts +1 -1
  105. package/media-gallery/README.md +3 -3
  106. package/menu/README.md +107 -10
  107. package/menu/index.d.ts +143 -11
  108. package/modal/README.md +1 -1
  109. package/modal/index.d.ts +23 -15
  110. package/native-select/README.md +4 -4
  111. package/native-select/index.d.ts +8 -7
  112. package/navbar/README.md +23 -17
  113. package/navbar/index.d.ts +12 -2
  114. package/navbar/src/navbar-theme.scss +4 -46
  115. package/notification/README.md +4 -4
  116. package/package.json +1 -1
  117. package/paginator/README.md +42 -6
  118. package/paginator/index.d.ts +4 -2
  119. package/progress-bar/README.md +3 -3
  120. package/quantity-field/README.md +4 -4
  121. package/quantity-field/index.d.ts +4 -1
  122. package/radio/README.md +1 -1
  123. package/scss/theme.scss +7 -1
  124. package/scss/theming/_color-palettes.scss +0 -6
  125. package/select/README.md +4 -4
  126. package/sidebar/README.md +6 -6
  127. package/spinner/README.md +57 -0
  128. package/spinner/index.d.ts +53 -0
  129. package/spinner/src/spinner-theme.scss +62 -0
  130. package/switch/README.md +4 -4
  131. package/switch/index.d.ts +2 -2
  132. package/tabs/README.md +1 -1
  133. package/tabs/index.d.ts +2 -2
  134. package/tag/README.md +24 -30
  135. package/tag/index.d.ts +1 -1
  136. package/text-snippet/README.md +1 -1
  137. package/text-snippet/src/text-snippet-theme.scss +12 -0
  138. package/textarea/README.md +4 -4
  139. package/textarea/index.d.ts +4 -4
  140. package/toast/README.md +4 -4
  141. package/tree/README.md +39 -22
  142. package/tree/index.d.ts +57 -90
package/navbar/README.md CHANGED
@@ -1,11 +1,10 @@
1
1
  # Navbar
2
- Navbar is a flexible and extensible, horizontally stacked component intended for major blocks of navigation links.
2
+ Navbar is a flexible and extensible component that provides a container for navigation elements.
3
3
 
4
4
  ## Overview
5
5
  The navbar contains minimal layout styles, allowing the content within it to be fluid and customizable. It utilizes the `flex` display and is customizable with all the flexbox properties. It's required to be used with the native HTML `<nav>` element to ensure an accessible experience by default.
6
6
 
7
- ## Basic Navbar
8
- <design-land-example-viewer-container example="basic-navbar"></design-land-example-viewer-container>
7
+ <daff-docs-example-viewer example="basic-navbar"></daff-docs-example-viewer>
9
8
 
10
9
  ## Usage
11
10
 
@@ -49,34 +48,41 @@ export class CustomComponentModule { }
49
48
 
50
49
  > This method is deprecated. It's recommended to update all custom components to standalone.
51
50
 
52
- ## Theming
53
- The default background color of a navbar is light gray, but it can be updated to one of the supported colors by using the `color` property.
51
+ ## Features
54
52
 
55
- Supported colors: `primary | secondary | tertiary | black | white | theme | theme-contrast`
53
+ ### Elevation
54
+ Use the `elevated` property to add a shadow effect to the navbar.
56
55
 
57
- <design-land-example-viewer-container example="navbar-theming"></design-land-example-viewer-container>
56
+ <daff-docs-example-viewer example="elevated-navbar"></daff-docs-example-viewer>
58
57
 
59
- ## Contained Navbar
60
- A navbar can be contained to a specific width by using the [Container](/libs/design/container/README.md) component. The layout styles set on the navbar will automatically be passed down to the container.
58
+ ### Blurred background
59
+ Use the `blurred` property to add a semi-transparent background effect to the navbar, creating a frosted glass appearance.
61
60
 
62
- <design-land-example-viewer-container example="contained-navbar"></design-land-example-viewer-container>
61
+ <daff-docs-example-viewer example="blurred-navbar"></daff-docs-example-viewer>
63
62
 
64
- ## Raised Navbar
65
- The raised property adds elevation to a navbar. To enable it, set the `raised` property on `<nav daff-navbar>`.
63
+ Both `elevated` and `blurred` can be combined for a layered effect:
66
64
 
67
- <design-land-example-viewer-container example="raised-navbar"></design-land-example-viewer-container>
65
+ ```html
66
+ <nav daff-navbar [elevated]="true" [blurred]="true">
67
+ <!-- navigation items -->
68
+ </nav>
69
+ ```
70
+
71
+ ### Contained navbar
72
+ A navbar can be contained to a specific width by using the [container](/libs/design/container/README.md) component. The layout styles set on the navbar will automatically be passed down to the container.
73
+
74
+ <daff-docs-example-viewer example="contained-navbar"></daff-docs-example-viewer>
68
75
 
69
76
  ## Accessibility
70
- Daffodil enforces the usage of the native `<nav>` HTML element to ensure an accessible experience by default. If more than one navbar is used, every navbar should be given a meaningful label by using the `aria-labelledby` attribute.
77
+ Daffodil enforces the usage of the native `<nav>` HTML element to ensure an accessible experience by default. If more than one navbar is used, every navbar should be given a meaningful label by using the `aria-label` attribute.
71
78
 
72
- ### Example
73
79
  ```html
74
- <nav daff-navbar aria-labelledby="main-navigation">
80
+ <nav daff-navbar aria-label="main navigation">
75
81
  <!-- navigation items -->
76
82
  </nav>
77
83
 
78
84
  <footer>
79
- <nav daff-navbar aria-labelledby="footer-navigation">
85
+ <nav daff-navbar aria-label="footer navigation">
80
86
  <!-- navigation items -->
81
87
  </nav>
82
88
  </footer>
package/navbar/index.d.ts CHANGED
@@ -2,10 +2,20 @@ import * as i0 from '@angular/core';
2
2
  import * as i1$1 from '@angular/common';
3
3
  import * as i1 from '@daffodil/design';
4
4
 
5
+ /**
6
+ * Navbar is a flexible and extensible component that provides a container for navigation elements.
7
+ */
5
8
  declare class DaffNavbarComponent {
6
- raised: boolean;
9
+ /**
10
+ * Whether the navbar should have an elevated appearance with a shadow effect.
11
+ */
12
+ elevated: i0.InputSignal<boolean>;
13
+ /**
14
+ * Whether the navbar should have a blurred background effect.
15
+ */
16
+ blurred: i0.InputSignal<boolean>;
7
17
  static ɵfac: i0.ɵɵFactoryDeclaration<DaffNavbarComponent, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<DaffNavbarComponent, "nav[daff-navbar]", never, { "raised": { "alias": "raised"; "required": false; }; }, {}, never, ["*"], true, [{ directive: typeof i1.DaffManageContainerLayoutDirective; inputs: {}; outputs: {}; }, { directive: typeof i1.DaffColorableDirective; inputs: { "color": "color"; }; outputs: {}; }]>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<DaffNavbarComponent, "nav[daff-navbar]", never, { "elevated": { "alias": "elevated"; "required": false; "isSignal": true; }; "blurred": { "alias": "blurred"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.DaffManageContainerLayoutDirective; inputs: {}; outputs: {}; }]>;
9
19
  }
10
20
 
11
21
  /**
@@ -1,61 +1,19 @@
1
1
  @use '../../scss/theming' as *;
2
2
 
3
- @mixin daff-navbar-theme-variant($color) {
4
- background: $color;
5
- color: daff-text-contrast($color);
6
- }
7
-
8
3
  // stylelint-disable selector-class-pattern
9
4
  @mixin daff-navbar-theme($theme) {
10
- $primary: daff-get-palette($theme, primary);
11
- $secondary: daff-get-palette($theme, secondary);
12
- $tertiary: daff-get-palette($theme, tertiary);
13
- $neutral: daff-get-palette($theme, neutral);
14
5
  $base: daff-get-base-color($theme, base);
15
- $base-contrast: daff-get-base-color($theme, base-contrast);
16
- $white: daff-get-base-color($theme, 'white');
17
6
  $black: daff-get-base-color($theme, 'black');
18
- $mode: daff-get-theme-mode($theme);
19
7
 
20
8
  .daff-navbar {
21
- @include light($mode) {
22
- @include daff-navbar-theme-variant(daff-color($neutral, 10));
23
- }
9
+ background: $base;
24
10
 
25
- @include dark($mode) {
26
- @include daff-navbar-theme-variant(daff-color($neutral, 90));
11
+ &.blurred {
12
+ background: rgba($base, 0.5);
27
13
  }
28
14
 
29
- &.raised {
15
+ &.elevated {
30
16
  box-shadow: 0 4px 10px rgba($black, 0.08);
31
17
  }
32
-
33
- &.daff-primary {
34
- @include daff-navbar-theme-variant(daff-color($primary));
35
- }
36
-
37
- &.daff-secondary {
38
- @include daff-navbar-theme-variant(daff-color($secondary));
39
- }
40
-
41
- &.daff-tertiary {
42
- @include daff-navbar-theme-variant(daff-color($tertiary));
43
- }
44
-
45
- &.daff-black {
46
- @include daff-navbar-theme-variant($black);
47
- }
48
-
49
- &.daff-white {
50
- @include daff-navbar-theme-variant($white);
51
- }
52
-
53
- &.daff-theme {
54
- @include daff-navbar-theme-variant($base);
55
- }
56
-
57
- &.daff-theme-contrast {
58
- @include daff-navbar-theme-variant($base-contrast);
59
- }
60
18
  }
61
19
  }
@@ -6,7 +6,7 @@ Notifications display short messages that are closely associated with nearby con
6
6
 
7
7
  Notifications should not be used to display app-level alerts. For global messages, use the [Toast](/libs/design/toast/README.md) component.
8
8
 
9
- <design-land-example-viewer-container example="default-notification"></design-land-example-viewer-container>
9
+ <daff-docs-example-viewer example="default-notification"></daff-docs-example-viewer>
10
10
 
11
11
  ## Best practices
12
12
 
@@ -93,19 +93,19 @@ Use the `[daffPrefix]` element to add a decorative icon that provides a quick vi
93
93
  ### Status
94
94
  Use the `status` property to visually differentiate between notification types such as `info`, `warn`, `critical`, or `success`.
95
95
 
96
- <design-land-example-viewer-container example="notification-status"></design-land-example-viewer-container>
96
+ <daff-docs-example-viewer example="notification-status"></daff-docs-example-viewer>
97
97
 
98
98
  ### Orientation
99
99
  Use the `orientation` property to stack notification content either `vertical` (default) or `horizontal`.
100
100
 
101
- <design-land-example-viewer-container example="notification-orientations"></design-land-example-viewer-container>
101
+ <daff-docs-example-viewer example="notification-orientations"></daff-docs-example-viewer>
102
102
 
103
103
  ### Dismissing a notification
104
104
  Notifications are persistent by default. To display a close button, set the `dismissible` property to `true`.
105
105
 
106
106
  > Avoid making critical notifications dismissible to ensure users can read or interact with the necessary information.
107
107
 
108
- <design-land-example-viewer-container example="dismissible-notification"></design-land-example-viewer-container>
108
+ <daff-docs-example-viewer example="dismissible-notification"></daff-docs-example-viewer>
109
109
 
110
110
  ## Accessibility
111
111
  **Live region roles:**
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@daffodil/design","nx":{"targets":{"build":{"outputs":["{workspaceRoot}/dist/design"]}}},"version":"0.91.0","author":"Graycore LLC","license":"MIT","bugs":{"url":"https://github.com/graycoreio/daffodil/issues"},"homepage":"https://github.com/graycoreio/daffodil","description":"A consistent, sane api driver that works with different ecommerce systems.","repository":{"type":"git","url":"https://github.com/graycoreio/daffodil"},"peerDependencies":{"@angular/animations":"^20.0.0","@angular/common":"^20.0.0","@angular/core":"^20.0.0","@angular/forms":"^20.0.0","@angular/cdk":"^20.0.0","@daffodil/core":"0.91.0","@fortawesome/angular-fontawesome":"^3.0.0","@fortawesome/fontawesome-svg-core":"^7.0.1","@fortawesome/free-solid-svg-icons":"^7.0.1","@fortawesome/free-brands-svg-icons":"^7.0.1","@fortawesome/free-regular-svg-icons":"^7.0.1","modern-normalize":"^3.0.1","rxjs":"^7.0.0"},"optionalDependencies":{"@faker-js/faker":"^9.8.0"},"exports":{"./scss/global":{"sass":"./scss/global.scss"},"./scss/theme":{"sass":"./scss/theme.scss"},"./scss/utilities":{"sass":"./scss/utilities.scss"},"./scss/typography":{"sass":"./scss/typography/_index.scss"},"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","default":"./fesm2022/daffodil-design.mjs"},"./article":{"types":"./article/index.d.ts","default":"./fesm2022/daffodil-design-article.mjs"},"./accordion":{"types":"./accordion/index.d.ts","default":"./fesm2022/daffodil-design-accordion.mjs"},"./breadcrumb":{"types":"./breadcrumb/index.d.ts","default":"./fesm2022/daffodil-design-breadcrumb.mjs"},"./button":{"types":"./button/index.d.ts","default":"./fesm2022/daffodil-design-button.mjs"},"./callout":{"types":"./callout/index.d.ts","default":"./fesm2022/daffodil-design-callout.mjs"},"./card":{"types":"./card/index.d.ts","default":"./fesm2022/daffodil-design-card.mjs"},"./checkbox":{"types":"./checkbox/index.d.ts","default":"./fesm2022/daffodil-design-checkbox.mjs"},"./container":{"types":"./container/index.d.ts","default":"./fesm2022/daffodil-design-container.mjs"},"./form":{"types":"./form/index.d.ts","default":"./fesm2022/daffodil-design-form.mjs"},"./form-field":{"types":"./form-field/index.d.ts","default":"./fesm2022/daffodil-design-form-field.mjs"},"./hero":{"types":"./hero/index.d.ts","default":"./fesm2022/daffodil-design-hero.mjs"},"./image":{"types":"./image/index.d.ts","default":"./fesm2022/daffodil-design-image.mjs"},"./input":{"types":"./input/index.d.ts","default":"./fesm2022/daffodil-design-input.mjs"},"./link-set":{"types":"./link-set/index.d.ts","default":"./fesm2022/daffodil-design-link-set.mjs"},"./list":{"types":"./list/index.d.ts","default":"./fesm2022/daffodil-design-list.mjs"},"./loading-icon":{"types":"./loading-icon/index.d.ts","default":"./fesm2022/daffodil-design-loading-icon.mjs"},"./media-gallery":{"types":"./media-gallery/index.d.ts","default":"./fesm2022/daffodil-design-media-gallery.mjs"},"./menu":{"types":"./menu/index.d.ts","default":"./fesm2022/daffodil-design-menu.mjs"},"./modal":{"types":"./modal/index.d.ts","default":"./fesm2022/daffodil-design-modal.mjs"},"./native-select":{"types":"./native-select/index.d.ts","default":"./fesm2022/daffodil-design-native-select.mjs"},"./navbar":{"types":"./navbar/index.d.ts","default":"./fesm2022/daffodil-design-navbar.mjs"},"./notification":{"types":"./notification/index.d.ts","default":"./fesm2022/daffodil-design-notification.mjs"},"./paginator":{"types":"./paginator/index.d.ts","default":"./fesm2022/daffodil-design-paginator.mjs"},"./progress-bar":{"types":"./progress-bar/index.d.ts","default":"./fesm2022/daffodil-design-progress-bar.mjs"},"./quantity-field":{"types":"./quantity-field/index.d.ts","default":"./fesm2022/daffodil-design-quantity-field.mjs"},"./radio":{"types":"./radio/index.d.ts","default":"./fesm2022/daffodil-design-radio.mjs"},"./select":{"types":"./select/index.d.ts","default":"./fesm2022/daffodil-design-select.mjs"},"./sidebar":{"types":"./sidebar/index.d.ts","default":"./fesm2022/daffodil-design-sidebar.mjs"},"./switch":{"types":"./switch/index.d.ts","default":"./fesm2022/daffodil-design-switch.mjs"},"./tabs":{"types":"./tabs/index.d.ts","default":"./fesm2022/daffodil-design-tabs.mjs"},"./tag":{"types":"./tag/index.d.ts","default":"./fesm2022/daffodil-design-tag.mjs"},"./text-snippet":{"types":"./text-snippet/index.d.ts","default":"./fesm2022/daffodil-design-text-snippet.mjs"},"./textarea":{"types":"./textarea/index.d.ts","default":"./fesm2022/daffodil-design-textarea.mjs"},"./toast":{"types":"./toast/index.d.ts","default":"./fesm2022/daffodil-design-toast.mjs"},"./tree":{"types":"./tree/index.d.ts","default":"./fesm2022/daffodil-design-tree.mjs"},"./youtube-player":{"types":"./youtube-player/index.d.ts","default":"./fesm2022/daffodil-design-youtube-player.mjs"}},"module":"fesm2022/daffodil-design.mjs","typings":"index.d.ts","sideEffects":false,"dependencies":{"tslib":"^2.6.2"}}
1
+ {"name":"@daffodil/design","nx":{"targets":{"build":{"outputs":["{workspaceRoot}/dist/design"]}}},"version":"0.92.3-rc.1","author":"Graycore LLC","license":"MIT","bugs":{"url":"https://github.com/graycoreio/daffodil/issues"},"homepage":"https://github.com/graycoreio/daffodil","description":"An Angular component library built to support ecommerce applications with accessible UI components and theming. Part of the Daffodil ecommerce framework.","repository":{"type":"git","url":"https://github.com/graycoreio/daffodil"},"peerDependencies":{"@angular/animations":"^20.0.0","@angular/common":"^20.0.0","@angular/core":"^20.0.0","@angular/forms":"^20.0.0","@angular/cdk":"^20.0.0","@daffodil/core":"0.92.3-rc.1","@fortawesome/angular-fontawesome":"^3.0.0","@fortawesome/fontawesome-svg-core":"^7.0.1","@fortawesome/free-solid-svg-icons":"^7.0.1","@fortawesome/free-brands-svg-icons":"^7.0.1","@fortawesome/free-regular-svg-icons":"^7.0.1","modern-normalize":"^3.0.1","rxjs":"^7.0.0"},"optionalDependencies":{"@faker-js/faker":"^10.3.0"},"exports":{"./scss/global":{"sass":"./scss/global.scss"},"./scss/theme":{"sass":"./scss/theme.scss"},"./scss/utilities":{"sass":"./scss/utilities.scss"},"./scss/typography":{"sass":"./scss/typography/_index.scss"},"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","default":"./fesm2022/daffodil-design.mjs"},"./accordion":{"types":"./accordion/index.d.ts","default":"./fesm2022/daffodil-design-accordion.mjs"},"./breadcrumb":{"types":"./breadcrumb/index.d.ts","default":"./fesm2022/daffodil-design-breadcrumb.mjs"},"./article":{"types":"./article/index.d.ts","default":"./fesm2022/daffodil-design-article.mjs"},"./button":{"types":"./button/index.d.ts","default":"./fesm2022/daffodil-design-button.mjs"},"./callout":{"types":"./callout/index.d.ts","default":"./fesm2022/daffodil-design-callout.mjs"},"./card":{"types":"./card/index.d.ts","default":"./fesm2022/daffodil-design-card.mjs"},"./checkbox":{"types":"./checkbox/index.d.ts","default":"./fesm2022/daffodil-design-checkbox.mjs"},"./container":{"types":"./container/index.d.ts","default":"./fesm2022/daffodil-design-container.mjs"},"./form":{"types":"./form/index.d.ts","default":"./fesm2022/daffodil-design-form.mjs"},"./form-field":{"types":"./form-field/index.d.ts","default":"./fesm2022/daffodil-design-form-field.mjs"},"./hero":{"types":"./hero/index.d.ts","default":"./fesm2022/daffodil-design-hero.mjs"},"./image":{"types":"./image/index.d.ts","default":"./fesm2022/daffodil-design-image.mjs"},"./input":{"types":"./input/index.d.ts","default":"./fesm2022/daffodil-design-input.mjs"},"./link-set":{"types":"./link-set/index.d.ts","default":"./fesm2022/daffodil-design-link-set.mjs"},"./list":{"types":"./list/index.d.ts","default":"./fesm2022/daffodil-design-list.mjs"},"./loading-icon":{"types":"./loading-icon/index.d.ts","default":"./fesm2022/daffodil-design-loading-icon.mjs"},"./media-gallery":{"types":"./media-gallery/index.d.ts","default":"./fesm2022/daffodil-design-media-gallery.mjs"},"./menu":{"types":"./menu/index.d.ts","default":"./fesm2022/daffodil-design-menu.mjs"},"./modal":{"types":"./modal/index.d.ts","default":"./fesm2022/daffodil-design-modal.mjs"},"./native-select":{"types":"./native-select/index.d.ts","default":"./fesm2022/daffodil-design-native-select.mjs"},"./navbar":{"types":"./navbar/index.d.ts","default":"./fesm2022/daffodil-design-navbar.mjs"},"./notification":{"types":"./notification/index.d.ts","default":"./fesm2022/daffodil-design-notification.mjs"},"./paginator":{"types":"./paginator/index.d.ts","default":"./fesm2022/daffodil-design-paginator.mjs"},"./progress-bar":{"types":"./progress-bar/index.d.ts","default":"./fesm2022/daffodil-design-progress-bar.mjs"},"./quantity-field":{"types":"./quantity-field/index.d.ts","default":"./fesm2022/daffodil-design-quantity-field.mjs"},"./radio":{"types":"./radio/index.d.ts","default":"./fesm2022/daffodil-design-radio.mjs"},"./select":{"types":"./select/index.d.ts","default":"./fesm2022/daffodil-design-select.mjs"},"./sidebar":{"types":"./sidebar/index.d.ts","default":"./fesm2022/daffodil-design-sidebar.mjs"},"./spinner":{"types":"./spinner/index.d.ts","default":"./fesm2022/daffodil-design-spinner.mjs"},"./switch":{"types":"./switch/index.d.ts","default":"./fesm2022/daffodil-design-switch.mjs"},"./tabs":{"types":"./tabs/index.d.ts","default":"./fesm2022/daffodil-design-tabs.mjs"},"./tag":{"types":"./tag/index.d.ts","default":"./fesm2022/daffodil-design-tag.mjs"},"./text-snippet":{"types":"./text-snippet/index.d.ts","default":"./fesm2022/daffodil-design-text-snippet.mjs"},"./textarea":{"types":"./textarea/index.d.ts","default":"./fesm2022/daffodil-design-textarea.mjs"},"./toast":{"types":"./toast/index.d.ts","default":"./fesm2022/daffodil-design-toast.mjs"},"./tree":{"types":"./tree/index.d.ts","default":"./fesm2022/daffodil-design-tree.mjs"},"./youtube-player":{"types":"./youtube-player/index.d.ts","default":"./fesm2022/daffodil-design-youtube-player.mjs"}},"module":"fesm2022/daffodil-design.mjs","typings":"index.d.ts","sideEffects":false,"dependencies":{"tslib":"^2.6.2"}}
@@ -1,8 +1,20 @@
1
1
  # Paginator
2
- Paginator is used to break up large amounts of content into multiple pages, enabling users to easily navigate between pages of content.
2
+ Pagination organizes and divides large amounts of content on separate pages and gives the user control over how much content they want to view on each page.
3
3
 
4
- ## Default Paginator
5
- <design-land-example-viewer-container example="basic-paginator"></design-land-example-viewer-container>
4
+ ## Overview
5
+ Pagination can be used with a data table or on a page. It automatically truncates page numbers when there are many pages, using ellipses to indicate skipped pages.
6
+
7
+ <daff-docs-example-viewer example="basic-paginator"></daff-docs-example-viewer>
8
+
9
+ ## Best practices
10
+
11
+ **When to use**
12
+ - Displaying large datasets or lists that would be overwhelming on a single page
13
+ - Navigating through search results or product listings
14
+ - Breaking up long-form content into manageable sections
15
+
16
+ **When not to use**
17
+ - Do not use it to display linear journeys, for example, in a form progression. Instead, use the [progress bar](/libs/design/progress-bar/README.md) or [button](/libs/design/button/README.md) components to navigate forward and backward.
6
18
 
7
19
  ## Usage
8
20
 
@@ -44,10 +56,34 @@ import { CustomComponent } from './custom.component';
44
56
  export class CustomComponentModule { }
45
57
  ```
46
58
 
59
+ > **Warning**
60
+ >
47
61
  > This method is deprecated. It's recommended to update all custom components to standalone.
48
62
 
49
- ## Truncation
50
- An ellipsis is used to truncate pages when the number of pages exceed the maximum display limit. Double truncation appears when the current page is separated by more than three pages from both the first and last page.
63
+ ## Basic structure
64
+ ```html
65
+ <daff-paginator aria-label="Search results page"></daff-paginator>
66
+ ```
67
+
68
+ ## Features
69
+
70
+ ### Truncation
71
+ Ellipses are used to truncate page numbers when the total number of pages exceeds the maximum display limit. Double truncation appears when the current page is separated by more than three pages from both the first and last page.
51
72
 
52
73
  ## Accessibility
53
- Use `aria-label` or `aria-labelledby` to give a meaningful label to `daff-paginator` that describes the content controlled by the paginator. If more than one paginator component is used on a page, each will need a unique `aria-label`.
74
+
75
+ ### Daffodil provides
76
+ `role="navigation"` on the paginator element to ensure proper semantic structure.
77
+
78
+ ### Developer responsibilities
79
+ Use `aria-label` or `aria-labelledby` to give a meaningful label to `<daff-paginator>` that describes the content controlled by the paginator. If more than one paginator is used on a page, each will need a unique `aria-label`.
80
+
81
+ ```html
82
+ <daff-paginator aria-label="Product list paginator">
83
+ <!-- paginator content -->
84
+ </daff-paginator>
85
+
86
+ <daff-paginator aria-label="Search results paginator">
87
+ <!-- paginator content -->
88
+ </daff-paginator>
89
+ ```
@@ -16,8 +16,10 @@ declare class DaffPaginatorComponent implements OnChanges {
16
16
  */
17
17
  faChevronLeft: _fortawesome_fontawesome_common_types.IconDefinition;
18
18
  /**
19
- * The total number of pages the paginator tracks. This number can change dynamically, but the end user is responsible for keeping numberOfPages
20
- * and currentPage in sync. For example, if the numberOfPages is dynamically changed to a value less than the currentPage, the paginator will break.
19
+ * The total number of pages the paginator tracks. This number can change dynamically, but the end user is responsible for keeping `numberOfPages`
20
+ * and `currentPage` in sync.
21
+ *
22
+ * For example, if the `numberOfPages` is dynamically changed to a value less than the `currentPage`, the paginator will break.
21
23
  */
22
24
  numberOfPages: number;
23
25
  /**
@@ -4,7 +4,7 @@ A progress bar provides visual feedback about the duration or progress of a task
4
4
  ## Overview
5
5
  Progress bars help users understand the status of ongoing processes or tasks. They can display either determinate progress (when the percentage is known) or indeterminate progress (when the percentage is unknown or cannot be calculated).
6
6
 
7
- <design-land-example-viewer-container example="progress-bar-default"></design-land-example-viewer-container>
7
+ <daff-docs-example-viewer example="progress-bar-default"></daff-docs-example-viewer>
8
8
 
9
9
  ## Best practices
10
10
 
@@ -81,7 +81,7 @@ Use determinate progress bars when the percentage of completion is known. This i
81
81
  ### Indeterminate
82
82
  Use indeterminate progress bars when when the percentage of completion is unknown or cannot be calculated. Set the `indeterminate` property to `true`:
83
83
 
84
- <design-land-example-viewer-container example="progress-bar-indeterminate"></design-land-example-viewer-container>
84
+ <daff-docs-example-viewer example="progress-bar-indeterminate"></daff-docs-example-viewer>
85
85
 
86
86
  ## Features
87
87
 
@@ -90,7 +90,7 @@ The default color is `primary`. Use the `color` property to change a progress ba
90
90
 
91
91
  > `theme`, `white`, and `black` should be used with caution to ensure that there is sufficient contrast.
92
92
 
93
- <design-land-example-viewer-container example="progress-bar-themes"></design-land-example-viewer-container>
93
+ <daff-docs-example-viewer example="progress-bar-themes"></daff-docs-example-viewer>
94
94
 
95
95
  ## Accessibility
96
96
  Progress bar implements the ARIA `role="progressbar"` pattern.
@@ -4,7 +4,7 @@ Quantity field is a form control element that switches between a native select a
4
4
  ## Overview
5
5
  Quantity field is intended for use with cart items and product quantities. The maximum number accepted in a quantity select is configurable and set to 10 by default. It will switch to a quantity input if 10+ is selected.
6
6
 
7
- <design-land-example-viewer-container example="basic-quantity-field"></design-land-example-viewer-container>
7
+ <daff-docs-example-viewer example="basic-quantity-field"></daff-docs-example-viewer>
8
8
 
9
9
  ## Usage
10
10
 
@@ -52,12 +52,12 @@ export class CustomComponentModule { }
52
52
  The default allowed range of numbers is 1 to 500. This can be changed by passing in the desired min and max values as inputs. Note that this does not validate the actual input. It merely informs the select which options it should generate and sets the input's min and max attributes. See [input#min](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number#min) and [input#max](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number#max) for more information.
53
53
 
54
54
  ## Disabled quantity field
55
- <design-land-example-viewer-container example="disabled-quantity-field"></design-land-example-viewer-container>
55
+ <daff-docs-example-viewer example="disabled-quantity-field"></daff-docs-example-viewer>
56
56
 
57
57
  ## Custom Select Max Value (15)
58
58
  The maximum value at which the field will switch to using an input is configurable.
59
- <design-land-example-viewer-container example="select-max-quantity-field"></design-land-example-viewer-container>
59
+ <daff-docs-example-viewer example="select-max-quantity-field"></daff-docs-example-viewer>
60
60
 
61
61
  ## Custom Range Limits (5 - 50)
62
62
  Custom range limits is the absolute minimum and maximum values can be specified.
63
- <design-land-example-viewer-container example="custom-range-quantity-field"></design-land-example-viewer-container>
63
+ <daff-docs-example-viewer example="custom-range-quantity-field"></daff-docs-example-viewer>
@@ -96,6 +96,9 @@ declare class DaffQuantitySelectComponent {
96
96
  static ɵcmp: i0.ɵɵComponentDeclaration<DaffQuantitySelectComponent, "daff-quantity-select", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "extendable": { "alias": "extendable"; "required": false; }; }, {}, never, never, true, never>;
97
97
  }
98
98
 
99
+ /**
100
+ * @deprecated in favor of DaffSfQuantityFieldComponent. Deprecated in version 0.92.0. Will be removed in version 0.95.0.
101
+ */
99
102
  declare class DaffQuantityFieldComponent extends DaffFormFieldControl<number> implements ControlValueAccessor, DaffFormFieldControl<number> {
100
103
  ngControl: NgControl;
101
104
  private cd;
@@ -157,7 +160,7 @@ declare class DaffQuantityFieldComponent extends DaffFormFieldControl<number> im
157
160
  }
158
161
 
159
162
  /**
160
- * @deprecated in favor of standalone components. Deprecated in version 0.84.0. Will be removed in version 1.0.0.
163
+ * @deprecated in favor of DaffSfQuantityFieldComponent. Deprecated in version 0.92.0. Will be removed in version 0.95.0.
161
164
  */
162
165
  declare class DaffQuantityFieldModule {
163
166
  static ɵfac: i0.ɵɵFactoryDeclaration<DaffQuantityFieldModule, never>;
package/radio/README.md CHANGED
@@ -4,7 +4,7 @@ Radio is used to select a single value from a selection of values.
4
4
  ## Overview
5
5
  It can be hooked into Angular's `FormControl` to accomodate custom functionality. The `DaffRadioSetComponent` serves as a wrapper around a logical group of radios to provide styling.
6
6
 
7
- <design-land-example-viewer-container example="basic-radio"></design-land-example-viewer-container>
7
+ <daff-docs-example-viewer example="basic-radio"></daff-docs-example-viewer>
8
8
 
9
9
  ## Usage
10
10
 
package/scss/theme.scss CHANGED
@@ -46,10 +46,12 @@
46
46
  @use '../paginator/src/paginator-theme' as paginator;
47
47
  @use '../select/src/select-theme' as select;
48
48
  @use '../sidebar/src/sidebar-theme' as sidebar;
49
+ @use '../spinner/src/spinner-theme' as spinner;
49
50
  @use '../switch/src/switch-theme' as switch;
50
51
  @use '../progress-bar/src/progress-bar-theme' as progress-bar;
51
52
  @use '../scss/state/skeleton/mixins' as skeleton;
52
53
  @use '../tabs/src/tabs-theme' as tabs;
54
+ @use '../text-snippet//src/text-snippet-theme' as text-snippet;
53
55
  @use '../tree/src/tree-theme' as tree;
54
56
  @use '../toast/src/toast-theme' as toast;
55
57
 
@@ -91,7 +93,7 @@
91
93
  @include select.daff-select-theme($theme);
92
94
  @include native-select.daff-native-select-theme($theme);
93
95
 
94
- @include loading-icon.daff-loading-icon-theme($theme);
96
+ @include spinner.daff-spinner-theme($theme);
95
97
  @include progress-bar.daff-progress-bar-theme($theme);
96
98
 
97
99
  @include accordion.daff-accordion-theme($theme);
@@ -99,7 +101,10 @@
99
101
  @include callout.daff-callout-theme($theme);
100
102
  @include hero.daff-hero-theme($theme);
101
103
  @include list.daff-list-theme($theme);
104
+
105
+ // deprecated
102
106
  @include loading-icon.daff-loading-icon-theme($theme);
107
+
103
108
  @include media-gallery.daff-media-gallery-theme($theme);
104
109
  @include menu.daff-menu-theme($theme);
105
110
  @include modal.daff-modal-theme($theme);
@@ -110,6 +115,7 @@
110
115
  @include sidebar.daff-sidebar-theme($theme);
111
116
  @include switch.daff-switch-theme($theme);
112
117
  @include tabs.daff-tabs-theme($theme);
118
+ @include text-snippet.daff-text-snippet-theme($theme);
113
119
  @include toast.daff-toast-theme($theme);
114
120
  @include tree.daff-tree-theme($theme);
115
121
  }
@@ -25,9 +25,6 @@ $daff-blue: (
25
25
  100: #000033
26
26
  );
27
27
 
28
- /// @access private
29
- $daff-primary: $daff-blue;
30
-
31
28
  /// @access private
32
29
  $daff-purple: (
33
30
  10: #ebebff,
@@ -42,9 +39,6 @@ $daff-purple: (
42
39
  100: #110033
43
40
  );
44
41
 
45
- /// @access private
46
- $daff-accent: $daff-purple;
47
-
48
42
  /// @access private
49
43
  $daff-turquoise: (
50
44
  10: #d6fcea,
package/select/README.md CHANGED
@@ -4,7 +4,7 @@ Select allows users to choose from a dropdown panel with a list of options, simi
4
4
  ## Overview
5
5
  Use select when you need users to pick one option from a list. It works like a standard dropdown menu but gives you more control over how options look and behave. It **cannot** be used by itself and must be contained within a [form field](/libs/design/form-field/README.md).
6
6
 
7
- <design-land-example-viewer-container example="basic-select"></design-land-example-viewer-container>
7
+ <daff-docs-example-viewer example="basic-select"></daff-docs-example-viewer>
8
8
 
9
9
  ## Usage
10
10
  To use select, import the components directly into your custom component:
@@ -48,19 +48,19 @@ Use `daffSelectOption` to render a list of options in the select panel:
48
48
  ### Disabled
49
49
  Select can be disabled using Angular's reactive forms with `FormControl`.
50
50
 
51
- <design-land-example-viewer-container example="disabled-select"></design-land-example-viewer-container>
51
+ <daff-docs-example-viewer example="disabled-select"></daff-docs-example-viewer>
52
52
 
53
53
  ### Error
54
54
  Select supports validation and error messages through Angular's form validation system. Use `<daff-error-message>` within the form field to display context-specific error messages. Error messages automatically appear when the select is invalid and has been touched or submitted.
55
55
 
56
- <design-land-example-viewer-container example="select-with-error"></design-land-example-viewer-container>
56
+ <daff-docs-example-viewer example="select-with-error"></daff-docs-example-viewer>
57
57
 
58
58
  Multiple error messages can be displayed conditionally based on the type of validation error. The form field component handles the styling and positioning of error messages.
59
59
 
60
60
  ## Hints
61
61
  Hints provide additional context or instructions to help users complete the select field correctly. Use `<daff-hint>` within the form field to display helpful information below the textarea. Unlike error messages, hints are always visible and provide guidance rather than validation feedback.
62
62
 
63
- <design-land-example-viewer-container example="select-with-hint"></design-land-example-viewer-container>
63
+ <daff-docs-example-viewer example="select-with-hint"></daff-docs-example-viewer>
64
64
 
65
65
  ## Accessibility
66
66
  Select follows the [Combobox WAI-ARIA design pattern](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/). The combobox activator is combined with an inner `role="listbox"` element opened in a popup.
package/sidebar/README.md CHANGED
@@ -4,7 +4,7 @@ A sidebar is a component used to display additional information alongside a page
4
4
  ## Overview
5
5
  Sidebars provide a flexible way to display additional content alongside the main page content. While commonly used for navigation, they can accommodate any type of content. Sidebars support multiple display modes, positions, and include optional header and footer components with minimal styling.
6
6
 
7
- <design-land-example-viewer-container example="basic-sidebar"></design-land-example-viewer-container>
7
+ <daff-docs-example-viewer example="basic-sidebar"></daff-docs-example-viewer>
8
8
 
9
9
  ## Best practices
10
10
 
@@ -162,16 +162,16 @@ Use the `mode` property to control how the sidebar is displayed:
162
162
  | `under` | Sits beneath the main content, which slides over the sidebar when closed. |
163
163
 
164
164
  **Over and under sidebars**
165
- <design-land-example-viewer-container example="over-and-under-sidebars"></design-land-example-viewer-container>
165
+ <daff-docs-example-viewer example="over-and-under-sidebars"></daff-docs-example-viewer>
166
166
 
167
167
  **Side fixed sidebar**
168
- <design-land-example-viewer-container example="side-fixed-sidebar"></design-land-example-viewer-container>
168
+ <daff-docs-example-viewer example="side-fixed-sidebar"></daff-docs-example-viewer>
169
169
 
170
170
  **Two fixed sidebars on either side**
171
- <design-land-example-viewer-container example="two-fixed-sidebars-either-side"></design-land-example-viewer-container>
171
+ <daff-docs-example-viewer example="two-fixed-sidebars-either-side"></daff-docs-example-viewer>
172
172
 
173
173
  **Fixed and over sidebar**
174
- <design-land-example-viewer-container example="fixed-and-over-sidebar"></design-land-example-viewer-container>
174
+ <daff-docs-example-viewer example="fixed-and-over-sidebar"></daff-docs-example-viewer>
175
175
 
176
176
  ### Sides
177
177
  Use the `side` property to control the placement of the sidebar:
@@ -181,7 +181,7 @@ Use the `side` property to control the placement of the sidebar:
181
181
  | `left` (default) | Places the sidebar on the left side of the screen. |
182
182
  | `right` | Places the sidebar on the right side of the screen. |
183
183
 
184
- <design-land-example-viewer-container example="sidebar-sides"></design-land-example-viewer-container>
184
+ <daff-docs-example-viewer example="sidebar-sides"></daff-docs-example-viewer>
185
185
 
186
186
  ## Customizations
187
187
 
@@ -0,0 +1,57 @@
1
+ # Spinner
2
+ A spinner is an animated indicator that lets users know content or action is being loaded.
3
+
4
+ ## Overview
5
+ Use a spinner to indicate a short, indeterminate loading state. It can appear on its own or paired with a loading message. For longer processes with measurable progress, use the [progress bar](/libs/design/progress-bar/README.md) component.
6
+
7
+ ## Usage
8
+ To use spinner, import `DAFF_SPINNER_COMPONENTS` directly into your custom component:
9
+
10
+ ```ts
11
+ import { DAFF_SPINNER_COMPONENTS } from '@daffodil/design/spinner';
12
+
13
+ @Component({
14
+ selector: 'custom-component',
15
+ templateUrl: './custom-component.component.html',
16
+ imports: [
17
+ DAFF_SPINNER_COMPONENTS,
18
+ ],
19
+ })
20
+ export class CustomComponent {}
21
+ ```
22
+
23
+ ## Anatomy
24
+
25
+ ### Label
26
+ Labels are used to describe the loading state and provide context for users. They are optional.
27
+
28
+ ```html
29
+ <daff-spinner>
30
+ <daff-spinner-label>Loading products...</daff-spinner-label>
31
+ </daff-spinner>
32
+ ```
33
+
34
+ <daff-docs-example-viewer example="spinner-with-label"></daff-docs-example-viewer>
35
+
36
+ ## Features
37
+
38
+ ### Colors
39
+ Use the `color` property to change the color of a spinner.
40
+
41
+ > Note: `dark`, `light`, and `theme` should be used on appropriate backgrounds for sufficient contrast.
42
+
43
+ <daff-docs-example-viewer example="spinner-colors"></daff-docs-example-viewer>
44
+
45
+ ### Sizes
46
+ Use the `size` proeprty to change the size of a spinner. The default size is `md`.
47
+
48
+ <daff-docs-example-viewer example="spinner-sizes"></daff-docs-example-viewer>
49
+
50
+ ## Accessibility
51
+ The spinner has `role="status"` which announces content changes to assistive technologies.
52
+
53
+ When using `<daff-spinner-label>`, the visible text serves as the accessible name. When no label is provided, the spinner defaults to `aria-label="loading"`. You can customize this with the `aria-label` input:
54
+
55
+ ```html
56
+ <daff-spinner aria-label="Saving changes"></daff-spinner>
57
+ ```