@pure-ds/core 0.7.19 → 0.7.21

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 (33) hide show
  1. package/.cursorrules +10 -0
  2. package/.github/copilot-instructions.md +10 -0
  3. package/custom-elements.json +232 -25
  4. package/dist/types/public/assets/js/pds-manager.d.ts.map +1 -1
  5. package/dist/types/public/assets/pds/components/pds-code.d.ts +19 -0
  6. package/dist/types/public/assets/pds/components/pds-code.d.ts.map +1 -0
  7. package/dist/types/public/assets/pds/components/pds-icon.d.ts +31 -1
  8. package/dist/types/public/assets/pds/components/pds-icon.d.ts.map +1 -1
  9. package/dist/types/public/assets/pds/components/pds-treeview.d.ts +271 -16
  10. package/dist/types/public/assets/pds/components/pds-treeview.d.ts.map +1 -1
  11. package/dist/types/src/js/components/pds-code.d.ts +19 -0
  12. package/dist/types/src/js/components/pds-code.d.ts.map +1 -0
  13. package/dist/types/src/js/external/shiki.d.ts +3 -0
  14. package/dist/types/src/js/external/shiki.d.ts.map +1 -0
  15. package/dist/types/src/js/pds-core/pds-generator.d.ts.map +1 -1
  16. package/package.json +1 -1
  17. package/packages/pds-cli/bin/templates/bootstrap/public/assets/my/my-home.js +1 -1
  18. package/public/assets/js/app.js +1 -1
  19. package/public/assets/js/pds-manager.js +138 -148
  20. package/public/assets/pds/components/pds-calendar.js +504 -16
  21. package/public/assets/pds/components/pds-code.js +203 -0
  22. package/public/assets/pds/components/pds-icon.js +102 -27
  23. package/public/assets/pds/components/pds-live-importer.js +2 -2
  24. package/public/assets/pds/components/pds-scrollrow.js +27 -2
  25. package/public/assets/pds/components/pds-treeview.js +185 -0
  26. package/public/assets/pds/core/pds-manager.js +138 -148
  27. package/public/assets/pds/custom-elements.json +263 -18
  28. package/public/assets/pds/external/shiki.js +32 -0
  29. package/public/assets/pds/pds-css-complete.json +1 -1
  30. package/public/assets/pds/templates/feedback-ops-dashboard.html +1 -1
  31. package/public/assets/pds/templates/release-readiness-radar.html +2 -2
  32. package/public/assets/pds/templates/support-command-center.html +1 -1
  33. package/src/js/pds-core/pds-generator.js +142 -152
@@ -3550,82 +3550,324 @@
3550
3550
  },
3551
3551
  {
3552
3552
  "kind": "field",
3553
- "name": "settings"
3553
+ "name": "settings",
3554
+ "description": "Current runtime settings for data loading and behavior.",
3555
+ "type": {
3556
+ "text": "PdsTreeviewOptions"
3557
+ },
3558
+ "parameters": [
3559
+ {
3560
+ "name": "value",
3561
+ "type": {
3562
+ "text": "PdsTreeviewOptions|null|undefined"
3563
+ }
3564
+ }
3565
+ ]
3554
3566
  },
3555
3567
  {
3556
3568
  "kind": "field",
3557
- "name": "options"
3569
+ "name": "options",
3570
+ "description": "Alias for `settings`.",
3571
+ "type": {
3572
+ "text": "PdsTreeviewOptions"
3573
+ },
3574
+ "parameters": [
3575
+ {
3576
+ "name": "value",
3577
+ "type": {
3578
+ "text": "PdsTreeviewOptions|null|undefined"
3579
+ }
3580
+ }
3581
+ ]
3558
3582
  },
3559
3583
  {
3560
3584
  "kind": "field",
3561
- "name": "name"
3585
+ "name": "name",
3586
+ "description": "Form field name used when participating in form submission.",
3587
+ "type": {
3588
+ "text": "string"
3589
+ },
3590
+ "parameters": [
3591
+ {
3592
+ "name": "value",
3593
+ "type": {
3594
+ "text": "string|null|undefined"
3595
+ }
3596
+ }
3597
+ ]
3562
3598
  },
3563
3599
  {
3564
3600
  "kind": "field",
3565
- "name": "value"
3601
+ "name": "value",
3602
+ "description": "Selected value for single-select mode.",
3603
+ "type": {
3604
+ "text": "string"
3605
+ },
3606
+ "parameters": [
3607
+ {
3608
+ "name": "value",
3609
+ "type": {
3610
+ "text": "string|null|undefined"
3611
+ }
3612
+ }
3613
+ ]
3566
3614
  },
3567
3615
  {
3568
3616
  "kind": "field",
3569
- "name": "disabled"
3617
+ "name": "values",
3618
+ "description": "Selected values in multiselect mode.",
3619
+ "type": {
3620
+ "text": "string[]"
3621
+ },
3622
+ "parameters": [
3623
+ {
3624
+ "name": "values",
3625
+ "type": {
3626
+ "text": "Array<string|number>|null|undefined"
3627
+ }
3628
+ }
3629
+ ]
3570
3630
  },
3571
3631
  {
3572
3632
  "kind": "field",
3573
- "name": "required"
3633
+ "name": "disabled",
3634
+ "description": "Disables interactions when true.",
3635
+ "type": {
3636
+ "text": "boolean"
3637
+ },
3638
+ "parameters": [
3639
+ {
3640
+ "name": "value",
3641
+ "type": {
3642
+ "text": "boolean"
3643
+ }
3644
+ }
3645
+ ]
3646
+ },
3647
+ {
3648
+ "kind": "field",
3649
+ "name": "required",
3650
+ "description": "Requires at least one selected node for form validity.",
3651
+ "type": {
3652
+ "text": "boolean"
3653
+ },
3654
+ "parameters": [
3655
+ {
3656
+ "name": "value",
3657
+ "type": {
3658
+ "text": "boolean"
3659
+ }
3660
+ }
3661
+ ]
3574
3662
  },
3575
3663
  {
3576
3664
  "kind": "field",
3577
- "name": "displayOnly"
3665
+ "name": "displayOnly",
3666
+ "description": "Read-only presentation mode; disables selection and form value syncing.",
3667
+ "type": {
3668
+ "text": "boolean"
3669
+ },
3670
+ "parameters": [
3671
+ {
3672
+ "name": "value",
3673
+ "type": {
3674
+ "text": "boolean"
3675
+ }
3676
+ }
3677
+ ]
3578
3678
  },
3579
3679
  {
3580
3680
  "kind": "field",
3581
- "name": "expandedAll"
3681
+ "name": "expandedAll",
3682
+ "description": "Expands all branch nodes after data load.",
3683
+ "type": {
3684
+ "text": "boolean"
3685
+ },
3686
+ "parameters": [
3687
+ {
3688
+ "name": "value",
3689
+ "type": {
3690
+ "text": "boolean"
3691
+ }
3692
+ }
3693
+ ]
3694
+ },
3695
+ {
3696
+ "kind": "field",
3697
+ "name": "multiselect",
3698
+ "description": "Selection mode.\r\n\r\n- `off`: single select\r\n- `checkboxes`: persistent multiselect with checkboxes\r\n- `auto`: touch/coarse pointer gets checkbox mode",
3699
+ "type": {
3700
+ "text": "\"off\"|\"checkboxes\"|\"auto\""
3701
+ },
3702
+ "parameters": [
3703
+ {
3704
+ "name": "value",
3705
+ "type": {
3706
+ "text": "\"off\"|\"checkboxes\"|\"auto\"|string|null|undefined"
3707
+ }
3708
+ }
3709
+ ]
3582
3710
  },
3583
3711
  {
3584
3712
  "kind": "field",
3585
3713
  "name": "selectedNode",
3714
+ "description": "First selected node (or active selected node in multiselect).",
3715
+ "type": {
3716
+ "text": "PdsTreeviewNode|null"
3717
+ },
3718
+ "readonly": true
3719
+ },
3720
+ {
3721
+ "kind": "field",
3722
+ "name": "selectedNodes",
3723
+ "description": "All selected nodes.",
3724
+ "type": {
3725
+ "text": "PdsTreeviewNode[]"
3726
+ },
3586
3727
  "readonly": true
3587
3728
  },
3588
3729
  {
3589
3730
  "kind": "method",
3590
- "name": "getSelectedNode"
3731
+ "name": "getSelectedNode",
3732
+ "description": "Backward-compatible accessor for `selectedNode`.",
3733
+ "return": {
3734
+ "type": {
3735
+ "text": "PdsTreeviewNode|null"
3736
+ }
3737
+ }
3738
+ },
3739
+ {
3740
+ "kind": "method",
3741
+ "name": "getSelectedNodes",
3742
+ "description": "Backward-compatible accessor for `selectedNodes`.",
3743
+ "return": {
3744
+ "type": {
3745
+ "text": "PdsTreeviewNode[]"
3746
+ }
3747
+ }
3591
3748
  },
3592
3749
  {
3593
3750
  "kind": "method",
3594
- "name": "refresh"
3751
+ "name": "refresh",
3752
+ "description": "Reloads tree data from settings/source and re-renders the component.",
3753
+ "return": {
3754
+ "type": {
3755
+ "text": "Promise<void>"
3756
+ }
3757
+ }
3595
3758
  },
3596
3759
  {
3597
3760
  "kind": "method",
3598
- "name": "expandAll"
3761
+ "name": "expandAll",
3762
+ "description": "Expands every currently indexed branch node.",
3763
+ "return": {
3764
+ "type": {
3765
+ "text": "void"
3766
+ }
3767
+ }
3599
3768
  },
3600
3769
  {
3601
3770
  "kind": "method",
3602
- "name": "collapseAll"
3771
+ "name": "collapseAll",
3772
+ "description": "Collapses every expanded branch node.",
3773
+ "return": {
3774
+ "type": {
3775
+ "text": "void"
3776
+ }
3777
+ }
3603
3778
  },
3604
3779
  {
3605
3780
  "kind": "method",
3606
3781
  "name": "selectById",
3607
3782
  "parameters": [
3608
3783
  {
3609
- "name": "id"
3784
+ "name": "id",
3785
+ "type": {
3786
+ "text": "string"
3787
+ }
3610
3788
  }
3611
- ]
3789
+ ],
3790
+ "description": "Selects a node by node id.",
3791
+ "return": {
3792
+ "type": {
3793
+ "text": "boolean"
3794
+ }
3795
+ }
3612
3796
  },
3613
3797
  {
3614
3798
  "kind": "method",
3615
3799
  "name": "selectByValue",
3616
3800
  "parameters": [
3617
3801
  {
3618
- "name": "value"
3802
+ "name": "value",
3803
+ "type": {
3804
+ "text": "string|number|null|undefined"
3805
+ }
3619
3806
  }
3620
- ]
3807
+ ],
3808
+ "description": "Selects the first node whose `value` matches.",
3809
+ "return": {
3810
+ "type": {
3811
+ "text": "boolean"
3812
+ }
3813
+ }
3621
3814
  },
3622
3815
  {
3623
3816
  "kind": "method",
3624
- "name": "checkValidity"
3817
+ "name": "selectByValues",
3818
+ "parameters": [
3819
+ {
3820
+ "name": "values",
3821
+ "type": {
3822
+ "text": "Array<string|number>"
3823
+ }
3824
+ }
3825
+ ],
3826
+ "description": "Selects multiple nodes by value.\r\n\r\nIn single-select mode, only the first resolved value is selected.",
3827
+ "return": {
3828
+ "type": {
3829
+ "text": "boolean"
3830
+ }
3831
+ }
3625
3832
  },
3626
3833
  {
3627
3834
  "kind": "method",
3628
- "name": "reportValidity"
3835
+ "name": "checkValidity",
3836
+ "description": "Runs form-associated validity checks.",
3837
+ "return": {
3838
+ "type": {
3839
+ "text": "boolean"
3840
+ }
3841
+ }
3842
+ },
3843
+ {
3844
+ "kind": "method",
3845
+ "name": "reportValidity",
3846
+ "description": "Runs and reports form-associated validity checks.",
3847
+ "return": {
3848
+ "type": {
3849
+ "text": "boolean"
3850
+ }
3851
+ }
3852
+ },
3853
+ {
3854
+ "kind": "method",
3855
+ "name": "focus",
3856
+ "parameters": [
3857
+ {
3858
+ "name": "options",
3859
+ "optional": true,
3860
+ "type": {
3861
+ "text": "FocusOptions"
3862
+ }
3863
+ }
3864
+ ],
3865
+ "description": "Focuses the active/selected row, or first visible row as fallback.",
3866
+ "return": {
3867
+ "type": {
3868
+ "text": "void"
3869
+ }
3870
+ }
3629
3871
  }
3630
3872
  ],
3631
3873
  "events": [
@@ -3697,6 +3939,9 @@
3697
3939
  {
3698
3940
  "name": "expanded-all"
3699
3941
  },
3942
+ {
3943
+ "name": "multiselect"
3944
+ },
3700
3945
  {
3701
3946
  "name": "src"
3702
3947
  }
@@ -0,0 +1,32 @@
1
+ const SHIKI_CDN_URL = 'https://esm.sh/shiki@1.0.0';
2
+
3
+ let shikiModulePromise = null;
4
+
5
+ async function loadShikiModule() {
6
+ if (shikiModulePromise) return shikiModulePromise;
7
+
8
+ shikiModulePromise = import(SHIKI_CDN_URL).catch((error) => {
9
+ shikiModulePromise = null;
10
+ throw error;
11
+ });
12
+
13
+ return shikiModulePromise;
14
+ }
15
+
16
+ export async function getHighlighter(options) {
17
+ const shiki = await loadShikiModule();
18
+ return shiki.getHighlighter(options);
19
+ }
20
+
21
+ export async function codeToHtml(code, options) {
22
+ const shiki = await loadShikiModule();
23
+ if (typeof shiki.codeToHtml === 'function') {
24
+ return shiki.codeToHtml(code, options);
25
+ }
26
+
27
+ const highlighter = await shiki.getHighlighter({
28
+ themes: [options?.theme || 'github-dark'],
29
+ langs: [options?.lang || 'html']
30
+ });
31
+ return highlighter.codeToHtml(code, options);
32
+ }
@@ -2292,7 +2292,7 @@
2292
2292
  ],
2293
2293
  "metadata": {
2294
2294
  "generator": "PDS CSS Data Generator",
2295
- "generatedAt": "2026-02-23T17:59:14.105Z",
2295
+ "generatedAt": "2026-02-26T07:33:17.462Z",
2296
2296
  "totalProperties": 169,
2297
2297
  "totalClasses": 169,
2298
2298
  "totalAttributes": 5
@@ -59,7 +59,7 @@
59
59
  <span class="badge">3 active</span>
60
60
  </div>
61
61
  <p class="text-muted">Most mentioned topics in this cycle:</p>
62
- <ul class="stack-xs">
62
+ <ul>
63
63
  <li class="card surface-overlay flex justify-between items-center"><span>Career growth clarity</span><strong>42 mentions</strong></li>
64
64
  <li class="card surface-overlay flex justify-between items-center"><span>Cross-team handoffs</span><strong>31 mentions</strong></li>
65
65
  <li class="card surface-overlay flex justify-between items-center"><span>Meeting load balance</span><strong>28 mentions</strong></li>
@@ -25,7 +25,7 @@
25
25
  <section class="grid grid-auto-md gap-md">
26
26
  <article class="card surface-elevated stack-sm">
27
27
  <h4>Gate checks</h4>
28
- <ul class="stack-xs">
28
+ <ul>
29
29
  <li class="card surface-subtle flex justify-between items-center"><span>Feature complete</span><span class="badge badge-success">Pass</span></li>
30
30
  <li class="card surface-subtle flex justify-between items-center"><span>QA regression</span><span class="badge badge-warning">At risk</span></li>
31
31
  <li class="card surface-subtle flex justify-between items-center"><span>Security review</span><span class="badge badge-success">Pass</span></li>
@@ -49,7 +49,7 @@
49
49
  <section class="grid grid-auto-sm gap-md">
50
50
  <article class="card surface-base stack-sm">
51
51
  <h4>Deployment windows</h4>
52
- <ul class="stack-xs">
52
+ <ul>
53
53
  <li class="flex justify-between items-center"><span>Staging freeze</span><small class="text-muted">Mon 09:00</small></li>
54
54
  <li class="flex justify-between items-center"><span>Production canary</span><small class="text-muted">Tue 11:00</small></li>
55
55
  <li class="flex justify-between items-center"><span>Global rollout</span><small class="text-muted">Wed 14:00</small></li>
@@ -30,7 +30,7 @@
30
30
  <h3>Backlog load</h3>
31
31
  <span class="badge badge-warning">Needs review</span>
32
32
  </div>
33
- <ul class="stack-xs">
33
+ <ul>
34
34
  <li class="card surface-overlay flex justify-between items-center"><span>P1 incidents</span><strong>3</strong></li>
35
35
  <li class="card surface-overlay flex justify-between items-center"><span>P2 issues</span><strong>17</strong></li>
36
36
  <li class="card surface-overlay flex justify-between items-center"><span>P3 tasks</span><strong>42</strong></li>