@brightspot/ui 1.9.0 → 1.10.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 (107) hide show
  1. package/dist/components/copy-to-clipboard/CopyToClipboard.d.ts.map +1 -1
  2. package/dist/components/copy-to-clipboard/CopyToClipboard.js +4 -0
  3. package/dist/components/copy-to-clipboard/CopyToClipboard.js.map +1 -1
  4. package/dist/components/switch/Switch.d.ts +92 -0
  5. package/dist/components/switch/Switch.d.ts.map +1 -0
  6. package/dist/components/switch/Switch.js +189 -0
  7. package/dist/components/switch/Switch.js.map +1 -0
  8. package/dist/custom-elements.json +512 -210
  9. package/dist/effects/celebrate.d.ts +18 -0
  10. package/dist/effects/celebrate.d.ts.map +1 -0
  11. package/dist/effects/celebrate.js +81 -0
  12. package/dist/effects/celebrate.js.map +1 -0
  13. package/dist/effects/ripple.d.ts +31 -0
  14. package/dist/effects/ripple.d.ts.map +1 -0
  15. package/dist/effects/ripple.js +131 -0
  16. package/dist/effects/ripple.js.map +1 -0
  17. package/dist/effects/sparkle-worklet.d.ts +7 -0
  18. package/dist/effects/sparkle-worklet.d.ts.map +1 -0
  19. package/dist/effects/sparkle-worklet.js +211 -0
  20. package/dist/effects/sparkle-worklet.js.map +1 -0
  21. package/dist/effects/sparkle.d.ts +6 -0
  22. package/dist/effects/sparkle.d.ts.map +1 -0
  23. package/dist/effects/sparkle.js +91 -0
  24. package/dist/effects/sparkle.js.map +1 -0
  25. package/dist/storybook/BSPLogoMark.svg +3 -0
  26. package/dist/storybook/WelcomeBG.svg +292 -0
  27. package/dist/storybook/assets/{Avatar.stories-Du1qM73U.js → Avatar.stories-B26mRkkZ.js} +1 -1
  28. package/dist/storybook/assets/{AvatarGroup.stories-DxwZQE-q.js → AvatarGroup.stories-J7lVGsMY.js} +1 -1
  29. package/dist/storybook/assets/{Badge.stories-CfvkMIx2.js → Badge.stories-BpTIV61M.js} +1 -1
  30. package/dist/storybook/assets/Button-Dg-fIrzT.js +10 -0
  31. package/dist/storybook/assets/Button.stories-gPKRVbxk.js +54 -0
  32. package/dist/storybook/assets/Celebrate.stories-DbY-sKEe.js +184 -0
  33. package/dist/storybook/assets/{CircularProgress.stories-rPzKwQYD.js → CircularProgress.stories-DeH5JYX_.js} +1 -1
  34. package/dist/storybook/assets/{ClipboardMixin.stories-BlUeYDSi.js → ClipboardMixin.stories-C-lZ4uuw.js} +1 -1
  35. package/dist/storybook/assets/Color-6BZIO3FS-Cu6zVIuG.js +1 -0
  36. package/dist/storybook/assets/{Colors.stories-BspfjZ5q.js → Colors.stories-D6XYMrTD.js} +1 -1
  37. package/dist/storybook/assets/CombinedEffects.stories-jFekKTYg.js +355 -0
  38. package/dist/storybook/assets/{ComponentStatesMixin-eTV7XXqB.js → ComponentStatesMixin-g50hRCPT.js} +1 -1
  39. package/dist/storybook/assets/{ComponentStatesMixin.stories-BbLSY3df.js → ComponentStatesMixin.stories-D3Q5pR38.js} +1 -1
  40. package/dist/storybook/assets/{CopyToClipboard.stories-B2ailiFF.js → CopyToClipboard.stories-COZZ1VC2.js} +1 -1
  41. package/dist/storybook/assets/{Debounce.stories-DJmp4eNo.js → Debounce.stories-Dl10LAnx.js} +1 -1
  42. package/dist/storybook/assets/DocsRenderer-LL677BLK-CFLtMbUx.js +10 -0
  43. package/dist/storybook/assets/{Dropdown.stories-Dd6vKiDd.js → Dropdown.stories-Drwq-0Z2.js} +1 -1
  44. package/dist/storybook/assets/{Events.stories-Byj-VOM9.js → Events.stories-dODeR-g-.js} +1 -1
  45. package/dist/storybook/assets/{Heading.stories-Dqw-wzpx.js → Heading.stories-CH7_-_q3.js} +1 -1
  46. package/dist/storybook/assets/HueRipple.stories-CH1Y739k.js +310 -0
  47. package/dist/storybook/assets/{Icon.stories-Bp1nvWER.js → Icon.stories-CPjM-jTU.js} +1 -1
  48. package/dist/storybook/assets/{IconButton.stories-o9g9mGdh.js → IconButton.stories-DuzqvcnN.js} +1 -1
  49. package/dist/storybook/assets/{LinearProgress.stories-DnXQVpzX.js → LinearProgress.stories-C7IdnJd3.js} +1 -1
  50. package/dist/storybook/assets/{Pagination.stories-DQD8uvDc.js → Pagination.stories-C4cLjS_9.js} +1 -1
  51. package/dist/storybook/assets/{Popover.stories-BvavsRfq.js → Popover.stories-Ca1F-wrI.js} +3 -11
  52. package/dist/storybook/assets/{ReadyMixin-6On1MFFr.js → ReadyMixin-DNZ5dCsZ.js} +1 -1
  53. package/dist/storybook/assets/{Rtc.stories-Bb5Y-908.js → Rtc.stories-BVJc1vCA.js} +1 -1
  54. package/dist/storybook/assets/{ScrollShadow.stories-ZovRXpte.js → ScrollShadow.stories-C3W5o9ZW.js} +1 -1
  55. package/dist/storybook/assets/Switch.stories-BEEHP8mD.js +312 -0
  56. package/dist/storybook/assets/{Throttle.stories-DmP-yKke.js → Throttle.stories-C4xsYeAb.js} +1 -1
  57. package/dist/storybook/assets/{Tooltip.stories-Dl6xHBaM.js → Tooltip.stories-Ccm4AnSv.js} +3 -7
  58. package/dist/storybook/assets/Welcome.stories-Degjk-M0.js +215 -0
  59. package/dist/storybook/assets/{Widget.stories-BjXfgNjZ.js → Widget.stories-OKnZ9sDs.js} +1 -1
  60. package/dist/storybook/assets/WithTooltip-65CFNBJE-CXL3TyJ2.js +9 -0
  61. package/dist/storybook/assets/blocks-DLdUKG_W.js +707 -0
  62. package/dist/storybook/assets/celebrate-KwPoF1K3.js +21 -0
  63. package/dist/storybook/assets/formatter-EIJCOSYU-29NCxjfM.js +1 -0
  64. package/dist/storybook/assets/if-defined-BZFPaJjl.js +1 -0
  65. package/dist/storybook/assets/iframe-BqvwP3or.js +1104 -0
  66. package/dist/storybook/assets/{iframe-CNxIA3cQ.css → iframe-C5bIZMJ5.css} +1 -1
  67. package/dist/storybook/assets/index-BIyTv1BF.js +1 -0
  68. package/dist/storybook/assets/onFind-1l3EPW-I.js +1 -0
  69. package/dist/storybook/assets/{onFind.stories-B2GYLrjV.js → onFind.stories-D64-QZqf.js} +2 -2
  70. package/dist/storybook/assets/{onRemove.stories-CoLJFkWa.js → onRemove.stories-BICsnIJL.js} +1 -1
  71. package/dist/storybook/assets/{onVisible.stories-DOeZx7wi.js → onVisible.stories-DpDZP9_5.js} +2 -2
  72. package/dist/storybook/assets/position-CFNQy3J6.js +1 -0
  73. package/dist/storybook/assets/ripple-DQbyyRUw.js +251 -0
  74. package/dist/storybook/assets/{style-map-CmHqpCu1.js → style-map-CBrSnxRe.js} +1 -1
  75. package/dist/storybook/assets/syntaxhighlighter-ED5Y7EFY-Bz_DuQj8.js +6 -0
  76. package/dist/storybook/brightspot-logo.svg +19 -0
  77. package/dist/storybook/iframe.html +23 -3
  78. package/dist/storybook/index.html +42 -1
  79. package/dist/storybook/index.json +1 -1
  80. package/dist/storybook/project.json +1 -1
  81. package/dist/storybook/sb-addons/storybook-3/manager-bundle.js +3 -0
  82. package/dist/tailwind-plugin-switch.d.ts +2 -0
  83. package/dist/tailwind-plugin-switch.d.ts.map +1 -0
  84. package/dist/tailwind-plugin-switch.js +223 -0
  85. package/dist/tailwind-plugin-switch.js.map +1 -0
  86. package/dist/tailwind-plugin-switch.ts +252 -0
  87. package/dist/util/EventEmitterMixin.d.ts +5 -0
  88. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  89. package/dist/util/EventEmitterMixin.js.map +1 -1
  90. package/dist/util/position.d.ts +9 -0
  91. package/dist/util/position.d.ts.map +1 -0
  92. package/dist/util/position.js +11 -0
  93. package/dist/util/position.js.map +1 -0
  94. package/docs/components/README.md +1 -0
  95. package/docs/components/Switch.md +79 -0
  96. package/package.json +2 -1
  97. package/dist/storybook/assets/Button.stories-hDMDDh81.js +0 -63
  98. package/dist/storybook/assets/Color-6BZIO3FS-C_nQSB2u.js +0 -1
  99. package/dist/storybook/assets/DocsRenderer-LL677BLK-56Pige1J.js +0 -758
  100. package/dist/storybook/assets/WithTooltip-65CFNBJE-CGB5q-AN.js +0 -9
  101. package/dist/storybook/assets/_commonjsHelpers-CqkleIqs.js +0 -1
  102. package/dist/storybook/assets/formatter-EIJCOSYU-BhNtSFM9.js +0 -1
  103. package/dist/storybook/assets/if-defined-BFyUeSVF.js +0 -1
  104. package/dist/storybook/assets/iframe-BeKreX-l.js +0 -1061
  105. package/dist/storybook/assets/index-Uz2kGy8J.js +0 -1
  106. package/dist/storybook/assets/onFind-DqriYjEB.js +0 -1
  107. package/dist/storybook/assets/syntaxhighlighter-ED5Y7EFY-BqFfcc7x.js +0 -6
@@ -1 +1 @@
1
- {"version":3,"file":"CopyToClipboard.d.ts","sourceRoot":"","sources":["../../../src/components/copy-to-clipboard/CopyToClipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAA;AAO/C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,oBAE5C;IACC;;;OAGG;IAEH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IAEH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,gBAAgB;IAChB,OAAO,CAAC,KAAK,CAAC,CAAQ;IAEtB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB,CAAC,CAAQ;IAElC,iBAAiB;IAcjB,YAAY,IAAI,IAAI;IAIpB;;;OAGG;IACG,IAAI;IAKV,gBAAgB;IAIhB,MAAM;CAeP;AAOD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,uBAAuB,EAAE,eAAe,CAAA;KACzC;CACF"}
1
+ {"version":3,"file":"CopyToClipboard.d.ts","sourceRoot":"","sources":["../../../src/components/copy-to-clipboard/CopyToClipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAA;AAQ/C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,oBAE5C;IACC;;;OAGG;IAEH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IAEH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,gBAAgB;IAChB,OAAO,CAAC,KAAK,CAAC,CAAQ;IAEtB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB,CAAC,CAAQ;IAElC,iBAAiB;IAcjB,YAAY,IAAI,IAAI;IAIpB;;;OAGG;IACG,IAAI;IAQV,gBAAgB;IAIhB,MAAM;CAeP;AAOD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,uBAAuB,EAAE,eAAe,CAAA;KACzC;CACF"}
@@ -6,6 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { LitElement, html, nothing } from 'lit';
8
8
  import { property } from 'lit/decorators.js';
9
+ import { btuRipple } from '../../effects/ripple.js';
9
10
  import { ClipboardMixin } from '../../util/ClipboardMixin.js';
10
11
  import { ComponentStatesMixin } from '../../util/ComponentStatesMixin.js';
11
12
  import { EventEmitterMixin } from '../../util/EventEmitterMixin.js';
@@ -52,6 +53,9 @@ export default class CopyToClipboard extends ClipboardMixin(ComponentStatesMixin
52
53
  if (!this.copydata)
53
54
  return;
54
55
  await super.copy(this.copydata);
56
+ if (this.states.has('btu-clipboard-copied')) {
57
+ btuRipple({ position: this.querySelector('button'), sparkle: true });
58
+ }
55
59
  }
56
60
  createRenderRoot() {
57
61
  return this;
@@ -1 +1 @@
1
- {"version":3,"file":"CopyToClipboard.js","sourceRoot":"","sources":["../../../src/components/copy-to-clipboard/CopyToClipboard.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAOrD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,cAAc,CACzD,oBAAoB,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAChE;IAqBC,iBAAiB;QACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAA;QACrC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QAErB,0CAA0C;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QACrD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAA;YACtC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;QACpC,CAAC;QAED,KAAK,CAAC,iBAAiB,EAAE,CAAA;IAC3B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IAClC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAM;QAC1B,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,gCAAgC,CAAA;QACjG,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,8CAA8C,SAAS,EAAE,CAAA;QAE/F,OAAO,IAAI,CAAA;;eAEA,OAAO;oBACF,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO;eACpD,IAAI,CAAC,IAAI;kBACN,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ;;QAEpC,IAAI,CAAC,KAAK;cACJ,CAAA;IACZ,CAAC;CACF;AA7DC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDACV;AAOjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDACL;AAwDxB,oEAAoE;AACpE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;IACjD,cAAc,CAAC,MAAM,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAA;AACjE,CAAC"}
1
+ {"version":3,"file":"CopyToClipboard.js","sourceRoot":"","sources":["../../../src/components/copy-to-clipboard/CopyToClipboard.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAOrD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,cAAc,CACzD,oBAAoB,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAChE;IAqBC,iBAAiB;QACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAA;QACrC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QAErB,0CAA0C;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QACrD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAA;YACtC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;QACpC,CAAC;QAED,KAAK,CAAC,iBAAiB,EAAE,CAAA;IAC3B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IAClC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAM;QAC1B,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC5C,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,gCAAgC,CAAA;QACjG,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,8CAA8C,SAAS,EAAE,CAAA;QAE/F,OAAO,IAAI,CAAA;;eAEA,OAAO;oBACF,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO;eACpD,IAAI,CAAC,IAAI;kBACN,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ;;QAEpC,IAAI,CAAC,KAAK;cACJ,CAAA;IACZ,CAAC;CACF;AAhEC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDACV;AAOjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDACL;AA2DxB,oEAAoE;AACpE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;IACjD,cAAc,CAAC,MAAM,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAA;AACjE,CAAC"}
@@ -0,0 +1,92 @@
1
+ import { LitElement } from 'lit';
2
+ import '../icon/Icon.js';
3
+ declare const Switch_base: (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
4
+ /**
5
+ * A toggle switch component for binary on/off states.
6
+ *
7
+ * Uses a hidden checkbox internally for accessibility, styled via the
8
+ * `btu-switch` Tailwind plugin classes.
9
+ *
10
+ * @element btu-switch
11
+ *
12
+ * @fires {CustomEvent} btu-switch-ready - Fired after the toggle is first rendered and initialized
13
+ * @fires {CustomEvent<{ checked: boolean }>} btu-switch-change - Fired when the user toggles the switch
14
+ * @fires {CustomEvent} btu-switch-focus - Fired when the component gains focus
15
+ *
16
+ * @cssprop --switch-color-track-on - Background color when the toggle is checked (default: var(--btu-theme-primary-700))
17
+ * @cssprop --switch-color-track-off - Background color when the toggle is unchecked (default: var(--btu-theme-gray-300))
18
+ * @cssprop --switch-color-knob - Color of the sliding circular handle (default: var(--btu-theme-white))
19
+ * @cssprop --switch-label-spacing - Distance between the switch and the text label (default: 0.75rem)
20
+ * @cssprop --switch-track-icon-size - Size of the track icons (default: sm 0.5rem, md 0.625rem, lg 0.75rem)
21
+ */
22
+ export default class Switch extends Switch_base {
23
+ /**
24
+ * Controls the physical dimensions of the switch and the associated label typography.
25
+ * @attr
26
+ */
27
+ size: 'small' | 'medium' | 'large';
28
+ /**
29
+ * The primary text displayed next to the toggle.
30
+ * @attr
31
+ */
32
+ label: string | undefined;
33
+ /**
34
+ * Optional helper text or secondary information displayed below the label.
35
+ * @attr
36
+ */
37
+ description: string | undefined;
38
+ /**
39
+ * The current state of the switch (on/off).
40
+ * @attr
41
+ */
42
+ checked: boolean;
43
+ /**
44
+ * If true, the toggle is non-interactive and visually muted.
45
+ * @attr
46
+ */
47
+ disabled: boolean;
48
+ /**
49
+ * Name of the control for form participation.
50
+ * @attr
51
+ */
52
+ name: string | undefined;
53
+ /**
54
+ * Determines if the label appears to the left or right of the switch.
55
+ * @attr label-position
56
+ */
57
+ labelPosition: 'start' | 'end';
58
+ /**
59
+ * Lucide icon name shown on the track when the switch is checked (on).
60
+ * @attr on-icon
61
+ */
62
+ onIcon: string | undefined;
63
+ /**
64
+ * Lucide icon name shown on the track when the switch is unchecked (off).
65
+ * @attr off-icon
66
+ */
67
+ offIcon: string | undefined;
68
+ /** @internal */
69
+ private _userInitiated;
70
+ /** @internal */
71
+ private initialClasses;
72
+ /** @internal */
73
+ private _initialClassesCaptured;
74
+ /** @internal */
75
+ private _descId;
76
+ connectedCallback(): void;
77
+ createRenderRoot(): this;
78
+ willUpdate(changedProperties: Map<string | number | symbol, unknown>): void;
79
+ firstUpdated(changedProperties: Map<string | number | symbol, unknown>): void;
80
+ updated(changedProperties: Map<string | number | symbol, unknown>): void;
81
+ private _onInputChange;
82
+ private _onFocus;
83
+ private _toggleInput;
84
+ render(): import("lit-html").TemplateResult<1>;
85
+ }
86
+ declare global {
87
+ interface HTMLElementTagNameMap {
88
+ 'btu-switch': Switch;
89
+ }
90
+ }
91
+ export {};
92
+ //# sourceMappingURL=Switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/components/switch/Switch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAA;AAK/C,OAAO,iBAAiB,CAAA;;AAQxB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAyC;IAC3E;;;OAGG;IAEH,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAU;IAE5C;;;OAGG;IAEH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAEzB;;;OAGG;IAEH,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IAE/B;;;OAGG;IAEH,OAAO,UAAQ;IAEf;;;OAGG;IAEH,QAAQ,UAAQ;IAEhB;;;OAGG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IAExB;;;OAGG;IAEH,aAAa,EAAE,OAAO,GAAG,KAAK,CAAQ;IAEtC;;;OAGG;IAEH,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAE1B;;;OAGG;IAEH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAE3B,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAAQ;IAE9B,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAAe;IAErC,gBAAgB;IAChB,OAAO,CAAC,uBAAuB,CAAQ;IAEvC,gBAAgB;IAChB,OAAO,CAAC,OAAO,CAAuC;IAEtD,iBAAiB,IAAI,IAAI;IAQzB,gBAAgB;IAIhB,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAW3E,YAAY,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAK7E,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAWxE,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,YAAY;IAKpB,MAAM;CA4CP;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,MAAM,CAAA;KACrB;CACF"}
@@ -0,0 +1,189 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement, html, nothing } from 'lit';
8
+ import { property } from 'lit/decorators.js';
9
+ import { ifDefined } from 'lit/directives/if-defined.js';
10
+ import { EventEmitterMixin } from '../../util/EventEmitterMixin.js';
11
+ import { ReadyMixin } from '../../util/ReadyMixin.js';
12
+ import '../icon/Icon.js';
13
+ // 'small' is omitted — it uses the base btu-switch dimensions with no modifier class
14
+ const SIZE_CLASSES = {
15
+ medium: 'btu-switch-md',
16
+ large: 'btu-switch-lg',
17
+ };
18
+ /**
19
+ * A toggle switch component for binary on/off states.
20
+ *
21
+ * Uses a hidden checkbox internally for accessibility, styled via the
22
+ * `btu-switch` Tailwind plugin classes.
23
+ *
24
+ * @element btu-switch
25
+ *
26
+ * @fires {CustomEvent} btu-switch-ready - Fired after the toggle is first rendered and initialized
27
+ * @fires {CustomEvent<{ checked: boolean }>} btu-switch-change - Fired when the user toggles the switch
28
+ * @fires {CustomEvent} btu-switch-focus - Fired when the component gains focus
29
+ *
30
+ * @cssprop --switch-color-track-on - Background color when the toggle is checked (default: var(--btu-theme-primary-700))
31
+ * @cssprop --switch-color-track-off - Background color when the toggle is unchecked (default: var(--btu-theme-gray-300))
32
+ * @cssprop --switch-color-knob - Color of the sliding circular handle (default: var(--btu-theme-white))
33
+ * @cssprop --switch-label-spacing - Distance between the switch and the text label (default: 0.75rem)
34
+ * @cssprop --switch-track-icon-size - Size of the track icons (default: sm 0.5rem, md 0.625rem, lg 0.75rem)
35
+ */
36
+ export default class Switch extends EventEmitterMixin(ReadyMixin(LitElement)) {
37
+ constructor() {
38
+ super(...arguments);
39
+ /**
40
+ * Controls the physical dimensions of the switch and the associated label typography.
41
+ * @attr
42
+ */
43
+ this.size = 'small';
44
+ /**
45
+ * The current state of the switch (on/off).
46
+ * @attr
47
+ */
48
+ this.checked = false;
49
+ /**
50
+ * If true, the toggle is non-interactive and visually muted.
51
+ * @attr
52
+ */
53
+ this.disabled = false;
54
+ /**
55
+ * Determines if the label appears to the left or right of the switch.
56
+ * @attr label-position
57
+ */
58
+ this.labelPosition = 'end';
59
+ /** @internal */
60
+ this._userInitiated = false;
61
+ /** @internal */
62
+ this.initialClasses = [];
63
+ /** @internal */
64
+ this._initialClassesCaptured = false;
65
+ /** @internal */
66
+ this._descId = `switch-desc-${crypto.randomUUID()}`;
67
+ }
68
+ connectedCallback() {
69
+ super.connectedCallback();
70
+ if (!this._initialClassesCaptured && this.className) {
71
+ this.initialClasses = this.className.split(' ').filter(c => c.trim());
72
+ this._initialClassesCaptured = true;
73
+ }
74
+ }
75
+ createRenderRoot() {
76
+ return this;
77
+ }
78
+ willUpdate(changedProperties) {
79
+ super.willUpdate(changedProperties);
80
+ const classes = [
81
+ ...this.initialClasses,
82
+ 'btu-switch',
83
+ SIZE_CLASSES[this.size],
84
+ this.labelPosition === 'start' && 'btu-switch-label-start',
85
+ ];
86
+ this.className = classes.filter(Boolean).join(' ');
87
+ }
88
+ firstUpdated(changedProperties) {
89
+ super.firstUpdated(changedProperties);
90
+ this.emit('btu-switch-ready');
91
+ }
92
+ updated(changedProperties) {
93
+ super.updated(changedProperties);
94
+ if (!this._userInitiated)
95
+ return;
96
+ this._userInitiated = false;
97
+ if (changedProperties.has('checked')) {
98
+ this.emit('btu-switch-change', { checked: this.checked });
99
+ }
100
+ }
101
+ _onInputChange(e) {
102
+ const input = e.target;
103
+ this._userInitiated = true;
104
+ this.checked = input.checked;
105
+ }
106
+ _onFocus() {
107
+ this.emit('btu-switch-focus');
108
+ }
109
+ _toggleInput() {
110
+ if (this.disabled)
111
+ return;
112
+ this.renderRoot.querySelector('.btu-switch-input')?.click();
113
+ }
114
+ render() {
115
+ return html `
116
+ <input
117
+ type="checkbox"
118
+ role="switch"
119
+ class="btu-switch-input"
120
+ .checked=${this.checked}
121
+ ?disabled=${this.disabled}
122
+ name=${ifDefined(this.name)}
123
+ aria-checked=${this.checked}
124
+ aria-label=${ifDefined(this.label)}
125
+ aria-describedby=${ifDefined(this.description ? this._descId : undefined)}
126
+ @change=${this._onInputChange}
127
+ @focus=${this._onFocus}
128
+ />
129
+ <span class="btu-switch-track" @click=${this._toggleInput}>
130
+ ${this.onIcon
131
+ ? html `<btu-icon
132
+ class="btu-switch-track-icon-on"
133
+ symbol=${this.onIcon}
134
+ style="--Icon-size: var(--switch-track-icon-size)"
135
+ ></btu-icon>`
136
+ : nothing}
137
+ <span class="btu-switch-knob"></span>
138
+ ${this.offIcon
139
+ ? html `<btu-icon
140
+ class="btu-switch-track-icon-off"
141
+ symbol=${this.offIcon}
142
+ style="--Icon-size: var(--switch-track-icon-size)"
143
+ ></btu-icon>`
144
+ : nothing}
145
+ </span>
146
+ ${this.label || this.description
147
+ ? html `
148
+ <span class="btu-switch-text" @click=${this._toggleInput}>
149
+ ${this.label ? html `<span class="btu-switch-label">${this.label}</span>` : nothing}
150
+ ${this.description
151
+ ? html `<span id=${this._descId} class="btu-switch-description">${this.description}</span>`
152
+ : nothing}
153
+ </span>
154
+ `
155
+ : nothing}
156
+ `;
157
+ }
158
+ }
159
+ __decorate([
160
+ property()
161
+ ], Switch.prototype, "size", void 0);
162
+ __decorate([
163
+ property()
164
+ ], Switch.prototype, "label", void 0);
165
+ __decorate([
166
+ property()
167
+ ], Switch.prototype, "description", void 0);
168
+ __decorate([
169
+ property({ type: Boolean })
170
+ ], Switch.prototype, "checked", void 0);
171
+ __decorate([
172
+ property({ type: Boolean })
173
+ ], Switch.prototype, "disabled", void 0);
174
+ __decorate([
175
+ property()
176
+ ], Switch.prototype, "name", void 0);
177
+ __decorate([
178
+ property({ attribute: 'label-position' })
179
+ ], Switch.prototype, "labelPosition", void 0);
180
+ __decorate([
181
+ property({ attribute: 'on-icon' })
182
+ ], Switch.prototype, "onIcon", void 0);
183
+ __decorate([
184
+ property({ attribute: 'off-icon' })
185
+ ], Switch.prototype, "offIcon", void 0);
186
+ if (!customElements.get('btu-switch')) {
187
+ customElements.define('btu-switch', Switch);
188
+ }
189
+ //# sourceMappingURL=Switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../src/components/switch/Switch.ts"],"names":[],"mappings":"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"}