@quaffui/quaff 0.1.0-prealpha16 → 0.1.0-prealpha19

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 (269) hide show
  1. package/README.md +6 -6
  2. package/dist/classes/QContext.svelte.d.ts +42 -0
  3. package/dist/classes/QContext.svelte.js +63 -0
  4. package/dist/classes/QScrollObserver.svelte.d.ts +44 -0
  5. package/dist/classes/QScrollObserver.svelte.js +95 -0
  6. package/dist/classes/QTheme.svelte.d.ts +11 -0
  7. package/dist/classes/QTheme.svelte.js +49 -0
  8. package/dist/classes/Quaff.svelte.d.ts +14 -0
  9. package/dist/classes/Quaff.svelte.js +35 -0
  10. package/dist/components/avatar/QAvatar.scss +97 -0
  11. package/dist/components/avatar/QAvatar.svelte +35 -60
  12. package/dist/components/avatar/QAvatar.svelte.d.ts +2 -25
  13. package/dist/components/avatar/docs.props.js +21 -5
  14. package/dist/components/avatar/index.scss +5 -3
  15. package/dist/components/avatar/props.d.ts +24 -7
  16. package/dist/components/breadcrumbs/QBreadcrumbs.scss +10 -0
  17. package/dist/components/breadcrumbs/QBreadcrumbs.svelte +24 -9
  18. package/dist/components/breadcrumbs/QBreadcrumbs.svelte.d.ts +2 -22
  19. package/dist/components/breadcrumbs/QBreadcrumbsEl.scss +10 -0
  20. package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte +64 -38
  21. package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte.d.ts +2 -25
  22. package/dist/components/breadcrumbs/docs.props.js +27 -27
  23. package/dist/components/breadcrumbs/props.d.ts +25 -24
  24. package/dist/components/button/QBtn.scss +133 -0
  25. package/dist/components/button/QBtn.svelte +88 -48
  26. package/dist/components/button/QBtn.svelte.d.ts +2 -33
  27. package/dist/components/button/docs.props.js +26 -18
  28. package/dist/components/button/props.d.ts +21 -15
  29. package/dist/components/card/QCard.scss +25 -0
  30. package/dist/components/card/QCard.svelte +25 -16
  31. package/dist/components/card/QCard.svelte.d.ts +2 -25
  32. package/dist/components/card/QCardActions.scss +10 -0
  33. package/dist/components/card/QCardActions.svelte +11 -8
  34. package/dist/components/card/QCardActions.svelte.d.ts +2 -21
  35. package/dist/components/card/QCardSection.scss +10 -0
  36. package/dist/components/card/QCardSection.svelte +8 -6
  37. package/dist/components/card/QCardSection.svelte.d.ts +2 -22
  38. package/dist/components/card/docs.props.js +6 -14
  39. package/dist/components/card/props.d.ts +9 -15
  40. package/dist/components/checkbox/QCheckbox.svelte +8 -3
  41. package/dist/components/checkbox/QCheckbox.svelte.d.ts +2 -20
  42. package/dist/components/checkbox/docs.props.js +1 -1
  43. package/dist/components/checkbox/index.scss +3 -1
  44. package/dist/components/checkbox/props.d.ts +1 -2
  45. package/dist/components/chip/QChip.scss +179 -0
  46. package/dist/components/chip/QChip.svelte +95 -70
  47. package/dist/components/chip/QChip.svelte.d.ts +2 -35
  48. package/dist/components/chip/docs.props.js +23 -47
  49. package/dist/components/chip/props.d.ts +21 -34
  50. package/dist/components/codeBlock/QCodeBlock.svelte +64 -42
  51. package/dist/components/codeBlock/QCodeBlock.svelte.d.ts +2 -20
  52. package/dist/components/codeBlock/docs.props.js +10 -2
  53. package/dist/components/codeBlock/props.d.ts +6 -1
  54. package/dist/components/dialog/{index.scss → QDialog.scss} +9 -7
  55. package/dist/components/dialog/QDialog.svelte +72 -70
  56. package/dist/components/dialog/QDialog.svelte.d.ts +6 -36
  57. package/dist/components/dialog/docs.props.d.ts +0 -8
  58. package/dist/components/dialog/docs.props.js +1 -131
  59. package/dist/components/dialog/props.d.ts +0 -16
  60. package/dist/components/drawer/QDrawer.scss +45 -0
  61. package/dist/components/drawer/QDrawer.svelte +87 -91
  62. package/dist/components/drawer/QDrawer.svelte.d.ts +6 -32
  63. package/dist/components/drawer/docs.props.js +3 -3
  64. package/dist/components/drawer/props.d.ts +2 -2
  65. package/dist/components/footer/QFooter.scss +42 -0
  66. package/dist/components/footer/QFooter.svelte +62 -23
  67. package/dist/components/footer/QFooter.svelte.d.ts +2 -23
  68. package/dist/components/footer/docs.props.js +14 -6
  69. package/dist/components/footer/props.d.ts +8 -5
  70. package/dist/components/header/QHeader.scss +54 -0
  71. package/dist/components/header/QHeader.svelte +52 -24
  72. package/dist/components/header/QHeader.svelte.d.ts +2 -23
  73. package/dist/components/header/docs.props.js +23 -7
  74. package/dist/components/header/props.d.ts +11 -3
  75. package/dist/components/icon/{index.scss → QIcon.scss} +2 -4
  76. package/dist/components/icon/QIcon.svelte +29 -16
  77. package/dist/components/icon/QIcon.svelte.d.ts +2 -27
  78. package/dist/components/icon/docs.props.js +3 -3
  79. package/dist/components/icon/props.d.ts +4 -4
  80. package/dist/components/index.d.ts +2 -2
  81. package/dist/components/index.js +2 -2
  82. package/dist/components/input/QInput.svelte +52 -25
  83. package/dist/components/input/QInput.svelte.d.ts +2 -32
  84. package/dist/components/input/docs.props.js +33 -1
  85. package/dist/components/input/props.d.ts +5 -12
  86. package/dist/components/input/props.js +1 -12
  87. package/dist/components/layout/QLayout.scss +178 -0
  88. package/dist/components/layout/QLayout.svelte +100 -80
  89. package/dist/components/layout/QLayout.svelte.d.ts +16 -43
  90. package/dist/components/layout/docs.props.js +57 -1
  91. package/dist/components/layout/props.d.ts +8 -0
  92. package/dist/components/list/QItem.scss +61 -0
  93. package/dist/components/list/QItem.svelte +65 -46
  94. package/dist/components/list/QItem.svelte.d.ts +2 -30
  95. package/dist/components/list/QItemSection.scss +45 -0
  96. package/dist/components/list/QItemSection.svelte +48 -33
  97. package/dist/components/list/QItemSection.svelte.d.ts +2 -24
  98. package/dist/components/list/QList.scss +30 -0
  99. package/dist/components/list/QList.svelte +25 -14
  100. package/dist/components/list/QList.svelte.d.ts +2 -28
  101. package/dist/components/list/docs.props.js +36 -4
  102. package/dist/components/list/props.d.ts +9 -8
  103. package/dist/components/list/props.js +1 -25
  104. package/dist/components/private/ContextReseter.svelte +6 -11
  105. package/dist/components/private/ContextReseter.svelte.d.ts +6 -18
  106. package/dist/components/private/QApi.svelte +117 -103
  107. package/dist/components/private/QApi.svelte.d.ts +4 -16
  108. package/dist/components/private/QDocs.svelte +67 -48
  109. package/dist/components/private/QDocs.svelte.d.ts +9 -20
  110. package/dist/components/private/QDocsSection.svelte +15 -14
  111. package/dist/components/private/QDocsSection.svelte.d.ts +7 -19
  112. package/dist/components/private/QIconSnippet.svelte +12 -0
  113. package/dist/components/private/QIconSnippet.svelte.d.ts +8 -0
  114. package/dist/components/progress/QCircularProgress.scss +63 -0
  115. package/dist/components/progress/QCircularProgress.svelte +104 -28
  116. package/dist/components/progress/QCircularProgress.svelte.d.ts +2 -22
  117. package/dist/components/progress/QLinearProgress.scss +75 -0
  118. package/dist/components/progress/QLinearProgress.svelte +55 -13
  119. package/dist/components/progress/QLinearProgress.svelte.d.ts +2 -20
  120. package/dist/components/progress/docs.props.js +138 -10
  121. package/dist/components/progress/props.d.ts +75 -12
  122. package/dist/components/radio/QRadio.svelte +14 -3
  123. package/dist/components/radio/QRadio.svelte.d.ts +2 -21
  124. package/dist/components/radio/docs.props.js +1 -1
  125. package/dist/components/radio/index.scss +3 -1
  126. package/dist/components/radio/props.d.ts +1 -3
  127. package/dist/components/radio/props.js +1 -8
  128. package/dist/components/railbar/QRailbar.scss +54 -0
  129. package/dist/components/railbar/QRailbar.svelte +43 -66
  130. package/dist/components/railbar/QRailbar.svelte.d.ts +2 -22
  131. package/dist/components/railbar/docs.props.js +4 -4
  132. package/dist/components/railbar/props.d.ts +3 -3
  133. package/dist/components/select/QSelect.svelte +121 -88
  134. package/dist/components/select/QSelect.svelte.d.ts +2 -34
  135. package/dist/components/select/docs.js +7 -0
  136. package/dist/components/select/docs.props.js +41 -1
  137. package/dist/components/select/index.scss +8 -6
  138. package/dist/components/select/props.d.ts +6 -12
  139. package/dist/components/select/props.js +1 -12
  140. package/dist/components/separator/QSeparator.scss +54 -0
  141. package/dist/components/separator/QSeparator.svelte +38 -45
  142. package/dist/components/separator/QSeparator.svelte.d.ts +2 -24
  143. package/dist/components/separator/docs.props.js +4 -4
  144. package/dist/components/separator/props.d.ts +5 -7
  145. package/dist/components/separator/props.js +1 -9
  146. package/dist/components/switch/QSwitch.scss +305 -0
  147. package/dist/components/switch/QSwitch.svelte +96 -0
  148. package/dist/components/switch/QSwitch.svelte.d.ts +3 -0
  149. package/dist/components/{toggle → switch}/docs.d.ts +1 -1
  150. package/dist/components/{toggle → switch}/docs.js +3 -3
  151. package/dist/components/{toggle → switch}/docs.props.d.ts +1 -1
  152. package/dist/components/{toggle → switch}/docs.props.js +30 -6
  153. package/dist/components/switch/props.d.ts +13 -0
  154. package/dist/components/switch/props.js +1 -0
  155. package/dist/components/table/QTable.svelte +99 -85
  156. package/dist/components/table/QTable.svelte.d.ts +3 -29
  157. package/dist/components/table/docs.props.js +9 -1
  158. package/dist/components/table/index.scss +3 -1
  159. package/dist/components/table/props.d.ts +10 -0
  160. package/dist/components/tabs/QTab.scss +71 -0
  161. package/dist/components/tabs/QTab.svelte +74 -90
  162. package/dist/components/tabs/QTab.svelte.d.ts +2 -25
  163. package/dist/components/tabs/QTabs.scss +40 -0
  164. package/dist/components/tabs/QTabs.svelte +110 -58
  165. package/dist/components/tabs/QTabs.svelte.d.ts +6 -31
  166. package/dist/components/tabs/docs.props.js +3 -3
  167. package/dist/components/tabs/index.scss +4 -2
  168. package/dist/components/tabs/props.d.ts +5 -4
  169. package/dist/components/toolbar/QToolbar.svelte +15 -12
  170. package/dist/components/toolbar/QToolbar.svelte.d.ts +2 -23
  171. package/dist/components/toolbar/QToolbarTitle.svelte +8 -7
  172. package/dist/components/toolbar/QToolbarTitle.svelte.d.ts +2 -21
  173. package/dist/components/toolbar/docs.props.js +4 -4
  174. package/dist/components/toolbar/index.scss +12 -14
  175. package/dist/components/toolbar/props.d.ts +4 -5
  176. package/dist/components/tooltip/QTooltip.svelte +5 -9
  177. package/dist/components/tooltip/QTooltip.svelte.d.ts +2 -21
  178. package/dist/components/tooltip/docs.props.js +1 -1
  179. package/dist/components/tooltip/index.scss +3 -1
  180. package/dist/components/tooltip/props.d.ts +1 -1
  181. package/dist/composables/index.d.ts +1 -1
  182. package/dist/composables/index.js +1 -1
  183. package/dist/composables/useSize.d.ts +10 -9
  184. package/dist/composables/useSize.js +32 -20
  185. package/dist/composables/useSizeLegacy.d.ts +9 -0
  186. package/dist/composables/useSizeLegacy.js +25 -0
  187. package/dist/css/_components.scss +31 -0
  188. package/dist/css/_disabled.scss +18 -0
  189. package/dist/css/{ripple.scss → _ripple.scss} +1 -1
  190. package/dist/css/_variables.scss +73 -0
  191. package/dist/css/classes/_design.scss +57 -0
  192. package/dist/css/classes/_flex.scss +62 -0
  193. package/dist/css/classes/_grid.scss +35 -0
  194. package/dist/css/classes/_index.scss +7 -0
  195. package/dist/css/classes/_overflow.scss +7 -0
  196. package/dist/css/classes/_position.scss +7 -0
  197. package/dist/css/classes/_select.scss +6 -0
  198. package/dist/css/classes/_spaces.scss +23 -0
  199. package/dist/css/index.css +1 -1
  200. package/dist/css/index.scss +15 -94
  201. package/dist/css/mixins/_design.scss +63 -0
  202. package/dist/css/mixins/{field-mixins.scss → _field.scss} +16 -5
  203. package/dist/css/mixins/_image.scss +63 -0
  204. package/dist/css/mixins/_index.scss +9 -0
  205. package/dist/css/mixins/_layout.scss +20 -0
  206. package/dist/css/mixins/{menu.scss → _menu.scss} +4 -2
  207. package/dist/css/mixins/{selection.scss → _selection.scss} +7 -67
  208. package/dist/css/mixins/_spaces.scss +36 -0
  209. package/dist/css/mixins/_typography.scss +7 -0
  210. package/dist/css/shared/q-field.scss +62 -32
  211. package/dist/css/theme/_colors.scss +173 -0
  212. package/dist/css/theme/css-variables.scss +5 -0
  213. package/dist/css/theme/page.scss +3 -3
  214. package/dist/css/theme/reset.scss +17 -1
  215. package/dist/css/theme/theme.scss +2 -3
  216. package/dist/css/theme/tokens.scss +0 -159
  217. package/dist/helpers/clickOutside.js +2 -1
  218. package/dist/helpers/ripple.d.ts +1 -1
  219. package/dist/helpers/ripple.js +13 -4
  220. package/dist/helpers/version.d.ts +1 -1
  221. package/dist/helpers/version.js +1 -1
  222. package/dist/index.d.ts +2 -1
  223. package/dist/index.js +2 -1
  224. package/dist/stores/index.d.ts +0 -2
  225. package/dist/stores/index.js +1 -2
  226. package/dist/utils/colors.d.ts +71 -0
  227. package/dist/utils/colors.js +101 -14
  228. package/dist/utils/dom.d.ts +2 -0
  229. package/dist/utils/dom.js +6 -0
  230. package/dist/utils/number.d.ts +2 -0
  231. package/dist/utils/number.js +9 -0
  232. package/dist/utils/props.js +3 -1
  233. package/dist/utils/router.d.ts +17 -0
  234. package/dist/utils/router.js +23 -0
  235. package/dist/utils/string.d.ts +1 -0
  236. package/dist/utils/string.js +3 -0
  237. package/dist/utils/types.d.ts +6 -1
  238. package/dist/utils/types.js +0 -3
  239. package/dist/utils/types.json +8 -5
  240. package/dist/utils/watchable.d.ts +0 -1
  241. package/package.json +40 -37
  242. package/dist/components/breadcrumbs/index.scss +0 -20
  243. package/dist/components/button/index.scss +0 -103
  244. package/dist/components/card/index.scss +0 -56
  245. package/dist/components/chip/index.scss +0 -103
  246. package/dist/components/drawer/index.scss +0 -59
  247. package/dist/components/footer/index.scss +0 -28
  248. package/dist/components/layout/index.scss +0 -387
  249. package/dist/components/list/index.scss +0 -144
  250. package/dist/components/progress/index.scss +0 -82
  251. package/dist/components/railbar/index.scss +0 -39
  252. package/dist/components/separator/index.scss +0 -52
  253. package/dist/components/toggle/QToggle.svelte +0 -34
  254. package/dist/components/toggle/QToggle.svelte.d.ts +0 -23
  255. package/dist/components/toggle/index.scss +0 -31
  256. package/dist/components/toggle/props.d.ts +0 -9
  257. package/dist/components/toggle/props.js +0 -9
  258. package/dist/css/grid.scss +0 -50
  259. package/dist/css/mixins.scss +0 -137
  260. package/dist/css/states.scss +0 -75
  261. package/dist/css/theme/bridge.scss +0 -15
  262. package/dist/css/theme/theme.dark.scss +0 -39
  263. package/dist/css/theme/theme.light.scss +0 -39
  264. package/dist/css/variables-sass.scss +0 -16
  265. package/dist/stores/QTheme.d.ts +0 -42
  266. package/dist/stores/QTheme.js +0 -59
  267. package/dist/stores/Quaff.d.ts +0 -32
  268. package/dist/stores/Quaff.js +0 -58
  269. /package/dist/css/mixins/{table.scss → _table.scss} +0 -0
@@ -1,42 +1,36 @@
1
- import type { UseAlignProps } from "../../composables";
2
- import type { NativeProps } from "../../utils";
1
+ import type { UseAlignProps } from "../../composables/useAlign";
3
2
  import type { HTMLAttributes } from "svelte/elements";
4
3
  export type QCardFillColors = "primary" | "secondary" | "tertiary";
5
- export interface QCardProps extends NativeProps, HTMLAttributes<HTMLElement> {
4
+ export interface QCardProps extends HTMLAttributes<HTMLElement> {
6
5
  /**
7
- * Puts a border around the card.
6
+ * Adds a border around the card.
8
7
  * @default false
9
8
  */
10
9
  bordered?: boolean;
11
10
  /**
12
11
  * Defines the fill color of the card.
13
- * @default undefined
12
+ * @default false
14
13
  */
15
14
  fill?: boolean | QCardFillColors;
16
15
  /**
17
- * Makes the card flat, removing its elevation.
16
+ * Use the flat design for the card, removing its elevation.
18
17
  * @default false
19
18
  */
20
19
  flat?: boolean;
21
20
  /**
22
- * Adds rounded corners to the card.
21
+ * Adds border radius to the card to round its corners.
23
22
  * @default false
24
23
  */
25
- round?: boolean;
26
- /**
27
- * Sets the title of the card.
28
- * @default undefined
29
- */
30
- title?: string;
24
+ rounded?: boolean;
31
25
  }
32
- export interface QCardSectionProps extends NativeProps, HTMLAttributes<HTMLDivElement> {
26
+ export interface QCardSectionProps extends HTMLAttributes<HTMLDivElement> {
33
27
  /**
34
28
  * Lays out the section content horizontally.
35
29
  * @default false
36
30
  */
37
31
  horizontal?: boolean;
38
32
  }
39
- export interface QCardActionsProps extends UseAlignProps, NativeProps, HTMLAttributes<HTMLElement> {
33
+ export interface QCardActionsProps extends UseAlignProps, HTMLAttributes<HTMLElement> {
40
34
  /**
41
35
  * Lays out the action items vertically.
42
36
  * @default false
@@ -1,8 +1,13 @@
1
- <script>export let value = false, label = "", disable = false, userClasses = "";
2
- export { userClasses as class };
1
+ <script lang="ts">
2
+ let { value = $bindable(), label = "", disable = false, ...props } = $props();
3
3
  </script>
4
4
 
5
- <label class="q-checkbox {userClasses}" class:q-checkbox--disabled={disable} {...$$restProps}>
5
+ <label
6
+ {...props}
7
+ class="q-checkbox{props.class ? ` ${props.class}` : ''}"
8
+ class:q-checkbox--disabled={disable}
9
+ aria-disabled={disable || undefined}
10
+ >
6
11
  <input type="checkbox" bind:checked={value} disabled={disable} />
7
12
  <span>{label}</span>
8
13
  </label>
@@ -1,21 +1,3 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { QCheckboxProps } from "./props";
3
- declare const __propDef: {
4
- props: {
5
- [x: string]: any;
6
- value?: boolean | undefined;
7
- label?: QCheckboxProps["label"];
8
- disable?: QCheckboxProps["disable"];
9
- class?: string | null | undefined;
10
- };
11
- events: {
12
- [evt: string]: CustomEvent<any>;
13
- };
14
- slots: {};
15
- };
16
- type QCheckboxProps_ = typeof __propDef.props;
17
- export { QCheckboxProps_ as QCheckboxProps };
18
- export type QCheckboxEvents = typeof __propDef.events;
19
- export type QCheckboxSlots = typeof __propDef.slots;
20
- export default class QCheckbox extends SvelteComponent<QCheckboxProps, QCheckboxEvents, QCheckboxSlots> {
21
- }
2
+ declare const QCheckbox: import("svelte").Component<QCheckboxProps, {}, "value">;
3
+ export default QCheckbox;
@@ -1,5 +1,5 @@
1
1
  // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
- // @quaffHash 9a5ee048cd1eb382844ca517e4e3e645
2
+ // @quaffHash 73905a6da0ecb8bcb3aac7359f8ebd3f
3
3
  export const QCheckboxDocsProps = [
4
4
  {
5
5
  name: "value",
@@ -1,5 +1,7 @@
1
+ @use "$css/mixins";
2
+
1
3
  .q-checkbox {
2
- @include selection(checkbox);
4
+ @include mixins.selection(checkbox);
3
5
 
4
6
  > span::before {
5
7
  content: "check_box_outline_blank";
@@ -1,6 +1,5 @@
1
- import type { NativeProps } from "../../utils";
2
1
  import type { HTMLAttributes } from "svelte/elements";
3
- export interface QCheckboxProps extends NativeProps, HTMLAttributes<HTMLLabelElement> {
2
+ export interface QCheckboxProps extends HTMLAttributes<HTMLLabelElement> {
4
3
  /**
5
4
  * Controls the checked state of the checkbox.
6
5
  */
@@ -0,0 +1,179 @@
1
+ @use "$css/mixins";
2
+ @use "$css/disabled";
3
+
4
+ @layer q-chip {
5
+ .q-chip {
6
+ $state-layer-opacity: 0;
7
+ padding-inline: 1rem;
8
+ border-radius: 0.5rem;
9
+
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: start;
13
+ gap: 0.5rem;
14
+ width: fit-content;
15
+
16
+ background-color: transparent;
17
+ color: var(--on-surface);
18
+
19
+ cursor: pointer;
20
+ user-select: none;
21
+
22
+ @include mixins.typography(label-large);
23
+
24
+ &::before {
25
+ content: "";
26
+ position: absolute;
27
+ top: 0;
28
+ right: 0;
29
+ bottom: 0;
30
+ left: 0;
31
+
32
+ border-radius: inherit;
33
+ background-color: mixins.with-alpha(
34
+ var(--state-layer-color, transparent),
35
+ var(--state-layer-opacity, 0)
36
+ );
37
+ }
38
+
39
+ &:hover:not([aria-disabled]) {
40
+ --state-layer-opacity: 8%;
41
+ }
42
+
43
+ &:focus:not([aria-disabled]) {
44
+ --state-layer-opacity: 10%;
45
+ }
46
+
47
+ &.q-chip--sm {
48
+ height: 2rem;
49
+
50
+ & > :is(.q-icon, .q-avatar) {
51
+ --size: 1.125rem;
52
+ }
53
+ }
54
+
55
+ &.q-chip--md {
56
+ height: 2.5rem;
57
+
58
+ & > :is(.q-icon, .q-avatar) {
59
+ --size: 1.40625rem;
60
+ }
61
+ }
62
+
63
+ &.q-chip--lg {
64
+ height: 3rem;
65
+
66
+ & > :is(.q-icon, .q-avatar) {
67
+ --size: 1.6875rem;
68
+ }
69
+ }
70
+
71
+ &:focus:not([aria-disabled]) {
72
+ outline: 1px solid var(--secondary);
73
+
74
+ & > .q-icon {
75
+ color: var(--on-secondary-container);
76
+ }
77
+ }
78
+
79
+ &.q-chip--outlined {
80
+ outline: 1px solid var(--outline);
81
+
82
+ &:focus:not([aria-disabled]) {
83
+ outline-color: var(--secondary);
84
+ }
85
+ }
86
+
87
+ &.q-chip--elevated {
88
+ @include mixins.elevate(0.5);
89
+
90
+ &:hover:not([aria-disabled]) {
91
+ @include mixins.elevate(1);
92
+ }
93
+
94
+ background-color: var(--surface-container-low);
95
+ }
96
+
97
+ &.q-chip--assist {
98
+ --state-layer-color: var(--on-surface);
99
+ }
100
+
101
+ &.q-chip--filter {
102
+ --state-layer-color: var(--on-surface-variant);
103
+
104
+ &:focus:not([aria-disabled]) {
105
+ outline-color: var(--on-surface-variant);
106
+ }
107
+
108
+ &.q-chip--selected {
109
+ --state-layer-color: var(--on-secondary-container);
110
+
111
+ outline-color: var(--secondary-container);
112
+ outline-width: 0;
113
+
114
+ background-color: var(--secondary-container);
115
+
116
+ &.q-chip--elevated {
117
+ color: var(--on-secondary-container);
118
+ }
119
+
120
+ &:hover:not([aria-disabled]):not([aria-disabled]) {
121
+ @include mixins.elevate(0.5);
122
+ color: var(--on-secondary-container);
123
+ }
124
+ }
125
+ }
126
+
127
+ &.q-chip--input {
128
+ --state-layer-color: var(--on-surface-variant);
129
+
130
+ padding-inline: 0.75rem;
131
+ color: var(--on-surface-variant);
132
+
133
+ & > .q-icon {
134
+ color: var(--on-surface-variant);
135
+ }
136
+ }
137
+
138
+ &.q-chip--suggestion {
139
+ --state-layer-color: var(--on-surface-variant);
140
+
141
+ color: var(--on-surface-variant);
142
+
143
+ &:focus:not([aria-disabled]) {
144
+ outline-color: var(--secondary);
145
+ }
146
+ }
147
+ }
148
+
149
+ .q-chip > .q-icon {
150
+ color: var(--primary);
151
+ }
152
+
153
+ .q-chip > :is(.q-icon.q-chip__leading-icon, .q-avatar.q-chip__avatar) {
154
+ margin-left: -0.5rem;
155
+ }
156
+
157
+ .q-chip > .q-icon.q-chip__trailing-icon {
158
+ margin-right: -0.5rem;
159
+ }
160
+
161
+ .q-chip.q-chip--input > .q-avatar.q-chip__avatar {
162
+ --size: 1.5rem;
163
+ }
164
+ }
165
+
166
+ // Disabled
167
+ @layer q-chip--disabled {
168
+ .q-chip[aria-disabled] {
169
+ @include disabled.base();
170
+
171
+ &.q-chip--outlined {
172
+ outline-color: disabled.rest-color();
173
+ }
174
+
175
+ & .q-icon {
176
+ color: disabled.font-color();
177
+ }
178
+ }
179
+ }
@@ -1,80 +1,105 @@
1
- <script>import { useSize } from "../../composables";
2
- import { ripple } from "../../helpers";
3
- import { isActivationKey } from "../../utils";
4
- import { QIcon } from "../..";
5
- export let content = void 0, icon = void 0, iconRight = void 0, disable = false, responsive = false, vertical = false, round = false, outlined = false, noRipple = false, size = "md", tabindex = void 0, href = void 0, userClasses = "";
6
- export { userClasses as class };
7
- let qChip;
8
- $:
9
- img = icon?.startsWith("img:") ? icon.slice(4) : void 0;
10
- $:
11
- imgRight = iconRight?.startsWith("img:") ? iconRight.slice(4) : void 0;
12
- $:
13
- sizeObj = useSize(size);
14
- $:
15
- tab = disable ? -1 : tabindex ?? 0;
16
- function stopIfDisabled(e) {
17
- if (disable) {
1
+ <script lang="ts">
2
+ import { ripple } from "../../helpers";
3
+ import { extractImgSrc, isActivationKey } from "../../utils";
4
+ import { QAvatar, QIcon } from "../..";
5
+ let {
6
+ kind = "assist",
7
+ label,
8
+ icon,
9
+ trailingIcon,
10
+ disabled = false,
11
+ elevated,
12
+ noRipple = false,
13
+ selected = $bindable(kind === "filter" ? false : void 0),
14
+ size = "sm",
15
+ children,
16
+ ...props
17
+ } = $props();
18
+ let qChip;
19
+ $effect.pre(() => {
20
+ if (selected !== void 0 && kind !== "filter") {
21
+ throw new Error(
22
+ 'Only QChips of kind "filter" can use the "selected" prop.',
23
+ );
24
+ }
25
+ if ((kind === "assist" || kind === "suggestion") && trailingIcon) {
26
+ console.warn(
27
+ 'QChips of kind "assist" and "suggestion" should not have a trailing icon. It will thus be ignored.',
28
+ );
29
+ }
30
+ });
31
+ const trailing = $derived(
32
+ (kind === "assist" || kind === "suggestion") && trailingIcon
33
+ ? void 0
34
+ : trailingIcon,
35
+ );
36
+ const tabindex = disabled ? -1 : props.tabindex || 0;
37
+ const role = $derived(
38
+ ["assist", "filter"].includes(kind) ? "button" : void 0,
39
+ );
40
+ const avatar = $derived(extractImgSrc(icon));
41
+ function stopIfDisabled(e) {
42
+ if (disabled) {
43
+ e.preventDefault();
44
+ e.stopImmediatePropagation();
45
+ return;
46
+ }
47
+ if (kind === "filter") {
48
+ selected = !selected;
49
+ }
50
+ e.stopPropagation();
51
+ props.onclick?.(e);
52
+ }
53
+ function onkeydown(e) {
54
+ if (e.key === "Escape") {
55
+ qChip?.blur();
56
+ return;
57
+ }
58
+ if (!isActivationKey(e)) {
59
+ return;
60
+ }
18
61
  e.preventDefault();
19
- e.stopImmediatePropagation();
62
+ const click = new MouseEvent("click", { relatedTarget: qChip });
63
+ stopIfDisabled(click);
20
64
  }
21
- }
22
- function onKeyDown(e) {
23
- if (!isActivationKey(e))
24
- return;
25
- e.preventDefault();
26
- let click = new MouseEvent("click");
27
- qChip.dispatchEvent(click);
28
- }
29
65
  </script>
30
66
 
31
- <a
67
+ <div
32
68
  bind:this={qChip}
33
69
  use:ripple={{
34
- disable: noRipple || disable,
35
- color: outlined ? undefined : "var(--on-secondary)",
70
+ disabled: noRipple || disabled,
71
+ color: elevated ? "var(--on-surface-variant)" : undefined,
36
72
  }}
37
- aria-disabled={disable || undefined}
38
- class="q-chip {sizeObj.class && sizeObj.class !== 'md'
39
- ? `q-chip--${sizeObj.class}`
40
- : ''} {userClasses}"
41
- class:q-chip--vertical={vertical}
42
- class:q-chip--rounded={round}
43
- class:q-chip--bordered={outlined || disable}
44
- {href}
45
- tabindex={tab}
46
- on:keydown={onKeyDown}
47
- on:click={stopIfDisabled}
48
- on:click
49
- {...$$restProps}
73
+ {...props}
74
+ class="q-chip{props.class
75
+ ? ` ${props.class}`
76
+ : ''} q-chip--{kind} q-chip--{size}"
77
+ class:q-chip--selected={selected}
78
+ class:q-chip--elevated={elevated}
79
+ class:q-chip--outlined={!elevated}
80
+ aria-disabled={disabled || undefined}
81
+ {tabindex}
82
+ {role}
83
+ onclick={stopIfDisabled}
84
+ {onkeydown}
50
85
  >
51
- {#if $$slots.leading}
52
- <slot name="leading" />
53
- {:else if img}
54
- <img
55
- class="q-chip__img"
56
- class:q-chip__img--responsive={responsive}
57
- src={img}
58
- alt="{content || 'Slotted'} chip"
59
- />
60
- {:else if icon}
61
- <QIcon name={icon} class="q-chip__icon" />
62
- {/if}
63
- {#if content}
64
- {content}
65
- {:else}
66
- <slot />
86
+ {#if icon && !selected && !avatar}
87
+ <QIcon class="q-chip__leading-icon" name={icon as MaterialSymbol} />
88
+ {:else if avatar && !selected}
89
+ <QAvatar class="q-chip__avatar" src={avatar} />
90
+ {:else if selected}
91
+ <QIcon class="q-chip__leading-icon" name="check" />
67
92
  {/if}
68
- {#if $$slots.trailing}
69
- <slot name="trailing" />
70
- {:else if imgRight}
71
- <img
72
- class="q-chip__img q-chip__img--trailing"
73
- class:q-chip__img--responsive={responsive}
74
- src={imgRight}
75
- alt="{content || 'Slotted'} chip"
76
- />
77
- {:else if iconRight}
78
- <QIcon name={iconRight} class="q-chip__icon" />
93
+
94
+ <div class="q-chip__label">
95
+ {#if label}
96
+ {label}
97
+ {:else}
98
+ {@render children?.()}
99
+ {/if}
100
+ </div>
101
+
102
+ {#if trailing}
103
+ <QIcon class="q-chip__trailing-icon" name={trailing} />
79
104
  {/if}
80
- </a>
105
+ </div>
@@ -1,36 +1,3 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { QChipProps } from "./props";
3
- declare const __propDef: {
4
- props: {
5
- [x: string]: any;
6
- content?: QChipProps["content"];
7
- icon?: QChipProps["icon"];
8
- iconRight?: QChipProps["iconRight"];
9
- disable?: QChipProps["disable"];
10
- responsive?: QChipProps["responsive"];
11
- vertical?: QChipProps["vertical"];
12
- round?: QChipProps["round"];
13
- outlined?: QChipProps["outlined"];
14
- noRipple?: QChipProps["noRipple"];
15
- size?: QChipProps["size"];
16
- tabindex?: QChipProps["tabindex"];
17
- href?: QChipProps["href"];
18
- class?: string | null | undefined;
19
- };
20
- events: {
21
- click: MouseEvent;
22
- } & {
23
- [evt: string]: CustomEvent<any>;
24
- };
25
- slots: {
26
- leading: {};
27
- default: {};
28
- trailing: {};
29
- };
30
- };
31
- type QChipProps_ = typeof __propDef.props;
32
- export { QChipProps_ as QChipProps };
33
- export type QChipEvents = typeof __propDef.events;
34
- export type QChipSlots = typeof __propDef.slots;
35
- export default class QChip extends SvelteComponent<QChipProps, QChipEvents, QChipSlots> {
36
- }
2
+ declare const QChip: import("svelte").Component<QChipProps, {}, "selected">;
3
+ export default QChip;
@@ -1,68 +1,60 @@
1
1
  // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
- // @quaffHash 64a4b0e1fd969d51711b5f49c74fd317
2
+ // @quaffHash b77ea0d9cbe2991add2f2dccab50f658
3
3
  export const QChipDocsProps = [
4
4
  {
5
- name: "content",
6
- type: "string",
5
+ name: "kind",
6
+ type: "QChipKindOptions",
7
7
  optional: true,
8
- clickableType: false,
9
- description: "The content inside the chip. Will overwrite the default slot.",
8
+ clickableType: true,
9
+ description: "The chip's kind. It will control the chip's style and behavior.",
10
10
  default: "undefined",
11
11
  },
12
12
  {
13
- name: "icon",
13
+ name: "label",
14
14
  type: "string",
15
15
  optional: true,
16
16
  clickableType: false,
17
- description: 'Name of the leading icon to use for the chip. If starts with "img:", will be used as an image src instead.',
17
+ description: "The chip's text content. Will overwrite the default slot.",
18
18
  default: "undefined",
19
19
  },
20
20
  {
21
- name: "iconRight",
22
- type: "string",
21
+ name: "icon",
22
+ type: "MaterialSymbol | `img:${string}`",
23
23
  optional: true,
24
- clickableType: false,
25
- description: 'Name of the trailing icon to use for the chip. If starts with "img:", will be used as an image src instead.',
24
+ clickableType: true,
25
+ description: 'Name of the leading icon to use for the chip. If starts with "img:", will be used as an image src instead.',
26
26
  default: "undefined",
27
27
  },
28
28
  {
29
- name: "disable",
30
- type: "boolean",
31
- optional: true,
32
- clickableType: false,
33
- description: "Puts the chip in a disabled state, making it unclickable.",
34
- default: "false",
35
- },
36
- {
37
- name: "responsive",
38
- type: "boolean",
29
+ name: "trailingIcon",
30
+ type: "MaterialSymbol | `img:${string}`",
39
31
  optional: true,
40
- clickableType: false,
41
- description: "Makes leading and trailing images responsive, making them take more space.",
42
- default: "false",
32
+ clickableType: true,
33
+ description: "Only for filter and input chips. Name of the trailing icon to use for the chip.",
34
+ default: "undefined",
43
35
  },
44
36
  {
45
- name: "vertical",
37
+ name: "disabled",
46
38
  type: "boolean",
47
39
  optional: true,
48
40
  clickableType: false,
49
- description: "If true, the chip will display its content vertically.",
41
+ description: "Puts the chip in a disabled state, making it unactivable.",
50
42
  default: "false",
51
43
  },
52
44
  {
53
- name: "round",
45
+ name: "selected",
54
46
  type: "boolean",
55
47
  optional: true,
56
48
  clickableType: false,
57
- description: "Use round design for the chip, adding a large border-radius to it.",
49
+ description: "Only for filter chips. Controls wether the chip is selected or not.",
58
50
  default: "false",
59
51
  },
60
52
  {
61
- name: "outlined",
53
+ name: "elevated",
62
54
  type: "boolean",
63
55
  optional: true,
64
56
  clickableType: false,
65
- description: "Use outline design for the chip, adding a border around it.",
57
+ description: "Elevates the button, giving it box-shadow and a background color.",
66
58
  default: "false",
67
59
  },
68
60
  {
@@ -79,22 +71,6 @@ export const QChipDocsProps = [
79
71
  optional: true,
80
72
  clickableType: true,
81
73
  description: "Size of the chip.",
82
- default: "small",
83
- },
84
- {
85
- name: "tabindex",
86
- type: "number",
87
- optional: true,
88
- clickableType: false,
89
- description: "Tabindex of the chip.",
90
- default: "undefined",
91
- },
92
- {
93
- name: "href",
94
- type: "string",
95
- optional: true,
96
- clickableType: false,
97
- description: 'Makes the chip navigational. Can be used with the router (e.g to="/home") or as a normal href attribute (e.g to="#section-id").',
98
- default: "undefined",
74
+ default: "sm",
99
75
  },
100
76
  ];